Linux Professional Institute Learning Logo.
Перехід до основного вмісту
  • Головна
    • Усі ресурси
    • LPI Навчальні матеріали
    • Стати дописувачем
    • Видавничі партнери
    • Cтати видавничим партнером
    • Про нас
    • FAQ
    • Дописувачі
    • Дорожня карта
    • Контакти
  • LPI.org
2.4 Урок 1
Тема 1: Спільнота Linux та кар'єра у світі вільного програмного забезпечення
1.1 Розвиток Linux і популярні операційні системи
  • 1.1 Урок 1
1.2 Основні застосунки з відкритим кодом
  • 1.2 Урок 1
1.3 Відкрите програмне забезпечення та ліцензування
  • 1.3 Урок 1
1.4 ІКТ навички та робота в Linux
  • 1.4 Урок 1
Тема 2: Як знайти свій шлях у системі Linux
2.1 Основи командного рядку
  • 2.1 Урок 1
  • 2.1 Урок 2
2.2 Використання командного рядку для отримання допомоги
  • 2.2 Урок 1
2.3 Використання папок та перегляд списку файлів
  • 2.3 Урок 1
  • 2.3 Урок 2
2.4 Створення, переміщення та видалення файлів
  • 2.4 Урок 1
Тема 3: Потужність командного рядка
3.1 Архівація файлів через командний рядок
  • 3.1 Урок 1
3.2 Пошук та отримання даних з файлів
  • 3.2 Урок 1
  • 3.2 Урок 2
3.3 Перетворення команд у скрипт
  • 3.3 Урок 1
  • 3.3 Урок 2
Тема 4: Операційна система Linux
4.1 Вибір операційної системи
  • 4.1 Урок 1
4.2 Розуміння апаратного забезпечення комп'ютера
  • 4.2 Урок 1
4.3 Де зберігаються дані
  • 4.3 Урок 1
  • 4.3 Урок 2
4.4 Ваш комп'ютер у мережі
  • 4.4 Урок 1
Тема 5: Безпека та права доступу до файлів
5.1 Основи безпеки та визначення типів користувачів
  • 5.1 Урок 1
5.2 Створення користувачів та груп
  • 5.2 Урок 1
5.3 Керування дозволами та правами власності на файл
  • 5.3 Урок 1
5.4 Спеціальні папки та файли
  • 5.4 Урок 1
How to get certified
  1. Тема 2: Як знайти свій шлях у системі Linux
  2. 2.4 Створення, переміщення та видалення файлів
  3. 2.4 Урок 1

2.4 Урок 1

Сертифікат:

Linux Essentials

Версія:

1.6

Розділ:

2 Знайдіть свій шлях у системі Linux

Тема:

2.4 Створення, переміщення та видалення файлів

Урок:

1 з 1

Вступ

Цей урок охоплює управління файлами та каталогами в Linux за допомогою інструментів командного рядка.

Файл – це сукупність даних з іменем і набором атрибутів. Якби, наприклад, ви перенесли деякі фотографії зі свого телефону на комп’ютер і дали їм описові назви, то тепер на вашому комп’ютері була б купа файлів зображень. Ці файли мають такі атрибути, як час останнього доступу до файлу або його зміни.

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

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

У цьому розділі ви будете використовувати команди ls, mv, cp, pwd, find, touch, rm, rmdir, echo, cat і mkdir для керування та організації файлів і каталогів.

Чутливість до регістру

На відміну від Microsoft Windows, імена файлів і каталогів у системах Linux чутливі до регістру. Це означає, що назви /etc/ і /ETC/ є різними каталогами. Спробуйте виконати такі команди:

$ cd /
$ ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
$ cd ETC
bash: cd: ETC: No such file or directory
$ pwd
/
$ cd etc
$ pwd
/etc

pwd показує вам каталог, у якому ви зараз перебуваєте. Як бачите, зміна на /ETC не спрацювала, оскільки такого каталогу немає. Перехід до каталогу /etc, який існує, був вдалим.

Створення каталогів

Команда mkdir використовується для створення каталогів.

Давайте створимо новий каталог у нашому домашньому каталозі:

