Главная страница

26лек ОСиС. Команды создания, удаления, редактирования файлов и каталогов


Скачать 44.68 Kb.
НазваниеКоманды создания, удаления, редактирования файлов и каталогов
Дата13.01.2023
Размер44.68 Kb.
Формат файлаdocx
Имя файла26лек ОСиС.docx
ТипЛекция
#885537


ТЕМА: Команды создания, удаления, редактирования файлов и каталогов

ТИП: лекция

ЦЕЛИ :

Учебная :

  • Изучить команды для работы с файлами и каталогами ;

  • Уметь использовать команды для работы с файлами и катологами;

Развивая :

  • • развивать логическое мышление , внимание , память ;

  • • развивать кругозор .

Воспитательная :

• развивать познавательный интерес к предмету.

Структура занятия

1 . Организационный момент ( 3 мин )

2 . Сообщения темы , цели занятия ( 5 мин )

3 . Актуализация знаний ( 15 мин )

4 . Выдача теоретического материала ( 30 мин )

5 . Проверка полученных знаний ( 10 мин )

6 . Подведение итогов , выставление оценок ( 5 мин )

7 . Выдача домашнего задания ( 2 мин )

Литература.

  1. БатаевА.В. Операционные системы и среды : учебник для студ. учреждений сред. проф. образования / А. В. Батаев, Н. Ю. Налютин, С. В. Синицын. - М. : Издательский центр «ДХаде­мия», 2014. - 272 с.

  2. Иртеrов Д. В. Введение в операционные системы. ­ 2-е изд., перераб. и доп. ­ СПб.: БХВ..Петербурr, 2008. ­ 1040 с.

  3. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд. — СПб.: Питер, 2015. — 1120 с.


Оглавление


Работа с файлами 2

Утилита file 3

Утилита touch 3

Утилита rm 4

Утилита cp 5

Утилита mv 6

Утилита rename 7

Работа с директориями 8

Команда pwd 8

Команда cd 9

Абсолютные и относительные пути 10

Завершение путей 11

Утилита ls 11

Утилита mkdir 13

Утилита rmdir 14

Работа с содержимым файлов 14

Утилита head 14

Утилита tail 15

Утилита cat 15

Утилита tac 17

Утилиты more и less 17

Утилита strings 17

Работа с файлами


Имена файлов в Linux (или в любой системе Unix) являются регистрозависимыми. Это означает, что имена FILE1 и file1 не являются равноценными, а путь к файлу /etc/hosts отличен от пути к файлу /etc/Hosts (последнего файла не должно существовать в файловой системе типичного компьютера, работающего под управлением Linux).

В данном примере продемонстрировано различие между двумя файлами, причем имя первого файла начинается с заглавной буквы W, а второго - с прописной буквы w.

paul@laika:/Linux$ ls

winter.txt Winter.txt

paul@laika:/Linux$ cat winter.txt

Холодно.

paul@laika:/Linux$ cat Winter.txt

Очень холодно!

Любая директория на самом деле является файлом (с регистрозависмым именем!), хотя этот файл и имеет специальный тип. Каждый терминал (например, /dev/pts/4), любой жесткий диск или раздел на нем (например, /dev/sdb1) и любой процесс представлены где-либо в рамках файловой системы с помощью файла. После изучения данной главы у вас не останется сомнений в том, что в Linux все является файлом.

Утилита file


Утилита file предназначена для определения типа файла. В Linux для определения типов файлов не используются их расширения. Для инструментов с интерфейсом командной строки абсолютно безразлично, оканчивается ли имя файла на .txt или на .pdf. Исполняя обязанности системного администратора, вы должны использовать команду file для установления типа интересующего вас файла. Ниже приведено несколько примеров использования данной утилиты при работе с типичной системой Linux.

paul@laika:$ file pic33.png

pic33.png: PNG image data, 3840 x 1200, 8-bit/color RGBA, non-interlaced

paul@laika:$ file /etc/passwd

/etc/passwd: ASCII text

paul@laika:$ file HelloWorld.c

HelloWorld.c: ASCII C program text

Утилита file использует файл со списком "магических последовательностей байт", содержащий шаблоны для распознавания типов данных. Файл со списком "магических последовательностей байт" расположен по пути /usr/share/file/magic. Используйте команду man 5 magic в случае необходимости получения дополнительной информации о нем.

