この例では、ファイル名拡張子が機能しないのはなぜですか? [コピー]

この例では、ファイル名拡張子が機能しないのはなぜですか? [コピー]

以下を使用して一部のファイルを削除しますtrash-cli

$ pwd
/tmp/test
$ sudo trash mfile 
$

次に、削除されたファイルが保存されている場所を見つけます。

$ sudo ls /.Trash/0/ -la
total 16
drwx------ 4 root root 4096 May 19 16:52 .
drwx------ 3 root root 4096 May 19 16:52 ..
drwx------ 2 root root 4096 May 19 16:52 files
drwx------ 2 root root 4096 May 19 16:52 info

$ sudo ls /.Trash/0/* -la
ls: cannot access '/.Trash/0/*': No such file or directory

$ sudo ls /.Trash/0/files/ -la
total 12
drwx------ 2 root root 4096 May 19 16:52 .
drwx------ 4 root root 4096 May 19 16:52 ..
-rw-rw-r-- 1 t    t       6 May 19 16:48 mfile

2番目のコマンドでファイル名拡張子が機能しないのはなぜですか?

ありがとうございます。

答え1

最初のlsディスプレイは/.Trash/0/ルート(最初の行、で使用される行.)のみを読み取ることができます。あなたが使用しているのはsudoおそらくルートではないので、シェルはディレクトリの内容をリストできず、拡張することもできません*ls /.Trash/0/sudoPermission denied

sudo echo foo > /some/path/filenameこれは、ルートのみを書くことができる場合は機能しないのと似ています/some/path。シェルは実行前に拡張とリダイレクトを処理しますsudosudo bash -c 'ls /.Trash/0/*'コマンドラインを処理するにはこれが必要ですsudo

関連情報