Чтобы добавлять сообщения и комментарии, .

@schors:
schors

а в чём отличие в shell (работает и в bash):
$a="echo test"
echo $a
от такого:
$a="echo test"
`echo $a`
что-то не пойму что оно делает

@avallach2000:
avallach2000

В общем, мы все умрём, вот. ^_^:
1. ko.com.ua
2. defensecode.com

@zxc-by:
zxc-by

петушиная обойма: — баш вимл пердл

@qnikst:
qnikst

можно ли каким-то образом в bash (а желательно POSIX sh) "унаследовать" функцию, т.е. допустим есть foo() { } я хочу переопределить foo, так, чтобы сначала вызывалась старая версия, а потом какие-нить доп действия?

@TheCakeIsAlive:
TheCakeIsAlive

grep -vr 'class=["'"'"']comment' блабла
Этот кусок в центре меня безмерно радует.

@Annoynimous:
Annoynimous

Cumshot:
lid)
if [ $(echo "ibase=16;`echo $value | tr '[:lower:]' '[:upper:]'` % 2" | bc) == 0 ]; then
sleep 1
umask 0022
avconv -f video4linux2 -i /dev/video0 -f image2 -frames:v 1 /var/tmp/faces/face-`date +%s`.jpeg
else
DISPLAY=":0.0" xautolock -locknow
fi

@viator:
viator

Захотелось, запилилось, делюсь. Скрипт для конвертирования документов в pdf средствами openoffice/libreoffice и его открытия в читалке. Поставил средством открытия документов по умолчанию в DE.

viator@nya:~/bin$ cat openpdf
#!/bin/sh
# autoconvert with libreoffice / openoffice

# config
writer=lowriter
# or
#writer=oowriter

format=pdf

reader=evince


source_file="$*"
out_file=${source_file%.*}.$format

$writer --convert-to $format $source_file
$reader $out_file

# vi: ts=2 sw=2

@melhesedek:
melhesedek

grep -r -C 5 --include "*.pl" TODO .

@NEKT:
NEKT

Наткнулся на интересное поведение шелла. Он каким-то образом умеет вытаскивать и запускать функцию из другого процесса. Основной вопрос — как он это делает? И как это можно использовать на благо человечества?

Пример кода в комментариях

@lf:
lf

Нужен способ ограничить время выполнение команды ( > /dev/tcp/$ip/$port). То есть прибивать по истечению 5 секунд. Вариант с sleep $trime && kill $$ знаю, но не эстетично + лишний вывод в консольке, что не кошерно.

@brjppru:
brjppru

*bash *perl *py *script *kiddie выложыл таки 

git clone https://github.com/brjppru/public.git

@qrilka:
qrilka

чтот я в этих переменных шелла совсем не понимаю:
$ find -name '*.hs'
./examples/type.hs
$ str="-name '*.hs'"
$ find $str
$

почему если предикат в переменной find ничего не находит?

@V1ncE:
V1ncE

$ cat girlfriend | less

@mrazik:
mrazik

Жуйк, помоги! Проблема такая: хочу в качестве шелла поставить юзеру шелл скрипт. Написал скрипт, установил его юзеру, а при логине все время permission denied. При этом если залогинится другим юзером и сделать su в того со скриптом — то все ок. Если этому юзеру поставить обычный шелл, зайти и запустить скрипт руками — все ок. Раньше такого не делал, какие тут могут быть подводные камни, а?

@DespicableMe:
DespicableMe

Парни, поправьте меня, пожалуйста.
nmblookup firewall | grep -o '192.168.0.[0-254]{1,3}'
Думаю, ясно, что я хочу просто получить только ip машины?

@anton0xf:
anton0xf

как запросить пароль из sh-скрипта?
в bash/zsh есть опция -s для этого, а в sh, судя по 'man 1p read', есть только -r.
я думал, что принято скрипты не-только-для-себя писать на sh, а тут такая подстава..
может есть какой-то super-read отдельным пакетом, а я не знаю, или еще что?

@Proxy-M:
Proxy-M

Я использую Ubuntu Linux вместо Debian в основном по одной причине. Оно умеет при попытке запуска в терминале программы которой нет в системе автоматически искать ее по не установленным пакетам и выдавать предложение поставить нужный пакет (правда командой apt-get вместо нормального aptitude). найти скрипт который отвечает за это автодейство мне не удалось. juick помоги его найти =)

