Ubuntu 11.10では、次のようなbashコマンド/エイリアス/関数がありました。
function ?() {
xxx $1
}
これは魅力のように機能しました。
現在、Ubuntu 13.04では、機能しなくなりました。引数を指定してコマンドを実行しようとすると、次のようになります。
0:コマンドが見つかりません
この略語を使用できなくなったのは何が変わったのですか?
PSもちろん、エイリアス名を変更することは可能です、それは不思議からの質問です。
?
正確に1文字で構成されるファイル名に一致するグロブ(パターン、ワイルドカード)です。現在のディレクトリ内の一致するファイルに置き換えられます。現在のディレクトリに一致するファイルがない場合、?
は変更されずに残り、関数がトリガーされます。これは、bashリファレンスマニュアルではパス名拡張man bash
およびファイル名拡張と呼ばれます。
この場合、0
現在のディレクトリに名前が付けられたファイルがあるため、pathaname展開によって? foo
に変更さ0 foo
れ、引数としてで指定さ0
れたコマンドを実行しようとfoo
します。そのファイルを削除したり、1文字より長い名前に変更したりすると、関数が機能し始めるはずです。別の方法としては、使用することができる\?
か"?"
、または'?'
それはグロブとして処理されるのを避けるために、代わりに。
?
ちなみに、関数名での使用は文書化されておらず、推奨されていません。英数字とアンダースコアのみが機能することが文書化されています(変数名に許可されているものと同じです)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加