$ cd ~
$ pwd
/home/user
$ ls
Desktop  Documents  Downloads
$ mkdir linux_essentials-2.4
$ ls
Desktop  Documents  Downloads  linux_essentials-2.4
$ cd linux_essentials-2.4
$ pwd
/home/emma/linux_essentials-2.4

Протягом цього уроку всі команди будуть виконуватись в цьому каталозі або в одному з його підкаталогів.

Щоб легко повернутися до каталогу уроку з будь-якої іншої позиції у вашій файловій системі, ви можете скористатися командою:

$ cd ~/linux_essentials-2.4

Оболонка інтерпретує символ ~ як ваш домашній каталог.

Перебуваючи в каталозі уроку, створіть ще кілька каталогів, які ми будемо використовувати для вправ. Ви можете додати всі імена каталогів, розділив їх пробілами, до команди mkdir:

$ mkdir creating moving copying/files copying/directories deleting/directories deleting/files globs
mkdir: cannot create directory ‘copying/files’: No such file or directory
mkdir: cannot create directory ‘copying/directories’: No such file or directory
mkdir: cannot create directory ‘deleting/directories’: No such file or directory
mkdir: cannot create directory ‘deleting/files’: No such file or directory
$ ls
creating  globs  moving

Зверніть увагу на повідомлення про помилку і те, що було створено лише каталоги moving, globs та creating. Каталоги copying та deleting ще не існують. mkdir за замовчуванням не створює каталог всередині каталогу, який не існує. Параметр -p або --parents наказує mkdir створити батьківські каталоги, якщо вони не існують. Спробуйте ту ж команду mkdir з параметром -p:

$ mkdir -p creating moving copying/files copying/directories deleting/directories deleting/files globs

Тепер ви не отримуєте жодних повідомлень про помилки. Давайте подивимося, які каталоги існують зараз:

$ find
.
./creating
./moving
./globs
./copying
./copying/files
./copying/directories
./deleting
./deleting/directories
./deleting/files

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

Tip

Під час перерахування вмісту каталогу за допомогою ls параметри -t та -r особливо зручні. Вони сортують вихідні дані за часом (-t) і змінюють порядок сортування (-r). У цьому випадку найновіші файли будуть у нижній частині виводу.

Створення файлів

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

Виконайте таку команду, щоб створити деякі файли для роботи з шаблонами:

$ touch globs/question1 globs/question2012 globs/question23 globs/question13 globs/question14
$ touch globs/star10 globs/star1100 globs/star2002 globs/star2013

Тепер давайте перевіримо наявність усіх файлів у каталозі globs:

$ cd globs
$ ls
question1   question14    question23  star1100  star2013
question13  question2012  star10      star2002

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

$ cat question14

Оскільки touch створює порожні файли, ви не повинні отримати жодного результату. Ви можете використовувати echo з > для створення простих текстових файлів. Спробуй це:

$ echo hello > question15
$ cat question15
hello

echo відображає текст у командному рядку. Символ > наказує оболонці записати результат команди у вказаний файл замість вашого терміналу. Це призводить до того, що вихідні дані echo, у цьому випадку hello, записуються у файл question15. Це стосується не тільки echo, цей підхід можна використовувати з будь-якою командою.

Warning

Будьте обережні, використовуючи >! Якщо зазначений файл уже існує, він буде перезаписаний!

Перейменування файлів

Файли переміщуються та перейменовуються за допомогою команди mv.

Перейдіть до каталогу moving:

$ cd ~/linux_essentials-2.4/moving

Створіть кілька файлів для практики. Наразі ви вже повинні бути знайомі з цими командами:

$ touch file1 file22
$ echo file3 > file3
$ echo file4 > file4
$ ls
file1  file22  file3  file4

Припустимо, ім’я file22 містить помилку і має бути file2. Виправте це за допомогою команди mv. При перейменуванні файлу першим аргументом є поточне ім’я, другим – нове ім’я:

$ mv file22 file2
$ ls
file1  file2  file3  file4

Будьте обережні з командою mv. Якщо ви перейменуєте файл на ім’я існуючого файлу, він перезапише його. Давайте перевіримо це за допомогою file3 і file4:

