Я намагаюся отримати псевдонім команду, sudo shutdown
але в моєму .profile
не можу просто зробити alias "sudo shutdown"="my command"
. Чи існує інший спосіб псевдоніму багатословних команд в Unix?
Я намагаюся отримати псевдонім команду, sudo shutdown
але в моєму .profile
не можу просто зробити alias "sudo shutdown"="my command"
. Чи існує інший спосіб псевдоніму багатословних команд в Unix?
Відповіді:
Псевдонім ім’я знаходиться в лівій частині, тому ви можете мати будь-яку багатоскладну команду праворуч:
alias my_alias="multi worded command"
EDIT: Однак якщо ви дійсно хочете мати псевдоніми назви кількох слів - у вашому прикладі, якщо ви дійсно хочете, щоб "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. ....