Stejně jako většina operačních systémů podporuje Linux názvy souborů s prostory v nich. Použití těchto názvů souborů na příkazovém řádku však není vždy jednoduché. Zde je několik způsobů, jak zvládnout názvy souborů obsahujících prostory.
Skromný název souboru
Proč prostory v názvech souborů Linuxu jsou bolest
Jak citovat a uniknout prostorům
Jak opravit problém s prostorem na jeho zdroji
Rozšíření karet usnadňuje řešení prostorů
Jak používat názvy souborů s mezerami ve skriptech Bash
Rozmístěno, ale ne flaky
Skromný název souboru
Všechno uloženo na počítači pevný disk musí mít jméno. Bez názvu by žádné soubory neexistovaly. Všechny aplikace a démony, které jsou spuštěny při zavádění počítače a veškerý software, který používáte, musí být identifikovány a uloženy v souborovém systému. Tato identifikace je název souboru. “
Totéž platí pro soubory, které vytvoříte nebo nainstalujete. Všechny vaše dokumenty, obrázky a hudba potřebují názvy souborů. Bez názvů souborů nemůže existovat žádná z vašich digitálních aktiv. Protože názvy souborů jsou tak důležité, Linux se těžko snaží uvalit co nejméně pravidel o jejich složení.
Na Linuxu může název souboru obsahovat jakoukoli znak kromě předního lomítka “
/ /
“A nulový charakter,
0x00
. Nulový znak se používá k označení konec řetězce, takže jej nemůže být přítomen v samotném řetězci, nebo Linux by zkrátil název souboru v poloze nulové znaky. „
/ /
“Forward Slash se používá jako separátor v adresářových cestách.
Názvy souborů jsou citlivé na případ, a může být až 255 bajtů dlouhých , včetně nulové znaky. Cesty adresáře mohou být až 4096 bajtů, včetně nulové znaky. Všimněte si, že toto je jejich délka bajty , který se nemusí přímo vyrovnat postavy . Například 16-bitové znaky Unicode vezměte dva bajty.
Nadšenci retro-computování a ti, kteří mají dlouhé vzpomínky, budou vědět, že v prvních dnech osobních počítačů, Operační systém diskového systému společnosti Microsoft , Dos, byl necitlivý na případ a měl limit názvu osmi znaků plus tři postavy rozšíření .
Když jste jmenovali soubory, museli jste být velmi promyšlení a někdy kreativní. Pro srovnání, svoboda, kterou dnes máme, znamená, že můžeme pojmenovat soubory, co chceme, s malým přemýšlením na cokoli jiného než popis, který pro tento soubor vytváříme.
Ale s názvy souborů, co nás nejčastěji zakopne, nejsou postavy, které píšeme, jsou to mezery mezi nimi.
Proč prostory v názvech souborů Linuxu jsou bolest
Shells, jako je Bash, budou interpretovat řetězec slov oddělených prostorem jako individuální argumenty příkazu, nikoli jediný argument. Zde je příklad, použití
dotek
na
Vytvořte nový soubor
nazývá se „můj nový file.txt“.
Jak můžeme vidět,
ls
Ukazuje nám, že jsou vytvořeny tři soubory, jeden zvaný „můj“, druhý nazvaný „nový“ a jeden další nazvaný „file.txt“.
Všimněte si, že
dotek
nestěžoval se ani nehodil chybu. Provádí to, co si myslí, že to žádáme. Takže nás tiše vrací na příkazový řádek. Pokud nejsme motivováni ke kontrole, nebudeme vědět, že se věci podle plánu nedařilo.
Abychom vytvořili soubor, který jsme chtěli, musíme citovat nebo uniknout.
Jak citovat a uniknout prostorům
Pokud citujeme celý název souboru,
dotek
Ví, že je třeba zacházet s citovaným textem jako s jediným argumentem.
Tentokrát dostaneme jediný soubor, který očekáváme.
Můžeme získat stejný výsledek, pokud použijeme znak backslash “
\
"Uniknout prostorům." Tím, že „uniknou“ prostory, které se s nimi nezacházejí jako s zvláštními postavami - to je, separátory argumentů - jsou považovány za prosté staré prostory.
Funguje to, ale únikové prostory způsobují, že psaní názvů názvů jsou pomalejší a náchylné k chybám. Věci mohou být opravdu ošklivé, pokud máte také názvy adresářů s prostory.
Tento příkaz zkopíruje jeden textový soubor z adresáře s názvem „Dir One“ do adresáře s názvem „Dir Two“ a kopii uloží jako soubor Bak. A je to poměrně jednoduchý příklad.
Jak opravit problém s prostorem na jeho zdroji
Pokud jsou to vaše vlastní soubory, můžete přijmout politické rozhodnutí nikdy nepoužívat prostory a vytvořit (nebo Obrovský přejmenování ) takové názvy souborů.
Je pravda, že je to robustní řešení, ale je to stále ošklivé. Existují lepší možnosti, například použití pomlček “
-
“Nebo podtrhuje“
_
"Oddělit vaše slova."
Oba to problém vynechají a jsou čitelné. Pokud nechcete přidat další znaky do svých názvů souborů, můžete použít Camelcase Aby vaše názvy souborů byly čitelné, takto:
Rozšíření karet usnadňuje řešení prostorů
Přijetí konvence pojmenování a držení se na ni pomůže samozřejmě, pouze pokud jednáte o své vlastní soubory. Soubory, které pocházejí odkudkoli jinde, je nepravděpodobné, že by se řídily vaší přijaté pojmenovací konvenci.
Pro nás můžete použít rozšíření karty, která vám pomůže přesně „vyplňovat“ názvy souborů. Řekněme, že chceme
vymazat
Soubor Bak, který jsme vytvořili v „Dir Two“, pomocí
rm
.
Začneme psaním „rm dir“, protože používáme
rm
Příkaz a víme, že název adresáře začíná „dir“.
Stisknutím klávesy „Tab“ způsobí, že Bash skenuje zápasy v aktuálním adresáři.
Existují dva adresáře, které začínají „dir“, a v obou případech je další znakem prostor. Bash tedy přidává znak backslash “
\
"A prostor." Bash pak čeká, až poskytneme další postavu. Potřebuje další znak, aby rozlišoval mezi dvěma možnými zápasy v tomto adresáři.
Zadáme „T“, pro „dva“ a poté znovu stiskneme „Tab“.
Bash pro nás dokončí název adresáře a čeká, než zadáme začátek souboru názvu.
V tomto adresáři máme pouze jeden soubor, takže zadávání prvního písmene názvu souboru „M“ je dost, aby Bash věděl, který soubor chceme použít. Zadání „m“ a stisknutí „Tab“ pro nás dokončí název souboru a „Enter“ spustí celý příkaz.
Rozšiřování tabulek usnadňuje zajištění toho, abyste dostali názvy souborů správně, a také zrychluje navigaci a psaní na příkazovém řádku obecně.
PŘÍBUZNÝ: Použijte dokončení karty k rychlejšímu zadání příkazů v jakémkoli operačním systému
Jak používat názvy souborů s mezerami ve skriptech Bash
Není divu, že Skripty mít přesně stejné problémy s prostory v názvech jako příkazový řádek. Pokud předáváte název souboru jako proměnné, ujistěte se, že citujete název proměnné.
Tento malý skript kontroluje aktuální adresář pro soubory, které odpovídají vzorci souborů „*.txt“, a ukládá je do proměnné nazvané
file_list
.
A
pro
smyčka
se používá k provedení jednoduché akce na každé z nich.
Zkopírujte tento text do editoru a uložte jej do souboru s názvem „Files.sh“. Pak použijte
The
Chmod
příkaz
Aby byl spustitelný.
V tomto adresáři máme nějaké soubory. Jeden má jednoduchý název souboru a další dva podtrhují “
_
“Nebo pomlčky“
-
"Místo prostorů." To je to, co vidíme, když spustíme skript.
Zdá se, že to funguje pěkně. Pojďme však změnit soubory v adresáři pro soubory, které obsahují prostory v jejich jménech.
Každé slovo v každém názvu souboru je zpracováno, jako by to byl samostatně název souboru, a tak skript selže. Ale vše, co musíme udělat, aby se skript zpracovával v názvech, je citovat
$ soubor
proměnná uvnitř
pro
smyčka.
Všimněte si, že značka dolaru „
$
“Je uvnitř citací." Tuto změnu jsme provedli a uložili ji do souboru skriptu „files.sh“. Tentokrát jsou názvy souborů zpracovány správně.
PŘÍBUZNÝ: Jak zpracovat řádek souboru po řádku ve skriptu Linux Bash
Rozmístěno, ale ne flaky
Vyhýbání se prostorům ve svých vlastních názvech vás zavede jen tak daleko. Je nevyhnutelné, že narazíte na soubory z jiných zdrojů se jmény, které obsahují prostory. Naštěstí, pokud potřebujete tyto soubory zpracovat na příkazovém řádku nebo ve skriptech, existují snadné to.