コマンドを使用しましたが、次の*
エラーが表示されました。
bash: boot: command not found
このエラーはなぜ発生しますか?
答え1
コマンドラインに入力した最初の単語は、シェルのコマンド名として解釈されます。
シェルは、*
ファイル名のワイルドカード文字を現在のディレクトリに表示されるすべての名前に拡張します。名前はアルファベット順にソートされます。
現在存在するディレクトリの名前は名前boot
です。ただ入るという意味だ*
その特定のディレクトリからboot
これは、そのディレクトリの他のすべての名前をコマンドライン引数として使用して呼び出されたコマンドを実行するのと同じです。
boot
システムは現在呼び出されているコマンドがないため、$PATH
シェルでそのコマンドが見つからないと文句を言います。
それはすべてです。
私のシステムの例(zsh
代わりにシェルを実行しますbash
が、その点で同じように動作します):
% cd /
% ls
altroot bsd bsd.sp home sbin usr
bin bsd.booted dev mnt sys var
boot bsd.rd etc root tmp
% *
zsh: command not found: altroot
just を使用すると、*
シェルは、名前が付けられたコマンドを実行しようとします。ディレクトリのファイル名グロービングパターン拡張からaltroot
名前altroot
(ディレクトリの名前)が最初に来るためです。*
ファイル名のグロービングパターンで実行するコマンドを選択することは、エラーが発生しやすく、危険なので避けるのが最善です。
ある程度関連する逸話で、私は信じる-i
私は、ユーザーが重要なファイルを含むディレクトリに名前付きファイルを作成するのを見ました。だから彼らはおそらく次のようなものを持っているでしょう。
$ ls -l
total 0
-rw-r--r-- 1 myself wheel 0 Apr 16 18:49 -i
-rw-r--r-- 1 myself wheel 0 Apr 16 18:49 important-file-1.txt
-rw-r--r-- 1 myself wheel 0 Apr 16 18:49 important-file-2.txt
-rw-r--r-- 1 myself wheel 0 Apr 16 18:49 important-file-3.txt
まず、どのように-i
ソートされているかを確認してください。つまり、rm -rf *
このディレクトリでこれを(間違って)実行すると、次のことが発生します。
$ rm -rf *
remove important-file-1.txt? n
remove important-file-2.txt? n
remove important-file-3.txt? n
つまり、-i
名前がオプションとして挿入され、ファイルを削除する前に確認メッセージがrm -rf
表示されます。rm
それから彼らは仕事をやめる機会がありました。
これは面白い小さなトリックですが、誤ってファイルを削除する問題を解決する正しい方法ではありません。正しい解決策はそれ問題は、定期的にバックアップを実行することです。