Jak manipulować nazwami plików o przestrzeni i znakach specjalnych w Linux
- 1115
- 167
- Juliusz Janicki
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ć!
- « Jak ukryć numer wersji PHP w nagłówku HTTP
- Jak dostosowywać kolory i treść Bash w linii montażu terminalu Linux »