diff options
author | emkael <emkael@tlen.pl> | 2016-10-16 18:34:00 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2016-10-16 18:34:00 +0200 |
commit | e2a0a09f8ea60d343c304c31f5ac0e7b64dfacea (patch) | |
tree | 76624869f4502abcc4aea15354d7be59e8cdb91d /template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl | |
parent | d91bd88618bb1ec361409a081be8fe18cbc20b18 (diff) |
* bash completion articles
Diffstat (limited to 'template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl')
-rw-r--r-- | template/content/2016/10/16/an-introduction-to-bash-completion-part-1.tpl | 98 |
1 files changed, 98 insertions, 0 deletions
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 @@ +<div class="page-header"> + <h1>Wprowadzenie do uzupełniania powłoki bash, część 1</h1> + <a href="2016/10/16/an-introduction-to-bash-completion-part-1/"> + <time class="text-muted" title="2016-10-16 11:05" datetime="2016-10-16T11:05">Sunday, October 16, 2016</time> + </a> +</div> + +<div class="panel panel-default"> + <div class="panel-body"> + <a href="https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1"> + Oryginalny artykuł autorstwa Steve'a Kempa (po angielsku). + </a><br /> + <a href="2016/10/16/an-introduction-to-bash-completion-part-2/"> + Druga część wprowadzenia. + </a> + </div> +</div> + +<div class="panel panel-default"> + <div class="panel-body"> + <p> + 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ń. + </p> + <p> + Większość powłok umożliwia podpowiadanie poleceń, zwykle związane z klawiszem <kbd>TAB</kbd>, które pozwala na uzupełnianie nazw poleceń dostępnych ze ścieżki wykonywania (<code>PATH</code>), nazw plików czy katalogów. Typowe użycie wygląda następująco: + <pre> +ls /bo<kbd>TAB</kbd></pre> + Po wciśnięciu klawisza <kbd>TAB</kbd>, argument <code>/bo</code> jest automatycznie zastępowany wartością <code>/boot</code>. + </p> + <p> + W ostatnich czasach niektóre powłoki zaczęły umożliwiać nawet więcej: uzupełniać <em>argumenty</em> poleceń. Dwie godne uwagi powłoki pozwalające na to, to zsh i bash. Jako że jestem użytkownikiem basha, omówię tylko nią. + </p> + <p> + <a href="http://packages.debian.org/bash">Debianowy pakiet <code>bash</code></a> dostarcza plik podpowiedzi <code>/etc/bash_completion</code>, który konfiguruje podstawową obslugę uzupełniania. + </p> + <p> + Jeśli go nie używacie, możecie załadować go poprzez wpisanie w Waszej powłoce <code>. /etc/bash_completion</code>, jak pokazano poniżej: + <pre>skx@lappy:~$ . /etc/bash_completion +skx@lappy:~$</pre> + </p> + <p> + Po wykonaniu tego polecenia, będziecie w stanie uzupełniać <kbd>TAB</kbd>em wiele popularnych argumentów programów, na przykład: + <pre>skx@lappy:~$ apt-get upd<kbd>TAB</kbd> +skx@lappy:~$ apt-get upg<kbd>TAB</kbd></pre> + </p> + <p> + Ale jak rozszerzyć tę funkcjonalność samemu? Cóż, dostarczone procedury uzupełniania używają kilku wewnętrznych poleceń basha, jak np. <code>complete</code>. Można ich użyć we własnych skryptach rozruchowych albo, łatwiej, tworząc niewielki plik i umieszczając go w katalogu <code>/etc/bash_completion.d/</code>. + </p> + <p> + W momencie, gdy plik <code>bash_completion</code> jest wykonywany (bądź ładowany), wszystko wewnątrz katalogu <code>/etc/bash_completion.d</code> jest również ładowane. To sprawia, że dodanie własnych rozszerzeń jest prostą sprawą. + </p> + <p> + 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. + </p> + <p> + <a href="http://www.debian-administration.org/articles/135">Zarządzam zdalnie kilkoma komputerami, przy użyciu vnc</a> i zwykle robię to poprzez wywołanie polecenia <code>xvncviewer nazwa_hosta</code>. + </p> + <p> + Aby umożliwić bashowi podpowiadanie fragmentów nazw hostów, które wpisuję, zastosujemy komendę complete do poinformowania, że <code>xvncviewer</code> wymaga nazwy hosta: + <pre>skx@lappy:~$ complete -F _known_hosts xvncviewer</pre> + </p> + <p> + Po wykonaniu tej operacji mogę wcisnąć <kbd>TAB</kbd>, by uzupełnić nazwy hostów: + <pre>skx@lappy:~$ xvncviewer s<kbd>TAB</kbd> +savannah.gnu.org ssh.tardis.ed.ac.uk +scratchy steve.org.uk +security.debian.org security-master.debian.org +sun +skx@lappy:~$ xvncviewer sc<kbd>TAB</kbd></pre> + </p> + <p> + Powyższe właśnie uzupełniło dla mnie nazwę hosta <code>scratchy</code>. + </p> + <p> + Funkcja <code>_known_hosts</code> została zdefiniowana w pliku <code>/etc/bash_completion</code>. Skąd wiedziałem, że mogę jej użyć? Podając polecenie <code>complete -p</code>, by wyświetlić wszystkie skojarzone nazwy do użycia: + <pre>skx@lappy:~$ complete -p +.... +complete -F _known_hosts tracepath6 +complete -F _known_hosts host +...</pre> + </p> + <p> + Czego nauczyliśmy się dotychczas? + <ul> + <li>Istnieje coś takiego, jak uzupełnianie wiersza poleceń.</li> + <li>Uzupełnianie jest zaimplementowane w pliku <code>/etc/bash_completion</code></li> + <li>Nowe polecenia uzupełniania mogą zostać umieszczone w katalogu <code>/etc/bash_completion.d</code></li> + <li>Możemy wypisać wszystkie bieżące procedury uzupełniania poprzez <code>complete -p</code></li> + </ul> + </p> + <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ń. + </p> + <p> + Do tego czasu, poeksperymentujcie trochę. + </p> + </div> +</div> |