FreeBSD commands

Для самых маленьких и для меня, вдруг че забуду
Будет о:
1. Справка и где получить помощь
2. Работа с файлами
3. Утилиты поиска
4. Программы пейджеры

1. Справка

Руководство по FreeBSD состоит из девяти разделов. Эти разделы выглядят так:
1.General commands (Основные команды)
2.System calls and error numbers (Системные вызовы и коды ошибок)
3.The С libraries(Библиотеки С)
4.Devices and device drivers (Устройства и драйверы устройств)
5.File formats(Форматы файлов)
6.Game instructions (Инструкции к играм)
7.Miscellaneous information(Всякая всячина)
8.System maintenance commands(Команды обслуживания системы)
9.Kernel system interfaces(Системные интерфейсы ядра)

Для того чтобы читать man в конкретном разделе нужно использовать синтаксис:

man N name
Где N номер раздела справки, а name название программы
Пример:
man 4 pf

Секции страницы помощи:
NAME – имя страницы с очень кратким описанием предмета (одна строка)
SYNOPSIS – синопсис, краткий обзор
DESCRIPTION – полное описание предмета справки
ENVIRONMENT – используемые переменные окружения
EXIT STATUS – коды возврата программ
EXAMPLES – примеры использования
SEE ALSO – рекомендуемые man страницы для получения дополнительной информации

apropos — отыщет все стр в названии или описании которых встречается искомое слово
whatis — отыщет все стр в названии или описании которых встречается искомое слово ЦЕЛИКОМ
Эти 2 утилитки ищут по индексу составленному из секции NAME
Если вы вдруг поменяли страницы мана, для нормального поиска нужно перестроить индекс makewhatis

Сайтики где можно поискать:
1. www.google.com/bsd
поиск по сайту site:freebsd.org
2. freebsd.rambler.ru
3. http://www.daemonnews.org
4. http://www.onlamp.com/bsd
[email protected], рассылка посвященная проблемам безопасности

2. Основные команды для работы с файлами

Во Фре все это ФАЙЛЫ!!! устройства это тоже файлы:)
В UNIX существуют различные виды файлов, информация о которых содержится атрибутах файловой системы для этих файлов. Всего в UNIX существует 6 различных видов файлов:
• Обычный файл (regular file)
• Каталог (directory)
• Специальный файл устройства (special device file)
• FIFO, или именованный канал (named pipe)
• Символьная ссылка (symbol link)
• Сокет (socket)

Для фри неважно расширение. Она ориентируется на основании магии! Вернее magic numbers.
Узнать тип файла можно с помощью утилиты file:


%file /etc/rc.conf
/etc/rc.conf: ASCII text
%file /bin/sh
/bin/sh: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 9.0 (900044), stripped

ls (list files) предназначена для просмотра содержимого каталогов и получения информации о файлах.
ls -a вывод полностью ( со скрытыми файлами и папками )
ls -l вывод в подробной форме ( с правами, размером, датами и т.д.);
ls -i выводит также inode файла
Примеры:

%ls
f1 f2 f3
%ls -la
total 12
drwxr-xr-x 2 root bos 512 16 мар 19:14 .
drwxr-xr-x 5 bos bos 512 29 апр 13:36 ..
-rw-r--r-- 2 root bos 19 16 мар 19:15 f1
-rw-r--r-- 1 root bos 0 16 мар 19:10 f2
-rw-r--r-- 1 root bos 0 16 мар 19:10 f3

pwd (print working directory) показывает текущий рабочий каталог.

%pwd
/usr/home/bos/A

cd (change directory) меняет текущий рабочий каталог.
Путь может быть относительным, а может и абсолютным(начинаться с / )

cd - перейти в домашний каталог
cd .. - подняться на каталог выше
cd ~root - перейти в домашний каталог заданного пользователя
cd - - перейти в предыдущий каталог

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

