">>"に加えて、ファイルの末尾に行を追加する別の簡単な方法はありますか?

">>"に加えて、ファイルの末尾に行を追加する別の簡単な方法はありますか?

最近、私は短い文をtree_holeファイルに反映しています。

私は前にecho 'something' >> tree_holeこれをしたことがあります。

>しかし、私はしばしば間違いをするので、間違いをすると、常に心配しています>>

だから私はbashrcに独自のグローバルbash関数を作成しました。

function th { echo "$1" >> /Users/zen1/zen/pythonstudy/tree_hole; }
export -f th

しかし、ファイルの最後に行を追加する別の簡単な方法があるかどうかを知りたいです。他の場合は、より頻繁に使用する必要があるかもしれません。

あなたはいますか?

答え1

シェルnoclobberオプションを設定します。

bash-3.2$ set -o noclobber
bash-3.2$ echo hello >foo
bash-3.2$ echo hello >foo
bash: foo: cannot overwrite existing file
bash-3.2$ 

答え2

>オペレーターによってファイルが破損するのを心配している場合は、ファイルのプロパティを追加専用に変更できます
外部2/外部3/外部4ファイルシステム: chattr +a file.txt
inXFSファイルシステム:echo chattr +a | xfs_io file.txt

関数が必要な場合は、自分で関数を作成し(サービスファイルから出力を記録するために使用します)、目的に合わせて変更できます。

# This function redirect logs to file or terminal or both!
#@ USAGE: log option data
# To the file     -f file
# To the terminal -t
function log(){
        read -r data       # Read data from pipe line

        [[ -z ${indata} ]] && return 1    # Return 1 if data is null

        # Log to /var/log/messages
        logger -i -t SOFTWARE ${data}

        # While loop for traveling on the arguments
        while [[ ! -z "$*" ]]; do
                case "$1" in
                        -t)
                                # Writting data to the terminal
                                printf "%s\n" "${data}"
                                ;;
                        -f) 
                                # Writting (appending) data to given log file address
                                fileadd=$2
                                printf "%s %s\n" "[$(date +"%D %T")] ${data}" >> ${fileadd}
                                ;;
                        *)
                                ;;
                esac
                shift           # Shifting arguments
        done
}

答え3

使用tee追加オプションを使用します。

foo | tee -a some-file
# or
tee -a some-file <<EOF
blah blah
EOF
# or 
tee -a some-file <<<"blah blah"

答え4

以下を使用したいですsed(バックアップコピーがある場合でも - 次の拡張子を参照-i)。

sed -i.bak '$ a\something' /Users/zen1/zen/pythonstudy/tree_hole

関連情報