Основи Slackware Linux/Управління файлами

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

Перейти до: навігація, пошук

Зміст

Навігація: ls, cd, pwd

ls

Команда ls(1) показує файли у певній директорії. Якщо вам більш знайомий командний рядок DOS, то ls дещо подібна до команди dir . Сама по собі, без аргументів, ls покаже файли у поточній директорії. Щоб побачити, що знаходиться, наприклад, у вашому кореневому каталозі (/), ви можете використати такі команди:

$ cd /
$ ls
bin   cdr    dev  home  lost+found  proc  sbin   tmp  var
boot  cdrom  etc  lib   mnt         root  suncd  usr  vmlinuz

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

$ ls -FC
bin/   cdr/    dev/  home/  lost+found/  proc/  sbin/   tmp/  var/
boot/  cdrom/  etc/  lib/   mnt/         root/  suncd/  usr/  vmlinuz

Завдяки опції -FC, у виводі каталоги отримують слеш на кінці нзазви, виконувані файли - зірочку.

Дуже популярною опцією являється також --color, або --color=auto. Ця опція дозволяє отримати кольоровий вивід. Так, назви каталогів будуть синього кольору, виконувані файли - зеленого, символічні посилання - світло-блакитного, тощо.

  • Ви можете закріпити за командою ls оцію --color, створивши відповідний синонім у файлі .bashrc домашнього каталогу. Для цього просто додайте в нього alias ls="ls --color=auto".

Ми можемо також подивитись, що знаходиться у відмінній від поточної директорії. Для цього аргументом ls треба вказати каталог, що нас цікавить. Так, ми можемо подивитись, що знаходиться у каталозі /boot, виконавши

$ ls /boot

ls також може вивести додаткову інформацію про файли, таку як дата створення, власник і права доступу, для цього слід додати іпцію -l (long):

$ ls -l /
drwxr-xr-x   2 root     bin          4096 May  7 09:11 bin/
drwxr-xr-x   2 root     root         4096 Feb 24 03:55 boot/
drwxr-xr-x   2 root     root         4096 Feb 18 01:10 cdr/
drwxr-xr-x  14 root     root         6144 Oct 23 18:37 cdrom/
drwxr-xr-x   4 root     root        28672 Mar  5 18:01 dev/
drwxr-xr-x  10 root     root         4096 Mar  8 03:32 etc/
drwxr-xr-x   8 root     root         4096 Mar  8 03:31 home/
drwxr-xr-x   3 root     root         4096 Jan 23 21:29 lib/
drwxr-xr-x   2 root     root        16384 Nov  1 08:53 lost+found/
drwxr-xr-x   2 root     root         4096 Oct  6 12:47 mnt/
dr-xr-xr-x  62 root     root            0 Mar  4 15:32 proc/
drwxr-x--x  12 root     root         4096 Feb 26 02:06 root/
drwxr-xr-x   2 root     bin          4096 Feb 17 02:02 sbin/
drwxr-xr-x   5 root     root         2048 Oct 25 10:51 suncd/
drwxrwxrwt   4 root     root       487424 Mar  7 20:42 tmp/
drwxr-xr-x  21 root     root         4096 Aug 24 03:04 usr/
drwxr-xr-x  18 root     root         4096 Mar  8 03:32 var/

Щоб побачити приховані файли і каталоги (ті, чия назва починається з крапки), використовуйте прапорець -a (all) (тильда ~ є скороченням для домашнього каталогу):

$ ls -a ~
.Xauthority       .bash_profile      .mc            .vimrc
.Xdefaults        .bashrc            .mozilla       docs
.bash_history     .inputrc           .viminfo       www

Крім вище вказаних опцій також існують багато інших. Обов'язково передивіться сторінку посібника man для ls.

cd

cd(1) команда використовується щоб поміняти директорію у якій Ви знаходитесь. Просто введіть cd із шляхом до каталогу у який Ви хочете перейти:

