猫>>ファイルライン

猫>>ファイルライン

私はさまざまなテキストファイルにメモをし、しばしば次のようにします。

cat >> notes.txt

better not forget this

<ctrl-D>

ファイルに少しだけ追加する場合は、追加のキーストロークを保存してEnter、Ctrl-Dを押すのが最善です。

一行でこれを行うにはどうすればよいですか?テキストファイルにいくつかの文字を追加してEnterキーを押すだけですか?

答え1

次の機能を使用できます。

addnotes () {
    echo "$*" >> /path/to/notes.txt
}

次に、コマンドライン引数としてコメントを追加します。

$ addnotes better not forget this

答え2

bash単一行または複数行を処理する単純なスクリプト(または関数):

note() {
    # If we have text on the line use it, otherwise read from stdin
    { [[ $# -gt 0 ]] && printf "%s\n" "$*" || cat; } |

    # Write current date/time, then append collected text indented by two spaces
    { date; sed 's/^/  /'; echo; } >> "$HOME/note.txt"
}

これにより、簡単な通知が可能です。

note remember this

またはより複雑な段落

note
Remember this
and this too

oh and this
<Ctrl/D>

通知はファイルに記録され$HOME/note.txt、各通知の前には現在の日付/時刻が付けられます。

cat ~/note.txt
10 Dec 2020 16:03:59
  remember this

10 Dec 2020 16:04:05
  Remember this
  and this too

  oh and this

インデントが必要ない場合は、date段落| { ... }全体を削除してください。

note() { { [[ $# -gt 0 ]] && printf "%s\n" "$*" || cat; } >> "$HOME/note.txt"; }

またはスクリプトとして使用します(実行可能にしてその場所に保存することを忘れないでください$PATH)。

#!/bin/bash
{ [[ $# -gt 0 ]] && printf "%s\n" "$*" || cat; } |
    { date; sed 's/^/  /'; echo; } >> "$HOME/note.txt"

答え3

cat使用。 。 。交換echo:

echo "Better not forget this" >> notes.txt

関連情報