10

Я пытаюсь создать псевдоним команды sudo shutdown но в моем .profile я не могу просто сделать alias "sudo shutdown"="my command" . Есть ли другой способ псевдонима многопоточных команд в Unix?

5 ответов5

17

Имя псевдонима находится слева, поэтому вы можете использовать любую многопоточную команду справа:

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 и оно выведет эту строку.

4

Используйте функцию:

foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
2

Цитировать из: 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
1

Вы можете использовать тире как обходной путь : alias sudo-shutdown="your command"

1

Я предпочитаю просто поместить исполняемый файл в /usr /local /bin (убедитесь, что он находится на вашем пути), который затем содержит команды, которые я хочу выполнить. Имя сценария будет командой, которая появляется. не забудьте chmod +x /usr /local /bin /your_script.

Таким образом, сценарий можно назвать «выключение»

Содержимое файла выключения будет:

#!/bin/sh
sudo shutdown

Это открывает целый новый мир. Затем вы можете получить пару команд или даже скрипт:

#!/usr/bin/env python
print "hi"
# more stuff. ....

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .