Blog — by Andrii Dykhlin

Базовий cookbook юного лінуксоїда

Вітаю. Цей пост створено для тих, хто тільки починає свій шлях теренами такої чудової операційної системи, як GNU/Linux.

У цьому пості ми розглянемо кілька базових та цікавих команд, які не будуть зайвими ні для кого. Розглянуті команди точно працюють в ОС на пазі Debian (Debian, Ubuntu (Kubuntu, Lubuntu, Xubuntu тощо), Linux Mint та інших). Не виключно, що всі ці команди будуть актуальними і для Fedora, OpenSuse і т.п.

У мене ж стоїть Kubuntu, з графічним середовищем KDE. Про них ми говоримо пізніше. Для зручності раджу використовувати на цьому середовищі спадний термінал Yakuake, який можна ховати та показувати одним натиском на клавішу.

Також одразу зазначу різницю. Якщо перед командою стоїть знак '$', то це означає, що команда виконується звичайним користувачем. Якщо стоїть знак "#", то цю команду запущено від імені суперкористувача, проте особисто я не раджу вмикати цей режим. Чому? Читайте далі та все дізнаєтесь самі.

Hint: якщо натиснути клавішу TAB, то можна або завершити команду автоматично, або подивитися пропозиції того, як команду можна завершити.

Знайомство

Код:

$ cd

Отже, перша та базова команда в терміналі - cd (change directory). Її використовувати дуже просто:

Код:

$ cd %directory%

Базово використовувати цю команду можна так: написати cd, поставити пробіл та ввести назву директорії, яку ви хочете відкрити.

Код:

$ cd ..

Ця команда служить для того, щоб повернутися в директорію, вищу за рівнем. Якщо хочете повернутися на 2 рівні вище, то слід набрати, відповідно, "cd ../..". Якщо ви наберете просто "cd" в будь-якому місці, то це має повернути вас в домашній каталог (/home/%user%), де %user% - ім’я вашого користувача.

Код:

$ ls

Якщо казати про cd, не можна не згадати і її сестру ls (list directory). Ввівши цю команду, ви отримаєте список неприхованих директорій та файлів поточної директорії. Тобто, якщо ви ввели її у /home/%username%, то вона покаже усі теки та файли цієї директорії. Лише на одному рівні. Але цю команду можна зробити більш потужною.

Код:

$ ls -[aA]

Перша опція, яка може знадобитися новачку, показує й приховані теки та файли. UNIX побудований так, що приховані файли та каталоги містять перед собою крапку. Саме тому, напевно, Microsoft назвало свою технологію .Net.

Параметр -a показує все, у тому числі й шлях "у верхню директорію", -A ж ховає ці крапки. Що використовувати вам - ваше особисте рішення. Мені зручніше -a, проте різниці між ними майже нема.

Код:

$ ls -С

Цей параметр створений для тих директорій, які містять багато файлів. Якщо ви ввели його, то можна відобразити вміст теки у зручних колонках.

Hint: у більшості команд параметри можна об’єднувати. Так, наприклад, можна написати ls -AC і побачити й колонки, й приховані файли.

Код:

$ ls %directory%

Так само, як і з cd, з командою ls можна написати будь-яку директорію у системі. Це створено для зручності, щоб не треба було відкривати каталог, вміст якого потрібно побачити.

Також ls може сортувати файли за розміром, власником, датою модифікації, проте це ми розберемо пізніше.

Код:

$ cp 

Команда для копіювання файлів. Колись вона може стати у нагоді. Тільки зазначу, що для копіювання файлів в кореневі каталоги потрібен спеціальний доступ. Базово, у домашній директорії, такого доступу не потрібно.

Код:

$ cp %file1% %file2%

Базова форма копіювання. Розберемо на прикладах:

Код:

$ cp readme.txt manual.txt

У цьому прикладі система бере файл readme.txt та створює його копію у тій же теці, де лежить вихідний файл. Кожен файл також можна записати у абсолютному вигляді, наприклад

Код:

$ cp /home/%username%/readme.txt Docs/manual.txt

У цьому випадку ми вказуємо абсолютний шлях до файлу для вихідного файлу і шлях всередині домашнього каталогу до вхідного файлу, який хочемо отримати.

Note: варто пам’ятати, що UNIX-подібні системи мають регістрозалежні, тобто File.txt та file.txt - це різні файли для системи. Так само і з теками. Проте раджу не тримати в одному місці подібні файли.

Код:

$ mv 

Ця команда майже ідентична до cp, проте вона переміщає файли. Синтаксис - такий само. Проте вона також створена для перейменування файлів. Досить зручно ввести:

Код:

$ mv file1.txt file2.txt

Тоді file1.txt буде перейменовано в file2.txt, хоча по суті це переміщення в середині директорії.

Код:

$ rm

Рано чи пізно, але вам доведеться щось видаляти. Ви могли чути про таку епічну команду, як

Код:

# rm -rf /

