GNU/Linux >> Znalost Linux >  >> Linux

Zvládněte příkaz Linux ls

ls příkaz uvádí soubory v systému POSIX. Je to jednoduchý příkaz, často podceňovaný, ne v tom, co umí (protože ve skutečnosti dělá jen jednu věc), ale v tom, jak ho můžete optimalizovat.

Z 10 nejdůležitějších terminálových příkazů, které je třeba znát, je skromný ls příkaz je v prvních třech, protože ls nejen jen seznam souborů, sdělí vám o nich důležité informace. Říká vám například, kdo vlastní soubor nebo adresář, kdy byl každý soubor ztracen nebo upraven, a dokonce i o jaký druh souboru se jedná. A pak je tu jeho vedlejší funkce, která vám dává představu o tom, kde jste, jaké blízké předměty se povalují a co s nimi můžete dělat.

Pokud máte zkušenosti s ls je omezeno na cokoli, na co ho vaše distribuce v .bashrc nazývá , pak pravděpodobně přicházíte o.

GNU nebo BSD?

Než se podíváte na skryté schopnosti ls , musíte určit, které ls příkaz, který spouštíte. Dvě nejoblíbenější verze jsou verze GNU, zahrnutá v GNU coreutils balíček a verzi BSD. Pokud používáte Linux, pak pravděpodobně máte ls nainstalováno. Pokud používáte BSD nebo MacOS, pak máte verzi BSD. Existují rozdíly, které tento článek popisuje.

Verzi --version zjistíte ve svém počítači možnost:

$ ls --version

Pokud to vrátí informace o GNU coreutils, pak máte verzi GNU. Pokud vrátí chybu, pravděpodobně používáte verzi BSD (spusťte man ls | head pro jistotu).

Měli byste také prozkoumat, jaké přednastavení může mít vaše distribuce. Úpravy příkazů terminálu jsou často umístěny v $HOME/.bashrc nebo $HOME/.bash_aliases nebo $HOME/.profile a jsou prováděny pomocí aliasů ls na složitější ls příkaz. Například:

alias ls='ls --color'

Předvolby poskytované distribucemi jsou velmi užitečné, ale znesnadňují rozeznat, co l dělá sám o sobě a co poskytují jeho další možnosti. Pokud byste někdy chtěli spustit ls a ne alias, příkaz můžete "uniknout" zpětným lomítkem:

$ \ls

Klasifikace

Spustit samostatně, ls jednoduše vypíše soubory v tolika sloupcích, kolik se vejde do vašeho terminálu:

$ ls ~/example
bunko        jdk-10.0.2
chapterize   otf2ttf.ff
despacer     overtar.sh
estimate.sh  pandoc-2.7.1
fop-2.3      safe_yaml
games        tt

Je to užitečná informace, ale všechny tyto soubory vypadají v zásadě stejně bez výhod ikon, které by rychle sdělily, co je adresář, textový soubor nebo obrázek a tak dále.

Použijte -F (nebo --klasifikovat na GNU), aby se po každém záznamu zobrazily indikátory, které identifikují druh souboru:

$ ls ~/example
bunko         jdk-10.0.2/
chapterize*   otf2ttf.ff*
despacer*     overtar.sh*
estimate.sh   pandoc@
fop-2.3/      pandoc-2.7.1/
games/        tt*

S touto volbou jsou položky uvedené ve vašem terminálu klasifikovány podle typu souboru pomocí této zkratky:

  • Lomítko (/ ) označuje adresář (nebo „složku“).
  • Hvězdička (* ) označuje spustitelný soubor. To zahrnuje binární soubor (zkompilovaný kód) i skripty (textové soubory, které mají oprávnění ke spuštění).
  • Znak zavináče (@ ) označuje symbolický odkaz (nebo „alias“).
  • Znak rovná se (= ) označuje zásuvku.
  • Na BSD znak procenta (% ) označuje whiteout (způsob odstranění souborů na určitých souborových systémech).
  • Na GNU je lomená závorka (> ) označuje dveře (meziprocesová komunikace na Illumos a Solaris).
  • Svislý pruh (| ) označuje FIFO.

Jednodušší verze této možnosti je -p , který pouze odlišuje soubor od adresáře.

Dlouhý seznam

Získání "dlouhého seznamu" z ls je tak běžné, že mnoho distribucí alias ll na ls -l . Formulář dlouhého seznamu poskytuje mnoho důležitých atributů souboru, jako jsou oprávnění, uživatel, který každý soubor vlastní, skupina, do které soubor patří, velikost souboru v bajtech a datum poslední změny souboru:

