problem z aliasingiem cd w bash

2

Dodałem kilka aliasów do mojego pliku .bashrc, aby korzystać z często używanych skrótów, między innymi:

alias .="cd /;ls"
alias ..="cd ../;ls"
alias cd="cd $1;ls"
alias ls="clear;pwd;ls"

Skuteczny wynik jest taki, że za każdym razem, gdy przechodzę do nowego katalogu, okno jest czyszczone i wyświetla nowy katalog i jego zawartość u góry.

Wszystkie te aliasy działają oprócz aliasu cd. Próbowałem wielu kombinacji prób włożenia dysku CD do nowego katalogu i uruchomienia tam ls, ale wygląda na to, że mogę albo wyświetlić zawartość katalogu i powrócić do starego katalogu, albo pomyślnie wejść do katalogu, ale z wygenerowana lista pochodzi ze starego katalogu.

Czy jest coś specjalnego, co należy zrobić, gdy aliasingujesz cd (lub dowolne polecenie z argumentami) w bash? Wydaje mi się, że jest to stosunkowo proste zadanie, ale po prostu pomijam coś w składni.

Zee
źródło
Tylko uwaga - FYI: .i ..są nazwami katalogów. .== bieżący katalog ..== katalog macierzysty. Używanie ich jako aliasów może spowodować zgagę w skrypcie.
Jim Mcnamara,
Zanotowano. Po prostu majstruję przy bash i C ++ na dodatkowej instalacji, próbując się zorientować. Mogę więc uruchomić sudo rm -rf / i być w porządku :), ale będę o tym pamiętać przy późniejszych skryptach.
Zee

Odpowiedzi:

10

Aliasy nie mają parametrów, zamiast tego spróbuj funkcji

cd() { builtin cd "$1" ; ls ; }
Michael Krelin - haker
źródło
Dzięki stary, działał jak urok. Nigdy bym nie zgadł, że to by to zrobiło. TIL, jak tworzyć funkcje w bash, haha
Zee