nixp.ru v3.0

25 мая 2017,
четверг,
04:16:19 MSK

DevOps с компанией «Флант»
Аватар пользователя rgo
rgo написал 16 мая 2006 года в 00:07 (250 просмотров) Ведет себя неопределенно; открыл 61 тему в форуме, оставил 1602 комментария на сайте.

вот, что я делаю:

[rgo COM]$ ls
1030973809__obj7.part2.rar  _989754653__obj7.part1.rar
[rgo COM]$ ls | sed 's/\(.*obj\(.*\)\)/mv \1 obj\2/'
mv 1030973809__obj7.part2.rar obj7.part2.rar
mv _989754653__obj7.part1.rar obj7.part1.rar
[rgo COM]$ mv 1030973809__obj7.part2.rar obj7.part2.rar
[rgo COM]$ mv _989754653__obj7.part1.rar obj7.part1.rar
[rgo COM]$ ls
obj7.part1.rar  obj7.part2.rar
[rgo COM]$

после `ls | sed …' я команды мышкой вставляю, но это же не прикольно. как бы так без цикла и без мышки сделать тоже самое?

Uncle Theodore

А вот так

ls | sed 's/\(.*obj\(.*\)\)/mv \1 obj\2/' >> command && bash command && rm command

нельзя? Хотя, конечно, некрасяво…

Good Luck,

UT

rgo
нельзя?

почему ж нельзя? можно. просто хочеться покороче. И команды будут выполняться не в текущем bash, а в дочернем процессе. не будет работать, что-нибудь в стиле:

set | egrep '^[^=]+=' | sed 's/\([^=]*\)=.*/unset \1/'

Единственное что я придумал:

cat >>~/.bashrc <<EOF
function evals () {
    while read cmd; do
        echo \$ $cmd
        eval $cmd
    done
}
EOF

хоть и с циклом, зато не вручную :)

как бы теперь $PS1 нарисовать перед каждой командой…

Steck
rgo
как бы теперь $PS1 нарисовать перед каждой командой…

Всмысле нарисовать? ты имеешь в виду это?

PS1="\[\033[1;33m\][\u\[\033[1;36m\](\W)\[\033[1;33m\]]\$S\[\033[0m\] "
export PS1
Genie


$ `ls *obj* | sed 's/\(.*obj\(.*\)\)/mv -v \1 obj\2;/'`



$ sh -xc "`ls *obj* | sed 's/\(.*obj\(.*\)\)/mv \1 obj\2;/'`"


как бы теперь $PS1 нарисовать перед каждой командой…



$ PS4="$PS1" sh -xc "`ls *obj* | sed 's/\(.*obj\(.*\)\)/mv \1 obj\2;/'`"
rgo

да, `;' спасёт мир :)

тогда простейший вариант:

eval `ls *obj* | sed 's/\(.*obj\(.*\)\)/mv \1 obj\2;/'`

правда без PS1.