а еще был один прикол с этим скриптом сегодня. в общем посоветовали мне одну программу (как бы dd со статусбаром, что не совсем правда), при этом названия точного не помня.
1) набираю в терминале:
#ddrescue
ddresсue: команда не найдена
2) вторая попытка:
#ddresque
Команда 'ddresque' не найдена, возможно вы имели в виду:
Команда 'ddrescue' из пакета 'gddrescue' (universe)

хотя должно было быть примерно так:
#ddrescue
Команда 'ddrescue' не найдена в системе:
Команда 'ddrescue' находится в пакете 'gddrescue' (universe)
выполните следующую команду для установки этого пакета:
sudo apt-get install gddrescue

@a13:
a13

из конфигов:
alias eda='emacs --daemon'

@cybermerlin:
cybermerlin

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

@Posleobeda:
Posleobeda

$(find . -type f )| sort -t\. -k 2 отсортировать по расширению

@mikeb:
mikeb

13:25 < pirofti> started a plist build on landisk.p fwiw
13:26 < pirofti> with gcc4
13:28 < jsg> how long did the 5.1 package build take?
13:42 < sthen> 2 months and it only got as far as lang/

@helgi:
helgi

reddit.com — Был такой тред про малоизвестные полезные команды, и в нём первое место занимал disown. Вот вчера канонически понадобился, чтобы отключиться, а rsync оставить.

@Equidamoid:
Equidamoid

Заливать файлы cat'ом — это весело =)

@L29Ah:
L29Ah

‰ cat ~/bin/prostoshit
#!/bin/sh
# To deal with dumbasses linking this shit
t="`curl -s "$1" | sed -n -e 's#.<title>\(.[^<]\) скачать.*#\1#p'`"
echo "$t"
listen "$t"
# vkontakte über alles

@L29Ah:
L29Ah

