LINUX.ORG.RU
ФорумTalks

Какое ваше самое жуткое извращение?

 ,


0

3

По мере работы в комадной строке, со временем привыкаешь к консоли, набираешься опыта, разбираешься в синтаксисе shell script'инга, и казалось бы обычную задачу выполняешь как-то... не так, как это делал бы нормальный пользователь.

ЛОР, до чего докатился ты? Опиши свой уровень обращения с консолью. Пользуешься ли ты всеми доступными инструментами, или открываешь консоль только когда хочешь запостить скриншот на ЛОР? =)

Вы не ловили себя на мысли, что UNIX-way — рулит!?

Мой уровень таков. При работе со строками всё чаще стал обращаться к Bash, если надо что-то где-то заменить, узнать количество букв, строк, все делаю через ${#переменные} или массивы в Bash. Посчитать на калькуляторе? Это всегда echo $((...)), и очень редко echo ... | bc -l из-за необходимости оборачивать выражение в ковычки «» (лор-парсер, ну вы поняли).
Чтобы запустить mplayer'ом несколько фильмов/песен подряд, всегда прибегаю к mplayer TV_Series.s01.{01..13}*, и когда требуется просто перебрать файлы, for i in /tmp/sess_* давно перестал пугать.
А .bash_history это не просто набор команд уровня «cd» и «ls», это всякие однострочные скрипты, констрункции, grep на awk да sed'ом погоняет! Но больше всего, конечно же, предпочитаю чистый Bash. Что забавно, функции/алиасы не создаю. Предпочитаю Ctrl + R и использовать инструменты «как есть», не городя костыли.

Сейчас потребователось создать базу данных sqlite, чтобы скачать дамп надо открывать браузер, лезть на сайт, скачивать файлик, распаковывать, и... Так сделал бы любой виндузятник. Но неожиданно сам для себя на автомате сделал это вот так: curl github.com/jabberd2/jabberd2/releases/download/jabberd-2.3.3/jabberd-2.3.3.tar.xz | tar -x -J -O jabberd-2.3.3/tools/db-setup.sqlite | sqlite3 /srv/xmpp/jabberd/db/sqlite.db

curl ... | tar -x -J -O path/to/file | sqlite3 file.db

P.S. ЛОРодвиг предупреждает: «Не добавляйте теги в заголовки, используйте предназначенное для тегов поле ввода»; но теги создавать нельзя, посему извиняйте.

★★★★★

Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от drull

Кстати проверка на isset - это одна из самых быстрых операций. Пытаться экономить на этом - дебилизм.

плюсую.

emulek
()

Угадал автора по топику. Обычно использую zsh вместо файлового менеджера, cd/ls как-то удобнее и уже оттуда вызываю некоторые гуевые программки. Ну и использую python3 вместо калькулятора.

ktan ★★★
()

да, извращение

#!/bin/sed -rnf

/^$/ b ctrl_end

G
:begin_loop
		s/^([^\n])([^\n]*)(.*)\n\1~([a-g]+)/\2\n\1~\4a\3/
		t continue_loop
		# символа нет в базе или этот символ последний
		/^\n/	b last_sym

		# новый символ
		s/^(.)([^\n]*)\n$/\2\n\1~a/
		t begin_loop
		s/^(.)(.*)$/\2\n\1~a/
		t begin_loop

:continue_loop
		s/(\n.*)a{10}/\1b/;	T begin_loop
		s/(\n.*)b{10}/\1c/;	T begin_loop
		s/(\n.*)c{10}/\1d/;	T begin_loop
		s/(\n.*)d{10}/\1e/;	T begin_loop
		s/(\n.*)f{10}/\1g/;	T begin_loop
		s/(\n.*)g{10}/\1i/;	T begin_loop
		q 77

	:last_sym
	# последний символ
	s///
	x

:ctrl_end
$ {
	# последняя строка
	s/.*/&/
	t convert_start
:convert_loop
		s/a{9}/9/;		t convert_end_loop
		s/a{8}/8/;		t convert_end_loop
		s/a{7}/7/;		t convert_end_loop
		s/a{6}/6/;		t convert_end_loop
		s/a{5}/5/;		t convert_end_loop
		s/a{4}/4/;		t convert_end_loop
		s/a{3}/3/;		t convert_end_loop
		s/a{2}/2/;		t convert_end_loop
		s/a/1/;			t convert_end_loop
		s/^[a-g]*/&0/;	t convert_end_loop
:convert_end_loop
		y/bcdefg/abcdef/
		s/[a-g]/&/
		t convert_loop
	G
	s/^([0-9]+)\n(.*)([^\n])~[a-g]+(.*)/\2'\3' \1\4/
	x
	t convert_start
	:convert_start
	g
	s/.*[^\n]~([a-g]+).*/\1/
	t convert_loop
	s/\n([^\n]+)\n([^\n]+)\n/\t\1\t\2\n/g
	p
}

Вот что получается:

$ ./wcc.sed sed/sed_tutor/test.txt
'.' 13  'е' 102 'к' 48
'у' 18  'б' 24  'т' 92
'о' 138 'н' 67  ' ' 231
'а' 109 'щ' 5   'в' 70
'и' 92  'л' 34  'ы' 23
'ш' 5   'м' 36  'й' 10
'ч' 28  'р' 58  'с' 77
'д' 29  'ь' 26  'х' 8
',' 15  'г' 15  'я' 26
'п' 37  ':' 2   'x' 12
'u' 12  'n' 21  'i' 22
'L' 12  'з' 22  'ю' 4
'В' 3   'ц' 7   'э' 3
'ж' 7   'ё' 7   ')' 3
'(' 3   'o' 12  't' 3
's' 10  'r' 4   'W' 9
'e' 2   'S' 2   'w' 8
'd' 8   'ф' 3   '-' 3
'М' 2   'X' 2   'I' 2
'N' 2   'U' 2   '?' 1
'И' 1   'О' 1   'Д' 1
'M' 1   'c' 1   'f' 1
'D' 1   'O' 1   'Т' 1
'Н' 1   'Е' 1   'v' 1
'С' 1   'k' 1   'a' 1
'Р' 1
'У' 1
		

emulek
()

В 2015 году я до сих пор вынужден делать поиск файлов из соснули, потому что гномеры до сих пор не осилили за много лет сделать что-то вменяемое в этом плане.

ЗЫ: пайтон вместо калькулятора - это не извращения, это норма

fornlr ★★★★★
()

Кстати, Спуфи, такой вопрос: я вот понимаю, что ты свой бложик пишешь с расчетом <<for fun>>, да при том, чтобы все было максимально быстро и по фэншую? Так почему тогда на PHP, а не на кошерной Си(++)шечке?

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

у php низкий порог вхождения, очень легко писать, не отвлекаясь на всякое низкоуровневое и прочие утечки памяти. (не писал, но осуждаю, да)

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

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от emulek

что тебе там не нравиться? Я как марсианин со стажем интересуюсь.

bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
13/2
6

WTF? 13 уже четное? а пацаны-то не знают!

scale=1
13/2
6.5
ORLY???!!! Вот почему везде нужно указывать scale? Когда вообще может понадобиться scale=0? Забыл поставить scale? — ССЗБ. Это нормально?

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)

