Я пытаюсь создать псевдоним команды, 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
случай, чтобы исходная команда bar
foo() { 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. ....