Omezte délku výzvy bash shellu

Když používáte Terminál v 10.3 a 10.4, pravděpodobně používáte bash shell – je výchozí, pokud nepoužíváte instalaci upgradu, která dříve používala tcsh.

Pokud nevíte, co je to „shell“, je to ve skutečnosti program, který běží a poskytuje rozhraní, které používáte při komunikaci s unixovou stranou OS X přes terminál. V prvních verzích OS X Apple nastavil výchozí shell na tcsh, ale přešel na bash s vydáním OS X 10.3 a novějších.

Jednou z funkcí bash je promptní řádek, který ukazuje aktuální pracovní adresář. Při navigaci do struktury souborů váš řetězec výzvy neustále odráží aktuální pracovní adresář:

gargantua5:~ robg$ cd Library/gargantua5:~/Library robg$ cd Widgets/gargantua5:~/Library/Widgets robg$ cd WindGuru.wdgt/gargantua5:~/Library/Widgets/WindGuru.wdgt robg$

I když je to teoreticky skvělé, v praxi to tak skvělé být nemusí. Zvažte, co se stane, když přejdete do hluboce uložené systémové složky, jako je tato:

gargantua5:/System/Library/CoreServices/Dock.app/Contents/Resources robg$

Pokud máte okno terminálu o 80 znacích, výše uvedený řádek výzvy se ve skutečnosti zalomí úplně kolem šířky obrazovky. To velmi ztěžuje práci v Terminálu, protože vaše obrazovka se stává nepřehlednou změtí příkazů, zobrazení cesty a výstupu. Existuje mnoho řešení tohoto problému, ale zde jsou dvě, která se mi líbí.

Pro obě tato řešení budete muset použít vi editor pro úpravu vašich uživatelů .bash_profile soubor ve vašem domovském adresáři. Spusťte Terminál a zadáním se ujistěte, že jste ve svém domovském adresáři CD a poté stiskněte Return. Dále zadejte vi .bash_profile. Pokud máte existující soubor, otevře se pro úpravy. Pokud ne, otevře se nový soubor. Odtud postupujte podle vhodného řešení, jak chcete.

Řešení 1: Použijte záhlaví Terminálu

Namísto zobrazení vaší cesty ve výzvě můžete nechat bash zobrazit výzvu v názvu okna vašeho terminálu, například takto:

Chcete-li to provést, stačí přidat tyto dva řádky do .bash_profile soubor:

export PROMPT_COMMAND='echo -n "^[]1;$PWD^G"'PS1='e[7m [u] :[e[0;m] '

Nelze však jednoduše zkopírovat a vložit celý výše uvedený text – druhý řádek bude fungovat, ale na prvním řádku jsou dva speciální příkazy v uvozovkách. Zde je tedy postup, jak jej zadat. První stisk i dát vi v režimu vkládání.

Dále zkopírujte a vložte vše až po první stříšku, ale ne včetně (^). Následující dvě postavy, ^[, představují skutečnou klávesu Escape. Chcete-li to zadat vi, zadejte Control-V a stiskněte Escape. Tím zadáte kódované znaky klávesy Escape. Poté můžete zkopírovat a vložit vše až do další stříšky, ale opět bez ní. Chcete-li vstoupit do ^G, použijete stejný postup – zadejte Control-V a poté stiskněte Control-G. Nakonec zadejte závěrečnou dvojitou a jednoduchou uvozovku. Páni.

Po zadání dvou řádků stiskněte Escape a zadejte :w pro uložení změn a :q pro ukončení editoru. Otevřete nové okno Terminálu a měli byste vidět cestu v názvu a pěknou krátkou výzvu obsahující vaše uživatelské jméno.

Nebudu se pokoušet vysvětlovat voodoo probíhající v těchto dvou příkazech, kromě prvních prací na nastavení název okna a druhý používá některé kódy ASCII k vytvoření černobílé verze vašeho uživatelského jména jako výzva. Uložte soubor stisknutím tlačítka Escape Zatímco mnoho lidí dává přednost této ultračisté výzvě s cestou v záhlaví okna, zjistil jsem, že jako alespoň krátká připomínka mého aktuálního adresáře v mé výzvě, což je přesně to, co získáte s dalším řešením.

Řešení 2: Omezte délku zobrazené cesty

Druhé řešení omezuje cestu výzvy na daný počet znaků. Bez ohledu na to, jak hluboko do systému proniknete, ve výzvě uvidíte pouze preferovaný počet znaků. Otevři .bash_profile soubor, jak je vysvětleno výše, stiskněte i přejděte do režimu vkládání a vložte následující kód:

function prompt_command { # Kolik znaků $PWD by mělo být zachováno místní pwd_length=23 if [ $(echo -n $PWD | wc -c | tr -d " ") -gt $pwd_length ] pak newPWD="$(echo -n $PWD | sed -e "s/.*(.{$pwd_length})/1/")" else newPWD="$(echo -n $PWD)" fi}PROMPT_COMMAND=prompt_commandexport PROMPT_COMMANDPS1='e[7 milionů $ nových PWD [u]:[e[0;m] '

Nechte vše tak, jak to vidíte, kromě toho, co je možné 23, což představuje, kolik znaků byste chtěli vidět v cestě výzvy. Po dokončení stiskněte Escape pro ukončení režimu vkládání a poté zadejte :w a :q.

Stejně jako u prvního řešení se zde děje nějaké fantastické voodoo, které zkrátí cestu (to je to, co funkce dělá) a poté je zobrazí ve vaší výzvě. Otevřete nové okno Terminálu a přejděte do hluboce uložené složky a měli byste vidět něco takového:

Zdroje/English.lproj [robg]:

I když to není tak užitečné jako úplná cesta, stačí mi to alespoň připomenout, kde jsem byl, než provedu svůj další příkaz.

  • Jul 30, 2023
  • 72
  • 0