$ cat file3
file3
$ cat file4
file4
$ mv file4 file3
$ cat file3
file4
$ ls
file1  file2  file3

Зверніть увагу, що вміст file3 тепер співпадає з вмістом file4. Використовуйте параметр -i, щоб змусити mv запитати вас, чи збираєтеся ви перезаписати існуючий файл. Спробуйте наступні команди:

$ touch file4 file5
$ mv -i file4 file3
mv: overwrite ‘file3’? y

Переміщення файлів

Файли переміщуються з одного каталогу до іншого за допомогою команди mv.

Створіть кілька каталогів для переміщення файлів:

$ cd ~/linux_essentials-2.4/moving
$ mkdir dir1 dir2
$ ls
dir1  dir2  file1  file2  file3  file5

Перемістіть file1 у dir1:

$ mv file1 dir1
$ ls
dir1  dir2  file2  file3  file5
$ ls dir1
file1

Зверніть увагу, що останній аргумент mv є каталогом призначення. Щоразу, коли останнім аргументом mv є каталог, файли переміщуються до нього. В одній команді mv можна зазначити декілька файлів:

$ mv file2 file3 dir2
$ ls
dir1  dir2  file5
$ ls dir2
file2  file3

Також можна використовувати mv для переміщення та перейменування каталогів. Перейменуйте dir1 на dir3:

$ ls
dir1  dir2  file5
$ ls dir1
file1
$ mv dir1 dir3
$ ls
dir2  dir3  file5
$ ls dir3
file1

Видалення файлів і каталогів

Команда rm може видаляти файли та каталоги, а команда rmdir може видаляти лише каталоги. Давайте очистимо каталог moving, видаливши file5:

$ cd ~/linux_essentials-2.4/moving
$ ls
dir2  dir3  file5
$ rmdir file5
rmdir: failed to remove ‘file5’: Not a directory
$ rm file5
$ ls
dir2  dir3

За замовчуванням rmdir може видаляти лише порожні каталоги, тому нам довелося використовувати rm, щоб видалити звичайний файл. Спробуйте видалити каталог deleting:

$ cd ~/linux_essentials-2.4/
$ ls
copying  creating  deleting  globs  moving
$ rmdir deleting
rmdir: failed to remove ‘deleting’: Directory not empty
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 files

За замовчуванням rmdir відмовляється видаляти каталог, який не є порожнім. Використовуйте rmdir, щоб видалити один із порожніх підкаталогів каталогу deleting:

$ ls -a deleting/files
.  ..
$ rmdir deleting/files
$ ls -l deleting
directories

Видалення великої кількості файлів або глибоких структур каталогів із багатьма підкаталогами може здатися виснажливим, але насправді зробити це легко. За замовчуванням rm працює лише зі звичайними файлами. Параметр -r використовується для перевизначення цієї поведінки. Будьте обережні, rm -r – прихований вибуховий пристрій! Коли ви використовуєте параметр -r, rm видалятиме не тільки будь-які каталоги, але й усе в цих каталогах, включно з підкаталогами та їх вмістом. Подивіться самі, як працює rm -r:

$ ls
copying  creating  deleting  globs  moving
$ rm deleting
rm: cannot remove ‘deleting’: Is a directory
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
$ rm -r deleting
$ ls
copying  creating  globs  moving

Зверніть увагу, як deleting зник, не зважаючи на те, що він не був порожнім? Як і mv, rm має опцію -i, щоб запросити підтвердження у вас, перш ніж щось робити. Використовуйте rm -ri, щоб видалити каталоги з розділу moving, які більше не потрібні:

$ find
.
./creating
./moving
./moving/dir2
./moving/dir2/file2
./moving/dir2/file3
./moving/dir3
./moving/dir3/file1
./globs
./globs/question1
./globs/question2012
./globs/question23
./globs/question13
./globs/question14
./globs/star10
./globs/star1100
./globs/star2002
./globs/star2013
./globs/question15
./copying
./copying/files
./copying/directories
$ rm -ri moving
rm: descend into directory ‘moving’? y
rm: descend into directory ‘moving/dir2’? y
rm: remove regular empty file ‘moving/dir2/file2’? y
rm: remove regular empty file ‘moving/dir2/file3’? y
rm: remove directory ‘moving/dir2’? y
rm: descend into directory ‘moving/dir3’? y
rm: remove regular empty file ‘moving/dir3/file1’? y
rm: remove directory ‘moving/dir3’? y
rm: remove directory ‘moving’? y