Відмічу, що ця команда запущена з правами суперкористувача. Так ось. Цю команду не раджу використовувати у жодному разі, особливо під root (root-права - права суперкористувача), бо вона видалить усе, що побачить. А побачить вона усе.

Код:

$ rm %file%

Базово ця команда видалить файл, який вказано після rm. Якщо вказана "*", то видалить усі файли в поточній директорії, використовуйте обачно!

Код:

$ rm -r %directory%

Для видалення директорії можна використовувати цю команду. Параметр "-r" вкахує на рекурсивне проходження, без нього команда не запрацює на теках.

Проте для тек є окрема команда:

Код:

$ rmdir %directory%

Для неї параметр -r не потрібен.

Якщо ми заговорили про rmdir, то варто згадати й її альтернативу:

Код:

$ mkdir %directory%

Ця команда створює каталог з вказаною назвою.

Код:

$ clear

clear - програма для очищення вікна терміналу. Якщо там багато зайвих написів, які заважають, можна сміливо писати clear. Але краще - натиснути Ctrl+L.

Код:

$ cat %file%

Остання команда цього блоку - cat, таке собі коте. Вона виводить вміст файла %file% у консоль.

Навчи себе сам

Бувають моменти, коли інтернету під рукою нема, а конче треба дізнатися властивості чи параметри тієї чи іншої команди. Для цього у світі юніксів створені мануали - проста та доступна річ.

Код:

$ man %command%

Достатньо просто ввести man та назву команди і ви отримаєте повний інструктаж про неї. Усі доступні параметри, деякі приклади тощо.

Hint: також можна написати команду та поставити пілся неї параметр -h або --help. Для багатьох із них так можна подивитися коротку довідку по всіх доступних параметрах.

Код:

$ apropos %key%

Якщо ви не знаєте яку команду слід вживати, вам на допомогу прийде apropos. Достатньо ввести її та який-небудь ключ пошуку, і вона видасть вам усі варіанти, де цей ключ зустрічається. Як у назві команди, так й у короткому описі.

Код:

$ whatis %command%

Коротка версія man та apropos. Діє лише з командами. Ввести команду - і вам видасть її та короткий опис.

Процеси

Процес - це дуже важлива річ у житті. Без процесу нема прогресу. В ОС також існують процеси. Не будемо заглиблюватись у курс системного програмування та багато казати про природу процесів.

Головна команда для того, щоб показати поточні процеси:

Код:

$ top

Вона відкриє красиве та інформативне вікно. Проте у такому разі будуть також й системні процеси. Якщо хочему переглянути лише користувацькі, то можна записати так:

Код:

$ top -u %username%

Другий варіант моніторингу процесів - ps.

Нам буде корисно вживати його у вигляді;

Код:

$ ps aux

Ця команда допоможе записати в консоль усі процеси. Різниця з top у тому, що вона виводить один раз, а top оновлюється постійно.

Код:

$ ps aux | grep %process%

Таким чином ми зможемо отримати ідентифікатор процесу (PID).

Код:

$ kill -9 %process%

Надіслати сигнал процесу на завершення. З назви видно, що його буде "вбито". У цьому випадку краще вживати PID, який можна побачити з таблички top та через ps aux.

Код:

$ killall -9 %process%

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

Час та дата

Тут доволі просто. Я не буду зациклювати увагу на цих командах. Якщо вам будуть цікаві параметри - можна почитати man page.

Код:

$ cal

Код:

$ ncal

Дві команди, які виводять поточний місяць та підсвічують поточний день. Різниця у виводі за замовчуванням. У cal тиждень починається в неділю, у ncal - в понеділок.

Код:

$ date

Вивід поточної дати, часу та часового поясу (залежить від налаштувань системи).

Код:

$ date +%s

Вивід поточного часу в UNIX Time.

Підрахунки

Також часто треба щось порахувати, а калькулятора під рукою нема, як і папірця та бажання рахувати в голові. Я люблю використовувати інтерпретатор Python, проте у консолі є своя відповідь:

Код:

$ bc -l

Ввівши цю команду, ви отримаєте базовий калькулятор. Він вміє знаходити й корені. Без параметра -l ви не отримаєте нормальну відповідь на питання з операцією ділення, там лише цілочисельне ділення. Параметр -q також прибере вітальне повідомлення калькулятора.

І знову до файлів

Не можна також не згадати про такі чудові команди, як du та find.

Код:

$ du -ch

Ця команда дуже швидко порахує розмір вказаної директорії. Якщо її не вказати, то порахує у поточній. Параметр -h потрібен для того, щоб вивід був "читабельним" для людини. Тобто, не у байтах, а через переведення у більші одиниці. Параметр -c покаже загальний розмір. Також можна рахувати розмір каталогів вказаного рівня глибини, не виводити на екран усі теки, розмір якиї вираховується. Все це можна побачити, набравши в терміналі:

Код:

$ man du

Інша потужна команда - find. Як можна здогадатися з назви, вона створена для пошуку.

Код:

$ find %directory% -name %file%

