GNU/Linux >> Znalost Linux >  >> Linux

zástupný znak `* ` nemůže odpovídat nějakému řetězci?

Jako rozšíření na Shaidovu odpověď bych rád vysvětlil, proč -a možnost zde nebude fungovat:

ls příkaz ne zpracovat zástupné znaky. Interpret příkazového řádku provede tento krok:

Pokud zadáte příkazový řádek "mycommand *.c " interpret příkazového řádku nejprve nahradí zástupný řetězec "*.c " podle seznamu odpovídajících souborů a poté spusťte výsledný příkazový řádek:

mycommand a.c file.c test.c

Interpret příkazového řádku pracuje stejným způsobem pro všechny příkazy, takže nemůže vědět, že -a znamená "včetně skrytých souborů" v případě ls příkaz (zatímco -a má pro jiné příkazy úplně jiný význam)...


Soubory, které začínají tečkou, jsou ve výchozím nastavení skryté ve výpisech souborů. Nejjednodušší způsob, jak porovnat tyto druhy souborů, by bylo umístit tečku na začátek výrazu. Tím však budou nalezeny pouze soubory začínající . .

ls  -al  .*.swo

Alternativou je nastavení dotglob před spuštěním příkazu pak soubory začínající . budou zahrnuty.

shopt -s dotglob

Přidejte jej do ~/.bashrc pro jeho výchozí nastavení.

Všimněte si, že nastavení dotglob může vést k nechtěným výsledkům při použití bash shell, protože oba . (aktuální adresář) a .. (rodičovský adresář) se zobrazí při použití * . S dotglob nastavit, nikdy zkuste použít rm -R * .


Linux
  1. Příkaz mcopy v Linuxu

  2. Unixový příkaz pro výpis souborů obsahujících řetězec, ale *NE* obsahujících jiný řetězec

  3. Může být příkaz linux cat použit pro zápis textu do souboru?

  1. Převeďte výstup na řetězec

  2. Jak mohu zkopírovat více souborů přes scp v jednom příkazu?

  3. Jak mohu použít příkaz tar k seskupení souborů bez komprese?

  1. Jak přejmenovat soubory v Linuxu

  2. Jak mohu zkontrolovat doslovné znaky řetězce příkazu bash?

  3. Existuje unixový nástroj příkazového řádku, který dokáže analyzovat soubory písem?