Jadi, saya bekerja di lingkungan UNIX dan saya perhatikan di dalam direktori kerja saya, yang berjarak beberapa mil dari rumah UNIX saya, ada a ~
.
Sekarang, sekali di masa lalu, saya lakukan rm -rf ~
dari direktori kerja saya dan akhirnya menghapus direktori home saya sepenuhnya dan harus melibatkan IT.
Saya tidak ingin melakukannya lagi. Pada saat yang sama, saya ingin tahu
Mengapa
~
dibuat di direktori kerja saya? Apakah itu slip jari yang salah saat menyimpan (:w!
tetapi apa yang terjadi:w~
? !!)Sebelum check-in, ada skrip yang mencari file atau folder tambahan yang p4 tidak sadari sehingga def ini
~
dapat menyebabkan masalah. Jadi bagaimana saya bisa menghapus~
dari direktori kerja saya dan pada saat yang sama tidak menghapus rumah saya?
Saya memiliki perintah cadangan yang disebut del
yang saya gunakan sebagai ganti rm -rf
. Itu hanya menempatkan barang-barang di lokasi sementara. Saya bisa menggunakannya dan menyingkirkan ~
. Tetapi saya lebih tertarik mengetahui mengapa ini terjadi, dan bagaimana saya bisa menghapusnya?
/home/yourUserName/~
untuk mengakses direktori yang disebut~
.Jawaban:
Baik mengutipnya:
Atau rujuk dengan jalur, alih-alih hanya nama kecil:
Perhatikan bahwa, meskipun merupakan nama karakter tunggal yang tampak lucu, secara konsep ini tidak berbeda dengan jika Anda telah membuat file bernama
SOME$PATH
dengan melakukanDan mencoba menghapusnya dengan melakukan:
( Peringatan: variabel
SOME$PATH
tidak dikutip untuk contoh di sini. Biasanya akan dilampirkan dalam tanda kutip'SOME$PATH'
)Dalam kedua kasus, shell memperluas nama yang Anda berikan, dan Anda perlu mencegahnya.
Juga: Jangan gunakan
rm -rf
untuk menghapus file! Seluruh tujuanrm -r
adalah untuk mengatakanrm
tidak apa-apa untuk menghapus direktori. Jika Anda tidak ingin menghapus seluruh direktori tanpa sengaja saat mencoba menghapus file, jangan lewat begitu saja-r
!sumber
:w~
di vim memang membuat file bernama~
.rm ~
dikembalikancannot remove /home/seth it is a directory
.rm "~"
memang menghapus file . Hanya untuk menggarisbawahi tidak lulus-rf
secara otomatis .kill -9
secara default, yang saya lihat.rm -i $FOO
sengaja tidak mengutip variabel demi contoh, tetapi tetap: menunjukkan contoh shell yang melibatkanrm
dan variabel tidak dikutip sebagai argumen SANGAT BURUK , eh, maaf, terlepas dari konteks. Saya yakin itu bisa prooven :) Saya akan menambahkan beberapa catatan - tapi mungkin Anda bisa mengubah contoh, sedikit?SOME/bin:/usr/bin
mana pun pada sistem file mereka. :)Tilde ketika digunakan sendiri dalam konteks
ls ~
akan menampilkan dir home Anda ~ adalah jalan pintas ke dir home Anda. Jika Anda melakukannyals ~brown
maka Anda akan daftar isi home dir brown.VIM, kecuali diberitahu sebaliknya, akan membuat salinan cadangan file yang diubah: myFile myFile ~.
Perilaku ini baik karena ia membuat cadangan tetapi jika Anda tidak menginginkannya, tambahkan file .vimrc: setel tanpa cadangan (yang baru saja saya akses
vi ~/.vimrc
).Dan tentu saja seperti yang dikatakan orang lain, jika Anda memiliki file bernama ~ maka cukup lepaskan char sebagai \ ~
sumber
Ini bisa dipengaruhi oleh salah ketik. Jika
TERM=xterm
konfigurasi Anda sama seperti milik saya, maka praktis setiap tombol fungsi di keyboard Anda akan mengirim urutan pelarian seperti ...Lebih dari setengah dari output dari
infocmp -1
mengandung~
tilde lolos pada mesin saya - dan saya bingung untuk memahami apa yang kebanyakan mereka. Saya tahu bahwazsh
setidaknya benar-benar memakan bagian tali yang lolos dalam banyak kasus - dan hanya menyisakan~
tilde .Misalnya, mengetik
echo
maka<space>
kemudianF6
dan<return>
cetakan ...Urutan melarikan diri sebenarnya yang dikirim adalah ...
Menariknya, ada beberapa urutan pelarian yang mengandung
>
karakter.Itu biasanya digunakan lolos - reset dan inisialisasi string. Tidak sulit untuk membayangkan bahwa keyboard atau tombol-smash yang terjatuh dari semacam ketika shell interaktif sedang menunggu input dapat mengakibatkan
~
file terpotong secara acak terjadi di seluruh sistem file Anda. Setidaknya, kadang-kadang muncul di tambang.sumber