Bashの前の行に接続

Bashの前の行に接続

次のコマンドを実行すると、ファイルの末尾に行(現在の日付を含む)が追加されるようにaliasmyに追加しようとします。.bashrc> push 1232017-08-29/push/123

エイリアスを追加: alias push='date +%F/push/ >> log.txt ; echo $1 >> log.txt' 問題はほとんど解決されました。これにより、次のように2行が追加されます。

2017-08-29/push/
123

これを一行に変えるのを手伝ってください。

答え1

push () { date "+%F/push/$1" >> /tmp/pushlog.txt; }

これは/tmp/pushlog.txt、ファイルに文字列を追加するシェル関数を定義します。

使用される型文字列には、dateシェル関数の最初のコマンドライン引数が含まれています。

bash-4.4$ push 123
bash-4.4$ push "hello world"
bash-4.4$ push "%s"
bash-4.4$
bash-4.4$ cat /tmp/pushlog.txt
2017-08-29/push/123
2017-08-29/push/hello world
2017-08-29/push/1504041277

push前の例のように解釈できる文字列プッシュを使用しようとしていますが、dateこれが望ましくない場合は、代わりに次を使用してください。

push () { printf '%s/push/%s\n' "$(date '+%F')" "$1" >> /tmp/pushlog.txt; }

ファイルに不要な改行文字があるのは、date改行文字が出力の末尾に出力されるためです。この改行文字は、上記のシェル関数の2番目の実装で行ったように、inを使用するとdate削除されます。$(...)

関連情報