- •II. First steps on the command line
- •5. Man pages
- •6. Working with directories (работа с папками)
- •7.Working with files
- •8. Working with file contents
- •9. The Linux file tree
- •III. Shell expansion
- •10. Commands and arguments
- •11. Control operators
- •12. Variables
- •13. Shell history
- •14. File globbing
- •IV. Pipes and commands
- •Глава 16. Фильтры.
- •16.3 Grep
- •16.7. Sort
- •16.8. Uniq
- •16.9. Comm
- •16.12. Примеры пайпов
- •Глава 17. Основные инструменты Unix
- •17.1. Find
- •17.2. Размещение
- •17.3. Date
- •17.5. Sleep
- •17.6. Time
- •17.7. Gzip - gunzip
- •17.8. Zcat - zmore
- •18.3. Замена и удаление символов (r X X)
- •18.4. Отменить и повторить (u .)
- •18.5. Вырезать, копировать и вставить строчки (dd yy p p)
- •18.6. Вырезать, копировать и вставить строчки (3dd 2yy)
- •18.8. Объединения двух и более линий (j)
- •18.9. Слова (w b)
- •18.10. Сохранить (или нет) и выход (:w :q :q! )
- •18.11. Поиск (/ ?)
- •18.13. Чтение файлов (:r :r !cmd)
- •19.1. Предпосылки
- •19.2. Hello World
- •19.4. Комментарии
- •20.2. Если, затем, иначе (if then else)
- •20.3. If then elif
- •20.4. For loop
- •20.5. While loop
- •21.2. Shift through parameters.
- •21.3. Runtime input.
- •21.3. Sourcing a config file.
- •21.5. Get script options with getopts.
- •21.6. Get shell options with shopt.
- •Глава 22 More scripting.
- •22.1. Eval.
- •22.4. Case.
- •22.5. Shell functions.
- •Раздел VII. Local user management. Глава 23. Users.
- •23.1. Identify yourself.
- •23.2. Users.
- •23.3. Passwords.
- •23.4 Home directories
- •23.5 User shell
- •23.6. Switcj users with su
- •23.7 Run a program as another user
- •23.10 Shell environment
- •Глава 24. Groups
- •24.1 About groups
- •24.2 Groupadd
- •24.3 /Etc/group
- •24.4 Usermod
- •24.5 Groupmod
- •24.6 Groupdel
- •24.7 Groups
- •24.8 Gpasswd
- •24.9 Vigr
8. Working with file contents
head – для просмотра первых 10 строчек файла. Можно так же показать первые n строчек файла (прим: head -4 /etc/passwd)
tail – аналогично для head, показывает последние 10 строк файла. Также можно задать, сколько строк (n) показывать.
cat – одно из наиболее универсальных устройств. Все, что он делает, это копирует информацию со стандартного входа в стандартный выход. В комбинации с shell, может быть весьма сильным и разносторонним. Некоторые примеры дадут беглый взгляд на его возможности. Первый пример простой, вы можете использовать cat для вывода файла на экран. Если файл больше, чем экран, то содержимое будет прокручено в конец.
paul@laika:~$ cat /etc/resolv.conf
nameserver 194.7.1.4
paul@laika:~$
cat – сокращение от concatenate, т.е. сцеплять. Одно из стандартных использований – соединение файлов в бОльшие (завершенные) файлы.
paul@laika:~$ echo one > part1
paul@laika:~$ echo two > part2
paul@laika:~$ echo three > part3
paul@laika:~$ cat part1 part2 part3
one
two
three
paul@laika:~$
Вы можете использовать cat для создания текстовых файлов. Напечатайте cat > winter.txt, как в примере внизу. Потом наберите одну или больше строк, заканчивая каждую строку нажатием Enter’а. После последней строчки нажмите Ctrl+D (это пошлет EOF (End Of File), чтобы завершить работу команды cat).
paul@laika:~/test$ cat > winter.txt
It is very cold today!
paul@laika:~/test$ cat winter.txt
It is very cold today!
paul@laika:~/test$
Вы можете самостоятельно задать маркер завершения с помощью <<, как показано в примере. Эта конструкция называется here directive и она завершит команду cat.
paul@laika:~/test$ cat > hot.txt <<stop
> It is hot today!
> Yes it is summer.
> stop
paul@laika:~/test$ cat hot.txt
It is hot today!
Yes it is summer.
paul@laika:~/test$
В третьем примере вы увидите, что cat можно использовать для копирования файлов. Детальное объяснение происходящего будет в главе о bash shell.
paul@laika:~/test$ cat winter.txt
It is very cold today!
paul@laika:~/test$ cat winter.txt > cold.txt
paul@laika:~/test$ cat cold.txt
It is very cold today!
paul@laika:~/test$
Только один пример покажет вам цель tac (как противоположность cat).
paul@laika:~/test$ cat count
one
two
three
four
paul@laika:~/test$ tac count
four
three
two
one
paul@laika:~/test$
more – эта команда полезна для отображения файлов, которые занимают больше одного экрана. More позволит вам постранично увидеть содержимое файла, используйте пробел, для перемещения к след. странице. Less - команда аналогичная more, только листает из конца в начало.
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
...
9. The Linux file tree
Множество дистрибутивов Linux частично следует Иерархическому Стандарту Файловой системы (Filesystem Hierarchy Standard – FHS). Есть некоторые различия в файловых системах в разных дистрибутивах Линукс. Чтобы узнать, что стоит в вашей машине, используйте man hier. Этот мануал объяснит структуру папок в вашем компьютере.
Все системы линукс имеют структуру папок, которая начинается в корневом каталоге (root direcory). Он представлен прямым слешем: / . Все, что существует в вашем компьютере может быть найдено ниже root’а. Кратко рассмотрим содержимое:
[paul@RHELv4u3 ~]$ ls /
bin dev home media mnt proc sbin srv tftpboot usr
boot etc lib misc opt root selinux sys tmp var
Binary directories (далее бинарники). Бинарники это файлы, которые содержат полный исходный код (машинный код). Они могут быть выполнены на компьютере. Иногда бинарники называют исполняемыми файлами.
Папка /bin содержит бинарники, которые используются всеми пользователями. Следуя FHS, /bin должна содержать /bin/cat и /bin/date (помимо всего остального). Вы можете найти подпапку /bin во множестве других папок. Например, пользователь serena может поместить её собственные программы в /home/serena/bin. Некоторые приложения часто при установке напрямую из источника поместят себя в /opt. Установщик Samba server может использовать /opt/samba/bin, для хранения своих бинарников.
/sbin содержит бинарники для настройки операционной системы. Многие из системных бинарников (system binaries) требуют права root’а для выполнения определенных задач.
/lib содержит общие бинарники, которые используют бинарники расположенные в /bin и /sbin.
/lib/modules – обычно ядро Linux загружает модули ядра из /lib/modules/$kernelversion. Содержимое более подробно разобрано в статье о ядре Linux.
/lib32 и /lib64 – сейчас мы живем при переходе между 32-х и 64-х битными системами. Таким образом, вы можете столкнуться с этими папками, которые разъясняют размер регистра, использующийся во время компиляции библиотек. 64-битный компьютер может иметь некоторые 32-битные бинарники и библиотеки для совместимости с унаследованными приложениями. Пример показывает разницу:
paul@laika:~$ file /lib32/libc-2.5.so
/lib32/libc-2.5.so: ELF 32-bit LSB shared object, Intel 80386, \
version 1 (SYSV), for GNU/Linux 2.6.0, stripped
paul@laika:~$ file /lib64/libcap.so.1.10
/lib64/libcap.so.1.10: ELF 64-bit LSB shared object, AMD x86-64, \
version 1 (SYSV), stripped
Формат ELF (Executable and Linkable Format, Формат исполнимых и компонуемых модулей) используется почти в каждой Unix-подобной системе, начиная с System V.
/opt – здесь хранится дополнительное программное обеспечение. Во многих случаях это ПО не из распределяющего хранилища (distribution repository). Большие пакеты могут устанавливать все свои файлы в /bin, /lib, /etc внутри /opt/$packagename. То есть, например, если пакет называется wp, то он установится в /opt/wp, поместит свои бинарники в /opt/wp/bin, а мануалы в /opt/wp/man.
/boot – здесь хранятся все файлы, необходимые для запуска компьютера. Эти файлы нечасто меняются. В Linux системах вы обычно найдете /boot/grub, которая содержит /boot/grub/grub.cfg (в более старых системах это может быть /boot/grub/grub.conf), который определяет загрузочное меню, которое отображается до запуска ядра.
/etc – все машинно-зависимые конфигурационные файлы расположены тут. Исторически /etc было сокращением от etcetera (и так далее), сейчас люди чаще используют расшифровку Editable Text Configuration (настраиваемые текстовые конфигурации). В большинстве случаев название конфигурационных файлов совпадает с названиями приложений, демонов или протоколов, добавляется только расширение .conf.
/etc/init.d/ - Большинство Linux/Unix дистрибутивов имеет эту папку, которая содержит скрипты для запуска и остановки демонов (daemon, фоновых программ). Эта папка может исчезнуть при перемещении Linux на системы, которые заменяют старые, инициализирующие способы запуска всех демонов.
/etc/X11 – графический дисплей (так же известный как X Window System или просто X) управляемый ПО от фонда X.org. Файл конфигурации для вашего графического дисплея это /etc/X11/xorg.conf.
/etc/skel – скелет, который копируется в корневой каталог только что созданного пользователя. В ней обычно хранятся скрытые файлы, такие как скрипты .bashrc.
/etc/sysconfig – не упоминается в FHS, содержит большую часть конфигурационных файлов от Red Hat Enterprise Linux.
Директории данных
/home – пользовательская папка, в которой хранятся персональные данные или проекты. Обычная практика (но не обязательно по FHS) называть домашнюю папку пользователя по его имени в виде /home/$USERNAME. Помимо предоставления каждому пользователю (проекту или группе) места для хранения личных файлов, домашний каталог пользователя служит для хранения профиля пользователя. Обычный профиль пользователя Unix содержит множество скрытых файлов, которые содержат конкретные настройки для данного пользователя.
/root – в большинстве систем это стандартное место для персональных данных и профиля root-пользователя. Если по умолчанию её не существует, некоторые администраторы создают её.
/srv – папка для хранения данных, которые обслуживаются вашей системой (served by your system). FHS позволяет установку данных cvs, rsync, ftp и www в эту папку. Также FHS разрешает административно называть папки в /srv, как будет удобно.
/media – сюда устанавливаются все «убираемые» устройства хранения данных (removable media devices), такие как CD-ROM’ы, видеокамеры, и различные приспособления, подключаемые через USB. Так как /media является относительно новой в мире Unix, вы вполне можете столкнуться с системами, которые работают и без этого каталога.
/mnt - эта папка должна быть пустой, и должна использоваться только как временная точка для установки (согласно FHS). Unix и Linux администраторы нередко создают здесь множество папок. Скорее всего, вы столкнетесь с системами, которые имеют здесь множество подпапок, которые используются для различных локальных и удаленных файловых систем.
/tmp – здесь по необходимости хранятся временные данные. Данные, которые записаны в /tmp могут использовать дисковую или оперативную память, которые оба управляются операционной системой. Никогда не используйте /tmp для хранения важных данных, или тех данных, которые вы хотите сохранить.
директории памяти (in memory directories)
/dev – здесь хранятся файлы устройств, которые кажутся обычными файлами, но на самом деле они не расположены на жестком диске. Эта папка заполняется файлами, по мере того как ядро начинает «видеть» новое оборудование. Общее железо, такое как жесткие диски, представлено файлами устройств в папке /dev с названием sd* для SATA, SCSI или USB, и файлами hd* для IDE и ATAPI. Помимо представления физического аппаратного обеспечения, некоторые файлы устройств особенные. Они могут быть очень полезны.
/dev/tty и /dev/pts – например, /dev/tty1 представляет консоль, присоединенную к системе. Когда ввод команд происходит в окне терминала, которое является частью графического интерфейса, как у Gnome или KDE, тогда терминал будет представлен как /dev/pts/1 (в обоих случаях цифра может быть другой.)
/dev/null – одно из специальных устройств, может быть определено, как «черная дыра», она имеет неограниченный объем, но ничего не может быть извлечено из неё. Технически говоря, все, записанное сюда будет сброшено. Эта папка может быть полезной ля того, чтобы переправлять сюда все нежелательные выводы от команд.
/proc – еще одна специальная директория, файлы, хранящиеся здесь, представляются обычными, но не занимают места на диске. В целом, это вид на ядро, или, точнее, то чем ядро управляет, и оно служит для того, чтобы управлять ядром напрямую.
/usr – Unix System Resources. Иерархия этой директории должна содержать общие данные и данные, открытые только для чтения. Некоторые люди предпочитают установить /usr полностью в режим read only.
/usr/bin – здесь хранятся сами команды.
/usr/include – основные используемые подключаемые файлы для Си.
/usr/lib – библиотеки, которые выполняются не напрямую пользователями или скриптами.
/usr/local – может использоваться администратором, для локальной установки ПО
/usr/share – архитектурно независимые данные. Например, здесь нередко содержится /usr/share/man – для мануалов, или /usr/share/games для всей неизменной игровой информации (никакой информации об очках или историй игр.)
/usr/src – рекомендуемая директория для расположения исходных файлов ядра.
/var – переменные данные (variable data) – для всех файлов, имеющих неопределенный размер, таких как истории сообщений (логи), кэш и файлы очереди (spool files).
/var/log – все логи.
/var/log/messages – для Red Hat (и производных) – в этом файле содержится информация о том, что только что произошло с системой. Для Debian и Ubuntu это /var/log/syslog
/var/cache – кэш для некоторых приложений.
/var/spool – содержит информацию об очередях для писем и cron, но также может быть родительской директорией для других файлов очередей, например файла очереди печати.
/var/lib – информация о состоянии приложения.
/var/… - в папке var также хранятся файлы ID для процессов в /var/run и временные файлы, которые помогают восстановиться после перезагрузки в /var/tmp, а также информация о блокировке файлов в /var/lock.