Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

 
Классическая учебная литература:
С одной стороны не упомянуть эти издания нельзя, с другой — они настолько устарели, что едва ли их можно рекомендовать в роли учебника.

 

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

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
AltTab



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sphinx114
ASE_DAG
mithridat1
Огромное спасибо! Вот никогда бы о таком исходе не подумал бы - точнее, знал же о разнице в переносе строки и специально сначала пытался сохранить в N++ с переносами UNIX. Затем, подозревая именно эту проблему, построчно копировал в vim строки из скрипта. Видимо, строка копируется с символом переноса, даже если перенос определяешь "энтером" вручную сам.
 
Огромное спасибо еще раз! И за полезную ветку обсуждений по такой теперь уже актуальной теме для меня. Буду штудировать.

----------
Все, я пошел...
Шалабудабуда...

Всего записей: 247 | Зарегистр. 07-06-2004 | Отправлено: 09:03 27-06-2013
yrkrus



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем спасибо, проблему передачи даты решил, двумя запросами, сначало передача "date" >> /var/log, а следом передача echo с текстом >> /var/log, скрипт после это корявый по написанию, но теперь хотябы время знаю если имеет место падение канала.

Всего записей: 379 | Зарегистр. 30-11-2010 | Отправлено: 09:32 27-06-2013
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос
RedGeek
POSIX стандарт не предусматривает хранение времени создания файла. Знакомимся.
И того команда у Вас будет выглядеть примерно так:
find /data -mindepth 1 -maxdepth 2 -type f -printf '%f, %h, %s, %Tm.%Td.%TY %TT\n' > /tmp/result
 
Добавлено:
Выведет все файлы текущего катлога и его ближайших "потомков". Формат csv с разделителем запятая. Размер файла в байтах, время указано последнего изменения файла в формате "ДД.ММ.ГГГГ ЧЧ:ММ:СС.сс"

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 20:59 01-07-2013
RedGeek



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сообщением выше Alukardd ответил на вопрос:
-----------------------------------------------------
Добрый день!
 
Никак не получается написать команду, которая будет сохранять файлы из определенных директорий в csv файлы (имя файла, путь, размер, дата создания файла).
 
Название директорий 1 уровня должно состоять из 4-х цифр:
Код:
find . -maxdepth 1 -type d -name '[0-9][0-9][0-9][0-9]'

 
Директории выводятся правильно, но мне-то нужно рекурсивно обойти все файлы и поддиректории таких директорий 1 уровня и вывести в csv файл данные: имя файла, путь, размер, дата создания файла.
 
P.S. Если есть способ быстрее (например, locate), чем find - он был бы предпочтительнее, т.к. будет обрабатываться большое количество файлов и папок.
-----------------------------------------------------

Всего записей: 157 | Зарегистр. 11-12-2006 | Отправлено: 15:11 02-07-2013 | Исправлено: RedGeek, 16:42 02-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RedGeek
Думаю, вы совершенно правы — лучше привести вопрос даже после ответа, чем не привести вовсе (ссылки все-таки недостаточно); но отмечайте что-ли как-нибудь то, что этот вопрос к уже данному выше ответу, а то странно выглядит же. ;-)

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:38 02-07-2013 | Исправлено: ASE_DAG, 15:42 02-07-2013
RedGeek



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASE_DAG действительно, поправил.
 
Alukardd Спасибо, это то, что нужно! А как передать регулярное выражение '[0-9][0-9][0-9][0-9]', т.е. чтобы команда выводила файлы, у которых корневая (папка 1 уровня, подпапок может быть много) состоит из 4-х цифр?

Всего записей: 157 | Зарегистр. 11-12-2006 | Отправлено: 16:40 02-07-2013 | Исправлено: RedGeek, 16:42 02-07-2013
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RedGeek
как-то так:
-path "/data/[0-9][0-9][0-9][0-9]\|/data"
не проверял!

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 20:28 02-07-2013 | Исправлено: Alukardd, 20:29 02-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
А между тем, совершенно напрасно не проверяли. Аргументом к -path (он же -wholename) является не регэксп, а глоб. Со всеми вытекающими.
 
$ find
.
./6532
./6532/dd4e
./6532/dd4e/file
./6532/file
./43a6
 
$ find -path './[0-9][0-9][0-9][0-9]*' -type f
./6532/dd4e/file
./6532/file


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 04:03 03-07-2013
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
я собственно и добавил \|/data, потому что pattern без него теряет файлы в текущем каталоге... Видимо придётся запускать 2 отдельных find...

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 10:12 03-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
 
> pattern без него теряет файлы в текущем каталоге
Во-первых, тов. Ред-Гик, вроде-бы, ничего не говорил про то, что ему потребны файлы в текущей директории. А во-вторых, регэксп /data/[0-9][0-9][0-9][0-9]\|/data находит файлы во всех каталогах. Нет, ну правда, посмотрите, он же избыточен и сокращается до /data. :-)
 
> 2 отдельных find
Хм. Ну если отвлечься от того, что использовать регэкспы вам никто не мешает (-regex), то, да, задача вывести файндом все файлы в текущей директории плюс рекурсивно все файлы в директориях ./[0-9][0-9][0-9][0-9] становится нетривиальной.
 
Третьим лицам
 
Нет, тов. Алукард прав, -maxdepth 1 применить нельзя, он непозиционный.
 
