Есть ли способ псевдонима многопользовательской команды в 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"

Другие вопросы по тегам