k001
k001
:...
April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

век живи, век учись

Интересно, полагаю, только юниксоидам и шеллописателям, поэтому под кат.

У меня подобного тому, что написано ниже, в голове много, но, как показывает практика, много никогда не бывает. Вот сегодняшние находки (впрочем, третья старая, просто сегодня ещё раз столкнулся с).

(1) ls при выводе в пайп пишет по одному файлу на строчку (то есть как ls -1). Очевидным становится, если подумать, что ls интересуется размером терминала в ширину, чтобы понять, сколько файлов в одну строчку можно втиснуть. Если терминала нет, то и ширина нулевая, поэтому есть печатаем по одному.

Следствие: в конструкции вида ls -1 | что-то там опция -1 в принципе не нужна.

(2) grep с аргументом "что ищем" в виде многострочного выражения понимает его как "искать любую из этих строк". То есть выражения вида

grep 'one
two
three'

и

grep -E 'one|two|three'

идентичны (опция -E нужна, чтобы grep понимал |, то есть вертикальную палку, то есть "или").

Следствие: в скриптах можно не заморачиваться с сочинением строчки из параметров, разделённых палкой (и не забывать, что в конце палка не нужна, иначе поматчится всё), можно делать просто через новую строку (и неважно, есть там пустые строки или нет).

(3) опция -e для echo является непортабельной. Вот, например, как ведёт себя dash(дефолтный шелл в Debian и Ubuntu) и bash:
$ /bin/bash -c 'echo -e xxx\\nyyy'
xxx
yyy
$ /bin/dash -c 'echo -e xxx\\nyyy'
-e xxx
yyy


Теперь уберём -e и посмотрим ещё раз:
$ /bin/bash -c 'echo xxx\\nyyy'
xxx\nyyy
$ /bin/dash -c 'echo xxx\\nyyy'
xxx
yyy


Следствие: надо использовать printf или хотя бы писать #!/bin/bash в начале скрипта.

From:
( )Anonymous- this user has disabled anonymous posting.
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.