%ls -la | grep -E '[[:space:]]f.*'
-rw-r--r-- 1 bos bos 0 2 май 13:20 ft1
-rw-r--r-- 1 bos bos 0 2 май 13:20 ft2
%touch ft1
%touch ft3
%ls -la | grep -E '[[:space:]]f.*'
-rw-r--r-- 1 bos bos 0 2 май 13:22 ft1
-rw-r--r-- 1 bos bos 0 2 май 13:20 ft2
-rw-r--r-- 1 bos bos 0 2 май 13:22 ft3

mkdir (make directory) создает каталоги, если указана -p в том числе и промежуточные Примеры:

% mkdir /tmp/test
% mkdir -p /tmp/a/b/c
% mkdir ololo


rm

-r или -R удаляет файлы и каталоги, в т.ч. каталоги с содержимым
-f подавляет вывод запросов (например, при удалении файлов, доступных только для чтения) и ошибок при удалении,
-i выводит запрос при удалении каждого файла.
-P перезаписывает содержимое файла перед удалением
-W пытается восстановить удаленный файл(ufs only)
Примеры:

% rm -r /tmp/test
# rm -rf /* не делайте так:)
%rm ft3
%rm -i ft*
remove ft1? y
remove ft2? y
%ls -la | grep -E '[[:space:]]f.*'

rmdir удаляет только пустые каталоги.
-p удаляются и родительские каталоги целевого каталога, если они пусты.

% rmdir /tmp/test
% rmdir -p /tmp/a/b/c

cp позволяет копировать файли и каталоги (опция -r или -R).
При её использовании часто применяются шаблоны шелла. В общем случае, команда cp требует не менее двух параметров: что копировать и куда копировать.

% cp file1 dir1/
% cp -r dir1/ dir2/

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

%mv file2 file3 - переименовали файл
%mv file3 dir1/ - переместили файл в dir1

ln позволяет создавать символьные (с опцией -s) и жесткие (без опции -s) ссылки.
жесткая ссылка при удалении оригинала, данные все равно будут доступны
–s будет создана мягкая ссылка(как ярлык в винде) при удалении ярлыка с файлом ничего не случается, при удалении файла, ярлык ссылается на пустое место

%ln -s /etc/rc.conf file4

cat вывод содержимого файла

more less выводят содержимое файла с возможностью прокрутки и поиска

df Для получения статистики использования разделов дисков (смонтированных файловых
систем)
– h (human-readable, выводит числовые данные в виде, удобном для восприятия пользователем)
— t (выводит информацию только о файловых системах указанного типа)

%df -ht ufs
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0a 1G 551M 375M 59% /
/dev/ada0d 5G 3.4G 1.2G 74% /usr
/dev/ada0e 1.9G 222M 1.6G 12% /var

du (disk usage) позволяет получить статистику использования дискового пространства не по разделам целиком, а для конкретных указанных каталогов.
— h выводит информацию в виде удобном для восприятия человеком
— s (summary) эквивалентна -d 0
— d число (depth) позволяют указать необходимую степень подробности (глубину) выводимой информации.

%du -h
8,0k ./A
8,0k ./B
4,0k ./.mc/cedit
28k ./.mc
116k .

which для поиска программ (исполняемых файлов), ищет указанные файлы в каталогах, перечисленных в переменной окружения PATH.
whereis аналогична по действию, но ищет также среди man страниц и в каталогах с исходными текстами программ. Примеры:

% which ls
/bin/ls
% whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

locate Поиск файлов по имени с помощью заранее созданной индексной БД.
/usr/libexec/locate.updatedb cоздание индексной базы
Аналог службы индексирования винды, индексировать нужно руками или по крону:)

tail выводит последние строки файла
-n выводится n строк

% tail -n 5 /var/log/messages

head выводит первые строки файла
-n выводится n строк

%head -n 5 /var/log/messages

cut вырезать из входного потока или файла фрагменты строк,
-с соответствующие определенным позициям символов в строке
-f соответствующие определенным полям, считается, что файл имеет табличную структуру (т. е. разбит на колонки)
-d указывает разделитель полей. По умолчанию табуляция

