alias и функции, как средство настройки оболочки по себя


elide - Posted on 15 Январь 2006

очень часто для автоматизации часто выполняемых действий используются скрипты, но есть определенный круг задач, которые настолько малы, что писать для них отдельные скрипты нецелессобразно. для них можно использовать алиасы и функции оболочки.

в большинстве случаев алиасы используются для задания постоянного набора опций определенной команды. например:
alias ls='ls -A --color'
alias ll='ls -Al --color'
alias ps='ps -AH'
alias rm='rm -i'

т.о. если Вы заметили, что используете команду с одними и теми же опциями больше трех раз - смело делаейте для нее алиас. жить станет проще.

* посмотреть список алиасов - alias
* удалить алиас - unalias имя_алиаса

но алиасы не подходят для тех задач, которые подразумевают выполнение нескольких команд над одним аргументом. тогда разумнее использовать функции. например, эта функция создает директорию и тут же переходит в нее:
function mkdc(){ mkdir "$1" && cd "$1"; };
здесь видно, как можно передать один аргумент нескольким командам.

* посмотреть список имён функций - typeset -F (только bash)
* список функций и их код - typeset -f
* удалить функцию - unset имя_функции (только bash)

ну и напоследок, некоторые алиасы, которые удобны лично для меня:
alias du='du -hcs'
alias df='df -h'
alias winex='cedega -use-pthreads no '
alias wget='wget -t0 --retry-connrefused -T180 -c '
alias visu='sudoedit'
alias vipro="vim $HOME/.profile"
alias cron='crontab -e'

P.S. Маленький совет: если алиас или функция не помещается в одну строчку, лучше заведите для этой операции отдельный скрипт...

0
Ваша оценка: Ничего

Наверное стоило бы добавить, что:

* посмотреть список алиасов - alias
* удалить алиас - unalias имя_алиаса

* посмотреть список имён функций - typeset -F
* список функций и их код - typeset -f
* удалить функцию - unset имя_функции

update
snx Ж:-)
--
Signature invent in progress 23% #.........

для того что бы посмотреть список алиасов надо ввесли просто alias

я добавил еще одну функцию которая удаляет текущую директорию если она пустая и поднимается на каталог выше

$ rmd(){ local P="`pwd`" && cd .. && rmdir "$P" || cd "$P"; }

приведу пример работы
так как я часто создаю временные каталоги
$ mkdc tmp

# тут я передумал так как имя директории выбрал неудачно

~tmp$  rmd
$ ls -ld tmp
ls: tmp: No such file or directory

и пару алиасов..

cdrom='mount -t auto /dev/hdb /media/cdrom && cd /media/cdrom'
floppy='mount -t auto /dev/hd0 /media/floppy'
ucdrom='umount /media/cdrom'
ufloppy='umount /media/floppy'

--
Signature invent in progress 19% #.........

> удаляет текущую директорию если она пустая
Не надо бы такой алиас... Так можно и /mnt прибить. Следующий шаг - патч Бармина в алиасы завести :-/

неприбью
прав не хватит Ж:-)

а что за пач?

--
Signature invent in progress 19% #.........

> прав не хватит
Дык, а тогда и на такие маунты прав не хватит, кста. Потому как юзверю только по фстабу дозволено монтировать.

AFAIK, rm -rf /....