it-swarm.dev

Mohu v Bashu nechat Tab automaticky rozlišovat velikost písmen?

Terminál Ubuntu používá automatické doplňování malých a velkých písmen, jak by se dalo očekávat v případě Linuxu.

Domnívám se však, že by bylo často vhodnější místo toho použít nerozlišující malá a velká písmena, abyste ušetřili přesnost při spouštění jména a pravděpodobně by stálo za falešné klady. Je možné toto chování změnit?

170
mwfearnley

Aby bylo možné, aby bash nerozlišoval velká a malá písmena pro současného uživatele:

Spusťte v terminálu následující skript Shell:

# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add Shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc

Spusťte nový Shell (znovu otevřete terminál).

Provedení změn v systému:

# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
# you may have to use this instead if you are not a superuser:
echo 'set completion-ignore-case On' | Sudo tee -a /etc/inputrc

Podrobnosti viz man bash . Ano, je to dlouhá stránka, ale bash je poněkud složitý program, a pokud chcete na této stránce hledat výraz „nerozlišující malá a velká písmena“, přejděte do příslušné sekce. Lidé se obvykle učí bash jednu možnost najednou nebo jeden bash skript najednou a zvládnutí všech nuancí trvá dlouho. Váš zájem se může lišit.

200
Panther

Otevřete terminál a zadejte následující příkaz:

echo set completion-ignore-case on | Sudo tee -a /etc/inputrc

Zadejte heslo. Restartujte terminál.

Pokud v některých případech chcete odstranit velká a malá písmena, jednoduše upravte soubor/etc/inputrc odebráním set completion-ignore-case řádek.

To je vše.

54
emtin4

Vím, že tato otázka je velmi stará, ale pokud mi něco nechybí, myslím, že mám super jednoduché řešení, pokud používáte bash.

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

Nebo jednoduše přidejte řádek pomocí svého oblíbeného textového editoru. Restartujte svůj bash session a užijte si to.

15
init3

To lze provést nastavením konfigurační proměnné pro GNU _ readline, což je to, co zpracovává vstup v interaktivním prostředí).

Potřebná proměnná je completion-ignore-case A lze ji nastavit přímo v bash relaci pomocí:

bind "set completion-ignore-case on"

Lze ji povolit pro všechny budoucí bash relace vložením set completion-ignore-case on Do uživatelského souboru ~/.inputrc Nebo do systému /etc/inputrc A povolit tak všem uživatelům. Toto je inicializační soubor pro readline.

Nezapomeňte však, že pokud vytvoříte ~/.inputrc, Toto přepíše kopii systému . (Pro mě to způsobilo, že jsem ztratil některá klíčová mapování, například Ctrl-Left/Right. Vidíte, která z nich si prohlédnete soubor /etc/inputrc.)
Způsob, jak tento problém vyřešit, je umístit řádek $include /etc/inputrc Na začátek ~/.inputrc, Např .:

$include /etc/inputrc

set completion-ignore-case on

Chcete-li použít změny, restartujte bash nebo reload inputrc , např. s Ctrl+x,Ctrl+r.

Více informací o readline a inputrc najdete v man bash a man 3 readline .

3
mwfearnley