darkstar:~$ cd /bin
darkstar:/bin$ cd usr
bash: cd: usr: No such file or directory
darkstar:/bin$ cd /usr
darkstar:/usr$ ls
bin
darkstar:/usr$ cd bin
darkstar:/usr/bin$ 

Зауважте що якщо назва шляху не починається з слешу, cd перенесе нас у підкаталог поточного каталогу із такою назвою, тобто якщо ми вже знаходимся у /usr і ми вказали cd команді bin каталог, то ми опинимось у /usr/bin. Це демонструє важливий концепт абсолютних шляхів і відносних шляхів. Назви шляхів що починаються зі слешу, тобто вказується повний шлях, починаючи з кореневого каталогу, називаються абсолютним шляхом. У відносних шляхах, в свою чергу, вказується шлях до файла по відношенню до поточного каталогу. До відносних шляхів ми також можемо долучити дві крапки (..), що означає "одним каталогом вище поточного". Так, якщо ми знаходимось у /usr/bin, то cd .. перенесе нас у /usr.

cd команда без жодних аргументів перенесе нас у наш домашній каталог.

cd команда відрізняється від багатьох інших команд тим що вона є вбудованою командою оболонки. Вбудовані оболонкові команди розглянуті у Розділі 8.3.1. Це, можливо, не є важливим у даний момент для вас, все що вас повинно цікавити, це те що cd описане у man 1 bash і отримати допомогу по цій команді можна завдяки

$ help cd

pwd

Команда pwd(1) (print working directory) використовується для того щоб показати ваше поточне місцезнаходження. Просто введіть pwd на командній лінії:

$ cd /bin
$ pwd
/bin
$ cd /usr
$ cd bin
$ pwd
/usr/bin 


Переглядачі: more, less, most

more

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

$ more /etc/X11/xorg.conf

Також more часто вживається у конвеєрі (введення до конвеєрів Ви знайдете у Розділі 8.2.3), наприклад:

$ ls /usr/bin | more

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

Як тільки more дійшла до кінця тексту, вона припиняє свою роботу. Прочитайте обов'язково сторінку посібника more(1) для додаткових опцій і ключів навігації. Під час роботи програми h клавіша (help) викличе сторінку допомоги, q клавіша (quit) припинить роботу переглядача.

less

Хоча more є досить зручною програмою, вона має один невеликий недолік - ви не можете прокрутити текст назад. Саме тому, напевне, більше вживають less(1). less дуже подібнa на попередню програму, ви так само викликаєте less і можете вживати її в конвеєрі:

$ less /var/log/messages
$ dmesg | less

Пошук по тексту так само працює з less. Сторінку допомоги ви теж отримаєте з допомогою h клавіші. Ключі навігації описані у lesskey(1) сторінці посібника. q ключ завершує роботу переглядача.

most

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

view

На додаток до вищезгаданих програм перегляду тексту варто згадати view(1) переглядач, який є частиною vi(1) редактора (описаного у Розділі 16). Це фактично vi, запущений у режимі тільки для читання. view зручний тим що надає стандартну для vi підсвітку синтаксису, що допомагає у перегляді різноманітного коду. Також view успадковує розвинутий пошук по тексту, характерний для vi. Для припинення огляду, введіть :q команду.

Простий вивід: cat, echo

cat

cat(1) (скорочення від concatenate) спершу була задумана як програма що поєднує декілька файлів у один, але може використовуватись і для інших цілей.

Для того щоб поєднати декілька файлів у один більший, перечисліть необхідні файли після cat команди, після чого перенаправте вивід у інший файл (перенаправлення описане у Розділі 8.2.3):

$ cat file1 file2 file3 > bigfile

Простіший способів використання cat, це для відображення змісту файла на стандартному виводі. Для цього просто введіть:

$ cat file1

Ви також можете вживати cat у поєднанні з переглядачами, такими як more або less, якщо пропустите вивід cat команди через конвеєр (хоча простіше просто виконати more file1):

