Tilde (~) çalışan unix dizini içinde


22

Bu yüzden bir UNIX ortamında çalışıyorum ve UNIX evimden mil uzakta olan çalışma dizinimde bir tane olduğunu fark ettim ~.

Şimdi, geçmişte bir kez, rm -rf ~çalışma dizinimden çıktım ve ana dizimi tamamen sildim ve BT'yi dahil etmek zorunda kaldım.

Bir daha yapmak istemiyorum. Aynı zamanda bilmek istiyorum

  1. Çalışma dizimde neden ~yaratılıyor? Kaydederken hatalı bir parmak izi mi var ( :w!ama ne olur :w~? !!)

  2. Check-in işleminden önce, p4'ün farkında olmadığı ilave dosya veya klasörleri arayan bir script var, bu yüzden def ~bir soruna neden olabilir. Öyleyse ~çalışma dizinimden nasıl kaldırabilirim ve aynı zamanda evimi silmeyebilirim?

Yerine delkullandığım denilen bir yedekleme komutu var rm -rf. Sadece geçici bir yere şeyler yerleştirir. Bunu kullanabilir ve ondan kurtulabilirim ~. Ama bunun neden olduğunu bilmekle ve onu nasıl kaldırabilirim?


Normalde, kabuk ~ dizininizle bir yolun başında ~ yerini alır. /home/yourUserName/~Aranan dizine erişmek için tam yolu kullanın ~.
jofel

Ve ~ otheruser / file, eksiksiz olması adına, diğer kullanıcının ana dizinlerine atıfta bulunmak için kullanılabilir.
godlygeek

Bir şaka gibi görünüyor!
Xolve

Yanıtlar:


36

Ya alıntı:

rm -i '~'
rm -i "~"
rm -i \~

Veya sadece bir basename yerine bir yoldan referans verin:

rm -i ./~
rm -i /path/to/~

Bir komik görünüşlü tek karakter adı olmasına rağmen, unutmayın, bu kavramsal olarak farklı değil sen adlı bir dosya oluşturdum olsaydı daha SOME$PATHyaparak

touch 'SOME$PATH'

Ve yaparak onu çıkarmaya çalıştı:

rm -i SOME$PATH

( Uyarı: Değişken SOME$PATH , buradaki örnek uğruna kote değildir. Normalde tırnak işaretleri içine alınacaktır 'SOME$PATH' )

Her iki durumda da, kabuk verdiğiniz adı genişletiyor ve bunu engellemeniz gerekiyor.

Ayrıca: rm -rfBir dosyayı kaldırmak için kullanmayın ! Bunun amacı rm -r, rmdizinleri kaldırmanın doğru olduğunu söylemektir . Dosyaları silmeye çalışırken yanlışlıkla tüm dizinleri kaldırmak istemiyorsanız, alışkanlıkla geçmeyin -r!


12
Bunu daha yeni test ettim. :w~vim adlı bir dosya oluşturdu ~. rm ~geri döndü cannot remove /home/seth it is a directory. dosyayırm "~" kaldırdım . Sadece altını çizmek için otomatik olarak geçmeyin . -rf
Seth

4
Varsayılan olarak şiddet içeren seçenekleri atlamamanızı öneren +1. Bu kill -9gördüğüm varsayılan olarak yapmaya benzer .
Celada

Örneğin, rm -i $FOOkasıtlı olarak, örneğin uğruna değişkeni alıntılamadığını görüyorum , ancak yine de: içeren bir kabuk örneğini rmve argüman olarak işaretlenmemiş bir değişkeni göstermek, bağlamdan bağımsız olarak, ÇOK BAD'dir . Kanıtlanmış olabileceğinden eminim :) Bir not ekleyeceğim - ama belki örneğini değiştirebilirsin, biraz?
Volker Siegel

@ VolkerSiegel, Puan alındı ​​- Düzenlemenizin bir parçası oldum, ancak dipnot biraz fazla ağır görünüyordu. Ayrıca sorunlara neden olma olasılığı daha az olan değişken bir isme de geçtim - çoğu insanın dosya SOME/bin:/usr/binsisteminde herhangi bir yerde bir dosya yok . :)
godlygeek

Evet, iyi görünüyor! (Neredeyse cevaplayacaktım: Ne? Ağır elle mi? Hayatınızda gerçek bir alıntı problemi yaşadınız mı hiç?) yanlış örnekler olmadan bile anlamak için! )
Volker Siegel

1

Bağlamında tek başına kullanıldığında tilde ls ~, ev dizininizi ~ ana dizininizin kısayolu olarak listeleyecektir. Öyleyse ls ~brown, kahvenin ev dir.

VIM, aksi belirtilmedikçe, değiştirilmiş bir dosyanın yedek bir kopyasını oluşturur: myFile myFile ~.

Bu davranış bir yedekleme oluşturduğundan iyidir, ancak istemiyorsanız, .vimrc dosyasına ekleyin: hiçbir yedekleme ayarlamayın (bunlara yalnızca eriştim vi ~/.vimrc).

Ve elbette diğerlerinin dediği gibi, eğer ~ adlı bir dosyanız varsa, o zaman sadece karakterden kaçın \ ~

me 217 % vi this      (saved as :w~)
me 218 % ls
this  ~
me 219 % cat \~
kfdkdfk
me 220 % \rm \~
me 221 % ls
this

0

Bu yanlış yazımlardan etkilenebilir. Senin Eğer TERM=xtermyapılandırma benimki gibi bir şey, o zaman pratikte klavyenizdeki her fonksiyon tuşu gibi çıkış sıralarını gönderecek ...

infocmp -1 | grep -n \~ | tail -n3
138:    kich1=\E[2~,
141:    knp=\E[6~,
142:    kpp=\E[5~,

Çıktısının fazla yarım infocmp -1içeren ~yaklaşık işareti benim makinede kaçar - ve bunların çoğu ne anlamak için bir kayıp am. zshEn azından gerçekte ipin kaçan kısmını yiyor - çoğu zaman sadece ~tilde kaldığını biliyorum .

Örneğin, yazarak echodaha sonra <space>o F6ve <return>baskılar ...

/home/mikeserv

Gönderilen gerçek kaçış dizisi ...

kf6=\E[17~

İlginç bir şekilde, >karakterleri içeren bu kaçış dizilerinin başkaları vardır .

infocmp -1 | grep \>
is2=\E[!p\E[?3;4l\E[4l\E>,
rmkx=\E[?1l\E>,
rs2=\E[!p\E[?3;4l\E[4l\E>,

Bunlar genellikle kaçar - sıfırlama ve başlatma dizeleri kullanılır. Etkileşimli bir kabuk girişi beklerken, düşmüş bir klavyenin veya bir tür düğmenin parçalanmasının ~dosya sisteminizde rastgele kesilen dosyaların ortaya çıkmasına neden olabileceğini hayal etmek zor değildir . En azından, zaman zaman benimkileri mahveder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.