|
26лек ОСиС. Команды создания, удаления, редактирования файлов и каталогов
ТЕМА: Команды создания, удаления, редактирования файлов и каталогов
ТИП: лекция
ЦЕЛИ :
Учебная :
Изучить команды для работы с файлами и каталогами ; Уметь использовать команды для работы с файлами и катологами;
Развивая :
• развивать логическое мышление , внимание , память ; • развивать кругозор .
Воспитательная :
• развивать познавательный интерес к предмету.
Структура занятия
1 . Организационный момент ( 3 мин )
2 . Сообщения темы , цели занятия ( 5 мин )
3 . Актуализация знаний ( 15 мин )
4 . Выдача теоретического материала ( 30 мин )
5 . Проверка полученных знаний ( 10 мин )
6 . Подведение итогов , выставление оценок ( 5 мин )
7 . Выдача домашнего задания ( 2 мин )
Литература.
БатаевА.В. Операционные системы и среды : учебник для студ. учреждений сред. проф. образования / А. В. Батаев, Н. Ю. Налютин, С. В. Синицын. - М. : Издательский центр «ДХадемия», 2014. - 272 с. Иртеrов Д. В. Введение в операционные системы. 2-е изд., перераб. и доп. СПб.: БХВ..Петербурr, 2008. 1040 с. Таненбаум Э., Бос Х. Современные операционные системы. 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
... |
|
|