$ cat file1 | more

Інший поширений спосіб використання cat - для копіювання файлів (навіть бінарних):

$ cat /bin/bash > ~/mybash

Останнє скопіює bash програму у ваш домашній каталог, назвавши її mybash.

Також типовим використанням є долучення змісту одного файлу до іншого за домомогою подвійного оператора перенаправлення ">>":

$ cat file1 >> file2

В останньому випадку, file2 збереже свій зміст, до нього лише буде додано те що знаходиться у file1.

Універсальність cat робить її однією з найчастіше вживаних команд. Завдяки тому що cat широко використовує стандартний ввід і стандартний вивід, вона ідеальна для оболонкових скриптів і як частина інших, складніших команд.

echo

echo(1) команда виводить наданий їй як аргумент рядок тексту на екран.

$ echo Hello there...

За замовчуванням echo виведе рядок і добавить нову лінію у кінці. Ви можете запобігти цьому якщо добавите -n прапорець до echo. Опція -e заставить echo брати до уваги будь-які екрановані знаки такі як \t (таб), \a (дзвоник), \e (знак екранації) тощо. Дуже радимо прочитати echo(1) і bash(1) сторінки посібника man для додаткової інформації.

Створення файлів і каталогів: touch, mkdir

touch

touch(1) використовується для зміни часу доступу або часу модифікації файла. Це у випадку якщо файл вже існує, якщо вказаного файла немає, тоді touch команда створить його. Отже, щоб створити новий порожній файл, виконайте:

$ touch file1

Існує декілька опцій touch, включаючи опції щодо який саме час змінити, модифікації (-m) чи доступу (-a), який саме час вказати (-t 200509170923) (рік, місяць, день, година), тощо. Ви знайдете деталі у touch(1) сторінці посібника.

mkdir

mkdir(1) команда створить новий каталог. Ви просто повинні вказати ім'я каталогу або каталогів які ви хочете створити. Наприклад, щоб створити новий каталог або каталоги у поточній директорії, виконайте:

$ mkdir documents
$ mkdir charts images

Ви також можете вказати шлях до каталогу який ви хочете створити, приміром

$ mkdir /tmp/temporary

mkdir команда не має багато опцій. Важливими є -m, опція що вказуватиме права доступу до каталогу, і -p опція що дозволяє створювати директорії рекурсивно (розміщені одна в одній):

$ mkdir -m 700 noshare
$ mkdir -p www/images/banners

Перша команда створить каталог noshare із правами на читання, запис і виконання тільки користувачем, тоді як друга утворить одночасно декілька розміщених один в одному каталогів. Якщо не надати -p (parent) прапорець в останній команді, це призведе до помилки, якщо ні www ні images порередньо не існували.

Копіювання і зміна назви.

cp

cp(1) команда копіює файли і каталоги якщо надано -r або (краще) -R (recursively) прапорець. Наприклад:

$ cp processes.txt /tmp
$ cp -r charts /tmp

Багато користувачів віддають перевагу збереженню значення часу створення або модифікації а також прав виконання з допомогою -a (всерівно що -dpR) або -p опції:

$ cp -a file1 /tmp
$ cp -pR noshare /tmp
$ ls -ld /tmp/file1 /tmp/noshare

cp має ще декілька опцій. Радимо вам прочитати сторінку посібника для cp(1).

mv

mv(1) команда переносить файл з одного місця у інше. mv також дуже часто використовується для зміни назви файла. Власне, це єдина команда яка дозволяє це здійснити у один крок.

$ mv file1 /tmp/fileX
$ mv /tmp/fileX /tmp/fileY

Якщо Ви заглянете у сторінку посібника для mv(1), Ви знайдете декілька додаткових опцій цієї команди. На практиці, мало хто їх використовує.

Усунення: rm, rmdir

rm

