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.