シェルスクリプトからファイルを作成、書き込み、保存する


10

手作業でファイルを書きたくないので、シェルスクリプトを作成しました。ユーザーにキーを押さなくても、ファイルを自動的に書き込んで保存する方法はありますか?

sudo nano blah
#write stuff to file
#save file
#continue

^これは* .shファイル内にあります

または、スクリプトで単純なテキストファイルを作成する別の方法はありますか?


1
ここで間違った質問をしているのではないかと思います。nanoなどのエディターを制御するよりも、プログラムでファイルに書き込む方法がはるかに簡単です。代わりに、ファイルで何をしたいかを教えてください。
ウォーレンヒル

私はそれを作成して、たくさんの行を書きたいだけです。
ザルコパフィリス2014

とりわけGUIプログラムを自動化できるAutoit for Windowsのようなソリューションや、たとえばシェルスクリプトからテキストを記述できる方法を求めています$echo "Some text" > afile.txtか?
Stef K

@Zarkopafilis-私はあなたの質問を編集して、あなたの意味がより明確になるようにしました。私があなたを誤解した場合は、いつでも元に戻すことができます。私もあなたのために答えを投稿しました。
ウォーレンヒル

回答:


14

コマンドのより複雑なシーケンスについてcatは、ヒアドキュメントでのコマンドの使用を検討する必要があります。基本的なフォーマットは

command > file << END_TEXT
some text here
more text here
END_TEXT

END_TEXTラベルが引用されているか、引用されていないかに応じて、2つの微妙に異なる動作があります。

  1. 引用符で囲まれていないラベル:通常のシェル展開の後に内容が書き込まれます

  2. 引用符で囲まれたラベル:hereドキュメントの内容は、通常のシェル展開なしで、文字通り処理されます

たとえば、次のスクリプトを考えてみましょう

#!/bin/bash

var1="VALUE 1"
var2="VALUE 2"

cat > file1 << EOF1
do some commands on "$var1" 
and/or "$var2"
EOF1

cat > file2 << "EOF2"
do some commands on "$var1" 
and/or "$var2"
EOF2

結果は

$ cat file1
do some commands on "VALUE 1" 
and/or "VALUE 2"

そして

$ cat file2
do some commands on "$var1" 
and/or "$var2"

スクリプトからシェルコマンドを出力している場合は、引用符で囲まれたフォームがおそらく必要です。


どれくらい私がこれを検索したか^^ 1つの質問:これはスクリプトでのみ機能するのですか、それともシェルで直接使用することは可能ですか?
derHugo 2017年

@derHugoをシェルで直接使用できます。その場合は、を省略してEND_TEXT、単にCTRL-D入力の終わりを知らせるために使用するのが一般的です。たとえば、stdin入力の終了を通知する方法を
steeldriver '19年

7

これを行うためにエディターをいじる必要はありません。

単純なechoコマンドでファイルに何かを追加できます。例えば

echo "Hello World" >> txt

「Hello world」をファイルに追加しますtxt。ファイルが存在しない場合は作成されます。

または、ファイルがすでに存在している可能性があり、それを上書きしたい場合

echo "Hello World" > txt

1行目:および

echo "I'm feeling good" >> txt
echo "how are you" >> txt 

以降の行。

最も簡単なのは、.shスクリプトにエコーコマンドのセットを含めるだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.