Копіювання файлів і каталогів

Команда cp використовується для копіювання файлів і каталогів. Скопіюйте кілька файлів до каталогу copying:

$ cd ~/linux_essentials-2.4/copying
$ ls
directories  files
$ cp /etc/nsswitch.conf files/nsswitch.conf
$ cp /etc/issue /etc/hostname files

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

Якщо обидва операнди cp є файлами і обидва файли існують, cp замінює другий файл копією першого файлу. Давайте попрактикуємося в цьому, перезаписуючи файл issue файлом hostname:

$ cd ~/linux_essentials-2.4/copying/files
$ ls
hostname  issue  nsswitch.conf
$ cat hostname
mycomputer
$ cat issue
Debian GNU/Linux 9 \n \l

$ cp hostname issue
$ cat issue
mycomputer

Тепер спробуємо створити копію каталогу files у каталозі directories:

$ cd ~/linux_essentials-2.4/copying
$ cp files directories
cp: omitting directory ‘files’

Як бачите, cp за замовчуванням працює лише з окремими файлами. Щоб скопіювати каталог, ви використовуєте параметр -r. Майте на увазі, що параметр -r змусить cp також скопіювати вміст каталогу, який ви копіюєте:

$ cp -r files directories
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname

Зверніть увагу, коли наявний каталог використовувався як призначення, cp створює в ньому копію вихідного каталогу? Якщо каталог призначення не існує, він буде створений та заповнений вмістом вихідного каталогу:

$ cp -r files files2
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
./files2
./files2/nsswitch.conf
./files2/fstab
./files2/hostname

Пошук за шаблоном

Те, що зазвичай називають пошуком за шаблоном (globbing), - це проста мова співставлення шаблонів. Оболонки командного рядка в системах Linux використовують цю мову для посилань на групи файлів, імена яких відповідають певному шаблону. POSIX.1-2017 визначає наступні символи відповідності шаблону:

*

Відповідає будь-якій кількості будь-якого символу, включаючи також і відсутність символу

?

Відповідає будь-якому символу

[]

Відповідає набору символів

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

$ cd ~/linux_essentials-2.4/globs
$ ls
question1   question14  question2012  star10    star2002
question13  question15  question23    star1100  star2013
$ ls star1*
star10  star1100
$ ls star*
star10  star1100  star2002  star2013
$ ls star2*
star2002  star2013
$ ls star2*2
star2002
$ ls star2013*
star2013

Оболонка розширює * до будь-якої кількості будь-чого, тому ваша оболонка інтерпретує star* як що-небудь у відповідному контексті, що починається з star. Коли ви запускаєте команду ls star*, ваша оболонка не запускає програму ls з аргументом star*, вона шукає файли в поточному каталозі, які відповідають шаблону star* (включно зі`star`), і перетворює кожен файл, що відповідає шаблону, в аргумент ls:

$ ls star*

що є еквівалентом ls з наступними аргументами

$ ls star10  star1100  star2002  star2013

Символ * нічого не означає для ls. Щоб довести це, виконайте таку команду:

$ ls star\*
ls: cannot access star*: No such file or directory

Коли ви перед символом ставите \, ви вказуєте своїй оболонці не інтерпретувати його. У цьому випадку ви хочете, щоб ls мав аргумент star* замість того, що має на увазі шаблон star*.

Знак "?" відноситься до будь-якого окремого символу. Спробуйте виконати наступні команди, щоб переконатися в цьому:

$ ls
question1   question14  question2012  star10    star2002
question13  question15  question23    star1100  star2013
$ ls question?
question1
$ ls question1?
question13  question14  question15
$ ls question?3
question13  question23
$ ls question13?
ls: cannot access question13?: No such file or directory

