関連背景:
標準出力リダイレクト
command > file
command 1> file
標準エラーリダイレクト
command 2> file
標準出力と標準エラーを別々のファイルにリダイレクト
command 2> error.txt 1> output.txt
標準出力と標準エラーを同じファイルにリダイレクト
command > file 2>&1
command &> file # bash only?
# For all I know, all the examples are bash-only, but the article called it out explicitly on this line
警告: 次の例では、リダイレクトを実行します。ただファイルへの標準出力。これは、stdoutがファイルにリダイレクトされる前にstderrがstdoutにリダイレクトされるために発生します。
command 2>&1 > file # incorrect!
質問:
私の考えでは、シンボルは完全にランダムなので覚えにくいです。エイリアスを指定する方法を知っています。注文するしかし、これらのシンボルにエイリアスを付けて覚えやすくする方法はありますか?このような:
標準出力と標準エラーを同じファイルにリダイレクト
command redirectStandardOutputAndError file
または、より良い方法は次のとおりです。
command >outerr file
これがzshとbashの両方で動作する場合、ボーナスポイントがありますが、私のbashは唯一の要件です。
答え1
このため、bashではエイリアスを使用できず、十分に強力ではありません。ただし、役に立つ機能を使用できます。
このアプローチを使用するには、リダイレクトについて異なる考えをする必要があります。リダイレクトを最初に宣言してからコマンドを宣言するので、ls -l
inの出力を保存するには、/tmp/dir_listing
次のように入力します。save_in /tmp/dir_listing ls -l
save_in(){ # save stdout in file
"${@:2}" > "$1"
}
save_all(){ # save both stdout and stderr in file
"${@:2}" > "$1" 2>&1
}
save_each(){ # save stdout and stderr in different files
"${@:3}" > "$1" 2>"$2"
}
save_base(){ # save stdout and stderr into different file, just give base
"${@:2}" > "$1.out" 2>"$1.err"
}
思い出に残る合理的な名前を見つけるのは難しいです。