Важно отметить, что для работы с такими специальными файлами, как файлы из директорий /dev и /proc, следует использовать команду file -s.

root@debian6# file /dev/sda

/dev/sda: block special

root@debian6# file -s /dev/sda

/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead...

root@debian6# file /proc/cpuinfo

/proc/cpuinfo: empty

root@debian6# file -s /proc/cpuinfo

/proc/cpuinfo: ASCII C++ program text

Утилита touch


Создание пустого файла

Один из простых способов создания пустого фала заключается в использовании утилиты touch. (Позднее в данной книге мы рассмотрим множество других способов создания файлов.)

Данный пример начинается с открытия пустой директории, в которой с помощью утилиты touch создаются два файла, после чего выводится список созданных файлов.

paul@debian7:$ ls -l

итого 0

paul@debian7:$ touch file42

paul@debian7:$ touch file33

paul@debian7:$ ls -l

итого 0

-rw-r--r-- 1 paul paul 0 окт 15 08:57 file33

-rw-r--r-- 1 paul paul 0 окт 15 08:56 file42

paul@debian7:$

Команда touch -t

Утилита touch позволяет устанавливать набор значений свойств пустых файлов в процессе их создания. Удастся ли вам определить, какие значения свойств были установлены, ознакомившись с приведенным ниже примером? Если вы не смогли разобраться самостоятельно, обратитесь к странице руководства для утилиты touch.

paul@debian7:$ touch -t 200505050000 SinkoDeMayo

paul@debian7:$ touch -t 130207111630 BigBattle.txt

paul@debian7:$ ls -l

total 0

-rw-r--r-- 1 paul paul 0 июл 11 1302 BigBattle.txt

-rw-r--r-- 1 paul paul 0 окт 15 08:57 file33

-rw-r--r-- 1 paul paul 0 окт 15 08:56 file42

-rw-r--r-- 1 paul paul 0 май 5 2005 SinkoDeMayo

paul@debian7:$

Утилита rm


Удаление файлов навсегда

В том случае, если вам больше не нужен файл, следует использовать утилиту rm для его удаления. В отличие от некоторых графических пользовательских интерфейсов, интерфейс командной строки системы не предполагает использования таких хранилищ файлов, как корзина, предназначенных для последующего восстановления удаленных файлов. Если вы удалили файл с помощью утилиты rm, этот файл будет удален навсегда. Исходя из этого, следует проявлять осторожность при удалении файлов!

paul@debian7:$ ls

BigBattle.txt file33 file42 SinkoDeMayo

paul@debian7:$ rm BigBattle.txt

paul@debian7:$ ls

file33 file42 SinkoDeMayo

paul@debian7:$

Команда rm -i

Для того, чтобы застраховаться от случайного удаления файла, вы можете использовать команду rm -i.

paul@debian7:$ ls

file33 file42 SinkoDeMayo

paul@debian7:$ rm -i file33

rm: удалить пустой обычный файл "file33"? yes

paul@debian7:$ rm -i SinkoDeMayo

rm: удалить пустой обычный файл "SinkoDeMayo"? n

paul@debian7:$ ls

file42 SinkoDeMayo

paul@debian7:$

Команда rm -rf

По умолчанию с помощью команды rm -r невозможно удалить непустые директории. Однако, утилита rm принимает параметры, которые позволят вам удалять любую директорию. Команда rm -rf известна благодаря тому, что она позволяет удалять все элементы файловой системы (конечно же, в том случае, если вы имеете достаточные права для выполнения этой операции). В том случае, если вы вошли в систему, воспользовавшись учетной записью пользователя root, следует проявить особую осторожность при использовании команды rm -rf (параметр f расшифровывается как force (принудительное выполнение операции), а параметр r - как recursive (рекурсивный обход директорий)), так как в случае работы с учетной записью пользователя root, упомянутые ограничения прав не будут распространяться на вас. Вы сможете в буквальном смысле удалить все файлы вашей системы по неосторожности.

paul@debian7:$ mkdir test

paul@debian7:$ rm test

rm: невозможно удалить "test": Это каталог

paul@debian7:$ rm -rf test

paul@debian7:$ ls test

ls: невозможно получить доступ к test: Нет такого файла или каталога

paul@debian7:$

Утилита cp


Копирование отдельных файлов

Для копирования файла следует использовать утилиту cp с аргументами, представленными путями к исходному и целевому файлам.