Дужки [] використовуються для пошуку відповідності діапазонам або класам символів. Дужки [] працюють так само, як і в регулярних виразах POSIX, за винятком того, що в шаблонах замість ! використовується ^.

Створіть кілька файлів для експерименту:

$ mkdir brackets
$ cd brackets
$ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7

Діапазони в дужках [] зазначаються за допомогою -:

$ ls
file1  file2  file3  file4  file5  file6  file7  filea  fileb  filec
$ ls file[1-2]
file1  file2
$ ls file[1-3]
file1  file2  file3

Можна вказати кілька діапазонів:

$ ls file[1-25-7]
file1  file2  file5  file6  file7
$ ls file[1-35-6a-c]
file1  file2  file3  file5  file6  filea  fileb  filec

Квадратні дужки також можна використовувати для відповідності певному набору символів.

$ ls file[1a5]
file1  file5  filea

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

$ ls file[^a]
file1  file2  file3  file4  file5  file6  file7  fileb  filec

Останнє, що ми розглянемо на цьому уроці, це класи символів. Щоб відповідати класу символів, ви використовуєте [:classname:]. Наприклад, щоб використовувати клас цифр, який відповідає числам, ви повинні зробити щось на кшталт цього:

$ ls file[[:digit:]]
file1  file2  file3  file4  file5  file6  file7
$ touch file1a file11
$ ls file[[:digit:]a]
file1  file2  file3  file4  file5  file6  file7  filea
$ ls file[[:digit:]]a
file1a

Шаблон file[[:digit:]a] відповідає file, за яким слідує цифра або a.

Класи символів, що підтримуються, залежать від поточних регіональних налаштувань. POSIX вимагає наступні класи символів для всіх регіональних мовних стандартів:

[:alnum:]

Букви та цифри.

[:alpha:]

Великі або малі літери.

[:blank:]

Пробіли та табуляції.

[:cntrl:]

Керуючі символи, наприклад, backspace, bell, NAK, escape.

[:digit:]

Цифри (0123456789).

[:graph:]

Графічні символи (усі символи, крім ctrl і пробілу)

[:lower:]

Букви нижнього регістру (a-z).

[:print:]

Символи для друку (alnum, punct та пробіл).

[:punct:]

Символи пунктуації, наприклад !, &, ".

[:space:]

Пробіли, наприклад, табуляції, пробіли, новий рядок.

[:upper:]

Букви верхнього регістру (A-Z).

[:xdigit:]

Шістнадцяткові цифри (зазвичай 0123456789abcdefABCDEF).

Вправи до посібника

  1. Враховуючи скріншот нижче, виберіть каталоги, які будуть створені за допомогою команди mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today

    $ pwd
    /tmp
    $ find
    .
    ./outfiles
    ./outfiles/text

    /tmp

    /tmp/outfiles

    /tmp/outfiles/text

    /tmp/outfiles/text/today

    /tmp/infiles

    /tmp/infiles/text

    /tmp/infiles/text/today

  2. Що робить -v для mkdir, rm та cp?

  3. Що станеться, якщо ви випадково спробуєте скопіювати три файли з одного командного рядка в уже існуючий файл замість каталогу?

  4. Що відбувається, коли ви використовуєте mv для переміщення каталогу в нього самого?

  5. Як би ви видалили всі файли у вашому поточному каталозі, які починаються на old?

  6. Якому з наведених нижче файлів відповідатиме log_[a-z]_201?_*_01.txt?

    log_3_2017_Jan_01.txt

    log_+_2017_Feb_01.txt

    log_b_2007_Mar_01.txt

    log_f_201A_Wednesday_01.txt

  7. Створіть кілька шаблонів, щоб відповідати наступному списку імен файлів:

    doc100
    doc200
    doc301
    doc401

