Saya menjalankan perintah ini kemarin, saya berpikir pada mesin uji, tetapi itu adalah File-Server yang terhubung melalui SSH.
sudo rm -rf /tmp/* !(lost+found)
Emulator terminal saya adalah Konsole. Sistem saya adalah Debian 7.
Pertanyaan:
Apakah perintah ini menghapus file selain file dalam / tmp?
files
filesystems
rm
tmp
sesuatu Sesuatu
sumber
sumber
dsgsadfsf
dan tekan enter. Lihat hasilnya. Jika yabash: dsgsadfsf: command not found
, berarti shell Andabash
.Jawaban:
Sintaks yang benar dalam bash adalah sebagai berikut:
Seperti @goldilocks menulis dalam komentar, perintah asli melakukan ekspansi pada kueri (itu menghapus semua file dalam
/tmp
folder, kemudian melanjutkan, dan menghapus semua file di folder yang sedang bekerja, dalam kasus Andahome
folder).Anda dapat mencoba memeriksa apakah Anda dapat memulihkan beberapa data Anda. Ada pertanyaan tentang pemulihan data Linux di sini .
sumber
rm -rf / tmp
^^sudo
, jadi folder normal yang hanya dapat ditulis untuk root tidak akan membantu.The
!(lost+found)
dalam Andarm
perintah mungkin adalah kesalahan fatal:Saya tidak tahu persis apa
bash
yang dilakukan dengan itu, tetapi perintah di bawah ini mencetak semua yang ada di saya/tmp/
dan juga semua direktori saya saat ini (yang saat ini~
):sumber
!(folder)
adalah bagian dari perintah yang pernah saya jalankan, yang menghapus semua kecualifolder
.!lost+found: event not found
seperti!
digunakan untuk mengambil perintah dari sejarah.cd /; echo !(lost+found)
> _ <!(foo)
bash berfungsi sebagai "semua kecuali foo" hanya jikaextglob
opsi disetel. Selain itu OP tidak menentukan shell mana yang dia gunakan, jadi sangat sulit untuk menebak apa sebenarnyarm !(lost+found)
perintah yang telah dilakukan dalam kasusnya.bash
shell default. Dia kemungkinan besar tidak mengubah ini. Selanjutnya, di Debian 7,extglob
opsi ini diaturtrue
secara default (saya baru saja memeriksa ini).