Próbuję zmienić alias polecenia, sudo shutdown
ale .profile
nie mogę tego zrobić alias "sudo shutdown"="my command"
. Czy istnieje inny sposób na alias poleceń wieloskładowych w Uniksie?
Próbuję zmienić alias polecenia, sudo shutdown
ale .profile
nie mogę tego zrobić alias "sudo shutdown"="my command"
. Czy istnieje inny sposób na alias poleceń wieloskładowych w Uniksie?
Odpowiedzi:
Nazwa aliasu znajduje się po lewej stronie, więc po prawej stronie możesz mieć dowolne wielowątkowe polecenie:
alias my_alias="multi worded command"
EDYCJA: Jeśli jednak naprawdę chcesz mieć aliasy z nazwami wielu słów - w twoim przykładzie, jeśli naprawdę chcesz, aby „zamknięcie sudo” było aliasem, możesz obejść ten problem, używając następującej funkcji aliasu (w podręczniku bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Jeśli więc nadal chcesz używać sudo
innych poleceń, ale nie shutdown
możesz i możesz sobie pozwolić na alias shutdown
do czegoś innego, możesz mieć:
alias sudo='sudo '
alias shutdown="echo nope"
Teraz sudo anything_else
będzie działał zgodnie z oczekiwaniami (zakładając, że nie masz aliasu anything_else
, ale jeśli go masz, nie działałby wcześniej); ale sudo shutdown
będzie równoważne sudo echo nope
i wydrukuje ten ciąg.
alias cd="cd "
z pojedynczych liter aliasów, alias X="<directory-with-long-name>"
aby łatwiej przeskakiwać z miejsca na miejsce.
alias gti="git "
alias lgo="log"
Cytat z: Bash: Spacje w nazwie aliasu
Dokumentacja Bash stwierdza: „W prawie każdym celu funkcje powłoki są lepsze niż aliasy”. Oto funkcja powłoki, która zastępuje ls
i powoduje przesyłanie danych wyjściowych, more
jeśli argument składa się z (tylko) -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Jako jedna linijka:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Automatycznie wyjście rurowe:
ls -la
Wolę po prostu umieścić plik wykonywalny w / usr / local / bin (upewnij się, że jest na twojej ścieżce), który następnie zawiera polecenia, które chcę uruchomić. Nazwa skryptu byłaby poleceniem, które się pojawi. pamiętaj, aby chmod + x / usr / local / bin / your_script.
Tak więc skrypt można nazwać „zamknięciem”
Zawartość zamknięcia pliku to:
#!/bin/sh
sudo shutdown
To otwiera zupełnie nowy świat. Możesz wtedy mieć kilka poleceń lub nawet skrypt:
#!/usr/bin/env python
print "hi"
# more stuff. ....