$ find \( -maxdepth 1 -o -path './[0-9][0-9][0-9][0-9]*' \) -type f
find: warning: you have specified the -maxdepth option after a non-option argument (, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 12:40 03-07-2013 | Исправлено: ASE_DAG, 14:06 03-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обнаружил, что ссылки на http://www.funtoo.org в шапке «побились». Исправил.

#: шапка версии ASE_DAG, 19:23 08-10-2012


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 14:43 03-07-2013
Aroun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, помогите с регуляркой под поиск e-mail
 
grep -Eo '(\w+\.)*\w+@(\w+\.)+[A-Za-z]+' mail.log
 
Не выводит адреса с дефисом, например адрес mana-1@ya.ru он спарсит так:
 
1@ya.ru
 
 
Добавлено:
Сам же и отвечаю:
 
grep -Eo '[0-9A-Za-z.-]+@(\w+\.)+[A-Za-z]+' mail.log

Всего записей: 680 | Зарегистр. 19-07-2005 | Отправлено: 16:58 06-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aroun
Замечу, что вы напрасно считаете, что имя пользователя не может содержать (как минимум) знаков + и _. Причем +, если вы не в курсе, для большинства почтовых серверов имеет особый смысл — им отделяют своего рода «комментарий» — часть, которая не влияет на адрес доставки. Т. е. ivanov+foo@example.org, ivanov+bar@example.org — это один и тот же ivanov@example.org.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:28 06-07-2013 | Исправлено: ASE_DAG, 17:32 06-07-2013
Aroun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет, все равно не получилось ((
 
Файл:
 
12_mail@mail.ru
manya_20@mail.ru
mana-1@ya.ru
123@mail.ru
123_123@mail.ru
123-123@mail.ru
123.123@mail.ru
 
Скрипт:
 
grep -Eo '\<+[a-zA-Z0-9\-\_\.\+]+@+\S+\>' mail.log
 
Результат:
 
12_mail@mail.ru
manya_20@mail.ru
1@ya.ru
123@mail.ru
123_123@mail.ru
123@mail.ru
123.123@mail.ru
 
 
т.е. не обрабатывает тире почему-то...Хотя она вроде заэкранировано.
 
Добавлено:
ASE_DAG
 
ну точка то есть, подчеркание добавил, плюс тоже добавлю.
 
Подскажите плз про тире

Всего записей: 680 | Зарегистр. 19-07-2005 | Отправлено: 17:41 06-07-2013 | Исправлено: Aroun, 17:48 06-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aroun
> grep -Eo '\<+[a-zA-Z0-9\-\_\.]+@+\S+\>' mail.log
> Хотя она вроде заэкранировано.
Во-первых, это не тире, это дефис. А во-вторых, где вы видели такой способ «экранирования» внутри []?
 
> @+
Нет, собака может быть только одна.
 
$ grep -Eo '[[:alnum:]._+-]+@[[:alnum:].-]+' <<< 'j.doe-89+for_spam@exampli-gratia.co.qq'
j.doe-89+for_spam@exampli-gratia.co.qq


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:55 06-07-2013 | Исправлено: ASE_DAG, 17:58 06-07-2013
Aroun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снимаю шляпу)
 
С регулярками до сегодняшнего дня не работал.

Всего записей: 680 | Зарегистр. 19-07-2005 | Отправлено: 18:09 06-07-2013
ConnorMegatroll

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток, $USERNAME !
 
Собственно, суть проблемы:  
необходимо скачать первые N изображений по запросу в гугле.  
Разумеется, используя только терминал LINUX.
 
Подкиньте пару идей, пожалуйста.
 
Заранее спасибо за помощь.

Всего записей: 3 | Зарегистр. 07-07-2013 | Отправлено: 18:31 07-07-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, ConnorMegatroll
sed + wget + bash устроят? Только у меня ключ "-T" не отрабатывает... Кодировка - не знаю нужна или нет.

Код:
 
#!/bin/sh
Count="21"
Search="Tattoo"
Encoding="UTF-8"
{
    wget -U Opera -t 3 -T 10 "http://www.google.com.ua/search?tbm=isch&source=hp&q=$Search" --local-encoding=$Encoding -O -
    for ((i=20;i<=$Count;i+=20))  
    {
        wget -U Opera -t 3 -T 10 "http://www.google.com.ua/search?tbm=isch&source=hp&q=$Search&start=$i" --local-encoding=$Encoding -O -
    }
} | sed -e "s/<a href/\n\0/g" | sed -n -e "s/.*imgres?imgurl=\([^&]*\)&.*/\1/p" | for ((i=1; i<=$Count;i++))
{
    read URL
    wget "$URL" -O "$Search$i.jpg"
}
 

Всего записей: 1906 | Зарегистр. 07-08-2002 | Отправлено: 20:08 07-07-2013 | Исправлено: Alex_Piggy, 20:10 07-07-2013
fhurpe

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del

Всего записей: 1 | Зарегистр. 09-05-2013 | Отправлено: 14:53 09-07-2013 | Исправлено: fhurpe, 12:37 14-07-2013
sunsunsun

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Есть строки вида:
 
<a class="song" href="/artist/aaa/song_bbb"><b>XXX YYY</b> ZZZ TTT</a>&nbsp;
 
необходимо получить строку вида XXX YYY - ZZZ TTT.
 
Как это сделать sed/awk/... ?
в cygwin, если это важно.

Всего записей: 105 | Зарегистр. 23-03-2006 | Отправлено: 13:10 16-07-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru