
古い.cshrcファイルを.bash_aliasesファイルに変換します。変換中にいくつかの構文問題が発生しましたが、これにはより深いBashの知識が必要です。
[t]Cshでは、&シンボルを使用してバックグラウンドで開かない限り、xwindowアプリケーションを開くとシェルがハングします(たとえば、firefox &)
これを防ぐためにCshで特定のエイリアスを作成してバックグラウンドジョブで実行しますが)。コマンドラインを開く(使用\!*
):
alias ff 'firefox \!* &
Bashに変換されたら、次のことを行います。
ff () { command ff "$@" & }
いつ機能を使用するのか、いつ使用するのかはまだわかりません。ニックネームしかし、定義されたエイリアスの周りに多くのオプションをラップしようとすると中断されます。
win () { command xterm -geometry 105x25 -font 8x13 -bc "$@" & }
blue () { command win -bg gray33 -fg gray39 "$@" ; }
削除したら注文する以内に青(例blue () { win -bg ...
:)期待どおりに動作します。
だから私は2つのことが気になります。
- エイリアスと関数定義をいつ使用する必要がありますか?
- いつコマンドを使用しますか?使用するには
alias win='xterm ...'
どうすればよいですかcommand win
?
答え1
まず、マイナーな作業にこの関数を使用してください。単純なエイリアスは、基本的にいくつかのフラグを設定することです。
# no license spam
alias gdb='gdb -q'
より複雑なほとんどすべてに関数を使用します。
2.command
コマンドなどを参照してください/bin/ls
。エイリアスはコマンドではなく、機能はコマンドではありません。おそらくwin
コマンドがないため、command win
コマンドではないため、関数を呼び出すことはできません。
ところで、「無限」ループは作成が非常に簡単です。
alias fooalias=foofunc
function foofunc() { fooalias; }
これが誰かが関数を書く理由です。コマンドと同じ名前これにより、command
シェルが関数を永久に呼び出そうとしないように非常に便利になります。
# loops until stack death or segfault or something
function xterm() { xterm ... }
# good
function xterm() { command xterm ... }
他の関数にコマンドまたは関数である可能性がある他の関数を呼び出すには、そのまま呼び出すだけです。このコマンドを必ず呼び出す必要がある場合は、必ず使用してくださいcommand
。
function winwinwin () { winwin ... }
function winwin () { win ... }
function win () { xterm ... }
function xterm () { command xterm ... }
winwinwin
関数がwinwin
呼び出されます。win
関数がxterm
呼び出されますcommand
。
以前はこれはオプションですが、後ろに空白がある可能性がある項目を見つけるのではなく、関数function
()を検索するのはかなり簡単なので、使用し、エラーには括弧が必要です。fgrep function ...
エンジンでEscapedを使用している正規表現は何ですか?優先順位のために通知を簡単にテストまたは印刷して、進行状況を確認できます。
ls () { ls -k; echo funcall; }
alias ls='echo blat'
ls
一般に、驚きを避けるために関数を最初に定義してからエイリアスを設定する方が良い考えです。
bash-4.1$ alias ls='echo blat'
bash-4.1$ ls () { command ls -k; echo funcall; }
bash: syntax error near unexpected token `('
bash-4.1$ function ls () { command ls -k; echo funcall; }
bash-4.1$