Linux を使用して $ 記号が付いたファイルを削除できませんか?

Linux を使用して $ 記号が付いたファイルを削除できませんか?

ls以下は、現在のディレクトリ内のファイルのリストを表示するコマンドです。

rper:  ls -l

$commandoutput[0]  
file.txt

$commandoutput[0]を使用して行を削除しようとしましたrm -rf $commandoutput[0]が、次のエラーが表示されます。どうすれば削除できますか?

rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.

答え1

@RomanPerekhrest の回答の代わりに、これも機能します:

rm '$commandoutput[0]'  

一重引用符により変数の展開が回避されます。

rm $もう 1 つの方法は、入力を開始して ;を押すことですTab。シェルはファイル名を自動補完し、必要に応じて文字をエスケープします。

答え2

ファイル名にバックスラッシュ$(およびできれば[, ) を付けてエスケープします。]\

rm -rf \$commandoutput\[0\]

答え3

他の人がこの質問に答えていますが、これを行う別の方法としては、ファイルの inode を見つけて、find と exec delete を使用してファイルを削除することです。

ls -il

サンプル出力:

781956 drwx------  3 viv viv 4096 2017-07-7 15:05 $commandoutput[0] 

最初の列は inode である必要があります。上記の例では、次を実行します。

find . -inum 781956 -exec rm -i {} \;

答え4

もう 1 つの簡単な方法は、ワイルドカードを使用して rm -i を実行することです。

rm -i *command*

これにより、「command」という単語を含むすべてのファイル名に対して、ファイルを削除するかどうかが尋ねられます。削除する前に確認できます。

関連情報