Чтой-то сабжевый костыль (который w3crapcli.tk помер. RTMP-сервер отказывается отдавать контент по линкам. Оригинальный флешовый плеер же ругается, что у меня якобы плохой флеш (последний официальный под прыщи). Призываю пиратскую общественность.
rtmpdump -r "`Xtract '//rtmp/-' <(curl -sL "http://myspace.com/music/services/player?action=getSong&ptype=300&songId=$1")`" --swfVfy 'http://lads.myspacecdn.com/music/sdkwrapper/SDKWrapper.2.0.82.swf?aytatt=-1&sip=172.16.0.2&fadd=-1&logerr=0&yad=-1&on=1&ratt=-1&hash=MIGmBgkrBgEEAYI3WAOggZgwgZUGCisGAQQBgjdYAwGggYYwgYMCAwIAAQICZgMCAgDABAgnplwM4Ag1ngQQdgWYpGiAcoQguXuaItYqvgRY97w7Qi29'Раньше работало вот так. Теперь получаю
INFO: Connected...
ERROR: rtmp server sent error
ERROR: rtmp server requested close
Попробовал заменить адрес флешеговна на свежий:
‰ grep -o 'http://lads\.myspacecdn\.com/music[^"]*' knifecityny
lads.myspacecdn.com
Не помогло. Wireshark хинтов тоже не даёт, ибо флешеговно даже и не начинает тыкать rtmp.

@L29Ah:
L29Ah

‰ cat download-tracks
#!/bin/zsh
# Usage: $0 'The One Electronic'
mkdir -p "$1" || exit 1
cd "$1" || exit 1
for u in `Xtract '*//div/small/a/@href' <(curl -s "http://www.last.fm/music/${1// +}+tracks" | sed -e '/<!–\[if IE\]/d' | tidy -asxml 2>/dev/null | cat -v) | urldecode | urldecode`; do
wget "$u" -O "${${u##*/}//+/ }"
done
‰ cat num
#!/bin/bash
i=0
for f in "$@"; do
mv "$f" "`printf '%04d' "$i"` $f"
: $(( i+=1 ))
done

@L29Ah:
L29Ah

Последние пару релизов наблюдаю в init.d подобное:
— n=$(($n + 1))
+ : $(( n += 1 ))
В чём смысл таких изменений?

@anton0xf:
anton0xf

почему такая фигня работает, как ожидается
(отрабатывает и печатает по мере поступления):
$ while : ; do echo "hi bu-bu" ; sleep 1 ; done | \
	sed -n 's/^hi \([^ ]*\).*$/\1/p
такая тоже:
$ while : ; do echo "hi bu-bu" ; sleep 1 ; done | \
	grep hi

а вот такая нифига не печатает?:
$ while : ; do echo "hi bu-bu" ; sleep 1 ; done | \
	grep hi | sed -n 's/^hi \([^ ]*\).*$/\1/p

@a13:
a13

а как в этих ваших бздях  read ваще работает?
# echo 'asdsd' | read var; echo $var

#

@ramok:
ramok

факты о числах: wget -qO- http://numpedia.com | sed -n "s/',.*//;s/.*description:..//p"

@Kim:
Kim

Жуйк, а есть работающий на sh способ, узнать свой pid в 3 строчке? На bash решается через $BASHPID

1 echo $$
2 { ps ax | grep $0
3 echo $$
4 } &

@vbooh:
vbooh

Для манипуляции с xml из shell-скриптов есть очень хороший набор утилит 'xmlstarlet'. Крутая штука, понимает XPath, приятно работать.

@wasd:
wasd

@wyldrodney:
@Gem Посоны, руби позволяет спиздить всю жуйку с помощью 70 строк кода. Так-то! Ни одна тян не будет настолько же долгоиграющей и всегда податливой.
#1605515/17

@wasd:
@wyldrodney wget -r -l0 juick.com
ну и где теперь твой руби?
#1605515/21

@wyldrodney:
@wasd А как в этом поиск устроить или переход к посту?
#1605515/24

@wasd:
@wyldrodney grep
#1605515/25


посоны, зачем эти рубисты-штангисты-питонисты выёбываются, если всё уже написали до них?

@ramok:
ramok

linsovet.com Повторить символ заданное количество раз

@grouzen:
grouzen

такой тупой вопрос. Есть скрипт для чистки логов mysql. При прописывании в крон не срабатывает, точнее как, срабатывает(в логе крона видно, что он запускался), но результат ожидаемого нет. Зато при ручном запуске все впорядке.
Вот строчка из крона:
10 23 * /root/scripts/cleanmysql.sh
А вот сам скрипт:
#!/bin/sh

: > /var/db/mysql/billingbox.err

DBPASS=""
LOGTO=`mysql -u root -p${DBPASS} -e "show binary logs;" | egrep -E "mysql-bin.[0-9]{6}" | awk '{ print $1 }' | tail -n1`

echo $LOGTO

mysql -u root -p${DBPASS} -e "purge binary logs to '${LOGTO}';

@mdma:
mdma

А как на shell сделать, чтобы автоматически отвечало на вопросы системы? Ну вот допустим, мне нужно в скрипте прописать apt-get install somepackage, а он там спрашивает [Y/n], как в скрипте прописать, чтобы ответ шел Y?

@mdma:
mdma

Подскажите по такому вопросу. Запускается скрипт script.sh по крону, как сделать, чтобы скрипт узнавал свой PID (нужно чтобы он писал свой PID в лог, потому что скриптов может быть запущенно несколько)? Пробовал вот по такому делать PID=`ps -aef | grep "$program" | grep -v grep | awk '{print $2}'`, но скриптов может быть несколько экземпляров, а нужно именно, чтобы узнавал свой PID.

@kyzic:
kyzic

загадочен мир командной строки. хочу распаковать кучу архивов, набираю unzip archive*.zip и распаковывается только archive001.zip, а на остальные ругается "filename not matched". после долгих мучений обнаружил, что проходит комбинация unzip 'archive*.zip'. а все потому, что первый аргумент unzip воспринимает как источник, то есть архив, а остальные — как файлы, которые нужно извлечь из архива. когда набираешь unzip archive*.zip оболочка делает свою работу, найдя в каталоге файлы соответствующие выражению и передает их имена утилите unzip в виде unzip archive001.zip archive002.zip archive002.zip ... а unzip понимает как "извлеки из archive001.zip файлы archive002.zip archive003.zip ...". ну и соответственно когда мы добавляем выражение archive*.zip в кавычки, то утилита unzip принимает все имена за один аргумент, как нам и нужно.

@ramok:
ramok

вопрос: "а посоветуйте чего нибудь такого чтоб вывод в консоль был непонятный и на весь экран?" решение: xxd -c $((COLUMNS / 4)) /dev/urandom | while read LINE; do echo -e "\e[0;32m$LINE\e[0m"; sleep .$((RANDOM % 10)); done

@Dimez:
Dimez

Что-то я совсем подзабыл ABS... Жуйк, как правильно написать такое:
a1=a1; b1=b1; c1=c1
a2=a2; b2=b2; c2=c2
...
an=an; bn=bn; cn=cn
i=1
until [ "$a{$i}} ]; do
smth($a{$i},$b{$i},$c{$i})
done