$ ls -l
-rwxrwx---. 1 seth users         455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth users         662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users    20697793 Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth users        6210 May 22 10:22 geteltorito
-rwxrwx---. 1 seth users         177 Nov 12  2018 html4mutt.sh
[...]

Pokud nepřemýšlíte v bajtech, přidejte -h vlajka (nebo --člověk v GNU) k převodu velikostí souborů do zápisu, který je pro člověka přívětivější:

$ ls --human
-rwxrwx---. 1 seth users    455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth seth     662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users    20M Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth seth    6.1K May 22 10:22 geteltorito
-rwxrwx---. 1 seth users    177 Nov 12  2018 html4mutt.sh

Můžete vidět jen o něco méně informací, když zobrazíte pouze sloupec vlastníka s -o nebo pouze sloupec skupiny s -g :

$ ls -o
-rwxrwx---. 1 seth    455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth    662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth    20M Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth   6.1K May 22 10:22 geteltorito
-rwxrwx---. 1 seth    177 Nov 12  2018 html4mutt.sh

Kombinací obou možností zobrazíte ani jednu.

Formát času a data

Formát dlouhého seznamu ls obvykle vypadá takto:

-rwxrwx---. 1 seth users         455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth users         662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users    20697793 Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth users        6210 May 22 10:22 geteltorito
-rwxrwx---. 1 seth users         177 Nov 12  2018 html4mutt.sh

Názvy měsíců není snadné seřadit, a to jak výpočtově, tak (v závislosti na tom, zda váš mozek má tendenci preferovat řetězce nebo celá čísla) pomocí rozpoznávání. Formát časového razítka můžete změnit pomocí --time-style možnost plus název formátu. Dostupné formáty jsou:

  • plné iso (1970-01-01 21:12:00)
  • long-iso (1970-01-01 21:12)
  • iso (01-01 21:12)
  • místní nastavení (používá vaše národní nastavení)
  • posix-STYLE (nahraďte STYLE definicí národního prostředí)

Můžete také vytvořit vlastní styl pomocí formálního zápisu data příkaz.

Řadit podle času

Obvykle ls příkaz seřadí podle abecedy. Můžete jej seřadit podle toho, který soubor byl naposledy změněn (nejnovější je uveden jako první) pomocí -t možnost.

Například:

$ touch foo bar baz
$ ls
bar  baz  foo
$ touch foo
$ ls -t
foo bar baz

Typ seznamu

Standardní výstup ls vyvažuje čitelnost s prostorovou efektivitou, ale někdy chcete mít seznam souborů ve specifickém uspořádání.

Pro seznam souborů oddělených čárkami použijte -m :

ls -m ~/example
bar, baz, foo

Chcete-li vynutit jeden soubor na řádek, použijte -1 možnost (to je číslo jedna, ne malé L):

$ ls -1 ~/bin/
bar
baz
foo

Chcete-li položky seřadit podle přípony souboru, nikoli podle názvu souboru, použijte -X (to je velké X):

$ ls
bar.xfc  baz.txt  foo.asc
$ ls -X
foo.asc  baz.txt  bar.xfc

Skryjte nepořádek

V některých ls je několik záznamů výpisy, které vás nemusí zajímat. Například metaznaky . a ... představují „zde“ a „zpět o jednu úroveň“. Pokud jste obeznámeni s navigací v terminálu, pravděpodobně již víte, že každý adresář se označuje jako . a jeho rodiči jako .. , takže vám to nemusí neustále připomínat, když použijete -a možnost zobrazit skryté soubory.

Chcete-li zobrazit téměř všechny skryté soubory (. a ... vyloučeno), použijte -A možnost:

$ ls -a
.
..
.android
.atom
.bash_aliases
[...]
$ ls -A
.android
.atom
.bash_aliases
[...]

U mnoha dobrých unixových nástrojů existuje tradice ukládání záložních souborů připojením nějakého speciálního znaku k názvu ukládaného souboru. Například ve Vimu se zálohy ukládají pomocí ~ znak připojený ke jménu.

Tyto druhy záložních souborů mě při několika příležitostech zachránily před hloupými chybami, ale po letech, kdy jsem si užíval pocit bezpečí, který poskytují, necítím potřebu mít vizuální důkaz, že existují. Věřím linuxovým aplikacím, že generují záložní soubory (pokud to tvrdí), a rád to vezmu na vědomí, že existují.

Chcete-li skrýt záložní soubory, použijte -B nebo -ignore-backups pro skrytí běžných formátů záloh (tato možnost není dostupná v BSD ls ):

$ ls
bar.xfc  baz.txt  foo.asc~  foo.asc
$ ls -B
bar.xfc  baz.txt  foo.asc

Záložní soubor samozřejmě stále existuje; je pouze odfiltrován, takže se na něj nemusíte dívat.