Базовий синтаксис простий: достатньо просто написати теку, де хочете знайти файл (за замовчуванням - ваша домашня директорія), написати параметр -name та вказати назву файлу. Можна не повністю. Утиліта видасть усі місця, де можна знайти файли з подібним ім’ям.

Паролі

А ось цю утиліту мені підказав пан Djalin. Базово все просто, якщо без додаткових параметрів. Треба ввести у консолі:

Код:

$ pwgen

Ви отримаєте багацько випадкових паролів. Для того, щоб були чи не були цифри, голосні, великі літери чи спецсимволи - використовуйте додаткові параметри.

Ця команда не йде у комплекті, тому її слід встановити. Для ОС на основі Debian можна написати так:

Код:

$ sudo apt-get install pwgen

Код:

$ sudo aptitude install pwgen

Потім система вас попросить ввести пароль суперкористувача (чит. адміністратора) і тоді встановить. Якщо ви правильно ввели його, звісно. Що використовувати: aptitude чи apt-get - вибір ваш. Потім ми ще до цього повернемось.

Мережі

У наш час мало хто не знає про Інтернет. Ви, думаю, знаєте, бо читаєте цей пост. Для того, щоб перевірити відповідь від серверу (aka пінг), треба скористуватися командою… ping!

Код:

$ ping %server%

Там можна вказати IP-адресу, назву серверу - байдуже. Відповідь покаже у мс, буде звертатися до серверу до тих пір, доки ви не припините команду (Ctrl+Z або Ctrl+C).

Якщо за деяких причин ping не може знайти сервер, або ж доволі великий, то треба ввести команду tracepath (в Debian - traceroute стоїть за замовчуванням) та назву серверу чи IP-адресу:

Код:

$ tracepath %server%

Ця команда покаже весь шлях від вашої машини до пункту призначення, з кожним кроком. Які проходить шлюзи, сервери та інше.

Код:

$ wget

wget - надзвичайно потужна команда, якою можна завантажувати файли з Тенет. Власне, як і сайти.

Так, щоб завантажити який-небудь сайт, то можна створити теку, зайти у неї та запустити команду:

Код:

$ wget -mkEpnp %site%

Всі параметри доволі важливі у цьому випадку. Детальніше про wget та його колегу curl поговоримо пізніше.

"Ну, добре, хто ж ти є?"

Одвічне питання Фауста постало й перед нами. Якщо ми хочемо дізнатися властивості сайту (власника, ns-сервери, дату реєстрації та кінцевий термін, до якого домен проплатили, ми можемо написати команду whois, яка, до речі, працює і з IP-адресами. Проте й її треба спершу встановити:

Код:

$ sudo apt-get install whois

Код:

$ sudo aptitude install whois

Вживати дуже просто. Треба набрати в консолі:

Код:

$ whois %server%

та чиати відповідь від серверу. Те саме, що можна робити на багатьох сайтах, проте без капчі та під рукою завжди.

Конвертації та метаморфози

Дуже і дуже корисна команда. Зараз ми над нею не будемо багато сидіти, просто знайте, що якщо, наприклад, вам треба взяти звукову доріжку з відеофайлу, конвертувати різні формати, то ця команда стане вам у нагоді.

Код:

$ ffmpeg

Можете почитати мануал по ній, проте розбирати її будемо детально та окремо.

Зроби мені сендвіч

Багато хто бачив цю картинку. Проте не всі знають про суперсилу двох знаків оклику. Якщо ви ввели команду, проте перед нею треба поставити sudo, cd, cp, mv, cat чи щось інше, то не треба знову набирати все, натискати на стрілку вгору та йти на початок команди. Достатньо просто набрати потрібну команду та !!. Наприклад:

Код:

$ sudo !!

Ця команда автоматично підставить попередній запис замість !!.

Just for fun

Важливо пам’ятати, що Лінус Торвальдс створив Linux для забави. І тому у цій системі є місце для цікавинок. Багато хто знає команду

Код:

$ apt-get moo
, яка виводить смішну корівку. Утиліта aptitude також свою має. Проте зараз я покажу те, про що знають не всі.

Нам знову треба буде встановити деякі пакети, на цей раз - дві штуки:

Код:

$ sudo apt-get install cowsay fortune

Код:

$ sudo aptitude install cowsay fortune

Команда cowsay може вивести подібну корову (і не тільки, там дуже багато "персонажів") з тим текстом, який ви хочете.

Команда fortune подібна до коржиків долі або просто генератору афоризмів чи коротких жартів.

Ці команди можна об’єднати:

Код:

$ fortune | cowsay -f `ls /usr/share/cowsay/cows/ | shuf -n 1`

fortune не потребує додаткових параметрів, а параметр -f показує cowsay яку "картинку" використовувати. Таким чином ми можемо встановити цілковиту випадковість для виводу як фрази, так і персонажу. Як зробити виклик цієї команди простішим та автоматизувати його ми поговоримо у наступних постах.

Наразі у мене все. Ці команди - це лише невеличкий базис, проте корисний для тих, хто тільки починає шлях через терени UNIX.




Прокоментуйте!