Я пытаюсь создать псевдоним команды, sudo shutdownно .profileя не могу просто выполнить alias "sudo shutdown"="my command". Есть ли другой способ для псевдонима многопоточных команд в Unix?
Я пытаюсь создать псевдоним команды, sudo shutdownно .profileя не могу просто выполнить alias "sudo shutdown"="my command". Есть ли другой способ для псевдонима многопоточных команд в Unix?
Ответы:
Псевдоним находится слева, поэтому вы можете использовать любую многопользовательскую команду справа:
alias my_alias="multi worded command"
РЕДАКТИРОВАТЬ: Однако, если вы действительно хотите иметь псевдонимы имен из нескольких слов - в вашем примере, если вы действительно хотите, чтобы «sudo shutdown» был псевдонимом, вы можете обойти это, используя следующую функцию псевдонимов (в руководстве bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Итак, если вы все еще хотите использовать sudoс другими командами, но не с, shutdownи если вы можете позволить себе псевдоним shutdownк чему-то другому, вы можете иметь:
alias sudo='sudo '
alias shutdown="echo nope"
Теперь sudo anything_elseбудет работать, как и ожидалось (при условии, что у вас нет псевдонима для anything_else, но если бы он у вас был, он бы не работал раньше); но sudo shutdownбудет эквивалентно, sudo echo nopeи он напечатает эту строку.
alias cd="cd "однобуквенные псевдонимы, alias X="<directory-with-long-name>"чтобы легче переходить с места на место.
alias gti="git "иalias lgo="log"
Используйте функцию:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
elseслучай, чтобы исходная команда barfoo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Цитировать из: Bash: пробелы в псевдониме
Документация Bash гласит: «Практически для любых целей функции оболочки предпочтительнее псевдонимов». Вот функция оболочки, которая заменяет lsи вызывает вывод, moreесли аргумент состоит из (только) -la.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Как однострочник:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Автоматически выводить трубу:
ls -la
Я предпочитаю просто поместить исполняемый файл в / usr / local / bin (убедитесь, что он находится на вашем пути), который затем содержит команды, которые я хочу выполнить. Имя сценария будет командой, которая появляется. не забудьте chmod + x / usr / local / bin / your_script.
Таким образом, сценарий можно назвать «выключение»
Содержимое файла выключения будет:
#!/bin/sh
sudo shutdown
Это открывает целый новый мир. Затем вы можете получить пару команд или даже скрипт:
#!/usr/bin/env python
print "hi"
# more stuff. ....