О пользе консоли

    Ситуация. Есть папка с фотографиями, которые нужно показать на сайте кликабельными thumb'ами.
    Делаем раз: for f in *.jpg ; do convert -quality 90 -resize 80 "$f" "${f%.jpg}-thumb.jpg" ; done
    Делаем два: for f in *-thumb.jpg ; do echo "<a href=\"./photos/${f%-thumb.jpg}.jpg\"><img src=\"./photos/$f\" alt=\"фото\" width=\"80\" height=\"53\"></a>" ; done
    Вот, собственно, и всё. Остаётся только скопировать получившиеся строки и вставить на нужную страницу. Набрать эти две команды — пара минут с учётом того, что я не очень хорошо помню синтаксис bash'а (там substitution нужно знать) и convert'а.

    Мне страшно подумать, сколько бы это заняло времени, если делать руками. Фотографий 32; На каждую ушла бы, наверное, минута. То есть это полчаса непрерывной работы.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 97

      –6
      это если тебе в будущем понадобится это делать. а если нет - то проще ручками, потому что на написание скрипта у тебя наверняка не меньше времени ушло
        0
        недавно делал подобную операцию, правда я не только ресайзил, но из тифа в джепег перегонял около 180 изображений. Написание и отладка - 5 минут, да и есть в сети готовые, а дальше машина уже сама все делает =)
          +1
          Вверху было написано - две минуты. Я думаю это как раз время, которое потребовалось для подбора команд. Я обычно вставляю в начало действующей команды (в данном случае convert) echo и смотрю что получается. 3-4 "подхода" (в смысле - неправильно сформированных команды) и последний вариант идёт в дело. Редко когда больше минуты это занимает - обычно несколько секунд...
            0
            Угу. Никакого скрипта не было, только две команды — напечатать их пара минут (с учётом поглядывания в документацию — если наизусть, хватит и минуты).
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                В смысле? Вытащить из каждой картинки время и дату её создания и добавить в HTML на выходе? Или добавить к имени каждой картинки (файла)?
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    date +'%Y-%m-%d-%H:%M'
            +8
            не согласен, "лучше день потерять зато потом за пять минут долететь" (с) )))
              0
              Да ну, какой день, в скрипте в самом деле ничего сложного, пишется за 10 минут а то и меньше, естественно при знании баша, хотя бы минимальном.
              0
              постепенно начинаешь использовать такие штуки и для музыки, и для видео, и для фоток и для всего остального. Потом открываешь для себя csh... и понеслась.. =)
                0
                csh — зло.
                +2
                Обычно лучше посидеть подумать десять минут и сделать работу за минуту, чем херячить час.
                0
                Я хоть и сам линуксоид, но не стал бы так трагедизировать вышеописанную задачу. Почти любой современный просмотрщик картинок умеет делть HTML-лист с их миниатюрками. И это занимает меньше минуты.

                Другой вопрос, что консоль всеравно рулит, птолько в этом примере плохо видно.
                  0
                  эм. например? какой просмотрщик? (мы говорим о *nix-based)
                    +2
                    а... в никсах не знаю :) еще не приходилась сталкиваться.

                    Ну можно например XnView поставить. Он умеет. Есть версии и под Линукс
                    и под Виндовс.

                    А вообще, в данном случае, я бы тоже сделал как вы :)

                    Тут нужно подчеркнуть, что обычно в дистре любого Линукса уже есть все
                    что нужно, а в случае винды аналогичные программы еще нужно найти,
                    скачать и поставить. Некоторые возможно даже решат что их нужно купить
                    :)
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        мы в блоге о linux и говорим о linux. причём тут windows-просмотрщик?!
                        • НЛО прилетело и опубликовало эту надпись здесь
                            –1
                            И поэтому вместо того чтоб выгонять линуксоидов вы решили к ним лезть начать?
                              +1
                              Лучшая защита - это нападение :)
                          0
                          Gwenview помнится умеет, думаю вы очень недооцениваете линукс
                          0
                          f-spot
                            0
                            это не менеджер картинок.
                              0
                              gthumb

                              или тебе нужно, чтобы какой-нибудь qiv или eog умел галереи делать?
                            0
                            gThumb умеет
                              0
                              digiKam, Gwenview
                                0
                                P.S.: они сразу генерят HTML-файл, и найти этот пункт в меню даже быстрее, чем написать те команды в баше, но лично я не доверяю генераторам HTML-кода (почему-то в большинстве случаев код получается невообразимо грязный и требующий дальнейшей обработки), и предпочитаю описанный в статье способ.
                                0
                                digiCam например
                                  0
                                  ShowImage
                                    0
                                    Gwenview, for example
                                  0
                                  А еще проще использовать скрипты для наутилуса, вот, например. Но bash однозначно рулит.
                                    –1
                                    Вещь полезная и нужная, одобряю :) Но во-первых, при нынешнем развитии линукса консолью пользоваться уже как-то некузяво, так как есть GUI-средства вроде Picasa например или xnview - где это можно сделать за такое же время и при этом чувствовать себя белым человеком, а не красноглазым фанатиком (субъективно, сам такой =). А во-вторых, года два назад для своей фотогалереи написал особый PHP-скрипт, который делает это прямо на сервере (можно и у себя конечно) в реалтайме. Хотя конечно по целям и средства.
                                      +3
                                      Понимаете, я уже не один год работаю в bash'е и мне проще набрать пару команд, чем выбирать просмотрщик и копаться в его бесконечных менюшках. Кому-то будет проще с просмотрщиком — мне нет. Мощь консоли, думается мне, именно в том, что почти не нужно изучать что-то новое, если ты уже умеешь в ней работать. Синтаксис разных программ очень схож и, если что, можно быстренько глянуть мануал. Найти, как сделать всё то же через просмотрщик точно займёт у меня больше времени.
                                        +1
                                        Ладно ладно, сам любитель дёргать звук из клипов ffmpeg'ом или грабить диски lame'ом ;)
                                          0
                                          Угу. ffmpeg, кстати, очень удобен в использовании. Сегодня как раз нужно было извлечь звук из фильма для озвучки его на русском (фильм, озвучка). Элементарно: ffmpeg -i PSA-Web-1280.ogg -acodec copy audio.ogg
                                          При этом способе даже перекодировки никакой не происходит — просто копия аудио-потока.
                                      –3
                                      Хех, вы уж простите, что влезаю со своим фотошопом, но там все гораздо проще и программирования знать не надо. Минуту настраиваем batch, куда можно запихнуть пару шарпен филтьров (для уменьшеных картинок это актуально), дальше все зависит от кол-ва картинок и мощности машины.
                                        0
                                        Угу. Вот только Photoshop CS3 10.0 Full Ru — 1 016,00 у.е.
                                        Also, смотрите мой комментарий выше.
                                          0
                                          Не, ну полностью согласен, ваш пример 100% гиковский. Я хоть сам и гик немного, но для меня это все выглядит каким-то анахронизмом...
                                            +2
                                            Вот видите, как хорошо, что каждый сейчас может выбрать себе подходящий путь в использовании компьютера? :)
                                              0
                                              Чем бы там он не казался - это мощнейший инструмент. Интересно почему столь любимая всеми MS именно сейчас выпускает свой шелл?? Они регрессируют в сторону анахранизмов и ненужных гик примочек? :)
                                                0
                                                Какой он гиковский, так, рутина...
                                                  0
                                                  Угу. Гиковский — это решить задачу брутфорсом на Перле, например. Я так в школе как-то сделал.

                                                  10. Аладдин хотел вызвать джина, но забыл, сколько раз нужно хлопнуть в ладоши. Зашедший в гости Хоттабыч сказал: — Если число хлопков возвести в квадрат и умножить на -7, а потом прибавить четвёртую степень числа хлопков, то получится число 18. Сколько раз должен хлопнуть в ладоши Аладдин, чтобы вызвать джина?

                                                  Элементарно. Число хлопков вряд ли уж больше 20 и вряд ли меньше 1, так что: perl -e 'foreach (1..20) { if ( $_ ** 2 * -7 + $_ ** 4 == 18) {print "$_\n"; exit} }'

                                                  Я тогда так в тетрадку и написал с ответом «3». Хотя… Хоттабыч ведь был далёк от точных наук? Если я хоть что-то понимаю в истории.
                                              0
                                              На настройку пресловутого batch'а уйдёт столько же времени. Плюс время на запуск этого монстра (не знаю как у вас, а у меня PhotoShop только запускается секунд 30 если я давно его не дёргал). ImageMagick проще и быстрее.
                                                0
                                                Зато в батче можно прилепить лого или другой водяной знак :) Шучу...
                                                  0
                                                  ImageMagick'ом тоже можно :)
                                              0
                                              Ну, радоваться надо, что можно делать и так и так. Я вот радуюсь. Надо сделать действие один раз — выберем меню. Надо регулярно пользовать — выберем скрипт.
                                                0
                                                А что это за параметр weight в теге ? Не следует ли там width использовать?
                                                  0
                                                  тег img, я имел ввиду
                                                    0
                                                    Да, Вы полностью правы. Я очень хотел спать уже (только сейчас проснулся) и допустил ошибку. А валидатор не запустил — потому что хотел уже сдать проект и проверить валидатором завтра, ибо исправить будет не поздно. В общем, так или иначе, спасибо большое. :)
                                                  +1
                                                  привержанцам делать все ручками предлагаю осуществить такое
                                                  find . -type f -exec chmod 660 {} \;;
                                                  объясняю данная строчка ищет в текущей директории файлы и меняет их права на 600 (rw-rw-rw)
                                                  на написание данного скрипта, при условии использования гугла уйдет не больше 5мин, а попробуйте изменить все вручную если если в текущей директории присутствует более ста вложенных поддерикторий и около 20000 файликов
                                                    0
                                                    Файловый менеджер в GNOME умеет рекурсивно вглубь менять права.
                                                    PS: хотя я тоже сделаю это в консоли, потому как она всегда под руками, в отличие от...
                                                      0
                                                      да но он не сможет поставить тебе на файлы одно, на папки другое. Или сможет?
                                                        0
                                                        Сможет. У него отдельные настройки для файлов и для каталогов.
                                                        0
                                                        chmod вроде тож рекурсивно может к папке применяться (-r)
                                                          0
                                                          Но без определённой эзотерики с find невозможно отличать права для каталогов и права для файлов. В этом суть.
                                                            0
                                                            не могу себе представить, зачем это может быть нужно.
                                                            единственный вариант: 6 запрещает eXecute. если так, спасает symbolic mode. =)
                                                            типа chmod -R ug+rw ./
                                                              0
                                                              есть еще вариант chmod -R ug+rwX ./
                                                              тогда он еще и execute папкам выставляет, но только папкам.
                                                        0
                                                        > find . -type f -exec chmod 660 {} \;;
                                                        > объясняю данная строчка ищет в текущей директории файлы и меняет их
                                                        > права на 600 (rw-rw-rw)

                                                        вначале вы пишите 660, потом уже 600.
                                                        и вообще, 600 — это rw-------, а 660 — это rw-rw----.
                                                          0
                                                          Моё любимое значение — 666. Всем всё, но только не исполнение.
                                                            +2
                                                            Права надо выставлять такие какие нужны, а не какие любимые :)
                                                          +2
                                                          Ты уж сразу предлагай через sudo и на /bin применять... Или на что нибуть более важное. :)
                                                            0
                                                            660, это права rw-rw----, а 600 - это rw-------.
                                                              0
                                                              всю жизнь делал так:
                                                              find -type f -print0 | xargs -0 chmod u=rw,go= -c

                                                              :-D Для таких штук и гугл не нужен. Нужен man.
                                                                +1
                                                                chmod -R a=rw .
                                                                man chmod как гритса
                                                                  0
                                                                  понял, что не прав
                                                                0
                                                                Консоль нужна в первую очередь не для типовых задач, для которых имеются более удобные GUI средства (которые уже, кстати, выше в комментариях были упомянуты), а для задач, которые не являются типовыми, и, соответственно, найти утилиту под такую задачу не получится, а писать никто не станет, т.к. задача одно-двух разовая. Консоль рулит также для написания заданий, исполняемых по крону.

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

                                                                Так что, ИМХО, пример из статьи в этом плане не совсем удачный. Разве что как демонстрация возможностей консоли.
                                                                  0
                                                                  Каждый хочет как он хочет...:)
                                                                  Но мне понравилось :)
                                                                    0
                                                                    Слушай, а эти заклинания:



                                                                    for f in *.jpg ; do convert -quality 90 -resize 80 "$f" "${f%.jpg}-thumb.jpg" ; done



                                                                    не заманят проклятых джипегов с именами ...-thumb-thumb-thumb.jpg, которые сожрут нафик диск на твоем сервере?
                                                                      0
                                                                      Нет. Маски разворачиваются до выполнения.
                                                                        0
                                                                        Это, кстати, не сервер. Это мой desktop. :))
                                                                        И да, как ответили выше, не сожрут.
                                                                        –1
                                                                        Я, конечно, дико извиняюсь, но любая нормальная смотрелка картинок это умеет и так. В моём IrfanView по крыжику "batch conversion" это делается в несколько кликов.

                                                                        Примером того, что консоль рулит, этот скрипт будет только при дополнительных условиях: "картинок много и они на удалённом сервере" либо "это надо делать регулярно".
                                                                          +1
                                                                          А со скриптом это делается в 1но нажатие + не всегда есть жлание капаться в менюшках в поисках чего-то, ведь уже знаешь хорошо инструмент которым это можно проделать быстро
                                                                          0
                                                                          weight=\"80\" height=\"53\"

                                                                          хе-хе
                                                                          а, типа, если фотографии разных размеров? :)
                                                                          тобишь, что weight=\"80\" - это понятно
                                                                          а вот height=\"53\" откуда? =)
                                                                            0
                                                                            все котографии вертикально ориентированы, с единым соотношением длин сторон
                                                                            или
                                                                            превьюшки получатся непропорциональными, что им простительно, зато одинаковыми! :)
                                                                              0
                                                                              Первое — они одинакового разрешения. Я, кстати, как отметили выше, ошибся (спать очень уже хотелось). Надо width, а не weight.
                                                                            +2
                                                                            Консоль действительно рулит не по-детски, с этим спорить бессмысленно. Но пример, на мой взгляд, выбран не самый удачный. Действительно, такие вещи, как создание миниатюр, обычно делаются с помощью тулзов работы с картинками, раз уж вы всё равно их используете для просмотра фоток.
                                                                            Хотя если вы просматриваете фотки командой cat, то... тогда вы настоящий гик. :-)
                                                                              +2
                                                                              как по мне консоль - просто очень удобная вещь...
                                                                                0
                                                                                консоль, консоль... суть-то в bash/sh/csh/zsh... т.е. в том что под рукой есть скриптовый язык. Я вот например т.к. весьма неплохо чувствую себя в питоне - даже иногда в интерактивном шелле питона скрипты ваяю. Последний раз надо было:


                                                                                а) скопировать 125 фотографий огромного размера
                                                                                б) сделать 6 архивов по 20 в каждом (в последнем - 25)

                                                                                Причём общее время копирования фоток было около 2 часов, а архивы нужно было делать сразу как только набирается новая "пачка" из 20 фотографий, т.к. это все сразу копировалось в вебрут и использовалось сторонними людьми. Им нельзя было ждать 2 часа, нужно было чтобы скачав 1 архив, они сразу бы видели следующий.

                                                                                На питоне заняло ~7-8минут. Можно было канешна сделать и руками, периодически поглядывая сколько фоток переписалось и каждые 20 засовывать в архив. Но мне жутко хотелось спать и следить за всем процессом не хотелось вовсе =). В итоге вместо 2 часов - 8 минут. При этом я не писал скрипт питона - просто интерактивный шелл.. =)
                                                                                  +1
                                                                                  Ресайз — это несерьёзно :-)
                                                                                  ls [0-9]*.png|xargs -I_ -n1 convert map.png _ -fuzz 1% -deconstruct -delete 0 +repage +dither -colors 32 -depth 8 _
                                                                                  Заменяет картинки с начинающимися с цифры именами их областями, отличающимися от map.png.
                                                                                  Впрочем, я не утверждаю, что в Фотошопе это нельзя автоматизировать. Но мне проще так... Да и нет у меня Фотошопа.
                                                                                    0
                                                                                    Я смотрю на эту дискусию и впоминается цитата с изначального баша:

                                                                                    a sprite is anything not static
                                                                                    a sprite is a variable object
                                                                                    be it 2d or 3d
                                                                                    a sprite is a fucking soda
                                                                                    you god damn geekass bastards

                                                                                    Главное, что круто, это то, что можно по разному решить одну задачу. TIMTOWTDI, none the less.

                                                                                    Некруто, это идеализирование и навязывание какого-то способа решения задачи, чем чаще всего грешат линуксойды или ГНЮ-гики (взять того же Столлмана, хотя бы).

                                                                                    А так или иначе, спасибо автору за рецепт.
                                                                                      0
                                                                                      Блин, порезало цитату. Вот она ещё раз:

                                                                                      Sigurd: a sprite is anything not static
                                                                                      SRElysian: a sprite is a variable object
                                                                                      SRElysian: be it 2d or 3d
                                                                                      TorMuck: a sprite is a fucking soda
                                                                                      TorMuck: you god damn geekass bastards
                                                                                      –1
                                                                                      Существует миллион способов это автоматизировать без всякого bash, и даже без консоли вообще.
                                                                                        +1
                                                                                        красиво
                                                                                          +1
                                                                                          Я в Виндах bat пользую, тоже неплохо
                                                                                          Помню даже как то в деревне игру написал на нем.. Что то типа кто хочет стать миллионером, правда там choice.exe нужен был еще
                                                                                            0
                                                                                            imagemagick рулит конечно :) сам пользовался для конвертации фотографий в формат, подходящий для плеера iRiver S10

                                                                                            я бы поставил quality в 95 и добавил бы кроп. иногда превьюшка лучше смотрится после ресайза+кропа, чем просто сжатая
                                                                                              +2
                                                                                              может кому пригодится - вот тут код - http://out.com.ua/blog/2007/06/17/useful-stuff/
                                                                                                0
                                                                                                И насыщенности цветам надо немного прибавлять.
                                                                                                0
                                                                                                имхо, дело не в cli, а в том, что есть такой софт, который умеет пакетно обрабатывать изображения. если к нему приделать гую с названием типа small image converter, было бы еще удобнее.
                                                                                                  0
                                                                                                  Часто пользуюсь консолью в Win, но она там какая-то игрушечная.
                                                                                                  Также, например, можно перекодировать множество файлов из одной кодировки в другую. Чтобы это сделать в Windows, нужно очень долго мучится.
                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      0
                                                                                                      Пост - отличная иллюстрация к бояну: "настоящий сисадмин всегда за 1 час напишет скрипт, который за 1 минуту решит задачу, на которую у обычного юзера ушло бы 5 минут" :)))

                                                                                                      Но самое главное - приписка: "...при том, что задачу нужно решить лишь 1 раз."
                                                                                                        0
                                                                                                        Не говорите глупости. В самой заметке и ниже в комментариях было объяснено, почему мой вариант в данном случае занял гораздо меньше времени, чем другие.
                                                                                                        0
                                                                                                        Для изменения множества картинок сразу лучше вместо for ... convert юзать mogrify.
                                                                                                          0
                                                                                                          А как этот скрипт сделать Nautilus скриптом, чтобы правой кнопкой делайть ресайз выбранным фотографиям?
                                                                                                          Может кто-нибудь помочь?
                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь

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

                                                                                                            Самое читаемое