|
Краткий справочник по linux
Содержание
Типы файлов
Права доступа
Команды для работы с файлами и каталогами
Команды архивирования файлов
Создание и монтирование файловых систем
Оболочка bash
-
Типы файлов
- файлы физических устройств
-
именованные каналы или буферы FIFO (named pipes)
mkfifo test_fifo
- гнезда (sockets)
-
символические ссылки (symlinks)
ln -s откуда куда
Наверх
-
Права доступа
Пример
admhome@serv-admhome:~$ ls -la start_icecast2.sh
-rwxrw-r-- 1 admhome admhome 53 окт. 9 2010 start_icecast2.sh
Расшифровка первого символа в правах доступа
- - = обычный файл
- d = каталог
- b = файл блочного устройства
- c = файл символьного устройства
- s = доменное гнездо (socket)
- p = именованный канал (pipe)
- l = символическая ссылка (link)
Далее 3 группы по три символа - это права на владельца, группу и всех остальных соответственно. Для изменения прав есть команда chmod. Её можно использовать в двух вариантах.
В первом варианте нужно явно указать, кому какое право даётся или кто этого права лишается:
admhome@serv-admhome:~$ chmod wXp имя-файла
Вместо w подставляется
- u = пользователь, который является владельцем
- g = группа
- o = все пользователи, не входящие в группу, которой принадлежит данный файл
- a = все пользователи системы, т. е. и владелец, и группа, и все остальные
Вместо X ставится:
- + это предоставление права
- – это лишение соответствующего права
- = это установка указанного права вместо имеющихся
Вместо p — символ, обозначающий соответствующее право:
- r = чтение
- w = запись
- x = выполнение
Например
-
предоставить всем пользователям системы право на выполнение данного файла
admhome@serv-admhome:~$ chmod a+x file_name
-
убрать право на чтение и запись для всех, кроме владельца файла
admhome@serv-admhome:~$ chmod go-rw file_name
-
предоставить всем права на чтение, запись и выполнение
admhome@serv-admhome:~$ chmod ugo+rwx file_name
Второй вариант - цифровое представление прав
При указании прав доступа суммируются необходимые цифры
Например когда необходимо владельцу полные права (4+2+1=7), группе - только чтение и запись (4+2=6) а остальных лишить всех прав (0), то получим запись:
admhome@serv-admhome:~$ chmod 760 file_name
Однако есть ещё 3 бита прав:
Эти права (если они необходимы) ставятся перед правами доступа в числовом виде:
root@serv-admhome:~# chmod 4775 file_name
Наверх
-
Команды для работы с файлами и каталогами
- chown, chgrp - смена владельца файла и группы файла, сменить владельца может только root, сменить группу - владелец файла или root
-
mkdir - создать каталог
В созданном каталоге появятся 2 записи: . - ссылка на себя и .. - ссылка на родительский каталог
Команду часто используют с опциями:
- -m mode - задать режим доступа для нового каталога (например, -m 755)
- -p - создать указанные промежуточные каталоги (если они не существуют)
-
cat - многофункциональная команда, вывод содержимого на стандартный поток вывода, конкатенация файлов, перенаправления ввода со стандартного потока в файл
Команду часто используют так:
-
перенаправить один файл в другой
admhome@serv-admhome:~$ cat file1 > file2
-
конкатенация файлов
admhome@serv-admhome:~$ cat file1 file2 ... fileN > new-file
-
перенаправления ввода со стандартного потока в файл
admhome@serv-admhome:~$ cat > newfile
чтобы завершить ввод с клавиатуры нажмите Ctrl+D или Ctrl+C
-
cp - копирование
Применение:
admhome@serv-admhome:~$ cp [options] source destination
admhome@serv-admhome:~$ cp [options] source_directory new_directory
Если в качестве целевого указывается существующий файл, то его содержимое будет затерто.
Команду часто используют с опциями:
- -i - запрашивает подтверждение перед перезаписью существующего файла
- -p - сохраняет время модификации файла и максимально возможные полномочия. Без этой опции для нового файла задаются полномочия, соответствующие полномочиям запустившего команду пользователя
- -R или -r - если source - каталог, то копируется как он, так и все входящие в него подкаталоги, т. е. сохраняется исходная форма дерева каталогов
- -d - символические ссылки остаются ссылками, иначе копируются файл, на который дается ссылка
- -f - перезаписывает файлы при копировании (если такие уже есть) без дополнительных предупреждений
-
mv - перемещение/переименование
Однако mv не позволяет переименовать сразу несколько файлов (используя шаблон имени), так что команда mv *.xxx *.yyy не будет работать.
Команду часто используют с опциями:
- -i - запрашивает подтверждение перед перезаписью существующего файла
-
rm и rmdir - удаление
rm удаляет файлы, rmdir удаляет пустой каталог
Команду часто используют с опциями:
- -i - запрашивает подтверждение перед удалением
- -r (для rm) - удалить непустой каталог со всеми входящими в него подкаталогами и файлами
-
more и less - просмотр содержимого текстовых файлов
more часто используемые клавиши:
- пробел - следующая страница
- Enter - следующая строка
- B - вернёт на 1 экран назад
- Q - выход
less часто используемые клавиши:
- Стрелка вверх, Стрелка вниз, PgUp, PgDown - перемещение по тексту
- Q - выход
-
find - поиск
admhome@serv-admhome:~$ find [список_каталогов] критерий_поиска
Чаще всего шаблоны имен файлов строятся с помощью специальных символов "*", "?", квадратных скобок.
Значок "*" используется для замены произвольной строки символов, а значок "?" заменяет один произвольный символ.
В квадратных скобках задаётся интервал для поиска.
Например:
- "*" — соответствует всем файлам, за исключением скрытых
- ".*" — соответствует всем скрытым файлам (но также текущему каталогу "." и каталогу уровнем выше "..": не забывайте об этом!)
- "*.*" — соответствует только тем файлам и каталогам, которые имеют "." в середине имени, или оканчиваются на точку
Команду часто используют с опциями:
- -name шаблон - ищет файлы, имена которых соответствуют шаблону
- -group имя - ищет файлы, принадлежащие указанной группе
- -size число[c] - ищет файлы, размером в число 512-байтных блоков. Если после числа стоит символ c, значит размер указан в байтах (символах)
- -mtime число - ищет файлы, которые в последний раз изменялись указанное число дней назад
- -newer образец - ищет файлы, которые изменялись после изменения файла, указанного в образце
- -type тип_файла - ищет файлы указанного типа. Тип задается одним из символов b (блок-ориентированные устройства), c (байт-ориентированные устройства), d (файл каталога), f (обычный файл), p (именованный канал) либо l (символическая ссылка)
Например:
-
найти каталог по имени
admhome@serv-admhome:~$ find /usr -name doc -type d
-
найти каталог по имени с соблюдением правил построения сложных критериев
admhome@serv-admhome:~$ find /usr \( -name doc -and -type d \)
-
найти файлы где либо имя файла оканчивается на *.tmp, либо размер файла больше 100 Кбайт
admhome@serv-admhome:~$ find /home/kos \( \( -name *.tmp \) -or \( -size +200 \) \)
После поиска удобно указать интерпретатору что сделать с найдеными файлами:
-
простой пример - печать
admhome@serv-admhome:~$ find /home/kos -name *.tmp -print
-
удалить в текущем каталоге все файлы, к которым пользователи не обращались в течение 30 дней
admhome@serv-admhome:~$ find . -type f -atime +30 -exec rm {} \;
Если вместо -exec можно поставить -ok, тогда перед выполнением указанной команды к каждому файлу будет запрашиваться подтверждение
-
split — разбиваем файл на несколько частей
Имена выходных файлов будут составляться из указанного префикса и двух дополнительных букв "aa", "ab", "ac" и т. д. (без пробелов и точек между префиксом и буквами).
Если префикс имен файлов не задан, то по умолчанию используется "x", так что выходные файлы будут называться "xaa", "xab" и т. д.
Команду часто используют с опциями:
- -b - размер выходных файлов в байтах (вслед за –b должно стоять число, а за ним — буква k - килобайты или m - мегабайты)
Пример разбивки файла на куски и обратного слияния кусков в файл:
admhome@serv-admhome:~$ split -b1400k song.mp3 song.
admhome@serv-admhome:~$ cat song.* > song.mp3
-
diff и patch - сравнение и применение патча
просто сравнить
admhome@serv-admhome:~$ cmp file1 file2
отчёт о различиях в файлах
admhome@serv-admhome:~$ diff paper.old paper.new
отчёт о различиях в файлах с перенаправлением в файл для дальнейшей обработки
admhome@serv-admhome:~$ diff paper.old paper.new > paper.diff
Существует ещё команда diff3, которая позволяет сравнить сразу 3 файла.
для примера - разница в коде программы после правки
admhome@serv-admhome:~$ diff program.c program.c.new > program.c.diff
применить полученный патч к старой программе и получим новую программу
admhome@serv-admhome:~$ patch program.c program.c.diff > program.c.new
Наверх
-
Команды архивирования файлов
-
tar - "соединяет" файлы в один архив без сжатия
Команду часто используют с опциями:
- -A, --catenate, --concatenate - добавляет файлы в существующий архив
- -c, --create - создает новый архив
- -d, --diff, --compare - найти различия между архивом и файловой системой
- --delete - удалить из архива (не может использоваться с магнитной лентой!)
- -r, --append - дописывает файлы в конец архива
- -t, --list - выводит список файлов архива
- -u, --update - добавляет только файлы, которые новее, чем имеющаяся в архиве копия
- -v, --verbose - подробный листинг обрабатываемых файлов
- -x, --extract, --get - извлечь файлы из архива
Посмотреть примеры работы с tar
-
gzip - сжимает файлы
сжать файл
admhome@serv-admhome:~$ gzip файл
разжать файл
admhome@serv-admhome:~$ gzip -d файл_архива
или
admhome@serv-admhome:~$ gunzip файл_архива
Исходные файлы после сжатия удаляются, остается только архивный файл (файлы перемещаются в архив), а при разархивации удаляется архив.
Команду часто используют с опциями:
- -h, --help - вызов краткой помощи по использованию программы
- -l, --list - выдает имя файла, содержащегося в архиве, его объем и степень сжатия
- -L, --license - отображает номер версии и лицензию на программу
- -N, --name - сохранять (или восстанавливать) исходное имя и время создания файла
- -n, --no-name - не сохранять (не восстанавливать) исходное имя и время создания файла
- -q, --quiet - подавляет выдачу на экран предупреждающих сообщений
- -r, --recursive - рекурсивно обрабатывать подкаталоги (используется в случае. когда задан шаблон имен обрабатываемых файлов)
- -S .suf, --suffix .suf - добавить суффикс .suf к имени сжатого файла (вместо добавляемого по умолчанию суффикса gz; но учтите, что при разархивации файлов с суффиксами, отличными от gz, программа вас не поймет)
- -t, --test - протестировать архивный файл
- -v, --verbose - выдача дополнительных сообщений в процессе работы программы
- -V, --version - отобразить версию программы
- -1, --fast - быстрое сжатие
- -9, --best - более высокая степень сжатия
Поскольку программа gzip не умеет сохранять в одном архиве несколько файлов, то обычно ее применяют для сжатия архивов, созданных программой tar.
Более того, среди опций программы tar имеется специальная опция -z, позволяющая сразу после создания сжать его с помощью программы gzip.
Для выполнения такого сжатия надо использовать команду tar примерно следующим образом:
admhome@serv-admhome:~$ tar -czf имя_архива шаблон_имен_файлов (или имя_каталога)
Имейте в виду, в этом случае суффикс .gz не добавляется автоматически к имени архива, лучше сразу задать имя архива с указанием обеих суффиксов: имя.tar.gz.
-
bzip2 - тоже сжимает файлы
Работает bzip2 примерно так же, как команда gzip, т. е. замещает каждый файл, имя которого задано в командной строке, сжатой версией, добавляя к имени файла суффикс .bz2.
Команда bunzip2 (или bzip2 -d) разархивирует указанные в командной строке файлы.
Если эти файлы не были созданы программой bzip2, они не будут разархивироваться, будет выдано соответствующее предупреждение.
При разархивации bzip2 пытается угадать имя разархивируемого файла по следующим правилам:
- filename.bz2 заменяется на filename
- filename.bz заменяется на filename
- filename.tbz2 заменяется на filename.tar
- filename.tbz заменяется на filename.tar
- любое другое "имя" заменяется на "имя.out"
Команду часто используют с опциями:
- -d, --decompress - принудительная разархивация. Эта опция необходима в силу того, что bzip2, bunzip2 и bzcat — это на самом деле одна и та же программа, которая сама по расширению имени файла принимает решение о том, какое действие надо выполнить над указанным файлом. Опция -d отключает этот механизм и заставляет программу разархивировать указанные файлы
- -z, --compress - принудительная архивация
- -t, --test - проверка целостности указанного файла(ов) без разархивации
- -f, --force - перезапись существующего файла. По умолчанию bzip2 не перезаписывает существующие файлы. Если вы хотите перезаписать существующий файл, надо задать опцию -f
- -k, --keep - сохранять (не удалять) исходные файлы при архивации или разархивации
- -s, --small - снижает требования к объему используемой оперативной памяти за счет снижения скорости архивации. Эту опцию рекомендуется применять на компьютерах с малым объемом ОЗУ (8 Мбайт и меньше)
- -q, --quiet - не выводить малосущественные сообщения
- -v, --verbose - выводить дополнительную информацию в процессе работе (представляет интерес в диагностических целях)
- -L, --license, -V, --version - отобразить версию программы и лицензионное соглашение
Наверх
-
Создание и монтирование файловых систем
Общее дерево файлов и каталогов системы Linux формируется из отдельных "ветвей".
В UNIX нет понятия "форматирования диска" (и команды форматирования), а используется понятие "создание файловой системы".
Чтобы эту файловую систему использовать для записи в нее файлов, надо ее вначале подключить в общее дерево каталогов ("смонтировать").
"Родной" файловой системой для него в настоящее время является "вторая расширенная файловая система" (second extended filesystem) ext2fs.
Создание файловой системы типа ext2fs подразумевает создание в данном разделе на диске суперблока, таблицы индексных дескрипторов и совокупности блоков данных.
Делается все это все с помощью команды mkfs.
В простейшем случае достаточно дать эту команду в следующем формате:
root@serv-admhome:~# mkfs -t ext2 /dev/hda5
где /dev/hda5 надо заменить на соответствующее устройство или раздел. Например, если нужно создать файловую систему на дискете, команда примет вид:
root@serv-admhome:~# mkfs -t ext2 /dev/fd0
После этого в разделе /dev/hda5 будет создана файловая система ext2fs.
В новой ФС создается каталог с именем lost+found. Он используется в экстренных случаях fsck, не удаляйте его.
Для того, чтобы начать работать с новой ФС необходимо подключить её в дерево каталогов с помощью команды mount.
В качестве параметров mount передаётся устройство и точка монтирования.
Точка монтирования - каталог в уже существующем и известном системе дереве каталогов, который будет теперь служить корневым каталогом для подключаемой ФС.
Например команда:
root@serv-admhome:~# mount /dev/hdb1 /mnt/disk2
подсоединяет файловую систему первого раздела на втором жестком диске к каталогу /mnt/disk2 (этот каталог должен существовать!).
После монтирования ФС в /mnt/disk2 его прежнее содержимое станет недоступно (как и информация о прежнем владельце и правах доступа).
Когда новая ФС будет размонтирована - прежнее содержимое каталога станет доступно.
Прежнее содержимое не уничтожается, а просто становится временно недоступным.
Поэтому в лучше использовать пустые каталоги для монтирования ФС.
В той форме, которую мы использовали примере выше, команда mount будет работать только если все недостающие параметры она найдет в файле /etc/fstab.
Если такого файла не существует, или он не содержит необходимых данных, надо применять более полную форму команды mount:
root@serv-admhome:~# mount -t type device path
где type - тип файловой системы, device - на каком устройстве (в каком разделе) она находится, а path - точка монтирования.
Файл /etc/fstab нужен для автомонтирования ФС при загрузке ОС.
Каждая строка содержит поля отбитые пробелом:
- имя устройства - может быть локальным /dev/hda5 или путевое имя NFS, например, pc21:/home/jim
- точка монтирования
- тип ФС
- опции монтирования (по умолчанию rw — чтение, запись)
- уровень дампа - используется программой dump, предназначенной для создания резервных копий
- порядок (приоритет) проверки файловых систем fsck
В mount можно вначале задать список типов файловых систем, которые не надо монтировать - с помощью флага no.
Такая возможность полезна если используется mount с аргументом -a (монтировать всё).
По этой команде монтируется всё что перечислено в /etc/fstab. Пример:
root@serv-admhome:~# mount -a -t nomsdos,ext
монтирует все файловые системы, кроме msdos и ext.
Обычно монтирование доступно только root, но если в /etc/fstab имеется строка
/dev/cdrom /cd iso9660 ro,user,noauto,unhide,
то любой пользователь сможет смонтировать ФС на своем CDROM, используя команду
admhome@serv-admhome:~$ mount /dev/cdrom или [user]$ mount /cd
mount и /etc/fstab часто используют с параметрами:
- async - весь ввод-вывод в файловую систему должен производиться асинхронно
- auto - файловая система может монтироваться командой mount c опцией -a
- defaults - использовать набор опций, задаваемый по умолчанию: rw, suid, dev, exec, auto, nouser, async
- dev - файлы байт-ориентированных и блок-ориентированных устройств в файловой системе интерпретируются как специальные файлы
- noauto - файловая система может монтироваться только явно. Опция -a не приведет к монтированию файловой системы
- exec - разрешает выполнение двоичных файлов
- remount - позволяет перемонтировать уже смонтированную файловую систему. Обычно используется для изменения опций монтирования файловой системы, особенно для того, чтобы расширить права доступа (вместо прав только на чтение установить права на чтение/запись)
- ro - монтирует файловую систему только на чтение
- rw - монтирует файловую систему для чтения и записи
- suid - позволяет задействовать биты смены идентификатора пользователя и смены идентификатора группы
- sync - весь ввод-вывод в файловую систему должен производиться синхронно
- user - позволяет непривилегированному пользователю монтировать файловую систему. Для таких пользователей монтирование всегда выполняется с опциями noexec, nosuid, nodev
- nodev - файлы байт-ориентированных и блок-ориентированных устройств в файловой системе не интерпретируются как специальные файлы
- nosuid - не позволяет задействовать биты смены идентификатора пользователя и смены идентификатора группы
- nouser - запрещает непривилегированному пользователю монтировать файловую систему
Наверх
-
Оболочка bash
Зарезервированные символы:
` ~ ! @ # $ % ^ & * ( ) _ — [ ] { } : ; ' " / \ > <
Если имя файла с пробелами:
admhome@serv-admhome:~$ cp two\ words two_words
admhome@serv-admhome:~$ cp 'two words' two_words
Различие в использовании символов ' и " состоит в том, что внутри одинарных кавычек теряют специальное значение все символы,
а внутри двойных кавычек — все специальные символы кроме $, ' и \ (знака доллара, одинарных кавычек и обратного слэша).
Операторы
-
Оператор ; - нужен чтобы задать несколько команд в одной строке:
admhome@serv-admhome:~$ command1 ; command2
Запуск команд осуществится последлвательно.
-
Оператор & - организует исполнение команд в фоновом режиме
admhome@serv-admhome:~$ command1 ; command2
Оболочка запустит command1, сразу command2, и немедленно вернет управление пользователю.
-
Операторы && и || - управляющие операторы
&& - следующая команда выполнится только тогда, когда предыдущая команда выполнилась успешно
|| - следующая команда выполнится только тогда, когда предыдущая команда выполнилась неуспешно
Потоки
-
стандартный ввод (standard input или stdin) - программа получает данные (по умолчанию - клавиатура)
-
стандартный вывод (standard output или stdout) - программа выдаёт данные (по умолчанию - терминал пользователя)
-
стандартный поток сообщений об ошибках (standard error или stderr) - программа сообщает об ошибках (по умолчанию - терминал пользователя)
Перенаправление ввода/вывода, каналы и фильтры
-
Операторы >, < и >>
перенаправить вывод команды в файл:
admhome@serv-admhome:~$ ls -l > /home/admhome/dir.txt
дописать вывод команды в файл:
admhome@serv-admhome:~$ ls -l >> /home/admhome/dir.txt
подсчёт числа слов в файле /home/jim/report.txt :
admhome@serv-admhome:~$ cat /home/admhome/report.txt > wc -w
или
admhome@serv-admhome:~$ wc -w < /home/admhome/report.txt
вывод на печать:
admhome@serv-admhome:~$ cat /home/admhome/report.txt > lpr
4 эквивалентные команды:
admhome@serv-admhome:~$ cat > file
admhome@serv-admhome:~$ cat>file
admhome@serv-admhome:~$ >file cat
admhome@serv-admhome:~$ > file cat
"раздвоить" выходной поток - направить выходной поток и на экран и в файл:
admhome@serv-admhome:~$ ls -l >& /home/admhome/dir.txt
-
Оператор | - организация программного канала (конвейера)
admhome@serv-admhome:~$ cat myfile | grep Linux | wc -l
вывод cat myfile будет обработан grep Linux вывод которой будет обработан wc -l
-
Фильтры
К числу команд-фильтров относятся уже упоминавшиеся выше команды cat , more , less , wc , cmp , diff , а также:
- grep, fgrep, egrep - искать во входном файле или данных со стандартного ввода строки, содержащие указанный шаблон, и вывести их на стандартный вывод
- tr - заменить во входном потоке все встречающиеся символы, перечисленные в заданном перечне, на соответствующие символы из второго заданного перечня
- comm - сравнить два файла по строкам и выдать на стандартный вывод 3 колонки: в одной — строки, которые встречаются только в 1 файле, во второй — строки, которые встречаются только во 2-ом файле: и в третьей — строки, имеющиеся в обоих файлах
- pr - форматировать для печати текстовый файл или содержимое стандартного ввода
- sed - строковый редактор для выполнения некоторых преобразований над входным потоком данных (берется из файла или со стандартного ввода)
Параметры и переменные. Окружение оболочки
Наверх
|