Jak manipulować nazwami plików o przestrzeni i znakach specjalnych w Linux

Jak manipulować nazwami plików o przestrzeni i znakach specjalnych w Linux

Nazywamy pliki i foldery bardzo regularnie. W większości przypadków nazwa pliku/folderu jest powiązana z zawartością pliku/folderu i zaczyna się od liczby i znaków. Nazwa pliku alfa-numeryczna jest dość powszechna i bardzo powszechnie używana, ale nie jest tak, gdy mamy do czynienia z nazwą pliku/folderu, która ma w sobie znaki specjalne.

Notatka: Możemy mieć pliki dowolnego typu, ale dla prostoty i łatwej implementacji będziemy mieli do czynienia z plikiem tekstowym (.tekst), w całym artykule.

Przykład najczęstszych nazw plików to:

ABC.txt avi.TXT Debian.tekst… 

Przykład numerycznych nazw plików to:

121.TXT 3221.TXT 674659.tekst… 

Przykład alfa-numerycznych nazw plików to:

EG84235.TXT 3KF43NL2.TXT 2323DDW.tekst… 

Przykłady nazw plików, które mają charakter specjalny i nie są zbyt powszechne:

#232.txt #bkf.TXT #BJSD3469.TXT #121NKFD.TXT -2232.TXT -FBJDEW.TXT -GI32KJ.TXT -321.TXT -BK34.tekst… 