paul@debian7:$ ls

file42 SinkoDeMayo

paul@debian7:$ cp file42 file42.copy

paul@debian7:$ ls

file42 file42.copy SinkoDeMayo

Копирование файлов в другую директорию

В том случае, если в качестве пути к целевому файлу используется путь к директории, исходные файлы будут скопированы в эту целевую директорию.

paul@debian7:$ mkdir dir42

paul@debian7:$ cp SinkoDeMayo dir42

paul@debian7:$ ls dir42/

SinkoDeMayo

Команда cp -r

Для копирования директорий целиком следует использовать команду cp -r (параметр -r позволяет осуществлять рекурсивное копирование всех файлов из всех поддиректорий).

paul@debian7:$ ls

dir42 file42 file42.copy SinkoDeMayo

paul@debian7:$ cp -r dir42/ dir33

paul@debian7:$ ls

dir33 dir42 file42 file42.copy SinkoDeMayo

paul@debian7:$ ls dir33/

SinkoDeMayo

Копирование множества файлов в директорию

Вы также можете использовать утилиту cp для копирования множества файлов в одну директорию. В этом случае последний аргумент (аргумент, указывающий на цель) должен быть представлен путем к директории.

paul@debian7:$ cp file42 file42.copy SinkoDeMayo dir42/

paul@debian7:$ ls dir42/

file42 file42.copy SinkoDeMayo

Команда cp -i

Для предотвращения перезаписи существующих файлов в ходе использования утилиты cp следует использовать параметр -i (для активации интерактивного режима копирования).

paul@debian7:$ cp SinkoDeMayo file42

paul@debian7:$ cp SinkoDeMayo file42

paul@debian7:$ cp -i SinkoDeMayo file42

cp: переписать "file42"? n

paul@debian7:$

Утилита mv


Переименование файлов с помощью утилиты mv

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

paul@debian7:$ ls

dir33 dir42 file42 file42.copy SinkoDeMayo

paul@debian7:$ mv file42 file33

paul@debian7:$ ls

dir33 dir42 file33 file42.copy SinkoDeMayo

paul@debian7:$

В том случае, если вам необходимо переименовать один файл, утилита mv является предпочтительным инструментом.

Переименование директорий с помощью утилиты mv

Эта же утилита mv может быть использована и для переименования директорий.

paul@debian7:$ ls -l

итого 8

drwxr-xr-x 2 paul paul 4096 окт 15 09:36 dir33

drwxr-xr-x 2 paul paul 4096 окт 15 09:36 dir42

-rw-r--r-- 1 paul paul 0 окт 15 09:38 file33

-rw-r--r-- 1 paul paul 0 окт 15 09:16 file42.copy

-rw-r--r-- 1 paul paul 0 май 5 2005 SinkoDeMayo

paul@debian7:$ mv dir33 backup

paul@debian7:$ ls -l

итого 8

drwxr-xr-x 2 paul paul 4096 окт 15 09:36 backup

drwxr-xr-x 2 paul paul 4096 окт 15 09:36 dir42

-rw-r--r-- 1 paul paul 0 окт 15 09:38 file33

-rw-r--r-- 1 paul paul 0 окт 15 09:16 file42.copy

-rw-r--r-- 1 paul paul 0 май 5 2005 SinkoDeMayo

paul@debian7:$

Команда mv -i

Утилита mv поддерживает параметр -i по аналогии с утилитами cp и rm.

В примере ниже показано, как при использовании команды mv -i запрашивается подтверждение перезаписи существующего файла.

paul@debian7:$ mv -i file33 SinkoDeMayo

mv: переписать "SinkoDeMayo"? no

paul@debian7:$

Утилита rename


Об утилите rename

Утилита rename в дистрибутиве Debian/Ubuntu

Утилита rename в дистрибутиве Debian имеет сложный синтаксис (используются регулярные выражения) для единовременного переименования множества файлов.

Ниже приведен пример использования утилиты rename, с помощью которой у всех файлов с расширением .txt производится замена расширения на .png.

paul@debian7:/test42$ ls

abc.txt file33.txt file42.txt

paul@debian7:/test42$ rename 's/\.txt/\.png/' *.txt

paul@debian7:/test42$ ls

abc.png file33.png file42.png

Во втором примере производится замена всех (первых) вхождений слов "file" на "document" во всех файлах с расширением .png.

