Есть ли способ псевдонима многопользовательской команды в Unix?
Я пытаюсь псевдоним команды sudo shutdown
но по моему .profile
Я не могу просто сделать alias "sudo shutdown"="my command"
, Есть ли другой способ псевдонима многопоточных команд в Unix?
5 ответов
Имя псевдонима находится слева, поэтому вы можете использовать любую многопользовательскую команду справа:
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
, but if you have it wouldn't have worked before either); но sudo shutdown
will be equivalent to sudo echo nope
and it'll print that string.
Цитировать из: 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
Используйте функцию:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
Я предпочитаю просто поместить исполняемый файл в / usr / local / bin (убедитесь, что он находится на вашем пути), который затем содержит команды, которые я хочу выполнить. Имя сценария будет командой, которая появляется. не забудьте chmod + x / usr / local / bin / your_script.
Таким образом, сценарий можно назвать "выключение"
Содержимое файла выключения будет:
#!/bin/sh
sudo shutdown
Это открывает целый новый мир. Затем вы можете получить пару команд или даже скрипт:
#!/usr/bin/env python
print "hi"
# more stuff. ....
Вы можете использовать тире в качестве обходного пути: alias sudo-shutdown="your command"