Chcę poznać różnicę między aliasami i funkcjami w powłoce bash - i kiedy użyć której.
Wydaje się oczywiste, że ponieważ funkcje mogą przyjmować argumenty, są one o wiele potężniejsze - ponieważ pracuję głównie na drodze z netbookiem i chcę oszczędzać energię i moc obliczeniową, szczególnie chciałbym dowiedzieć się nieco więcej o różnicach w wydajności z tych dwóch sposobów rozszerzenia funkcjonalności bash są.
Odpowiedzi:
Myśl o aliasach jako pseudonimach. Możesz mieć polecenie, które często wykonujesz, ale chcesz je skrócić.
Na przykład często chcesz przejść bezpośrednio do pulpitu w wierszu polecenia, aby to zrobić
Od tego momentu po prostu pisz
w terminalu i wykona
cd ~/Desktop
dla ciebie.Funkcje zawierają logikę. W funkcji możesz wykonywać połączenia z kilkoma różnymi programami. Oto prosta funkcja echa
Chociaż może się wydawać podobny do aliasu, gdy go nazwiesz
Twoja e () może mieć wiele różnych rzeczy. Powyżej jest uproszczonym przykładem.
Aliasy powinny być zastrzeżone dla prostych przypadków użycia. Przykład osobisty - moje
rm
polecenie zastąpiłem w ten sposóbIlekroć zrobię RM, wyśle go do kosza zamiast usuwać z dysku. To służy mojej niezdarności w terminalu, w którym mogę (czasami) przypadkowo usunąć ważny plik.
Funkcje , o których musisz pamiętać, to logika. Zwykle nie używasz funkcji samodzielnej. Byłby to część większego skryptu. Wyobraź sobie skrypt, który przenosi wszystkie twoje pliki i zmienia ich nazwy na ich świniowate wersje łacińskie. Zignoruj to na różne sposoby.
Ale możesz zrobić pętlę przez każdy plik w katalogu i przekazać ścieżkę do funkcji RenameAsPigLatin. Funkcja RenameAsPigLatin może mieć dodatkową logikę obejmującą liczby, w których zdecydujesz, że nazwy plików kończących się liczbami nie powinny być zmieniane.
Natychmiast widać korzyści wynikające z posiadania go jako funkcji. Funkcja może skupić się na zmianie nazwy według twoich dziwnych reguł, podczas gdy reszta skryptu może przechodzić między różnymi katalogami w razie potrzeby.
źródło
Alias to prosty skrót używany w konsoli, aby uniknąć wpisywania długich poleceń lub zawsze powtarzania tych samych opcji.
Klasycznym przykładem byłoby:
Aliasy działają tylko w interaktywnej konsoli, nie są przeznaczone do użycia w skryptach.
Funkcji można używać w skryptach lub w konsoli, ale częściej są one używane w skryptach.
W przeciwieństwie do aliasów, które są po prostu zastąpione ich wartością, funkcja zostanie zinterpretowana przez powłokę bash.
Funkcje są znacznie potężniejsze niż aliasy, można ich używać do budowania bardzo złożonych programów.
źródło