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