10 прикладів використання командного рядка Gnu/Linux та инших
До командного рядка часто ставляться як до якоїсь таємничої «шаманської магії». Насправді ж це дуже практична річ, яка кожному може стати в пригоді, особливо коли треба виконати якусь однакову дію над великою кількістю файлів. Багато моїх близьких і друзів перейшли на 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 -
КОМАНДА -?- більшість команд розуміють «прапорець»
helpi?, і розповідають про себе
- більшість команд розуміють «прапорець»
-
man КОМАНДА- відкрити детальнішу довідку про команду
P.P.S. Команда convert є частиною пакунка imagemagick, команда flac є у пакунку flac. Якщо у вас немає якоїсь із цих команд, заінсталюйте ці пакунки через керівник програмами.