cut -d: f1,7 /etc/passwd вывести 1й и 7й столбик из файла
cut -c1-5 /etc/passwd вывести символы, в каждой строке, с первого по пятый

Paste противоположность cut, вставляет фрагменты строк и выводит на экран
-d указывает разделитель полей. По умолчанию табуляция
-s объединяет множество строк в файле в одну строку

%paste -d: b1 a1
b1:a1
b2:a2
b3:a3
b4:a4
%paste -s a1
a1 a2 a3 a4

sort позволяет сортировать данные в алфавитном порядке
-n в числовом порядке
-t задаем разделитель
-k начиная с позиции

% grep -­v '^#' /etc/passwd | sort
Пример сортировки пользователей в системе по значению UID:
% grep ­-v '^#' /etc/passwd | sort -­t: -­k3 -­n

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

% diff каталог1 каталог2 - сравниваем каталоги
% diff /bin/ls /usr/bin/lsvfs -сравниваем бинарные файлы
Binary files /bin/ls and /usr/bin/lsvfs differ

Патчинг проходит элементарно
% patch hello.c patch.txt
Hmm... Looks like a normal diff to me...
..
done

wc — подсчет числа строк, слов и символов

%cat test.sh
#!/bin/sh
X=10
while [ $X -gt 0 ]
do
echo $X
X=$(( $X-1 ))
done
exit 0
%wc test.sh
8 17 74 test.sh

tr замена символов по шаблону

Заменяет маленькие буквы в файле на большие и выводит на экран, сам файл остается без изменений
tr "[:lower:]" "[:upper:]" < file1

tee транслящия stdin в stdout c ведением лога(копированием в файл)

uniq – нахождение дублирующихся строк, если попадается повторяющаяся строка то она не будет выведена.

find осуществляет рекурсивный поиск файлов в файловой системе, не использует базы данных и переменные окружения.
Условия поиска:
-mount или -xdev – осуществлять поиск только в пределах одной физической файловой системы
-name шаблон – поиск файла по его имени
-iname шаблон – то же, но без учета регистра
-regex шаблон – то же, что и name, но шаблон – регулярное выражение
-type тип_файла – поиск файлов указанного типа
b block special
c character special
d directory
f regular file
l symbolic link
p FIFO
s socket

-user пользователь – искать файлы, принадлежащие пользователю
-group группа – искать файлы, принадлежащие группе
-atime N – искать файлы, доступ к которым был N суток назад
-mtime N – искать файлы, которые менялись N суток назад
-size N – искать файлы, размер которых N блоков
Команды:
-exec программа – выполнить указанную программу передав ей имя файла(с помощью {})
-ok программа – то же, что exec, но с запросом подтверждения для каждого файла
Пример:

% find /usr/share -name index.html

Поиск файлов, которые модифицировались за последние 2 дня и вывод полной информации про них
% find /var/log -ctime 2 -type f -ls
Удаляем записи с сервака, старше 35 дней
% find /var/spool/asterisk/monitor -ctime +35d -exec rm -f {} \;

% find /usr -user vasia -exec rm -f {} \;

TAR Программа предназначена для работы с архивами в формате tar
-c создать архив
-t просмотр содержимого тарбола
-x извлечение данных из архива
-d сравнивает исходные данные и архив, ищет различия
-f указывает файл архива для создания или извлечения
-v отображает ход работы программы
-z сжатие с помощью gzip
-Z сжатие с помощью compress, менее эффективно
-y сжатие bzip наиболее эффективно
-p восстанавливает владельцев извлекаемых файлов
если мы сжимаем наш архив, то при извлечении нам не стоит беспокоится о виде сжатия, tar сам выберет нужный формат

tar -cvf archive.tar file1 file2 folder1....
tar -xvf archive.tar
tar -tvf archive.tar

Комментарии: