次のコマンドを実行すると、ファイルの末尾に行(現在の日付を含む)が追加されるようにalias
myに追加しようとします。.bashrc
> push 123
2017-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
削除されます。$(...)