Následující by mělo být bezpečnější:
cd -- "$(find / -name ls -type f -printf '%h' -quit)"
Výhody:
- Dvojitá pomlčka brání interpretaci názvu adresáře začínajícího pomlčkou jako možnost (
findnevytváří takové názvy souborů, ale není škodlivý a může být vyžadován pro podobné konstrukce) -namezkontrolujte před-typezaškrtněte, protože ten někdy vyžadujestat- Ne
dirnamevyžadováno, protože%hspecifier již vypisuje název adresáře -quitpro zastavení hledání po prvním nalezeném souboru, tedy žádnéheadcož by způsobilo selhání skriptu u názvů adresářů obsahujících nové řádky
Můžete použít něco jako:
pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _
Tím se najde první ls běžný soubor a poté přejděte do tohoto adresáře.
Z hlediska toho, co každý bit dělá:
- Nález začne na
/a prohledejte seznam všech běžných souborů (-type f) s názvemls(-name ls). Dofindmůžete přidat další věci k dalšímu omezení souborů, které získáte. - Potrubí přes
head -1odfiltruje všechny kromě prvního. $()je způsob, jak vzít výstup příkazu a vložit jej na příkazový řádek pro další příkaz.dirnamemůže převzít úplnou specifikaci souboru a poskytnout vám bit cesty.cdpouze změní tento adresář.
Pokud provedete každý bit v sekvenci, uvidíte, co se stane:
pax[/home/pax]> find / -type f -name ls
/usr/bin/ls
pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls
pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin
pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _
Jak nastavit úlohu cron, aby každou hodinu spouštěla spustitelný soubor?
Jak mohu získat stav klávesnice v Linuxu?