~/.bashrc
鉱山には~/.bashrc
以下が含まれています(基本的に):
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
~/.bash_aliases
鉱山には~/.bash_aliases
以下が含まれています(私の定義):
alias define="curl dict://dict.org/d:$1"
予想する
そこにエイリアスがあるので、define
シェル(ターミナル)から直接次のようなものを使用できます。
define internet
dict.orgを見て、インターネットで定義を見つけて私に見せたいです。
何らかの理由でこのタスクを実行するたびに私は次のようになります(paste.debian.netでホストされており、時間が経つと消えることがあります)。
~/.bash_aliases
私は会議でソースを見つけようとしますbash
。
シェル
私はbash
Debian Bullseyeでバージョン5.0.11を実行しています(現在テストされており、まもなくメジャーリリースが予定されています)。
私のエイリアスに何が間違っているのでしょうか~/.bash_aliases
?
答え1
問題は、エイリアスがスクリプトや関数などの位置パラメータを取らないことです。また、bashrcのエイリアスは二重引用符で囲まれているため、パラメータはすぐに拡張されます(空白になります)。したがって、エイリアスはデフォルトで次のように設定されます。
alias define="curl dict://dict.org/d:"
一重引用符を使用してパラメータを正しくエスケープしても、思った\
ようにパラメータが渡されません。
define foo
たとえばcurl dict://dict.org/d: foo
、この方法を使用するには、setを使用してパラメータをシェルパラメータに設定する必要があります。
set -- foo; define
ただし、引数/オプションが必要な場合は、必ず関数を使用することをお勧めします。
define () {
local word=$1
curl "dict://dict.org/d:$word"
}
答え2
エイリアスがどのように機能するかはありません。
この機能は比較的強力で、次のように使用できます。
function define(){
curl "dict://dict.org/d:$1"
}
$1
はスクリプトまたは関数のパラメータ1です。