Команда rm(1) вилучає файли і директорії. До цієї команди портібно ставитись обережно, оскільки у Лінуксі не існує легкого засобу відтворення вилученого файлу, тобто те що вилучено — буде втрачено незворотньо. Звичайно, Ви можете видалити лише ті файли, на які Ви маєте права запису.

Щоб вилучити один або більше файлів, Ви просто перечисляєте їхні назви за rm командою:

$ rm file2 /tmp/fileY

Якщо Ви не маєте прав на запис, Ви отримаєте "Permission denied" помилку. Це запобігає вилучнню звичайними користувачами важливих системних файлів. Наприклад, серед різноманітних опцій rm команди, варто звернути увагу на -f (force), яка запобігає підтвердження наміру вилучення і звісток про помилки у випадку невдачі, також -r або -R (recursively), що дозволяє рекурсивно вилучати ієрархії директорії:

$ rm -Rf /tmp/noshare

rm це доволі потужна команда, особливо якщо вона використовується root користувачем. Так, щоб видлучити всю кореневу ієрархію, необхідно лише вилучити rm -Rf / (звичайно, ми не радимо робити цього). Також будьте особливо уважними у вживанні rm із шаблонами. Якщо не впевнені, завжди краще вживати rm із -i (interactive) прапорцем, що вимагатиме підтвердження (y або n) вашого наміру вилучити кожний файл.

rmdir

rmdir(1) як Ви можливо здогадуєтесь, вилучає каталоги з файлової системи. Каталог обов'язково повинен бути пустим перед тим як його можна буде вилучати за допомогою rmdir(1). Синтаксис команди досить простий — сама команда, за якою слідує один або більше каталогів, що належать усуненню:

$ rmdir /tmp/charts

Якщо charts не є порожнім, Ви отримаєте помилку "rmdir: `charts': Directory not empty". В такому випадку варто, або випорожнити charts каталог перед усуненням, або вжити -p прапорець (або скористатися з уже відомої нам rm -Rf):

$ rmdir -p /tmp/charts

Остання команда може бути вжита лише звичайним користувачем, оскільки вона по ідеї повинна вилучати всі каталоги із /tmp включно, але оскільки звичайні користувачі не мають права вилучати /tmp, цей каталог буде збережено. У випадку root користувача, /tmp теж буде усунено (що небажано).

Жорсткі і символічні посилання: ln

Посилання, це просто вказівники на інший файл. Вказівник і файл на який він вказує можуть знаходитись у різних каталогах файлової системи. Існує два типи посилань — жорсткі посилання і символічні посилання. Програма ln(1) бере на себе завдання по створенню посилань.

Жорсткі посилання, це просто інша назва для того самого файла (один файл може мати різні назви). Жорсткі посилання можуть знаходитись лише у межах однієї файлової системи і бути вилученими лише коли остання назва файла вилучена з системи. Ось приклад, створення жорсткого посилання, мається на увазі, що file1 вже існує і fileH буде жорстким посиланням до першого. Ми використовуємо ln без жодних прапорців у цьому випадку:

$ ln file1 fileH

Жорсткі посилання бувають корисними у деяких випадках, але більшість користувачів, напевне, нададуть перевагу універсальнішим символічним посиланням.

Символічні посилання можуть вказувати на файл поза файлвої системи, навіть на вже неіснуючий файл. Це власне, невеличкий файл що утримує необхідну інформацію. Ви можете додавати і усувати символічі посилання без впливу на справжній файл. Оскільки символічні посилання, це лише файл із власною інформацією, він може вказувати також на каталоги. Це, власне, дуже поширене, мати /var/tmp як символічне посилання на /tmp каталог.

Щоб сворити символічне посилання, додайте -s до ln команди:

$ ln -s file1 fileS
$ ls -l fileS
lrwxrwxrwx    1 nabis    users           5 Sep 20 23:16 fileS -> file1


Як бачите, в обох випадках, жорсткого і символічного посилань, першим аргументом ln стоїть справжній файл (file1), а потім йде назва файла-посилання що буде створено (fileH та fileS).

Особисті інструменти