Установил как то линукс и даже им пользовался :( Вот это самое настоящее извращение.

xtraeft ★★☆☆
()
Ответ на: комментарий от iVS

WTF? 13 уже четное? а пацаны-то не знают!

пацаны может и не знают

13%2
1
14%2
0
я не в курсе кто вы, но я же сишнег, привык уже.

Когда вообще может понадобиться scale=0?

программистам в 95% случаев с целыми надо работать. Но вот:

$ bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
e(1)
2.71828182845904523536
4*a(1)
3.14159265358979323844

это экспонента от 1, и 4 арктангенса от 1.

1/2-(-1/2)==0

в сишке также. Да и во многих ЯП тоже. float/double редко нужно. И да, если уж мне по башке дадут, и я сдачу в магазине не посчитаю, есть мобилка. А комп мне для работы нужен, как и калькулятор в нём, не всё же на ЛОРе зависать…

ЗЫЖ в наших процессорах float/double отдельным модулем сделан. А до i80486 так вообще был опционально, т.е. приходилось код писать или lib'у подключать, если x87 не найден. Так-то.

emulek
()

В консоли провожу ~50% времени.

Консоль нравится за то, что умеет в разы больше чем GUI, всё под рукой, практически всё можно автоматизировать. Сравнить файлы - sdiff -s. Просмотреть картинку - fim. Расшарить файл - сделал линк в каталог (ln в консоли или F2+s в mc) и поднял ftp (fu). Обновиться систему - u1. Отредактировать файл - vim и т. п. Что может быть проще? Я уже не говорю про что-то типа «в каталоге tmp показать все подкаталоги, в которых есть картинки из моего фотоаппарата» или «при подключении этой флешки - синхронизировать файлы с определённым каталогом». Да, немного нужно приноровиться, зато потом эффективность работы повышается раз в 10.

Систему изначально настраиваю так, чтобы удобно было работать как в командной строке, так и в GUI. В Кедах терминал постоянно открыт. С недавних пор убрал табы Konsole, пользуюсь «окнами» tmux. В загрузочных скриптах настроены runlevel 3 (консоль с возможность запуска иксов), 4 (service mode - минимум сервисов), 5 (GUI). Advanced Bash Scripting Guide - в Speed Dial в Опере. Много польуюсь bash, sed и т. п.

Что назвать извращением - не знаю. Вот например:
- Мой PS1: А поделитесь-ка своим PS1 (комментарий) . Описание по линку.
- Подстроил keybinding в консоли: F10 запускает mc (кстати, с настройкой mc F10=exit без предупреждения - очень удобно), F11 - sudo. Остальные не прижились.
- Раньше редактировал раскладку чтобы переключение языков было по Win, потом убрал: CapsLock удобней.
- Делал чтобы syslog-ng сообщал мне об определенных событиях в консоль (да и в GUI). Среди событий - перегрев, emerg ошибки ядра, логин root'а и там еще. Потом нотификации убрал. Но все равно конфиг syslog-ng у меня 100% кастомный.
- tmux настроен, притом с шорткатами без префикса, с возможностью перемещение панелей между окнами, менять разбивку панелей с вертикальной на горизонтальную и т. п.
- в mc пару пунктов F2 меню добавил, алиасов в bashrc, загрузочные скрипты там (WakeOnLan, RAM-drive для /tmp)
- терминал в иксах 256 цветов, в голой консоли еще не дошли руки сделать.
- todo list в консоли сделал.

Да всего и не упомнишь. Главное что удобно.

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

Так в даше поиск по файлам
У тебя трекер стоит?

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

Спасибо, о таких тонкостях не подозревал. Буду курить маны.

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

Просмотреть картинку - fim.

для меня это слишком «удобно», картинки я смотрю viewer'ом из кед, тыкаю в картинку, она и открывается. А сквозь имена файлов лиц не видать.

F10 запускает mc

раньше я mc юзал, но постепенно перестал. Есть bash и всё остальное.

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

Т.е. конфетно-букетный у вас с конем уже кончился?

minakov ★★★★★
()

Иногда запускаю циклы, объявляю одноразовые функции, создаю и подставляю переменные прямо в консоли. Баш классный.

Из скриптовых извращений самое сильное - написание парсера HTML с помощью XPATH.

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

- Всем известный bc придуман имбециалами для марсиан

alias bc='bc -l'
Bagrov ★★★★★
()
Ответ на: комментарий от emulek

картинки я смотрю viewer'ом из кед, тыкаю в картинку, она и открывается.

Я в основном тоже. А если ты в терминале или? Или еще лучше - в голой консоли без иксов?

Плюс fim в том, что он одинаково хорошо работает что в GUI, что в терминале/голой консоли. И почти все что нужно в нем есть.

Kroz ★★★★★
()

ncat -lk 5038 -c 'tee ./log.in | nc 192.168.1.250 5038 | tee ./log.out'
А затем:
ncat -lk 5038 -c '~/crap.py | tee ./log.in | nc 192.168.1.250 5038 | tee ./log.out'

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

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

А если ты в терминале или? Или еще лучше - в голой консоли без иксов?

а зачем? just for fun? Я умею, когда-то так и делал. Сделаю и сейчас, гугл напомнит если что.

Плюс fim в том, что он одинаково хорошо работает что в GUI, что в терминале/голой консоли. И почти все что нужно в нем есть.

Есть и минус:

$ fim
bash: fim: команда не найдена
$ grep 'NAME' /etc/os-release 
1:NAME=Slackware
5:PRETTY_NAME="Slackware 14.1"
7:CPE_NAME="cpe:/o:slackware:slackware_linux:14.1"
emulek
()

Заливаю музыку на мобильные устройства через rsync, потому-что мне лень разбираться что уже залито, а чего еще нет.

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

ну как?

$ php -r 'if ($q = $_GET["q"]) {  }'
PHP Notice:  Undefined index: q in Command line code on line 1
Wolfram
()

+ ко всему перечисленному использую set -o vi

IvanR ★★★
()

Скачивание архива с распаковкой:

watashinoshi@aokigahara:/tmp$ curl -Lk ftp://ftp.gnu.org/gnu/inetutils/inetutils-1.9.3.tar.xz | xz -d - | tar xv
Разрезание FLAC+CUE (MOC в него не может)
watashinoshi@aokigahara:/tmp$ cd /mnt/data/_Яп*/Another/*OP*
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ ls
Kyoumu\ Densen\ flac\ (romaji).cue*  Kyoumu\ Densen\ flac.cue*  Kyoumu\ Densen\ wav.cue*  Kyoumu\ Densen.flac*  Scans/  VIDEO_TS/  cover\ (png).png*  cover.jpg*  log.log*
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ cat "Kyoumu Densen flac.cue"
REM GENRE Gothic
REM DATE 2012
REM DISCID 3F056305
REM COMMENT "ExactAudioCopy v1.0b3"
CATALOG 4540774348930
PERFORMER "ALI PROJECT"
TITLE "凶夢伝染"
FILE "Kyoumu Densen.flac" WAVE
  TRACK 01 AUDIO
    TITLE "凶夢伝染 "
    PERFORMER "ALI PROJECT"
    ISRC JPI101102633
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "夜見のたそがれの、うつろなる蒼き瞳の。"
    PERFORMER "ALI PROJECT"
    ISRC JPI101102634
    INDEX 00 04:22:04
    INDEX 01 04:25:48
  TRACK 03 AUDIO
    TITLE "胎内ヒトガタ遊戯 "
    PERFORMER "ALI PROJECT"
    ISRC JPI101102635
    INDEX 00 09:22:66
    INDEX 01 09:27:35
  TRACK 04 AUDIO
    TITLE "凶夢伝染 (Strings Version) "
    PERFORMER "ALI PROJECT"
    ISRC JPI101102636
    INDEX 00 13:56:24
    INDEX 01 14:00:68
  TRACK 05 AUDIO
    TITLE "凶夢伝染 (Instrumental) "
    PERFORMER "ALI PROJECT"
    ISRC JPI101102637
    INDEX 00 18:32:46
    INDEX 01 18:37:15
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ flac -d --force-raw-format --endian little --sign signed "Kyoumu Densen.flac"

flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

Kyoumu Densen.flac: done         
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ ls
Kyoumu\ Densen\ flac\ (romaji).cue*  Kyoumu\ Densen\ flac.cue*  Kyoumu\ Densen\ wav.cue*  Kyoumu\ Densen.flac*  Kyoumu\ Densen.raw*  Scans/  VIDEO_TS/  cover\ (png).png*  cover.jpg*  log.log*
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
44100*2*2         
176400
Видим, что INDEX 00 --- это конец предыдущей песни, INDEX 01 --- начало текущей
4*60+22
262
Вычисляем длину первого трека в секундах
quit
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ dd if="Kyoumu Densen.raw" of=1.pcm ibs=176400 count=262
262+0 записей считано
90267+1 записей написано
 скопировано 46216800 байт (46 MB), 0,16129 c, 287 MB/c
Теперь осталось только сжать в [strike]MP3[/strike] Ogg Vorbis.
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ oggenc -r 1.pcm -q 5,5
Кодирование "1.pcm" в 
         "1.ogg" 
с качеством 5,50
	Кодирование [готово  0м06с] \ 

Кодирование файла "1.ogg" завершено

	Длина файла:  4м 22,0с
	Оставшееся время: 0м 06,1с
	Выборка:      42,8088
	Средний битрейт: 163,6 Кб/с
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
4*60+25
265
9*60+22
562
Вычисляем конец 1 ой песни и начало 2 ой
562-265
297
И разницу между ними
quit
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ dd if="Kyoumu Densen.raw" of=2.pcm ibs=176400 skip=265 count=297
297+0 записей считано
102325+1 записей написано
 скопировано 52390800 байт (52 MB), 0,185141 c, 283 MB/c
watashinoshi@aokigahara:/mnt/data/_ЯпонскаяМузыка/Another/Another OP Single - Kyoumu Densen$ oggenc -r -q 5,5 2.pcm
Кодирование "2.pcm" в 
         "2.ogg" 
с качеством 5,50
	Кодирование [готово  0м06с] / 

Кодирование файла "2.ogg" завершено

	Длина файла:  4м 57,0с
	Оставшееся время: 0м 06,7с
	Выборка:      44,6504
	Средний битрейт: 166,7 Кб/с
Дальше, думаю, понятно

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