From e2a0a09f8ea60d343c304c31f5ac0e7b64dfacea Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 16 Oct 2016 18:34:00 +0200 Subject: * bash completion articles --- .../an-introduction-to-bash-completion-part-1.tpl | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl (limited to 'template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl') diff --git a/template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl b/template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl new file mode 100644 index 0000000..714fd77 --- /dev/null +++ b/template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl @@ -0,0 +1,98 @@ + + +
+ +
+ +
+
+

+ Jedną z najmilszych funkcjonalności nowoczesnych powłok jest wbudowana obsługa “uzupełniania”. Funkcje te umożliwiają łatwe uzupełnianie poleceń oraz ich argumentów. Czytajcie dalej, by poznać krótkie wprowadzenie do dodawania swojego własnego podpowiadania poleceń. +

+

+ Większość powłok umożliwia podpowiadanie poleceń, zwykle związane z klawiszem TAB, które pozwala na uzupełnianie nazw poleceń dostępnych ze ścieżki wykonywania (PATH), nazw plików czy katalogów. Typowe użycie wygląda następująco: +

+ls /boTAB
+ Po wciśnięciu klawisza TAB, argument /bo jest automatycznie zastępowany wartością /boot. +

+

+ W ostatnich czasach niektóre powłoki zaczęły umożliwiać nawet więcej: uzupełniać argumenty poleceń. Dwie godne uwagi powłoki pozwalające na to, to zsh i bash. Jako że jestem użytkownikiem basha, omówię tylko nią. +

+

+ Debianowy pakiet bash dostarcza plik podpowiedzi /etc/bash_completion, który konfiguruje podstawową obslugę uzupełniania. +

+

+ Jeśli go nie używacie, możecie załadować go poprzez wpisanie w Waszej powłoce . /etc/bash_completion, jak pokazano poniżej: +

skx@lappy:~$ . /etc/bash_completion
+skx@lappy:~$
+

+

+ Po wykonaniu tego polecenia, będziecie w stanie uzupełniać TABem wiele popularnych argumentów programów, na przykład: +

skx@lappy:~$ apt-get updTAB
+skx@lappy:~$ apt-get upgTAB
+

+

+ Ale jak rozszerzyć tę funkcjonalność samemu? Cóż, dostarczone procedury uzupełniania używają kilku wewnętrznych poleceń basha, jak np. complete. Można ich użyć we własnych skryptach rozruchowych albo, łatwiej, tworząc niewielki plik i umieszczając go w katalogu /etc/bash_completion.d/. +

+

+ W momencie, gdy plik bash_completion jest wykonywany (bądź ładowany), wszystko wewnątrz katalogu /etc/bash_completion.d jest również ładowane. To sprawia, że dodanie własnych rozszerzeń jest prostą sprawą. +

+

+ Jednym ze słowników, z których bash potrafi podpowiadać wartości, jest zbiór nazw hostów, co może być przydatne wielu programom. +

+

+ Zarządzam zdalnie kilkoma komputerami, przy użyciu vnc i zwykle robię to poprzez wywołanie polecenia xvncviewer nazwa_hosta. +

+

+ Aby umożliwić bashowi podpowiadanie fragmentów nazw hostów, które wpisuję, zastosujemy komendę complete do poinformowania, że xvncviewer wymaga nazwy hosta: +

skx@lappy:~$ complete -F _known_hosts xvncviewer
+

+

+ Po wykonaniu tej operacji mogę wcisnąć TAB, by uzupełnić nazwy hostów: +

skx@lappy:~$ xvncviewer sTAB
+savannah.gnu.org            ssh.tardis.ed.ac.uk
+scratchy                    steve.org.uk
+security.debian.org         security-master.debian.org
+sun
+skx@lappy:~$ xvncviewer scTAB
+

+

+ Powyższe właśnie uzupełniło dla mnie nazwę hosta scratchy. +

+

+ Funkcja _known_hosts została zdefiniowana w pliku /etc/bash_completion. Skąd wiedziałem, że mogę jej użyć? Podając polecenie complete -p, by wyświetlić wszystkie skojarzone nazwy do użycia: +

skx@lappy:~$ complete -p
+....
+complete -F _known_hosts tracepath6
+complete -F _known_hosts host
+...
+

+

+ Czego nauczyliśmy się dotychczas? +

    +
  • Istnieje coś takiego, jak uzupełnianie wiersza poleceń.
  • +
  • Uzupełnianie jest zaimplementowane w pliku /etc/bash_completion
  • +
  • Nowe polecenia uzupełniania mogą zostać umieszczone w katalogu /etc/bash_completion.d
  • +
  • Możemy wypisać wszystkie bieżące procedury uzupełniania poprzez complete -p
  • +
+

+

+ W drugiej części zerkniemy na definiowanie własnych procedur obsługujących linię poleceń – podobnych do już istniejących. Będziemy mogli dodać uzupełnianie wiersza poleceń dla własnych programów, lub nieobsługiwanych jeszcze poleceń. +

+

+ Do tego czasu, poeksperymentujcie trochę. +

+
+
-- cgit v1.2.3