L
i
nux.org.ua
Головна
Форум
Довідка
Правила
Пошук
Увійти
Реєстрація
Linux.org.ua
»
Технічні питання
»
Різноманітні поради та рецепти
»
Школа виживання
« попередня гілка
наступна гілка »
Відповісти
Друк
Сторінки:
1
Автор
Гілка: Школа виживання (Прочитано 2613 раз)
Yaroslav Fedevych
Літератор
дописів: 1069
Карма: +0/-0
Людина — ніщо, справа — все
Школа виживання
«
:
2004-03-17 21:09:53 »
Цитата
"Навіщо, скажіть мені, я повинен звантажувати меґабайти програм з Інтернету, коли один рядок стандартних команд зробить для мене те саме?" --
підслухано в чаті
В цій темі я хотів би поділитись певними рецептами в стилі "чистої Unix": як виконувати складні задачі за допомогою набору простих і неначе обмежених команд, котрий можна знайти практично в кожній дистрибуції Linux. Ці програми навіть містяться навіть у колекції UnxUtils для Windows -- це означає, що рецепти придатні для застосування практично всюди.
Гадаю, ця тема настільки ж невичерпна, наскільки й людська фантазія. Тому вона буде постійно наповнюватись і вдосконалюватись. Проте не думаю, що лише я використовую такі "фокуси", а тому сподіваюсь, не я сам буду продовжувати цю тему.
Повинен сказати, що використання стандартних інструментів і фантазії дає можливість заощаджувати. Що саме? Подумайте самі: при використанні однієї популярної ОС, або ОС із подібною ідеологією, ви на початку отримуєте обмежений набір програм. Так, усе блищить і сяє, проте коли необхідно серйозно працювати з текстами, коли необхідні складніші маніпуляції з файловою системою, замість комбінувати стандартні засоби, чомусь необхідно викачувати величенькі програми для цієї мети, котрі вимагають і додаткової оплати (а ви ж-бо платите за програми, якими користуєтесь, хіба ні?
).
В той час як користувачі популярної ОС вважають це явище нормальним, у мене нав'язливо крутиться одне запитання: ну невже так складно було закласти в Explorer чи навіть cmd функцію, котра б дозволила мені за одним разом знайти в усьому дереві каталогів файли, котрі б відповідали певному критерієві, і одразу, тим самим махом, зробити з ними те, що я хочу? А хотіти можна по-різному. Наприклад, можна витерти старі файли. А можна взяти текстові файли-таблиці, знайти там за шаблончиком певні рядки, переформатувати їх і вивести в ще один файл, котрий відіслати електронною поштою, попередньо стиснувши...
У вас голова обертом не пішла? Сподіваюсь, ні. Розумієте, Linux таке дозволяє при мінімумі засобів. Та й зусиль, чесно, теж мінімумі. Тут потрібне одне: ота сіра речовина, котра наповнює наші черепні коробки. І якщо в дитинстві вам подобалось творити різні речі з "Лєґо" чи ще радянського "Конструктора", то вам сподобається й запропонований тут спосіб вирішення задач.
Це лише передмова. Конкретні розділи йдуть як окремі дописи.
Нам потрібні, отже, наступні програми, а вони є невід'ємною частиною будь-якого *ніксу. Це:
awk
,
grep
,
sed
,
sort
,
ls
,
cat
,
cp
,
mv
,
rm
. Будуть і інші; проте хочу запевнити, що вам не доведеться йти за ними далеко в Інтернет.
І ще одне: ці дописи не замінять вам довідки. Навпаки, вони заохочують вас нею скористатись, щоб пожиток був якнайповніший. А команда
man
-- ваш друг...
Записаний
Yaroslav Fedevych
Літератор
дописів: 1069
Карма: +0/-0
Людина — ніщо, справа — все
Школа виживання: акробатика з переліком файлів
«
Відповідей #1 :
2004-03-17 21:10:43 »
Цитата
Якщо у вас було трохи часу побавитись із командним рядком, або ж ви читали десь щось на цю тему, то, можливо, зауважили таку команду, як
ls
: її задача -- видрук переліку файлів і каталогів, котрі містяться там, де ви їй скажете. Наприклад,
ls $HOME
видрукує перелік файлів, наявних у вашому особистому каталозі. Якщо не задавати конкретного каталога, видрукується вміст поточного каталога.
Один з найбільш відомих ключів, котрі приймає ця команда -- це ключ
-l
. Він змушує вивести повну (більш-менш) інформацію про файли, таку як розмір, дату й час створення, власника та дозволи.
У більшості випадків на цьому вивчення команди й припиняється. Однак ті, хто це робить -- чинить недалекоглядно. Бо ця команда вміє ще деякі речі.
Іноді мені хочеться вивести не лише те, що є в
цьому
каталозі, а й на нижчих рівнях. Для цього я застосовую ключ
-R
(сподіваюсь, ви пам'ятаєте, що великі й малі літери -- це не одне й те саме?). Наприклад,
ls -lR /
видасть перелік усіх файлів системи, до яких я маю хоча б якийсь доступ.
Команда
ls
не видає файлів, назви котрих котрих починаються з крапки. Якщо це не те, чого ви хотіли б досягнути, вкажіть ключ
-a
(GNU дає ще довгу команду --all, котра пояснює, гадаю, що й до чого). З цим ключем будуть видрукувані назви всіх файлів.
Проте це може давати на виведення два псевдофайли
.
і
..
-- що теж може бути небажаним (перший вказує на цей каталог, другий -- на попередній). Тоді замість
-a
дайте ключ
-A
(від almost all -- майже всі). Це змусить
ls
вивести все, крім оцих двох файлів.
Щоб розміри файлів читались легше, можна вказати ключ
-h
. Видрук міститиме розмір файлу, вказаний у найбільших одиницях, у яких можна вказати цей розмір. Наприклад, 234M.
Можна по-різному сортувати перелік. Типовим є зростальний порядок, проте ключем
-r
його можна змінити на протилежний.
Корисним є сортування за розміром. Вказати цей вид сортування можна ключем
-S
.
А якщо я хочу дізнатись, до яких файлів я звертався востаннє, мені допоможе ключ
-u
. Він упорядковує файли за часом останнього доступу до них.
В сучасних дистрибутивах Linux
ls
дає красивий кольоровий перелік. Проте іноді кольори можуть бути недоступними (коли видрук проходить через фільтри), і на допомогу приходить ключ
-F
. Він змушує
ls
виводити одразу після назви файлу символ-класифікатор, наприклад, / для каталогів, * для викональних файлів чи @ для символьних посилань.
Наразі -- досить про команду
ls
. В одній з наступних тем обговорюватиметься команда
awk
, котра дозволяє трохи більше: виконувати довільні дії з тим, що ми виводимо. Проте перед тим ми поговоримо про деякі інші команди.
Записаний
Відповісти
Друк
Сторінки:
1
« попередня гілка
наступна гілка »
Linux.org.ua
»
Технічні питання
»
Різноманітні поради та рецепти
»
Школа виживання