RPI OS - aliasy - Tworzenie aliasu

Spis treści

Tworzenie aliasu

Zasięg aliasu zdefiniowanego "z linii"

Stworzenie w linii komend własnego aliasu daje jednak krótkotrwały efekt. Działa jedynie podczas sesji, w której został utworzony.

O ile jest to zgodne z naszymi oczekiwaniami czy potrzeba - jest ok. Czasami np. potrzebujemy aliasu, który skróci nam żmudne kilkakrotne wklepywanie tych samych danych podczas np. sesji ssh.

Należy pamiętać, że jeśli w oknie teminala stworzysz następujący alias:

~$ alias cos="echo to jest moja komenda" # zwróć uwagę na znaki cudzysłowia otwierające i zamykające definicję aliasu

to jest on aktywny (czyli działa) tylko i wyłącznie do czasu otwartej sesji w tym (i tylko tym) oknie terminala.

Jeśli otworzysz następną sesję terminalową to w jej oknie wywołanie aliasu stworzonego w poprzednim oknie spowoduje błąd.

Aliasy permanentne (stałe)

Zaznaczyłem, że alias zdefiniowany w linii komend jest aktywny jedynie podczas sesji, podczas której alias definiowano. Po zamknieciu sesji taki alias jest kasowany.

Co zrobić, jeśli chcemy utworzyć aliasy, z których chcemy korzystać wielokrotnie. Mało tego: chcemy by po każdym logowaniu się i otwarciu sesji zdefiniowane aliasy były "gotowe do użycia".

W tym celu definicje aliasów należy umieścić w pliku o nazwie .bash_aliases (nazwa zaczyna się od kropki!), umieszczonym w katalogu domowym. I te aliasy będą aktywne podczas trwania całej sesji lub do czasu ich skasowania. To wynik tego, że w pliku .bashrc zawarto następujące działanie:

...# Definicje aliasów
# Masz możliwość - zamiast umieszczania ich bezpośrednio w pliku .bashrc -
# wpisania wszystkich swoich dodatkowych aliasów w oddzielnym pliku
# ~/.bash_aliase
# Zapoznaj się z przykładami zawartymi w /usr/share/doc/bash-doc/examples

if [ -f ~/.bash_aliases ]; then # jeśli plik .bash_aliases istnieje
. ~/.bash_aliases # wczytaj jego treść (definicje aliasów)
fi
...

Ten wpis pozwala również (bardziej zaawansowanym użytkownikom Raspbiana) dopisanie innych, własnych reguł związanych z wczytywaniem definicji aliasów.

Podczas tworzenia samemu aliasów zwróć uwagę na następujące zasady:

  • podczas tworzenia aliasów obowiązują zasady pisania poleceń powłoki systemu. Błędy w składni będą skutkować nie utworzeniem aliasu (często pojawi się komunikat) i/lub błednym jego działaniem,
  • nie wolno wykorzystywać jako nazwy aliasów następujących znaków/wyrażeń: !, case, do, done, elif, else, esac, fi, for, function, if, in, select, then, until, while, {, }, time, [, ],
  • podobnie wykorzystanie następujących znaków: *, ?, +, -, $, itp. może dać nieoczekiwane rezultaty.

Bo o ile przy próbie stworzenia aliasu "$" otrzymamy komunikat o błednej nazwie, to niestety możliwe jest utworzenie poniższych aliasów:

~$ alias ?="<coś tam>"
~$ alias *="<coś tam>"
~$ alias a="" # puste przypisanie

Najmniej szkodliwe jest ostatnie przypisanie. Po prostu alias nie robi nic (oprócz wydłużania listy aliasów). Natomiast przypisanie aliasu do "*" (gwiazdki) spowoduje kłopot. O którym za chwilę.

Jeśli można tworzyć definicje to z reguły można je kasować, dezaktywować. Podobnie jest z aliasami. Te zdefiniowane można "odwołać" poprzez komendy:

~$ unalias alias1 # skasowanie aliasu o nazwie alias1,
~$ unalias alias1 alias2 alias3 # skasowanie aliasów: alias1, alias2, alias3,
~$ unalias -a # skasowanie wszystkich!!! aliasów (nie tylko tych określonych w pliku .bash_aliases),

Pisałem już o negatywnych skutkach użycia niewłaściwych znaków w nazwie aliasu. Wróćmy np. do znaku * (gwiazdka) Próbując wykasować alias przypisany do tego znaku:

~$ unalias *

uzyskamy wynik co najmniej zaskakujący. By osiągnąć to co chcieliśmy musimy wywołać komendę w postaci:

~$ unalias \*

Lista aktywnych aliasówZawartość pliku .bash_aliases bywa ciekawaOczywiście komenda unalias -a usunie również alias przypisany do gwiazdki, ale... wraz ze wszystkimi pozostałymi aliasami. To chyba nie o taki efekt nam chodzi! ;)

Wspominałem już, że listę aktywnych aliasów otrzymamy wydając w oknie terminala komendę: alias. Jednak IMO warto też czasami sprawdzić co zawiera plik .bash_aliases.

Na widocznym z prawej listingu, uzyskanego po wykonaniu komendy: cat .bash_aliases widoczne są nie tylko definicje poszczególnych aliasów czy też przypisane do nich komentarze.

Według mnie dużo istotniejsze jest zwrócenie uwagi na fakt, że: aliasy możemy definiować przy pomocy wcześniej(!) zdefiniowanych aliasów. W przypadku prezentowanych listingów dotyczy to m.in. definicji komend alias (,a) czy sudo (,s).

Ale o tym dowiesz się jedynie wtedy gdy zajrzysz do pliku .bash_aliases.