シェルコマンドの後にエイリアスとして `1>&- 2>&-&' を使用します。

シェルコマンドの後にエイリアスとして `1>&- 2>&-&' を使用します。

bashテキスト出力なしでバックグラウンドでプログラムを実行するには、次のようにします1>&- 2>&- &。これにエイリアスを定義したいと思います。しかし、私が書くなら.bashrc

alias nooutput = '1>&- 2>&- &'

この文字列は、nooutputシェルで実行したい実行可能ファイルの追加引数(ファイル名など)として解釈されます。また、オートコンプリート機能が機能しないようですnooutputnoouたとえば、[次へ]を押すとオートコンプリートにtabなりません。

この場合、エイリアスをどのように使用しますか?


GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)私はUbuntuUbuntu 20.04.3 LTSとLinuxを使用していますが、解決策があればできるだけ一般的で、特定のバージョンやシステムアーキテクチャに縛られていないことを願ってい5.4.0-91-generic x86_64ます。bash

ベストアンサー1

まず、エイリアスを使用すると、単語として使用するときに単語の代わりに文字列を使用できます。最初の単語簡単なコマンド。コマンドの途中または終わりにないので、コマンドの最後にエイリアスを使用しようとしたとき。myCommand myAlias、前述のように動作しません。なぜエイリアスはコマンドの最初の単語であるべきですか?myAlias myCommand;

ただし、使用するバックグラウンド実行演算子は1>&- 2>&- &コマンドの先頭には表示されないため(doではない)、エイリアスでは同様の操作を使用& myCommandできません。&

2番目の問題は、エイリアス名とエイリアステキストの周囲にスペースを入れないようにすることです。

alias nooutput='1>&- 2>&- '次のように実行します。

nooutput myCommand &

注:シェル関数は、ほとんどすべての目的でエイリアスよりも優先されます。

おすすめ記事