paul@debian7:/test42$ ls

abc.png file33.png file42.png

paul@debian7:/test42$ rename 's/file/document/' *.png

paul@debian7:/test42$ ls

abc.png document33.png document42.png

paul@debian7:/test42$

Утилита rename в дистрибутиве CentOS/RHEL/Fedora

В Red Hat Enterprise Linux синтаксис утилиты rename немного отличается. В первом примере, представленном ниже, осуществляется переименование всех файлов с расширением .conf (*.conf) путем замены всех вхождений .conf на .backup.

[paul@centos7 ]$ touch one.conf two.conf three.conf

[paul@centos7 ]$ rename .conf .backup *.conf

[paul@centos7 ]$ ls

one.backup three.backup two.backup

[paul@centos7 ]$

Во втором примере производится переименование всех файлов (*) путем замены всех вхождений one на ONE.

[paul@centos7 ]$ ls

one.backup three.backup two.backup

[paul@centos7 ]$ rename one ONE *

[paul@centos7 ]$ ls

ONE.backup three.backup two.backup

[paul@centos7 ]$

Работа с директориями


В данной главе приводится краткий обзор большинства стандартных команд, используемых при работе с директориями: pwd, cd, ls, mkdir и rmdir. Эти команды доступны при работе с любой системой Linux (или Unix).

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

Команда pwd


С помощью команды pwd (расшифровывается как Print Working Directory - вывести информацию о рабочей директории) может быть получена информация о вашем текущем местонахождении в рамках файловой системы. Попробуйте выполнить эту команду: получите доступ к интерфейсу командной строки системы (воспользовавшись одним из приложений со следующими названиями: terminal, console или xterm) и введите команду pwd. Командная оболочка выведет путь к вашей текущей директории.

paul@debian8:$ pwd

/home/paul

Команда cd


Вы можете изменить вашу текущую директорию с помощью команды cd (расшифровывается как Change Directory - изменить директорию).

paul@debian8$ cd /etc

paul@debian8$ pwd

/etc

paul@debian8$ cd /bin

paul@debian8$ pwd

/bin

paul@debian8$ cd /home/paul/

paul@debian8$ pwd

/home/paul

Команда cd

Команда cd также может использоваться для быстрого перехода назад в вашу домашнюю директорию. Простое исполнение команды cd без задания пути к целевой директории приведет к перемещению в домашнюю директорию. Исполнение команды cd приведет к аналогичному эффекту.

paul@debian8$ cd /etc

paul@debian8$ pwd

/etc

paul@debian8$ cd

paul@debian8$ pwd

/home/paul

paul@debian8$ cd

paul@debian8$ pwd

/home/paul

Команда cd ..

Для перехода в родительскую директорию (ту директорию, которая находится над вашей текущей директорией в дереве директорий) следует использовать команду cd .. .

paul@debian8$ pwd

/usr/share/games

paul@debian8$ cd ..

paul@debian8$ pwd

/usr/share

Для того, чтобы остаться в текущей директории, просто введите команду cd . ;-) Позднее мы все же познакомимся с практическим примером использования символа ., представляющего текущую директорию.

Команда cd -

Другой полезный вариант использования команды cd заключается в выполнении простой команды cd - для перехода в предыдущую директорию.

paul@debian8$ pwd

/home/paul

paul@debian8$ cd /etc

paul@debian8$ pwd

/etc

paul@debian8$ cd -

/home/paul

paul@debian8$ cd -

/etc

Абсолютные и относительные пути


Вы должны иметь представление об абсолютных и относительных путях в рамках дерева директорий файловой системы. Если вы вводите путь, начинающийся с символа слэша (/), подразумевается, что путь будет указан относительно корневой директории файловой системы. Если же вы не начинаете ввод пути с символа слэша, подразумевается, что точкой отсчета будет текущая директория.

В примере ниже показано, что текущей директорией является директория /home/paul. Для перехода из этой директории в директорию /home вам придется ввести команду cd /home вместо команды cd home.

paul@debian8$ pwd

/home/paul

paul@debian8$ cd home

bash: cd: home: Нет такого файла или каталога

paul@debian8$ cd /home

paul@debian8$ pwd

/home

При нахождении в директории /home вам придется ввести команду cd paul вместо команды cd /paul для перехода в поддиректорию paul текущей директории /home.

