1.1, default (??), 09:53, 28/06/2010 [ответить]
| +/– |
"оттабили" неудачно. последние команды, вызывающие telnet и ssh являются частью скриптов.
| |
1.3, Аноним (3), 12:26, 28/06/2010 [ответить]
| +/– |
Вместо /usr/bin/ssh можно написать просто 'command ssh'. А вместо отдельных скриптов, кои запускают новый процесс лучше избавиться от awk'а и tty (юзать getopts/case/$TTY), сделать чистые функции и сорсить их из ~/.bashrc.
Просто судя по тому, что у автора в скрипте, ему хватит и POSIX shell'а. Стоит лишь заменить [[ blah ]] на [ blah ]. Можно было вообще обойтись одним awk'ом или одним sh.
Например, на zsh это бы выглядело так
typeset -A wrap_cmds
# telnet/main.c
wrap_cmds+=(telnet 468EKLNS:X:acde:fFk:l:n:rs:uxy)
# openssh/ssh.c
wrap_cmds+=(ssh 1246ab:c:e:fgi:kl:m:no:p:qstvxACD:F:I:KL:MNO:PR:S:TVw:W:XYy)
set-title() echo "\ek$*\e\\"
() { local fun; for fun (${(k)wrap_cmds}) $fun() {
local opt OPTIND OPTARG
# erase options and their arguments from argv[]
while getopts $wrap_cmds[$0] opt; do done
shift $((OPTIND - 1))
set-title "$0 $*"
command $0 "$@"
}}
Потом из ~/.zshrc можно делать 'source ~/.title_wrappers', который нагенериует wrapper-функций на основе массива wrap_cmds. А wrap_cmds можно заполнить разными командами, если погрепать исходники каждой на вызов функции getopt(3) или getopt_long(3).
| |
|
2.4, default (??), 12:35, 28/06/2010 [^] [^^] [^^^] [ответить]
| +/– |
Действительно, учитывая размер скриптов, лучше это дело реализовать в виде wrapper-функций шелла. Спасиб.
| |
2.5, Аноним (3), 12:48, 28/06/2010 [^] [^^] [^^^] [ответить]
| +/– |
В моем примерчике, кстати, стираются опции с аргументами к ним не только в заголовке, но и при запуске самой команды. Поправить это просто, но я оставлю это как домашнее задание. ;)
| |
|
1.6, Аноним (-), 03:05, 30/06/2010 [ответить]
| +/– |
>>if [[ "$TERM" == "screen" ]]; then
if [ "$TERM" = "screen" ]; then
короче и посиксно. Зачем так увлекаться башем? ;)
| |
|
2.7, Andrey Mitrofanov (?), 09:14, 30/06/2010 [^] [^^] [^^^] [ответить]
| +/– |
>короче и посиксно. Зачем так увлекаться башем? ;)
Угу, в .bashrc посиксность и переносимость -- Первое Дело! B*)
| |
|
|
2.9, Аноним (3), 12:55, 05/07/2010 [^] [^^] [^^^] [ответить]
| +/– |
bash, gawk и tty кросплатформенны. А вот /usr/bin/ssh - нет, нет никакой гарантии что ssh будет находится в /usr/bin; тоже самое с /bin/bash. Первое решается с помощью встроенной команды command, второе с помощью популярного хака - #! /usr/bin/env bash
| |
|
|