GNU Emacs ukládá záložní soubory (pokud není nakonfigurováno jinak) se znakem hash (# ) na začátku a na konci názvu souboru (#file# ). Jiné aplikace mohou používat jiný styl. Nezáleží na použitém vzoru, protože pomocí --hide můžete vytvořit vlastní vyloučení možnost:

$ ls
bar.xfc  baz.txt  #foo.asc#  foo.asc
$ ls --hide="#*#"
bar.xfc  baz.txt  foo.asc

Vypsat adresáře s rekurzí

Obsah adresářů není uveden s ls pokud nespustíte ls konkrétně v tomto adresáři:

$ ls -F 
example/  quux*  xyz.txt
$ ls -R
quux  xyz.txt

./example:
bar.xfc  baz.txt  #foo.asc#  foo.asc

Udělejte to trvalým pomocí aliasu

ls příkaz je pravděpodobně příkaz používaný nejčastěji během dané relace shellu. Jsou to vaše oči a uši, které vám poskytují kontext a potvrzují výsledky příkazů. I když je užitečné mít spoustu možností, část krásy ls je jeho stručnost:dva znaky a klávesa Return a vy přesně víte, kde jste a co je poblíž. Pokud musíte přestat přemýšlet o (mnohem méně psát) o několika různých možnostech, stává se to méně pohodlné, takže obvykle i ty nejužitečnější možnosti jsou vynechány.

Řešením je vytvořit alias vašeho ls příkaz, takže když jej použijete, získáte informace, na kterých vám záleží nejvíce.

Chcete-li vytvořit alias pro příkaz v prostředí Bash, vytvořte ve svém domovském adresáři soubor s názvem .bash_aliases (na začátku musíte vložit tečku). V tomto souboru uveďte příkaz, pro který chcete vytvořit alias, a poté alias, který chcete vytvořit. Například:

alias ls='ls -A -F -B --human --color'

Tento řádek způsobí, že vaše prostředí Bash interpretuje ls příkaz jako ls -A -F -B --human --color .

Nejste omezeni na předefinování existujících příkazů. Můžete si vytvořit vlastní aliasy:

alias ll='ls -l'
alias la='ls -A'
alias lh='ls -h'

Aby aliasy fungovaly, váš shell musí vědět, že .bash_aliases konfigurační soubor existuje. Otevřete soubor .bashrc soubor v editoru (nebo jej vytvořte, pokud neexistuje) a zahrňte tento blok kódu:

if [ -e $HOME/.bash_aliases ]; then
    source $HOME/.bash_aliases
fi

Pokaždé .bashrc je načten (což je kdykoli je spuštěn nový shell Bash), Bash načte .bash_aliases do vašeho prostředí. Svou relaci Bash můžete zavřít a znovu spustit, nebo ji k tomu rovnou přinutit:

$ source ~/.bashrc

Pokud zapomenete, zda jste zadali alias příkazu, zobrazí se který příkaz vám říká:

$ which ls
alias ls='ls -A -F -B --human --color'
        /usr/bin/ls

Pokud jste vytvořili alias ls příkaz pro sebe s možnostmi, můžete svůj vlastní alias kdykoli přepsat pomocí ls se zpětným lomítkem. Například v ukázkovém aliasu jsou záložní soubory skryté pomocí -B možnost, což znamená, že neexistuje způsob, jak zálohovat soubory pomocí ls příkaz. Chcete-li zobrazit záložní soubory, přepište alias:

$ ls
bar  baz  foo
$ \ls
bar  baz  baz~  foo

Udělejte jednu věc a udělejte ji dobře

ls příkaz má ohromující počet možností, z nichž mnohé jsou úzce specializované nebo vysoce závislé na terminálu, který používáte. Podívejte se na informace ls na systémech GNU nebo man ls na systémech GNU nebo BSD pro více možností.

Možná vám bude připadat zvláštní, že systém známý premisou, že každý nástroj „dělá jednu věc a dělá ji dobře“, by svůj nejběžnější příkaz zatížil 50 možnostmi. Ale ls dělá jen jednu věc:vypisuje soubory. A s 50 možnostmi, které vám umožní řídit, jak budete tento seznam přijímat, ls dělá svou jedinou práci velmi, velmi dobře.


Linux
  1. Úvod do příkazu alternatives v Linuxu

  2. 5 Praktické příklady příkazu dd v Linuxu

  3. Vyhledejte příkaz v Linuxu

  1. Linuxový příkaz mv

  2. Linux du command

  3. Linuxový ip příkaz

  1. W Command v Linuxu

  2. At Command v Linuxu

  3. Linux cd příkaz