paul@debian8$ pwd

/home

paul@debian8$ cd /paul

bash: cd: /paul: Нет такого файла или каталога

paul@debian8$ cd paul

paul@debian8$ pwd

/home/paul

В том же случае, если вашей текущей директорией является корневая директория /, то и команда cd /home, и команда cd home позволят вам переместиться в директорию /home.

paul@debian8$ pwd

/

paul@debian8$ cd home

paul@debian8$ pwd

/home

paul@debian8$ cd /

paul@debian8$ cd /home

paul@debian8$ pwd

/home

Этот пример был последним примером, в котором используются команды pwd. С этого момента информация о текущей директории будет всегда выводиться в рамках приглашения командной оболочки. Далее в данной книге будут даны пояснения относительно того, как следует использовать переменную командной оболочки $PS1 для вывода описанной информации.

Завершение путей


Клавиша TAB может помочь избежать ошибок при вводе путей. Нажатие клавиши TAB после ввода части команды cd /et приведет к завершению команды до вида cd /etc/. При этом нажатие клавиши TAB после ввода команды cd /Et не приведет ни к чему, так как была допущена ошибка при вводе части пути (использована буква E в верхнем регистре).

Вам придется нажимать меньше клавиш в случае использования клавиши TAB, к тому же, при использовании этой клавиши вы можете быть уверены в том, что введенный путь является корректным!

Утилита ls


Вы можете вывести список содержимого директории с помощью утилиты ls.

paul@debian8:$ ls

allfiles.txt dmesg.txt services stuff summer.txt

paul@debian8:$

Команда ls -a

Часто используемым параметром утилиты ls является параметр -a, который предназначен для вывода информации обо всех файлах. Под выводом информации обо всех файлах подразумевается вывод информации в том числе и о скрытых файлах. В том случае, если имя файла в рамках файловой системы Linux начинается с символа точки, он считается скрытым файлом и не включается в обычные списки содержимого директорий.

paul@debian8:$ ls

allfiles.txt dmesg.txt services stuff summer.txt

paul@debian8:$ ls -a

. allfiles.txt .bash_profile dmesg.txt .lesshst stuff

.. .bash_history .bashrc services .ssh summer.txt

paul@debian8:$

Команда ls -l

Вам придется многократно использовать параметры утилиты ls для вывода информации о содержимом директории в различных форматах или для вывода информации о различных файлах из директории. Команда ls без параметров позволяет получить список файлов, расположенных в директории. Команда ls -l (в качестве параметра использована строчная буква L, а не число 1) позволяет получить более подробный список файлов.

paul@debian8:$ ls -l

итого 17296

-rw-r--r-- 1 paul paul 17584442 сен 17 00:03 allfiles.txt

-rw-r--r-- 1 paul paul 96650 сен 17 00:03 dmesg.txt

-rw-r--r-- 1 paul paul 19558 сен 17 00:04 services

drwxr-xr-x 2 paul paul 4096 сен 17 00:04 stuff

-rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt

Команда ls -lh

Другим периодически используемым параметром утилиты ls является параметр -h. Он позволяет выводить числовые значения (соответствующие размерам файлов) в формате, лучше читаемом человеком. Также в примере ниже показаны варианты передачи параметров утилите ls. Позднее в данной книге будут даны подробные пояснения относительно выводимых данных.

Обратите внимание на то, что мы используем строчную букву L, а не число 1 в качестве параметра утилиты в данном примере.

paul@debian8:$ ls -l -h

итого 17M

-rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt

-rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt

-rw-r--r-- 1 paul paul 20K сен 17 00:04 services

drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff

-rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt

paul@debian8:$ ls -lh

итого 17M

-rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt

-rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt

-rw-r--r-- 1 paul paul 20K сен 17 00:04 services

drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff

-rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt

paul@debian8:$ ls -hl

итого 17M

-rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt

-rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt

-rw-r--r-- 1 paul paul 20K сен 17 00:04 services

drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff

-rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt

paul@debian8:$ ls -h -l

итого 17M

-rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt

-rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt

-rw-r--r-- 1 paul paul 20K сен 17 00:04 services

drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff

-rw-r--r-- 1 paul paul 0 Sep 17 00:04 summer.txt

paul@debian8:$

Утилита mkdir


