Tak więc, pracuję w środowisku UNIX i zauważyłem, że w moim katalogu roboczym, który jest mile od mojego domu w UNIX, jest ~
.
Teraz, kiedyś, zrobiłem to rm -rf ~
z mojego katalogu roboczego i ostatecznie skasowałem mój katalog domowy i musiałem zaangażować IT.
Nie chcę tego robić ponownie. Jednocześnie chcę wiedzieć
Dlaczego jest
~
tworzony w moim katalogu roboczym? Czy to jest wadliwy poślizg palca podczas zapisywania (:w!
ale co się dzieje:w~
? !!)Przed zalogowaniem istnieje skrypt, który wyszukuje dodatkowe pliki lub foldery, których p4 nie zna, więc
~
może to spowodować problem. Więc jak mogę usunąć~
z mojego katalogu roboczego i jednocześnie nie kasować mojego domu?
Mam polecenie tworzenia kopii zapasowej o nazwie del
, którego używam zamiast rm -rf
. Po prostu umieszcza rzeczy w tymczasowej lokalizacji. Mógłbym to wykorzystać i pozbyć się ~
. Ale bardziej interesuje mnie, dlaczego tak się dzieje i jak mogę to usunąć?
/home/yourUserName/~
aby uzyskać dostęp do katalogu o nazwie~
.Odpowiedzi:
Albo to zacytuj:
Lub odwołaj się do niego ścieżką, a nie tylko nazwą basename:
Należy zauważyć, że pomimo bycia zabawnym wyglądzie pojedyncza nazwa postaci, to nie różni się koncepcyjnie niż gdybyś utworzony plik o nazwie
SOME$PATH
wykonującI próbował go usunąć, wykonując:
( Ostrzeżenie: zmienna
SOME$PATH
nie jest cytowana na potrzeby przykładu. Zwykle byłaby ujęta w cudzysłów'SOME$PATH'
)W obu przypadkach powłoka rozwija nazwę, którą nadajesz, i musisz temu zapobiec.
Ponadto: nie używaj
rm -rf
do usuwania pliku! Głównym celemrm -r
jest poinformowanie,rm
że usunięcie katalogów jest w porządku. Jeśli nie chcesz przypadkowo usunąć całych katalogów podczas próby usunięcia plików, zwykle nie przechodź-r
!źródło
:w~
w vim stworzył plik o nazwie~
.rm ~
powróciłcannot remove /home/seth it is a directory
.rm "~"
usunął plik . Aby podkreślić , nie przechodź-rf
automatycznie .kill -9
domyślnego działania, które widziałem.rm -i $FOO
celowo nie przytacza zmiennej dla samego przykładu, ale nadal: pokazując przykład powłoki obejmującyrm
i niecytowaną zmienną jako argument jest BARDZO ZŁY , uh, przepraszam, niezależny od kontekstu. Jestem pewien, że można to udowodnić :) Dodam notatkę - ale może mógłbyś trochę zmienić przykład?SOME/bin:/usr/bin
nigdzie w swoim systemie plików. :)Tylda, gdy zostanie użyta sama w kontekście
ls ~
, wyświetli twój domowy katalog jako ~ jest skrótem do twojego domowego katalogu. Jeśli to zrobiłeśls ~brown
, wyświetlisz zawartość domowego katalogu reż. Browna.VIM, o ile nie powiedziano inaczej, utworzy kopię zapasową zmienionego pliku: myFile myFile ~.
To zachowanie jest dobre, ponieważ tworzy kopię zapasową, ale jeśli nie chcesz, dodaj do siebie plik .vimrc: nie ustawiaj kopii zapasowej (do której właśnie uzyskałem dostęp
vi ~/.vimrc
).I oczywiście, jak powiedzieli inni, jeśli masz plik o nazwie ~, po prostu użyj znaku char jako \ ~
źródło
Może to być spowodowane błędami. Jeśli twoja
TERM=xterm
konfiguracja jest podobna do mojej, to praktycznie każdy klawisz funkcyjny na klawiaturze wyśle sekwencje specjalne, takie jak ...Ponad połowa danych wyjściowych
infocmp -1
zawiera~
znaki ucieczki tyldy na moim komputerze - i nie mogę zrozumieć, co robi większość z nich. Wiem, żezsh
przynajmniej faktycznie zjada uciekającą część sznurka w większości przypadków - i pozostawia tylko~
tyldę .Na przykład pisanie
echo
wtedy , a<space>
potemF6
i<return>
drukowanie ...Rzeczywista wysłana sekwencja ucieczki to ...
Co ciekawe, istnieją inne sekwencje specjalne, które zawierają
>
postacie.Są to często używane sekwencje specjalne - ciągi resetowania i inicjowania. Nietrudno wyobrazić sobie, że upuszczenie klawiatury lub roztrzaskanie przycisków w oczekiwaniu na wejście interaktywnej powłoki może spowodować przypadkowe obcięcie
~
plików w całym systemie plików. Przynajmniej czasami pojawia się u mnie.źródło