シェルスクリプトで特定の内容を含むファイルを生成する必要があります。どうすればいいですか?を使用して実行できますかcat
?
ベストアンサー1
これは、cat
次の文書で行うことができます。
cat >outfilename <<END_FILE
this is the contents of the file
la-di-da!
END_FILE
ここの文書は、<<END_FILE
末尾の対応する文書の間の内容です。END_FILE
終わりEND_FILE
は行の唯一の単語で、行の先頭に配置する必要があります。単語は、END_FILE
任意の単語(たとえば、END_CONFIG_FILE
またはWHEN_WILL_SUMMER_COME
意味のある単語)にすることができます。
変数は文書内で拡張されます。必要でない場合は、ここで最初の文書区切り文字を引用してください。
cat >outputfilename <<'MY_DOC'
another here document thingy
The $PATH variable will not be expanded here
MY_DOC
技術的にここにある文書は次のとおりです。リダイレクト上記の例では、これをcat
コマンドにリダイレクトします。このcat
コマンドは、標準出力リダイレクトを使用して指定されたファイルに渡します。
タグ付けされた質問も参照してください。ここのドキュメントこのウェブサイトから。
コメントの中で:「わかりました。許可が拒否されましたそしてsudo
役に立たない」
はい、ディレクトリへの書き込み権限がないと、出力ファイルにリダイレクトできません。また、sudo
呼び出し前に出力ファイルが生成されるため、これを使用することはsudo
役に立ちません。
あなたはできます
sudo tee outputfilename >/dev/null <<MY_DOC
contents of file
goes here
MY_DOC
これはrootとして実行され、tee
現在のディレクトリにtee
rootとして作成されます。outputfilename
リダイレクトは、文書を端末に出力するのを/dev/null
やめることです。tee
このtee
コマンドは、コマンドラインで指定されたすべてのファイルと標準出力(または他のコマンドにパイプされていない場合は端末)に入力をコピーします。