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 *
.