10 прикладів використання командного рядка Gnu/Linux та инших

  • 2013-10-26
  • (автор: yurb)

До командного рядка часто ставляться як до якоїсь таємничої «шаманської магії». Насправді ж це дуже практична річ, яка кожному може стати в пригоді, особливо коли треба виконати якусь однакову дію над великою кількістю файлів. Багато моїх близьких і друзів перейшли на Gnu/Linux, але не всі з них знають про можливості, «заховані» в командному рядку на цих системах.

(Підказка: команди запускаються у вікні терміналу, пошукайте «Термінал» або «Консоль» у переліку програм).

(Підказка 2: якщо ви на Windows, там команди відрізняються, але ви можете заінсталювати собі cygwin, щоб мати команди unix).

(Підказка 3: якщо ви на відносно новій версії MacOS X, ваш командний рядок працює на 99% так само, як у Gnu/Linux).

P.S. Який парадокс — діток у школах вчать про лоґаритми, теореми, інтеграли, вчать і про очевидні речі (як зробити грубий текст у Word’ах), але не показують, як можна переконвертувати 1000 знимок однією командою…

Зірочка = будь-що

  • *.jpg

    • усі jpg в теці
  • a*

    • усе на «а»
  • знимки/а*.jpg

    • усі jpg на «а» в теці «знимки»

Grep = шукати у файлах

  • grep Наталя листи/*

    • шукати слово «Наталя» у всіх файлах в теці «листи»
  • grep --recursive Наталя листи

    • шукати слово «Наталя» у всіх файлах в теці «листи» і в її під-теках

Записати результат до файлу

  • ls *.docx > msnomore.txt

    • дістати перелік усіх файлів docx у теці й зберегти його у файл «msnomore.txt»
  • ls *.doc *.psd >> msnomore.txt

    • дописати туди ще файли doc і psd

">" означає створити новий або спорожнити наявний файл перед записом.
">>" означає дописати в кінець наявного файлу.

Команда → команда → команда…

  • gpg -d зашифрований-файл.gpg | grep «Наталя» | sort
    • прочитати зашифрований файл, шукати рядки з «Наталя» й посортувати результат за абеткою.

Команди можна поєднувати між собою «трубами» (|), тоді результат одної команди безпосередньо передається наступній.

Вилучити повтори

  • cat addresses*.txt | sort -u
    • прочитати всі файли «addresses» як один великий, і витерти однакові рядки

Шукати що-завгодно

Зірочки (*) вибирають файли в конкретній теці. Коли треба знайти файли в усіх під-теках, або шукати їх за типом, датою, розміром, правами чи ще якимись ознаками, в командному рядку існує команда find.

  • find $HOME -type l

    • знайти всі ланки (links) в домашній теці (і під-теках).
  • find $HOME -iname '*звіт*' > звіти.txt

    • знайти всі файли зі словом «звіт» у назві й записати їхній перелік до файлу звіти.txt
  • find $HOME -iname '*.bak' -delete

    • витерти всі-всі файли з хвостом «.bak» з домашньої теки (i під-тек).

Запустити одну команду на великій кількості файлів

  • Схема: for ОДНЕ in БАГАТО; do КОМАНДА $ОДНЕ; done

    • машина автоматично запустить команду окремо для кожного файлу (який ви задаєте замість слова БАГАТО), і кожен раз замінить слово $ОДНЕ назвою файлу, який обробляється
  • for PICTURE in Знимки/*.jpg; do convert $PICTURE -resize 1024x -colorspace Gray gray-$PICTURE; done

    • для кожної знимки в теці «Знимки» створити зменшену чорно-білу копію
  • for SOUND in /media/ДИКТОФОН/*.wav; do flac $SOUND -o Записи/$SOUND.flac; done

    • скопіювати записи з диктофона, «по дорозі» перетворивши їх у flac (збереже 40-50% місця)

Команда в команді

  • mkdir $(date +%F)
    • створити теку, названу за сьогоднішньою датою

$(КОМАНДА) означає автоматично замінити команду на її результат
date видає дату, mkdir створює теку з такою назвою

Забагато тексту?

  • ls тека-де-багато-файлів/ | less
    • якщо результат команди не поміщається у вікно терміналу, можна передати його команді less для поступового перегортання

Хай команда розкаже про себе

  • КОМАНДА --help

  • КОМАНДА -?

    • більшість команд розуміють «прапорець» help i ?, і розповідають про себе
  • man КОМАНДА

    • відкрити детальнішу довідку про команду

P.P.S. Команда convert є частиною пакунка imagemagick, команда flac є у пакунку flac. Якщо у вас немає якоїсь із цих команд, заінсталюйте ці пакунки через керівник програмами.