inicio mail me! sindicaci;ón

Tomasz Wysocki - dziennik internetowy

Otchłań mojego umysłu…

Uzupełnianie w bashu (bash completion)

Co to jest? Otóż jest to ta cała maszyneria, która uruchamia się gdy wciśniesz klawisz [tab]. Po co to? To chyba jasne jak słońce, aby odciążyć palce użytkownika od pisania ogromnych ilości tekstu. Ale zacznijmy od początku.

Większość ludzi, korzystających z komputera, można podzielić na dwie grupy: tych, którzy klepią w terminalu długie i niezrozumiałe komendy oraz tych, którzy nie wiedzą, dlaczego Ci drudzy nie użyją myszki. Lub inaczej: tych, którzy wiedzą jak używać shella oraz znają jego moc oraz tych, którzy są w tej kwestii jeszcze laikami.

Co takiego fajnego jest w pisaniu “długich niezrozumiałych komend”? Chyba to, że jedna taka komenda może Ci zaoszczędzić kilka minut lub nawet godzin klikania myszką, na pewno też to, że nie jest taka niezrozumiała gdy spróbujesz ją pojąć oraz to, że staje się o wiele krótsza gdy użyjesz do tego [tab]a!

Jak działa [tab]? Gdy piszesz jakąś komendę w shellu, możesz w wielu momentach wcisnąć [tab], wtedy komputer postara się dokończyć za ciebie komendę lub podpowiedzieć Ci jakie masz możliwości. Nie powinniśmy oczekiwać cudów, to tylko maszyna. Jednak gdy wiemy kiedy użyć [tab]a, może nam to zaoszczędzić zarówno czasu, jak i zbędnego tłuczenia w klawisze. Powszechne jest dopełnianie [tab]em nazw programów oraz plików, ale nie każdy wie, że [tab] ma o wiele większe możliwości. Poza tym możemy dodawać własne (o czym być może kiedyś napiszę). Ujarzmijmy więc te możliwości na Debianie (dystrybucja, z której w tym momencie piszę).

Najpierw sprawdzimy czy potrzebny nam skrypt jest już w systemie (w Debianie z tego co wiem jest domyślnie):

tomwys@tom:~$ whereis bash_completion
bash_completion: /etc/bash_completion.d /etc/bash_completion
tomwys@tom:~$

Skrypt, który nam jest potrzebny, to /etc/bash_completion. Dodajemy więc wczytywanie go do ~/.bash_profile:

tomwys@tom:~$ echo '. /etc/bash_completion' >> ~/.bash_profile

Odpalamy nowy terminal i już możemy się cieszyć z nowych możliwości. Podajmy przykład (listing pierwszy to wciskane klawisze, drugi to rezultat na ekranie):

apti[tab][tab][tab]i[tab]bas[tab][tab]h[enter]
tomwys@tom:~$ aptitude 
autoclean       forbid-version  purge           unhold
changelog       forget-new      reinstall       unmarkauto
clean           hold            remove          update
dist-upgrade    install         search          upgrade
download        markauto        show            
tomwys@tom:~$ aptitude install bas
base                    bash                    bash-minimal
base-config             bash-builtins           bash-static
base-config-skolelinux  bash-completion         basket
base-files              bashdb                  bastet
base-passwd             bash-doc                bastille
tomwys@tom:~$ aptitude install bash
Reading package lists... Done
Building dependency tree... Done
Reading extended state information       
Initializing package states... Done
Reading task descriptions... Done  
Building tag database... Done    
E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
tomwys@tom:~$ 

Gdyby nie [tab] musieli byśmy najpierw dowiedzieć się jaki program jest nam potrzebny, jakie ma parametry i jaki pakiet chcemy zainstalować. Poza tym musieli byśmy wcisnąć 22 klawisze. Tak mając szczątkowe informacje wprowadziliśmy naszą komendę i wcisnęliśmy tylko 16 klawiszy. Gdybyśmy wiedzieli od razu o co nam chodzi, wystarczyło by wcisnąć 12 klawiszy:

apti[tab]i[tab]bash[enter]

Zyskalibyśmy wtedy aż 10 klawiszy, to prawie połowa! A zyski będą się pojawiać przy wielu programach. Rozwiązanie to najlepiej jest wypróbować samemu. Życzę milej zabawy.

Liczba komentarzy: 4 »

  Plastek wrote @ luty 2nd, 2007 at 5:04 pm

Wow. Przydatne to jest :)

  Soltys wrote @ luty 2nd, 2007 at 7:35 pm

Jak można żyć bez [tab]a?
sam robie nazwy plików takie by móc dwoma-trzema klawiszami się do nich dostać
np. literka i [tab].

Właśnie bash’a mi brakuje pod Windowsem…

  cOyOte wrote @ luty 3rd, 2007 at 11:52 am

Poprawiła się sytuacja pod Windowsem za sprawą powershella.

  Soltys wrote @ luty 4th, 2007 at 8:54 am

Oj zapomniałem… PowerShell tylko pod Viste jest?
Czy na XP też można uruchomić?

Dodaj komentarz

Zostaw puste:

HTML-Tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>