Jak przekazać argumenty wiersza polecenia do aliasu? Oto próbka:
alias mkcd = 'mkdir 1 $; cd $ 1; '
Ale w tym przypadku $ xx jest tłumaczony w aliasie tworzącym czas, a nie w czasie wykonywania. Jednak stworzyłem obejście za pomocą funkcji powłoki (po trochę googlowaniu), jak poniżej:
funkcja mkcd () { mkdir 1 $ cd 1 USD }
Chciałem tylko wiedzieć, czy istnieje sposób na utworzenie aliasów, które akceptują parametry CL.
BTW - Używam „bash” jako mojej domyślnej powłoki.
mkdir mydirectoryname && cd $_
Odpowiedzi:
Znalazłeś sposób: utwórz funkcję zamiast aliasu. Powłoka C ma mechanizm wykonywania argumentów dla aliasów, ale bash i powłoka Korna nie, ponieważ mechanizm funkcji jest bardziej elastyczny i oferuje tę samą możliwość.
źródło
.bashrc
pliku. Na przykład # utwórz alias, który pobiera numer portu przez alias użytkownika serve = "python -m SimpleHTTPServer $ 1" Po wprowadzeniu zmian w pliku .bashrc, upewnij się, że wprowadziłeś następujące polecenie. ~ $ source .bashrc Powinieneś być w stanie używać tego w ten sposób ~ $ służyćAby powtórzyć to, co zostało opublikowane dla innych powłok, w Bash następujące prace:
Uruchamianie następujących czynności:
Podaje wynik poniżej:
źródło
Bash
na zastąpienie$1
i$2
przekazanie parametrów do funkcji. Pojedyncze cytaty mówią Bashowi, żeby tego nie robił.function blah(){ echo "First: $1"; echo "Second: $2"; }
Nie możesz w ksh, ale możesz w csh.
W ksh funkcja jest właściwą drogą. Ale jeśli naprawdę chcesz użyć aliasu:
źródło
csh
współczesna osoba zwykle nie chce tego używać. Alias-który-tworzy-funkcję-następnie-wykonuje-tę-funkcję, jest stosunkowo popularny, ale o ile wiem, nie oferuje żadnych korzyści w porównaniu z właściwą funkcją. (W każdym razie funkcja powinna poprawnie zacytować swój argument.) Downvoting.Aby zacytować stronę podręcznika bash:
Wygląda na to, że odpowiedziałeś na własne pytanie - użyj funkcji zamiast aliasu
źródło
Przydatne może być również to polecenie:
mkdir dirname && cd $_
gdzie dirname to nazwa katalogu, który chcesz utworzyć
źródło
$_
jest wyjściem ostatniego polecenia unix.stackexchange.com/a/271693/169772Odkryłem, że funkcji nie można zapisać w
~/.cshrc
pliku. Tutaj w aliasie, który przyjmuje argumentyna przykład argumenty przekazane do polecenia „znajdź”
gdzie abc jest argumentem przekazywanym jako!: 1
źródło
!:1
znaczy. Musiałem przewinąć w dół, aby zobaczyć, że to był argument. Dobra odpowiedź nie pozostawia więcej pytań, nawet jeśli nie dotyczy to typu powłoki PO.Najprostszym sposobem jest użycie funkcji, a nie aliasu. nadal możesz wywołać funkcję w dowolnym momencie z cli. W bash możesz po prostu dodać funkcję name () {polecenie}, ładuje się tak samo jak alias.
Nie jestem pewien co do innych powłok
źródło
W rzeczywistości nie możesz robić, co chcesz, używając aliasów Bash, ponieważ aliasy są statyczne. Zamiast tego użyj utworzonej funkcji.
Zajrzyj tutaj, aby uzyskać więcej informacji: http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/ . (Tak, wiem, że to mactips.org, ale chodzi o Bash, więc nie martw się.)
źródło
Działa to w ksh:
Opcja „-x” powoduje, że alias jest „eksportowany” - alias jest widoczny w podpowłokach.
I pamiętaj, że aliasy zdefiniowane w skrypcie nie są widoczne w tym skrypcie (ponieważ aliasy są rozwijane po załadowaniu skryptu, a nie podczas interpretacji wiersza). Można to rozwiązać poprzez wykonanie innego pliku skryptu w tej samej powłoce (za pomocą kropki).
źródło
Myślę, że możesz to zrobić za pomocą funkcji powłoki, jeśli używasz bash: http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/
źródło
function count () {python -c "for num in xrange ($ 1): print num";}
źródło
Pusty alias wykona swoje argumenty:
źródło