Kdykoli cd
do adresáře, další věc, kterou spontánně udělám – výpis obsahu tohoto adresáře pomocí ls
příkaz. Nevím, jestli to děláte všichni, ale předpokládám, že někteří z vás tento zvyk mají. Bylo by lepší, kdybychom spojili funkčnost cd a ls v jednom příkazu, ne? Tento stručný průvodce vysvětluje, jak automaticky vypsat obsah adresáře, kdykoli do něj v Linuxu cd.
Jak cd a ls v jednom příkazu v Bash
Vezměte prosím na vědomí, že nemluvím o příkazech jedné řádky. Například můžete provést cd a ls pomocí jednořádkového příkazu, jak je uvedeno níže.
$ cd path-to-dir && ls
Nebo,
$ cd path-to-dir ; ls
Ano, funguje to! Ale to není předmětem této příručky. Uděláme to pomocí jednoduché funkce BASH . Tento trik bude fungovat ve všech distribucích Linuxu a Unixu, které podporují BASH.
Otevřete svůj ~/.bashrc
soubor ve vašem oblíbeném editoru:
$ nano ~/.bashrc
Na konec přidejte následující řádky:
cdls() { local dir="$1" local dir="${dir:=$HOME}" if [[ -d "$dir" ]]; then cd "$dir" >/dev/null; ls --color=auto else echo "bash: cdls: $dir: Directory not found" fi }
Zde jsem použil název funkce jako cdls ()
kvůli snadnému zapamatování! Tuto funkci si můžete pojmenovat, jak chcete. Nahraďte také ls --color=auto
parametr s vlastním. Uložte a zavřete soubor.
Spusťte následující příkaz, aby se změny projevily.
$ source ~/.bashrc
Nyní vypište obsah adresáře automaticky, kdykoli do něj vložíte cd, jak je uvedeno níže.
Příklad:
$ cdls /var/log/ alternatives.log btmp dpkg.log kern.log syslog wtmp apt cloud-init.log faillog landscape syslog.1 auth.log cloud-init-output.log installer lastlog tallylog bootstrap.log dist-upgrade journal lxd unattended-upgrades [email protected]:/var/log$ pwd /var/log
Do ~/.bashrc
můžete také přidat následující mnohem jednodušší funkci soubor.
cdls() { cd "[email protected]" && ls; }
Zdrojový kód ~/.bashrc
souboru, aby se změny projevily. Také nepoužívejte obě funkce současně se stejným názvem. Buď použijte jednu funkci, nebo použijte jiný název (např. cdls
a cl
) pro každou funkci.
Než jsem poznal tento trik, obvykle dělám:
$ cd /var/log/
A pak;
$ ls
Nebo,
$ cd /var/log/ && ls
Už ne! Nyní mohu být schopen vypsat jakýkoli obsah adresáře, kdykoli do něj cd. To je užitečné, když často pracujete s velkým počtem adresářů.
Jedna nevýhoda tohoto triku je, že budete muset počkat několik sekund až několik minut, když cd do adresáře, který obsahuje stovky a tisíce souborů. V takových případech použijte normální cd
příkaz.
Doporučené čtení:
- Přejmenovávejte soubory bez zadávání celého jména dvakrát v systému Linux
- Tipy pro Bash – Jak cp nebo mv a cd jedním příkazem
- Různé způsoby zobrazení obsahu adresáře bez použití příkazu ls
- Funkce Bash pro extrahování archivů souborů různých typů