- Что в файле?
- Каталоги и имена файлов
- Права доступа
- Команды
- Иерархия файловой системы
Что в файле?
Расширение имени файлов не имеет значения для типа файла.
Команда file делает предположение о типе файла.
~$ file /bin /bin/ed /usr/src/cmd/ed.c
/bin: directory
/bin/ed pure executable
/usr/src/cmd/ed.c c program text
file читает несколько сотен байт и ищет в них ключевые последовательности символов
например исполняемая программа начинается с "магического числа" в двоичном представлении. Команда od без параметров выводит дамп файла 16-битными порциями, позволяя увидеть это "магическое число"
~$ od /bin/ed
000000 000410 025000 000462 011444 000000 000000 000000 000001
000020 170011 016600 000002 005060 017776 010600 162706 000004
..
Восьмиричное значение 410 означает обычную исполняемыю программу. Заметим, что 410 не соответствует никакой ASCII-символ.
Каталоги и имена файлов
Все принадлежащие пользователю файлы имеют имена, начинающиеся с /usr/login, где login - имя вашей учетной записи, регистрационный каталог, чтобы просмотреть находящиеся здесь файлы введите cd(перенесет Вас в домашнюю директорию, если Вы еще не там); ls(1)
~$ сd; ls
команда pwd выведет имя текущего каталога
~$ pwd
/usr/login
В именнах файлов важен регистр букв, File и file - разные файлы
Права доступа
Команда ls запущенная с параметром -l, выводит, кроме основного содержания каталога, информацию о правах доступа.
~$ ls -l /etc/passwd
-rw-r--r-- 1 root 5115 Aug 30 10:40 /etc/passwd
~$ ls -lg /etc/passwd
-rw-r--r-- 1 adm 5115 Aug 30 10:40 /etc/passwd
В строке -rw-r--r-- представлены сведения о правах доступа к файлу, если бы это был каталог, то в первой позиции бы находился символ d.
~$ ls -l /
drwxr-xr-x 2 root root 4096 2008-03-25 11:42 bin
Следующие три символа показывают права владельца на чтение, запись и выполнение. rw-r--r-- означает, что пользователь root(владелец файла) из группы adm может читать и писать, но не может выполнять этот файл. У исполняемого файла должен стоять символ x вместо прочерка -. Следующие три симола rw-r--r-- показывают разрешения для группы adm, можно читать файл, но не более того. Последняя группа символов, также rw-r--r-- определяет права доступа для остальных - прочих пользователей системы. Таким образом только root может изменять регистрационную информацию, а всем остальным она доступна только для чтения.
Команда chmod изменяет права доступа к файлу
Восьмиричные значения образуются путем складывания 4 для чтения, 2 для записи, 1 для исполнения.
~$ chmod 666 file
дает право на чтение и запись файла file всем
~$ chmod 700 command
позволит читать, изменять, выполнять command только его владельцу
Отметим, что знак + (плюс) включает право доступа, а знак - (минус) - выключает.
~$ chmod +x command
позволит всем выполнять command
~$ chmod -w file
отменяет право на запись в файл file всех, включая владельца
~$ chmod -w .
запрещает право на запись в каталог, в котором мы находимся
Команды - это программы, которые вызывает пользователь. Основные команды расположены в директории /bin, но также могут быть расположены в
/usr/bin, чтобы не собирать мусор в /bin. Эти директории автоматически просматриваются командным интерпретатором (shell). UNIX имеет файловую систему компонованную в виде иерархии директорий.
При входе в систему вы попадаете в домашнюю директорию. Для того, чтобы обратиться к файлу в другой директорий, например /usr/share/bin/filex, указываем полный путь (начинается с '/', корневая директория всей файловой системы) с поддиректориями (usr, share, bin), то есть посылаем команду /usr/share/bin/filex
Важные команды, которые могут "играть" с файлами: cp(1), mv(1), rm(1), которые копируют, перемещают и удаляют файлы соответственно. Чтобы просмотреть содержание директорий используйте ls(1), создание директории - mkdir(1),
удаление директории - rmdir(1) или rm(1).
hier(7) - иерархия файловой системы
/ корневая директория
/dev/ devices(4)
console главная консоль, tty(4)
tty* терминалы, tty(4)
cat "наборщик снимков" cat(4)
rp* диски, rp, hp(4)
rrp* "сырые" диски, rp, hp(4)
/bin/ служебные программы, cf /usr/bin (1)
as ассемблер, cf /usr/lib/as2
cc исполнительный компилятор C, cf /usr/lib/c[012]
/lib/ объектные библиотеки и подобные вещи, cf /usr/lib/
libc.a системные вызовы, стандартные ввод/вывод I/O, и т.п.
libm.a математические программы
libplot.a программы рисования, plot(3)
libF77.a поддержка среды исполнения Фортрана
libI77.a ввод/вывод Фортрана
as2 второй "проход" ассемблера as(1)
c[012] проходы cc(1)
/etc/ важные данные и полезные средства сопровождения
passwd файл с паролями пользователей, passwd(5)
group файл с группами пользователей, group(5)
motd сообщение дня, login(1)
mtab таблица монтируемых устройств, mtab(5)
ddate сброс истории, dump(1)
ttys параметры терминала, ttys(5)
getty часть login, getty(8)
init отец всех процессов, init(8)
rc shell-программа для загрузки системы
cron часовой демон, cron(8)
mount mount(1)
wall wall(1)
/tmp/ временные файлы, обычно находятся на быстром устройстве, cf /usr/tmp/
e* испольуемые ed(1)
ctm* .. cc(1)
/usr/ универсальная директория, обычно монтируемая ФС
adm/ информация администратора
wtmp история входов в систему, utmp(5)
messages сообщения об ошибках устройств
tracct "наборщик снимков" счет , troff(1)
vpacct подсчет строк, lpr(1)
bin/ служебные программы, чтобы не засорять /bin/
tmp/ временные, чтобы не засорять /tmp/
stm* используется для sort(1)
raster .. plot(1)
dict/ список слов, словообразований и т.п.
words набор основных слов, используются look(1)
spellhist история для spell(1)
games/ игры
bj блэкджек
hangman виселица
quiz.k что знает quiz(6)
index оглавление категории
africa страны и столицы
..
..
include/стандартые #include файлы
a.out.h макет объектного файла, a.out(5)
stdio.h стандартные ввод/вывод, stdio(3)
math.h
..
sys/ системные макеты, cf /usr/sys/h
acct.h счет процессов, acct(5)
buf.h буфферы внутренней системы
..
lib/ объектные библиотеки и т.п., чтобы не засорять /lib/
lint[12] подпроцессы lint(1)
llib-lc холостое объявление для /lib/libc.a, используемое lint(1)
llib-lm .. /lib/libc.m
atrun планировщик at(1)
struct/ пути sruct(1)
..
tmac/ макросы для troff(1)
tmac.an макрос для man(7)
tmac.s .. ms(7)
..
font/ шрифты для troff(1)
R Times Roman
B Times Bold
..
uucp/ программы и данные uucp(1)
L.sys имена и числа, поступающие удаленно
uucico реальная копия программы
..
suftab таблица суффиксов для автоматического переноса слов, используемый troff(1)
units таблицы обмена для units(1)
eign лист английских слов, игнорируемых ptx(1)
man/ первый том руководства, man(1)
man0/ основное
intro вступление к тому1, ms(7) форматирование
xx шаблон для страниц руководства(manual pages)
man1/ раздел 1
as.1
mount,1m
..
cat1/ предварительные страницы man1/
as.1
mount.1m
..
spool/ замедленно исполняемые файлы
at/ at(1)
lpd/ lpr(1)
lock присутствует когда построчно-печатающее устройство активно
cf* копия распечатываемого файла, если нужно
df* файл управления демонами, lpd(8)
tf* файл контроля резидетной памяти, пока lpr работает
uucp/ рабочие фалйы и область обработки для uucp(1)
LOGFILE суммарный журнал
LOG.* журнал одной транзакции
mail/ почтовые ящики mail(1)
$uid почта пользователя $uid
$uid.lock блокировочный файл, пока $uid принимает почту
$wd рабочая директория пользователя, обычно по имени логина $wd
.profile окружение для sh(1), environ(5)
calendar календарь пользователя, calendar(1)
doc/ статьи, обычно второй раздел руководства, в формате ms(7)
as/ руководство ассемблера
c руководство C
..
sys/ системный код
dev/ драйверы устройств
bio.c общий код
cat.c cat(4)
dh.c DH11, tty(4)
tty tty(4)
..
conf/ железо-зависимый код
mch.s часть ассемблерного кода
conf генератор конфигураций
..
h/ заголовочные(include) файлы
acct.h acct(5)
stat.h stat(2)
..
sys/
main.c
pipe.c
sysent.c точки входа системы
..
/usr/ src/ исходные коды утилит и прочего
cmd/ коды команд
as/ ассемблер
makefile способ сборки ассемблера
as1?.s код pass1
ar.c код ar(1)
..
troff/ код nroff и troff(1)
nmake makefile для nroff
tmake makefile для troff
font/ код таблиц шрифтов, /usr/lib/font/
ftR.c Roman
..
term/ таблицы характеристик терминала, /usr/lib/term/
tab300.c DASI 300
..
..
libc/ код функций в /lib/libc.a
crt/ C runtime support
ldiv.s division into a long
lmul.s multiplication to produce long
..
csu/ запуск и "покрытие" программ нужных в каждой С программе
crt0.s обычный запуск
mcrt0.s модифицированный запуск для cc -p
sys/ системные вызовы
access.s
alarm.s
..
stdio/ функции стандартного ввода/вывода I/O
fgets.c
fopen.c
..
gen/
abs.c
atof.c
..
compall shell процедура для компиляции libc
mklib shell процедура для сборки /lib/libc.a
libI77/ коды /lib/libI77
libF77/
..
games/ исходные коды /usr/games/
Также смотрите
ls(1), ncheck(1), find(1), grep(1)
В Linux также можно изучить иерархию каталогов в руководстве hier
~$ man hier
Если Вы начинаете осваивать сисему UNIX возможно Вам понадобится руководство intro(2)
~$ man 2 intro
Литература:
1. UNIX TIME-SHARING SYSTEM, UNIX Programmer's Manual, V7Vol1, January, 1979, Bell Labs Inc., B.W. Kernigan, M.D.
McIlroy
2. UNIX Programming Environment, The First Edition, 1984, B.W. Kernigan
Также смотрите: Unix Toolbox (pdf буклет)
4 комментария:
"комманды" или команды вот в чем мой вопрос?
Замечательная статья! При случае обязательно поставлю на неё ссылку. Просто вспоминаю себя и свои первые вопросы: "ээ.. а куда программы-то деваются!?" :-)
Статья классная.
Wolf пишет...
"комманды" или команды вот в чем мой вопрос?
Конечно команды))
Отправить комментарий