関連背景:

関連背景:

関連背景:

標準出力リダイレクト

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 -linの出力を保存するには、/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"
}

思い出に残る合理的な名前を見つけるのは難しいです。

おすすめ記事