Jednym z najbardziej oczywistych pytań jest tutaj - kto na Ziemi tworzy/radzi sobie z nazwą plików/folderów, mając skrót (#), półkolon (;), myślnik (-) lub jakikolwiek inny charakter specjalny.

Zgadzam się z tobą, że takie nazwy plików nie są powszechne, wciąż twoja powłoka nie powinna łamać/poddawać się, gdy musisz poradzić sobie z takimi nazwami plików. Mówiąc technicznie, wszystko jest to folder, sterownik lub cokolwiek innego, jest traktowane jako plik w Linux.

Radzenie sobie z plikami, który ma deszcz (-) w nazwie

Utwórz plik, który zaczyna się od deski rozdzielczej (-), mowić -Abx.tekst.

$ touch -Abc.tekst 
Przykładowy wyjście
Dotyk: nieprawidłowa opcja -„b” spróbuj „touch - -help”, aby uzyskać więcej informacji. 

Powód powyższego błędu, że Shell interpretuje cokolwiek po desce rozdzielczej (-), Jako opcja i oczywiście nie ma takiej opcji, dlatego jest błąd.

Aby rozwiązać taki błąd, musimy powiedzieć powłokę bash (tak i większość innych przykładów w artykule jest dla GRZMOTNĄĆ) nie interpretować niczego po charakteru specjalnym (tutaj Dash), jako opcja.

Istnieją dwa sposoby rozwiązania tego błędu jako:

$ touch --Abc.txt [opcja #1] $ Touch ./-ABC.txt [opcja #2] 

Możesz zweryfikować plik utworzony w ten sposób na oba powyższe sposoby, uruchamiając polecenia LS lub LS -L dla długiego listy.

$ ls -l ogółem 0 -RW-r--r-- 1 avi avi 0 czerwca 8 11:05 -ABC.tekst 

Aby edytować powyższy plik, który możesz zrobić:

$ nano --Abc.txt lub $ nano ./-ABC.tekst 

Notatka: Możesz wymienić Nano Z dowolnym innym edytorem powiedzmy krzepa Jak:

$ vim --Abc.txt lub $ vim ./-ABC.tekst 

Podobnie, aby przenieść taki plik, musisz zrobić:

$ mv --Abc.txt -a.txt lub $ mv --a.TXT -ABC.tekst 

Aby usunąć ten plik, musisz zrobić:

$ rm --ABC.txt lub $ rm ./-ABC.tekst 

Jeśli masz dużo plików w folderze, nazwa zawiera DASH, i chcesz usunąć je jednocześnie, rób:

$ rm ./-* 
Ważne do zauważenia:

1. Ta sama zasada, jak omówiona powyżej, następuje dla dowolnej liczby Hypena w imieniu pliku i ich wystąpienia. Mianowicie., -ABC.tekst, ABC.tekst, ABC-.tekst, itp.

2. Ta sama zasada, jak omówiona powyżej, następuje dla nazwy folderu o dowolnej liczbie Hypena i ich wystąpieniu, z wyjątkiem faktu, że w celu usunięcia folderu, którego musisz użyć ”rm -rf' Jak:

$ rm -rf --Abc lub $ rm -rf ./-ABC 

Radzenie sobie z plikami o skrócie (#) w nazwie

Symbol # ma zupełnie inne znaczenie w Bash. Cokolwiek po # jest interpretowany jako komentarz, a zatem zaniedbany przez Bash.

Zrozum to za pomocą przykładów:

Utwórz plik #ABC.tekst.

$ Touch #abc.tekst 
Przykładowy wyjście
Touch: brakujący operand plik spróbuj „dotyk - -help”, aby uzyskać więcej informacji. 

Powód powyższego błędu, że Bash interpretuje #ABC.tekst komentarz, a zatem ignorowanie. Tak więc dotyk poleceń został przekazany bez żadnego operandu plików, a zatem jest błąd.

Aby rozwiązać taki błąd, możesz poprosić Bash, aby nie interpretować # Jako komentarz.

$ Touch ./#ABC.txt lub $ touch '#abc.tekst' 

i zweryfikuj plik właśnie utworzony jako:

$ ls -l ogółem 0 -RW-r--r-- 1 avi avi 0 czerwca 12:14 #ABC.tekst 

Teraz utwórz plik, którego zawiera nazwa # gdziekolwiek, z wyjątkiem żebrania.

$ Touch ./ABC.txt $ touch ./ABC#.txt lub $ touch 'a#bc.txt '$ touch' ABC#.tekst' 

Uruchomić 'ls -l„Aby to zweryfikować:

$ ls -l ogółem 0 -RW-r-r-- 1 avi avi 0 czerwca 12:16 ABC.tekst -rw-r-r-- 1 avi avi 0 czerwca 12:16 ABC#.tekst 

Co się stanie, gdy tworzysz dwa pliki (powiedzmy A I #pne) natychmiast:

$ dotyk a.txt #bc.tekst 

Sprawdź właśnie utworzony plik:

$ ls -l ogółem 0 -RW-r-r-- 1 avi avi 0 czerwca 12:18 A.tekst 

Oczywiste z powyższego przykładu, że utworzył tylko plik 'A'i plik' '#pne'został zignorowany. Aby pomyślnie wykonać powyższą sytuację,

$ dotyk a.tekst ./#pne.txt lub $ touch a.txt '#bc.tekst' 

i zweryfikuj to jako:

$ ls -l ogółem 0 -RW-r--r-- 1 avi avi 0 czerwca 12:20 A.tekst -rw-r-r-- 1 avi avi 0 czerwca 12:20 #pne.tekst 

Możesz przesunąć plik jako:

$ mv ./#pne.tekst ./#płyta CD.txt lub $ mv '#bc.txt "#CD.tekst' 

Skopiuj to jako:

$ cp ./#płyta CD.tekst ./#de.txt lub $ cp '#cd.txt "#de.tekst' 

Możesz go edytować jako użycie wyboru edytora jako:

$ vi ./#płyta CD.txt lub $ vi '#cd.tekst' 
$ nano ./#płyta CD.txt lub $ nano '#cd.tekst' 

I usuń to jako:

$ rm ./#pne.txt lub $ rm '#bc.tekst' 

Aby usunąć wszystkie pliki, które mają skrót (#) W nazwie pliku możesz użyć:

 # rm ./#* 

Radzenie sobie z plikami o półkolisu (;) w nazwie

W przypadku, gdy nie wiecie, półkolon działa jak separator poleceń w Bash, a być może inna skorupa. Semicolon pozwala wykonać kilka poleceń za jednym razem i działa jako separator. Czy kiedykolwiek miałeś do czynienia z dowolną nazwą pliku o półkolonie? Jeśli nie tutaj, będziesz.

Utwórz plik o półkolonie.

$ touch; abc.tekst 
Przykładowy wyjście
Touch: brakujący operand plik spróbuj „dotyk - -help”, aby uzyskać więcej informacji. Bash: ABC.TXT: Nie znaleziono polecenia 

Przyczyna powyższego błędu, że po uruchomieniu powyższego bicia polecenia interpretuj dotykać Jako polecenie, ale nie mogłem znaleźć żadnego operandu plików przed półcolonem, a zatem zgłasza błąd. Zgłasza także kolejny błąd, któryABC.tekst„Nie znaleziono polecenia, tylko dlatego, że po Semicolon Bash spodziewał się innego polecenia i”ABC.tekst', nie jest poleceniem.

Aby rozwiązać taki błąd, powiedz Bashowi, aby nie interpretować półkollonu jako separatora poleceń, jako:

$ Touch ./';ABC.txt 'lub $ touch'; abc.tekst' 

Notatka: Zatrzymaliśmy nazwę pliku z pojedynczym cytatem ". Mówi to Bashowi ; jest częścią nazwy pliku, a nie separatora poleceń.

Reszta akcji (mianowicie., skopiuj, przenieś, usuń) w pliku i folderze mającym półkolon w nazwie można wykonać prosto, zawierając nazwę w pojedynczym cytatie.

Radzenie sobie z innymi znakami specjalnymi w nazwie pliku/folderu

Plus znak (+) w nazwie pliku

Nie wymaga niczego dodatkowego, po prostu rób to normalny sposób, jako prosta nazwa pliku, jak pokazano poniżej.

$ Touch +12.tekst 

Znak dolara ($) w nazwie pliku

Musisz dołączyć nazwę pliku w jednym cytacie, tak jak to zrobiliśmy w przypadku Semicolon. Reszta rzeczy jest prosta…

$ Touch '12 $.tekst' 

Procent (%) w nazwie pliku

Nie musisz robić nic inaczej, traktuj to jako normalny plik.

$ touch %12.tekst 

Asterisk (*) w nazwie pliku

Posiadanie gwiazdka w nazwie pliku niczego nie zmienia i możesz kontynuować użycie go jako normalnego pliku.

$ Touch *12.tekst 

Notatka: Kiedy musisz usunąć plik, który zaczyna się od *, Nigdy nie używaj następujących poleceń do usuwania takich plików.

$ rm * lub $ rm -rf * 

Zamiast tego użyj,

$ rm ./*.tekst 

Wykrzyknik (!) W nazwie pliku

Po prostu załącz nazwę pliku w pojedynczym cytacie, a reszta rzeczy jest takie same.

$ Touch '!12.tekst' 

Na znak (@) w nazwie pliku

Nic więcej, traktuj nazwę pliku mającą podpis jako plik niermalny.

$ touch '@12.tekst' 

^ w nazwie pliku

Nie wymaga dodatkowej uwagi. Użyj pliku posiadającego ^ w nazwie pliku jako normalny plik.

$ touch ^12.tekst 

Ampersand (&) w nazwie pliku

Nazwa pliku powinna być zamknięta w pojedynczych cytatach i jesteś gotowy.

$ Touch '& 12.tekst' 

Nawiasy () w nazwie pliku

Jeśli nazwa pliku ma nawias, musisz załatwić nazwę pliku za pomocą pojedynczych cytatów.

$ touch '(12.tekst)' 

Braces w nazwie pliku

Brak dodatkowej opieki. Po prostu traktuj to jako kolejny plik.

$ touch 12.tekst 

Chevrons w nazwie pliku

Nazwa pliku o chevronach musi być zamknięta w pojedynczych cytatach.

$ touch '' 

Square Brackets [] w nazwie pliku

Traktuj nazwę pliku posiadających kwadratowe wsporniki jako normalne pliki i nie musisz się nią zająć.

$ Touch [12.tekst] 

W wyniku (_) w nazwie pliku

Są bardzo powszechne i nie wymagają niczego dodatkowego. Po prostu rób to, co zrobiłbyś za pomocą normalnego pliku.

$ Touch _12.tekst 

Równe (=) w nazwie pliku

Posiadanie znaku równego do niczego nie zmienia, możesz go użyć jako normalnego pliku.

$ touch = 12.tekst 

Radzenie sobie z tylnym slashem (\)

BackSlash każe Shellowi zignorować następną postać. Musisz dołączyć nazwę pliku w jednym cytacie, tak jak to zrobiliśmy w przypadku Semicolon. Reszta rzeczy jest prosta.

$ Touch '.tekst' 

Szczególny przypadek cięcia do przodu

Nie możesz utworzyć pliku, którego nazwa zawiera cięcie do przodu (/), Dopóki system plików nie ma błędu. Nie ma sposobu, aby uciec przed slashem do przodu.

Więc jeśli możesz utworzyć plik, taki jak '/12.tekst' Lub 'pne.tekst' Następnie albo system plików ma błąd, albo masz obsługę Unicode, co umożliwia utworzenie pliku z Slashem do przodu. W takim przypadku ukośnie do przodu nie jest prawdziwym cięciem do przodu, ale postać Unicode, która wygląda podobnie do przedniego cięcia.

Znak zapytania (?) W nazwie pliku

Znowu przykład, w którym nie musisz podejmować żadnej specjalnej próby. Nazwa pliku o znaku zapytania można traktować w najbardziej ogólny sposób.

$ Touch ?12.tekst 

MARK DOT (.) W nazwie pliku

Pliki zaczynające się na DOT (.) są wyjątkowe w Linux i nazywane są plikami kropkowymi. Są to pliki ukryte ogólnie pliki konfiguracji lub systemu. Musisz użyć przełącznika '-A' Lub '-A' z polecenie ls Aby wyświetlić takie pliki.

Tworzenie, edytowanie, zmiana nazwy i usuwanie takich plików jest prosto.

$ Touch .12.tekst 

Notatka: W Linux możesz mieć tyle kropek (.) Jak potrzebujesz w nazwie pliku. W przeciwieństwie do innych kropek systemowych w nazwie pliku nie oznacza oddzielenia nazwy i rozszerzenia. Możesz utworzyć plik o wielu kropkach jako:

$ Touch 1.2.3.4.5.6.7.8.9.10.tekst 

i sprawdź to jako:

$ ls -l ogółem 0 -RW-r-r-- 1 avi avi 0 czerwca 8 14:32 1.2.3.4.5.6.7.8.9.10.tekst 

Przecinek (,) w nazwie pliku

Możesz mieć przecinek w nazwie pliku, tyle, ile chcesz i nie potrzebujesz niczego dodatkowego. Po prostu zrób to normalny sposób, jako prosta nazwa pliku.

$ Touch, 12.txt lub $ touch, 12,.tekst 

Dwukropek (:) w nazwie pliku

Możesz mieć dwukropek w nazwie pliku, tyle, ile chcesz i nie potrzebujesz niczego dodatkowego. Po prostu zrób to normalny sposób, jako prosta nazwa pliku.

$ touch: 12.txt lub $ touch: 12:.tekst 

Posiadanie cytatów (pojedynczych i podwójnych) w nazwie pliku

Aby mieć cytaty w nazwie pliku, musimy użyć zasady wymiany. I.e, jeśli chcesz mieć pojedynczy cytat w nazwie pliku, załóż nazwę pliku z podwójnymi cytatami i jeśli potrzebujesz podwójnego cytatu w nazwie pliku, załącz ją za pomocą pojedynczego cytatu.

$ touch "15 '.txt „i $ touch '15”.tekst' 

Tilde (~) w nazwie pliku

Niektórzy redaktorzy w Linux jak Emacs Utwórz plik kopii zapasowej edytowanego pliku. Plik kopii zapasowej ma nazwę oryginalnego pliku plus tylde na końcu nazwy pliku. Możesz mieć plik, którego nazwa obejmuje Tilde, w dowolnym miejscu po prostu jako:

$ touch ~ 1a.txt lub $ touch 2b ~.tekst 

Biała przestrzeń w nazwie pliku

Utwórz plik, którego nazwa ma miejsce między znakiem/słowem, powiedz „Cześć, nazywam się Avishek.tekst".

Nie jest dobrym pomysłem, aby mieć nazwę pliku z przestrzeniami, a jeśli musisz odrębna nazwa, powinieneś użyć, podkreślenie lub deszcz. Jeśli jednak musisz utworzyć taki plik, musisz użyć slash wstecznych, który ignoruje następny znak. Aby utworzyć powyższy plik, musimy to zrobić w ten sposób…

$ touch hi \ my \ nazwa \ to \ avishek.tekst Cześć, nazywam się Avishek.tekst 

Próbowałem pokryć wszystkie scenariusze, z którym możesz się spotkać. Większość powyższych wdrożenia jest wyraźnie dla bash powłoka i może nie działać w innych powłokach.

Jeśli czujesz, że coś przegapiłem (to jest bardzo powszechne i ludzka natura), możesz podać swoją sugestię w komentarzach poniżej. Kontynuuj, komentuj dalej. Bądź na bieżąco i połączony! Polub nas i podziel się i pomóż nam się rozprzestrzeniać!