Обход дерева директорий файловой системы Unix является интересным занятием, но еще больший интерес представляет создание ваших собственных директорий с помощью утилиты mkdir. Вам придется передавать как минимум один параметр утилите mkdir, а именно, имя новой директории, которая должна быть создана. При этом следует серьезно задумываться перед использованием начального символа / в именах директорий.

paul@debian8:$ mkdir mydir

paul@debian8:$ cd mydir

paul@debian8:/mydir$ ls -al

итого 8

drwxr-xr-x 2 paul paul 4096 сен 17 00:07 .

drwxr-xr-x 48 paul paul 4096 сен 17 00:07 ..

paul@debian8:/mydir$ mkdir stuff

paul@debian8:/mydir$ mkdir otherstuff

paul@debian8:/mydir$ ls -l

итого 8

drwxr-xr-x 2 paul paul 4096 сен 17 00:08 otherstuff

drwxr-xr-x 2 paul paul 4096 сен 17 00:08 stuff

paul@debian8:/mydir$

Команда mkdir -p

Исполнение следующей команды закончится неудачей, так как родительской директории для директории threedirsdeep не существует.

paul@debian8:$ mkdir mydir2/mysubdir2/threedirsdeep

mkdir: невозможно создать каталог "mydir2/mysubdir2/threedirsdeep": Нет такого файла или каталога

В случае использования параметра -p утилиты mkdir при необходимости будут создаваться родительские директории.

paul@debian8:$ mkdir -p mydir2/mysubdir2/threedirsdeep

paul@debian8:$ cd mydir2

paul@debian8:/mydir2$ ls -l

итого 4

drwxr-xr-x 3 paul paul 4096 сен 17 00:11 mysubdir2

paul@debian8:/mydir2$ cd mysubdir2

paul@debian8:/mydir2/mysubdir2$ ls -l

итого 4

drwxr-xr-x 2 paul paul 4096 сен 17 00:11 threedirsdeep

paul@debian8:/mydir2/mysubdir2$ cd threedirsdeep/

paul@debian8:/mydir2/mysubdir2/threedirsdeep$ pwd

/home/paul/mydir2/mysubdir2/threedirsdeep

Утилита rmdir


В том случае, если директория пуста, вы можете использовать утилиту rmdir для удаления этой директории.

paul@debian8:/mydir$ ls -l

итого 8

drwxr-xr-x 2 paul paul 4096 сен 17 00:08 otherstuff

drwxr-xr-x 2 paul paul 4096 сен 17 00:08 stuff

paul@debian8:/mydir$ rmdir otherstuff

paul@debian8:/mydir$ cd ..

paul@debian8:$ rmdir mydir

rmdir: не удалось удалить "mydir": Каталог не пуст

paul@debian8:$ rmdir mydir/stuff

paul@debian8:$ rmdir mydir

paul@debian8:$

Команда rmdir -p

И по аналогии с параметром mkdir -p, вы также можете использовать утилиту rmdir для рекурсивного удаления директорий.

paul@debian8:$ mkdir -p test42/subdir

paul@debian8:$ rmdir -p test42/subdir

paul@debian8:$

Работа с содержимым файлов

Утилита head


Вы можете использовать утилиту head для вывода первых десяти строк файла.

paul@laika:$ head /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

man:x:6:12:man:/var/cache/man:/bin/sh

lp:x:7:7:lp:/var/spool/lpd:/bin/sh

mail:x:8:8:mail:/var/mail:/bin/sh

news:x:9:9:news:/var/spool/news:/bin/sh

paul@laika:$

Утилита head также может использоваться для вывода первых n строк файла.

paul@laika:$ head -4 /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

Кроме того, утилита head может использоваться для вывода первых n байт файла.

paul@laika:$ head -c4 /etc/passwd

rootpaul@laika:$

Утилита tail


По аналогии с утилитой head, утилита tail может использоваться для вывода последних десяти строк файла.

paul@laika:$ tail /etc/services

vboxd 20012/udp

binkp 24554/tcp # binkp fidonet protocol

asp 27374/tcp # Address Search Protocol

asp 27374/udp

csync2 30865/tcp # cluster synchronization tool

dircproxy 57000/tcp # Detachable IRC Proxy

tfido 60177/tcp # fidonet EMSI over telnet

fido 60179/tcp # fidonet EMSI over TCP
# Local services

paul@laika:$

