Я намагаюся отримати псевдонім команду, 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. ....