これが私のls
コマンドで、現在のディレクトリにあるファイルのリストを表示します。
rper: ls -l
$commandoutput[0]
file.txt
$commandoutput[0]
を使用してrm -rf $commandoutput[0]
行を削除しようとしましたが、次のエラーが表示されます。どうすれば削除できますか?
rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.
逃れる $
(そして望ましくは[
、]
)バックスラッシュでファイル名をサインインします\
:
rm -rf \$commandoutput\[0\]
@RomanPerekhrestの回答の代わりに、これも機能します。
rm '$commandoutput[0]'
一重引用符は変数の展開を回避するためです。
もう1つの方法は、rm $
と入力してから、 Tab;シェルはファイル名をオートコンプリートし、必要に応じて文字をエスケープします。
他の人がこの質問に答えていますが、これを行う別の方法は、ファイルのiノードを見つけ、findとexecdeleteを使用してファイルを削除することです。
ls -il
サンプル出力:
781956 drwx------ 3 viv viv 4096 2017-07-7 15:05 $commandoutput[0]
最初の列はiノードである必要があります。上記の例では、次のように実行します。
find . -inum 781956 -exec rm -i {} \;
もう1つの簡単な方法は、ワイルドカードとrm-iを使用することです。
rm -i *command*
これにより、「コマンド」という単語を含むすべてのファイル名について、ファイルを削除するかどうかを尋ねられます。その後、削除する前に確認できます。