Дослідницькі вправи

  1. Використовуйте man-сторінку команди cp, щоб дізнатися, як зробити копію файлу так, щоб дозволи та час зміни відповідали оригіналу.

  2. Що робить команда rmdir -p? Поекспериментуйте з нею і поясніть, чим вона відрізняється від rm -r.

  3. НЕ ВИКОНУЙТЕ ЦЮ КОМАНДУ: що, на вашу думку, буде робити rm -ri /*? (СПРАВДІ, НЕ НАМАГАЙТЕСЯ ЦЕ ЗРОБИТИ!)

  4. Крім використання -i, чи є ще спосіб запобігти перезапису цільових файлів mv?

  5. Поясніть дію команди cp -u.

Підсумки

Середовище командного рядка Linux надає інструменти для керування файлами. Деякі з них часто використовуються: cp, mv, mkdir, rm та rmdir. Ці інструменти в поєднанні з шаблонами пошуку дозволяють користувачам дуже швидко виконувати велику кількість роботи.

Багато команд мають опцію -i, яка виводить вам підказку, перш ніж щось робити. Підказка допоможе запобігти проблем, якщо ви щось неправильно ввели.

Багато команд мають опцію -r. Параметр -r зазвичай означає рекурсію. У математиці та інформатиці рекурсивна функція — це функція, яка використовує саму себе у своєму визначенні. Коли справа доходить до інструментів командного рядка, це зазвичай означає застосування команди до каталогу та всього, що знаходиться в ньому.

Команди, які використовувалися в цьому уроці:

cat

Прочитати та вивести вміст файлу.

cp

Скопіювати файли або каталоги.

echo

Вивести рядок.

find

Перехід по дереву файлової системи та пошук файлів, які відповідають певному набору критеріїв.

ls

Показати властивості файлів і каталогів і перелік вмісту каталогу.

mkdir

Створити нові каталоги.

mv

Перемістити або перейменувати файли або каталоги.

pwd

Вивести поточний робочий каталог.

rm

Видалити файли або каталоги.

rmdir

Видалити каталоги.

touch

Створити нові порожні файли або оновити мітку часу зміни існуючого файлу.

Відповіді до вправ посібника

  1. Враховуючи скріншот нижче, виберіть каталоги, які будуть створені за допомогою команди mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today

    $ pwd
    /tmp
    $ find
    .
    ./outfiles
    ./outfiles/text

    Відзначені каталоги будуть створені. Каталоги /tmp, /tmp/outfiles та /tmp/outfiles/text вже існують, тому mkdir ігноруватиме їх.

    /tmp

    /tmp/outfiles

    /tmp/outfiles/text

    /tmp/outfiles/text/today

    X

    /tmp/infiles

    X

    /tmp/infiles/text

    X

    /tmp/infiles/text/today

    X

  2. Що робить -v для mkdir, rm та cp?

    Зазвичай -v вмикає докладне виведення. Це змушує відповідні програми виводити те, що вони роблять, коли вони це роблять:

    $ rm -v a b
    removed 'a'
    removed 'b'
    $ mv -v a b
    'a' -> 'b'
    $ cp -v b c
    'b' -> 'c'
  3. Що станеться, якщо ви випадково спробуєте скопіювати три файли з одного командного рядка в уже існуючий файл замість каталогу?

    cp відмовиться робити будь-що і виведе повідомлення про помилку:

    $ touch a b c d
    $ cp a b c d
    cp: target 'd' is not a directory
  4. Що відбувається, коли ви використовуєте mv для переміщення каталогу в нього самого?

    Ви отримаєте повідомлення про помилку, що mv не може цього зробити.

    $ mv a a
    mv: cannot move 'a' to a subdirectory of itself, 'a/a'
  5. Як би ви видалили всі файли у вашому поточному каталозі, які починаються на old?

    Вам треба використати glob old* з rm:

    $ rm old*
  6. Якому з наведених нижче файлів відповідатиме log_[a-z]_201?_*_01.txt?

    log_3_2017_Jan_01.txt

    log_+_2017_Feb_01.txt

    log_b_2007_Mar_01.txt

    log_f_201A_Wednesday_01.txt

    X

    $ ls log_[a-z]_201?_*_01.txt
    log_f_201A_Wednesday_01.txt

    log_[a-z] відповідає log_, за яким слідує будь-яка маленька літера, тож і log_f_201A_Wednesday_01.txt, і log_b_2007_Mar_01.txt відповідають. _201? відповідає будь-якому окремому символу, тому відповідає лише log_f_201A_Wednesday_01.txt. Нарешті, *_01.txt відповідає всьому, що закінчується на _01.txt, тому нашому вибору цей параметр також відповідає.

  7. Створіть кілька шаблонів, щоб відповідати наступному списку імен файлів:

    doc100
    doc200
    doc301
    doc401

    Є кілька рішень. Ось деякі з них:

    doc*
    doc[1-4]*
    doc?0?
    doc[1-4]0?

Відповіді до дослідницьких вправ

  1. Використовуйте man-сторінку команди cp, щоб дізнатися, як зробити копію файлу так, щоб дозволи та час зміни відповідали оригіналу.

    Ви можете використати параметр -p. Витяг зі сторінки man:

    $ man cp
    -p     same as --preserve=mode,ownership,timestamps
    --preserve[=ATTR_LIST]
                  preserve the specified attributes (default: mode,ownership,time‐
                  stamps), if  possible  additional  attributes:  context,  links,
                  xattr, all
  2. Що робить команда rmdir -p? Поекспериментуйте з нею і поясніть, чим вона відрізняється від rm -r.

    Це змушує rmdir вести себе подібно до mkdir -p. Якщо передане дерево порожніх каталогів, вони будуть видалені всі.

    $ find
    .
    ./a
    ./a/b
    ./a/b/c
    $ rmdir -p a/b/c
    $ ls
  3. НЕ ВИКОНУЙТЕ ЦЮ КОМАНДУ: що, на вашу думку, буде робити rm -ri /*? (СПРАВДІ, НЕ НАМАГАЙТЕСЯ ЦЕ ЗРОБИТИ!)

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

  4. Крім використання -i, чи є ще спосіб запобігти перезапису цільових файлів mv?

    Так, параметр -n або --no-clobber запобігає перезапису файлів mv.

    $ cat a
    a
    $ cat b
    b
    $ mv -n a b
    $ cat b
    b
  5. Explain cp -u.

    The -u option causes cp to only copy a file if the destination is missing or is older than the source file.

    $ ls -l
    total 24K
    drwxr-xr-x 123 emma student  12K Feb  2 05:34 ..
    drwxr-xr-x   2 emma student 4.0K Feb  2 06:56 .
    -rw-r--r--   1 emma student    2 Feb  2 06:56 a
    -rw-r--r--   1 emma student    2 Feb  2 07:00 b
    $ cat a
    a
    $ cat b
    b
    $ cp -u a b
    $ cat b
    b
    $ cp -u a c
    $ ls -l
    total 12
    -rw-r--r-- 1 emma student 2 Feb  2 06:56 a
    -rw-r--r-- 1 emma student 2 Feb  2 07:00 b
    -rw-r--r-- 1 emma student 2 Feb  2 07:00 c

Linux Professional Institute Inc. Всі права захищені. Відвідайте веб-сайт навчальних матеріалів: https://learning.lpi.org
Ця робота ліцензована відповідно до міжнародної ліцензії Creative Commons Attribution-некомерційна-NoDerivatives 4.0.

Наступний Урок

3.1 Архівація файлів через командний рядок (3.1 Урок 1)

Прочитайте наступний урок

Linux Professional Institute Inc. Всі права захищені. Відвідайте веб-сайт навчальних матеріалів: https://learning.lpi.org
Ця робота ліцензована відповідно до міжнародної ліцензії Creative Commons Attribution-некомерційна-NoDerivatives 4.0.

LPI є некомерційною організацією.

© 2023 Linux Professional Institute (LPI) - це глобальний стандарт сертифікації та організація підтримки кар'єри для професіоналів з відкритим вихідним кодом. Маючи понад 200 000 власників сертифікатів, це перший і найбільший в світі незалежний від постачальників орган з сертифікації Linux і з відкритим вихідним кодом. LPI має сертифікованих фахівців в більш ніж 180 країнах, здає іспити на декількох мовах і має сотні партнерів по навчанню.

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

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Зв'яжіться з нами
  • Політика конфіденційності та Cookie-файлів

Помітили помилку або хочете допомогти поліпшити цю сторінку? Просимо дайте нам знати.

© 1999–2023 Linux Professional Institute Inc. Всі права захищені.