Cshからbashにスワップしたいので、使用するコマンドで.bashrcを設定する必要があります。エイリアスをパラメータに変換することは、私が信じていたように簡単ではないようです。 csh:
alias gr 'xmgrace -legend load -nxy \!* -free -noask&'
param \!*
は、コマンドライン上のすべてのパラメーターを意味します。次に、bashを試しました。
alias gr='xmgrace -legend load -nxy $@ -free -noask&'
alias gr='xmgrace -legend load -nxy $(@) -free -noask&'
しかし、どちらも機能しませんでした。
もう1つの問題は、現在のディレクトリcshを記憶することから生じます。
alias t 'set t=\`pwd\``;echo $t'
alias tt 'cd $t'
いろいろ試してみましたが、結果はありませんでした。
これはbash
エイリアスが機能する方法ではありません。bash
エイリアスのすべての定位置パラメーターは、定義した場所ではなく、コマンドの最後に追加されます。それを乗り越えるには、bash
関数を使用する必要があります。
例はあなたをより明確にします:
$ cat file.txt
foo
$ cat bar.txt
foobar
spamegg
$ grep -f file.txt bar.txt
foobar
$ alias foo='grep -f "$1" bar.txt' ## Alias 'foo'
$ foo file.txt
grep: : No such file or directory
$ spam () { grep -f "$1" bar.txt ;} ## Function 'spam'
$ spam file.txt
foobar
エイリアスの最初の引数として見ることができるように、foo
が最後に追加されているため、コマンドfoo file.txt
は次のように展開されます。
grep -f "" bar.txt file.txt
一方、関数spam
の場合、コマンドは次のように正しく展開されます。
grep -f file.txt bar.txt
したがって、あなたの場合、次のような関数を定義できます。
gr () { xmgrace -legend load -nxy "$@" -free -noask & ;}