Вы можете передать утилите tail число, соответствующее количеству строк, которое вы хотите увидеть в выводе.

$ tail -3 count.txt

шесть

семь

восемь

Утилита tail поддерживает и другие полезные параметры, причем некоторые из них мы будем использовать в рамках данного курса.

Утилита cat


Утилита cat является одним из наиболее универсальных инструментов операционной системы. Все, что она делает - это копирует данные из стандартного потока ввода в стандартный поток вывода. Данная утилита в комбинации с командной оболочкой позволяет реализовать мощные и разнообразные механизмы обработки данных. Воспользуемся примерами для иллюстрации этих механизмов. Первый пример является достаточно простым и вы можете использовать рассмотренную в нем команду в повседневной работе для вывода содержимого файла на экран. В том случае, если данные из файла не умещаются на экране, будет осуществлена прокрутка до конца файла.

paul@laika:$ cat /etc/resolv.conf

nameserver 194.7.1.4

paul@laika:$

Объединение файлов

Имя утилиты cat является сокращенной формой слова concatenate (объединить). Одним из наиболее простых сценариев использования данной утилиты является объединение файлов в рамках файла большего объема (или полного файла).

paul@laika:$ echo один > part1

paul@laika:$ echo два > part2

paul@laika:$ echo три > part3

paul@laika:$ cat part1 part2 part3

один

два

три

paul@laika:$

Создание файлов

Также вы можете использовать утилиту cat для создания текстовых файлов. Введите команду cat > winter.txt, приведенную в примере ниже. После этого введите одну строку или несколько строк текста, завершая ввод каждой из строк нажатием клавиши Enter. После ввода последней строки текста нажмите и удерживайте клавишу Ctrl и одновременно с этим кратковременно нажмите клавишу d.

paul@laika:/test$ cat > winter.txt

Сегодня очень холодно!

paul@laika:/test$ cat winter.txt

Сегодня очень холодно!

paul@laika:/test$

Комбинация клавиш Ctrl+d позволяет передать исполняющемуся процессу символ окончания файла (End of File - EOF), что приведет приведет к завершению исполнения процесса cat.

Специальный маркер окончания файла

Вы можете установить специальный маркер окончания файла для утилиты cat с помощью параметра << таким образом, как показано в примере. Данная конструкция называется локальной директивой (here directive) и позволяет завершать работу процесса cat.

paul@laika:/test$ cat > hot.txt <
> Сегодня жарко!

> Да, это лето.

> stop

paul@laika:/test$ cat hot.txt

Сегодня жарко!

Да, это лето.

paul@laika:/test$

Копирование файлов

При рассмотрении третьего примера вы можете обнаружить, что утилита cat также может использоваться для копирования файлов. Подробные пояснения относительно происходящих в этом случае процессов будут даны в главе, посвященной командной оболочке bash.

paul@laika:/test$ cat winter.txt

Сегодня очень холодно!

paul@laika:/test$ cat winter.txt > cold.txt

paul@laika:/test$ cat cold.txt

Сегодня очень холодно!

paul@laika:/test$

Утилита tac


Предназначение утилиты tac (в отличие от утилиты cat) может быть проиллюстрировано с помощью единственного примера.

paul@laika:/test$ cat count

один

два

три

четыре

paul@laika:/test$ tac count

четыре

три

два

один

paul@laika:/test$

Утилиты more и less


Утилита more может оказаться полезной в случае возникновения необходимости вывода содержимого файлов, которое не умещается на экране. Утилита more позволяет ознакомится с содержимым файла, разделенным на страницы. После открытия файла с использованием данной утилиты следует использовать клавишу "пробел" для перехода к следующей странице или клавишу q для выхода из режима просмотра содержимого файла. Некоторые пользователи предпочитают использовать утилиту less вместо утилиты more.

Утилита strings


С помощью утилиты strings вы можете осуществить вывод читаемых человеком ascii-строк, которые обнаруживаются в бинарных файлах. В приведенном ниже примере выясняется путь к бинарному файлу ls, после чего осуществляется вывод читаемых пользователем строк из этого бинарного файла (вывод сокращен).

paul@laika:$ which ls

/bin/ls

paul@laika:$ strings /bin/ls

/lib/ld-linux.so.2

librt.so.1

__gmon_start__

_Jv_RegisterClasses

clock_gettime

libacl.so.1

...


написать администратору сайта