Есть ли способ псевдонима многопользовательской команды в Unix?
11
Я пытаюсь создать псевдоним команды, sudo shutdownно .profileя не могу просто выполнить alias "sudo shutdown"="my command". Есть ли другой способ для псевдонима многопоточных команд в Unix?
Я опробовал все эти методы, и все они работали! Спасибо всем!
agentbanks217
Попробуйте также решение в моем редактировании , так как я понял, что вы действительно намеревались использовать 'sudo shutdown' в качестве псевдонима слишком поздно.
Ответы:
19
Псевдоним находится слева, поэтому вы можете использовать любую многопользовательскую команду справа:
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>"чтобы легче переходить с места на место.
Люк Дэвис
Согласитесь, это на самом деле супер полезно. Я неправильно набираю команды git, это решает это для меня: alias gti="git "иalias lgo="log"
BananaNeil
4
Используйте функцию:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
Документация 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; }
Я предпочитаю просто поместить исполняемый файл в / usr / local / bin (убедитесь, что он находится на вашем пути), который затем содержит команды, которые я хочу выполнить. Имя сценария будет командой, которая появляется. не забудьте chmod + x / usr / local / bin / your_script.
Таким образом, сценарий можно назвать «выключение»
Содержимое файла выключения будет:
#!/bin/sh
sudo shutdown
Это открывает целый новый мир. Затем вы можете получить пару команд или даже скрипт:
#!/usr/bin/env python
print "hi"
# more stuff. ....
Ответы:
Псевдоним находится слева, поэтому вы можете использовать любую многопользовательскую команду справа:
РЕДАКТИРОВАТЬ: Однако, если вы действительно хотите иметь псевдонимы имен из нескольких слов - в вашем примере, если вы действительно хотите, чтобы «sudo shutdown» был псевдонимом, вы можете обойти это, используя следующую функцию псевдонимов (в руководстве bash ):
Итак, если вы все еще хотите использовать
sudo
с другими командами, но не с,shutdown
и если вы можете позволить себе псевдонимshutdown
к чему-то другому, вы можете иметь:Теперь
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"
Используйте функцию:
источник
else
случай, чтобы исходная командаbar
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Цитировать из: Bash: пробелы в псевдониме
Документация Bash гласит: «Практически для любых целей функции оболочки предпочтительнее псевдонимов». Вот функция оболочки, которая заменяет
ls
и вызывает вывод,more
если аргумент состоит из (только)-la
.Как однострочник:
Автоматически выводить трубу:
источник
Вы можете использовать тире в качестве обходного пути:
alias sudo-shutdown="your command"
источник
Я предпочитаю просто поместить исполняемый файл в / usr / local / bin (убедитесь, что он находится на вашем пути), который затем содержит команды, которые я хочу выполнить. Имя сценария будет командой, которая появляется. не забудьте chmod + x / usr / local / bin / your_script.
Таким образом, сценарий можно назвать «выключение»
Содержимое файла выключения будет:
Это открывает целый новый мир. Затем вы можете получить пару команд или даже скрипт:
источник