Абсолютные и относительные пути



Linux history   distributions Все современные ОС имеют свои корни в 1969 году, когда Денис Рич и Кен Томпсон разработали язык С и ос Unix работая в AT&T Bell Labs. Они раздали в свободный доступ свои исходники для всего мира. В 1975, когда AT&T решили продавать Unix, больше половины кода было написано третьими лицами. Люди, внесшие свой вклад в развитие, не обрадовались, и в итоге все кончилось тем, что появились две версии Unix: официальная AT&T Unix, и свободная Free BSD Unix.   В 80-е многие компании стали разрабатывать свой Unix: IBM создали AIX, Sun - SunOS (впоследствии Solaris), HP - HP-UX и так далее. В итоге получилось множество версий по сути одного и того же. Первые реальные корни Linux появились, когда Ричард Сталман запустил свой проект, отделившись от этой толпы переизобретавшей колесо, проект GNU (GNU is Not Unix). Цель - общедоступная операционная система, где все могут работать вместе как в 70х. Большая часть инструментов, которые вы видите теперь в Linux или Solaris - взята у GNU.   В 90-е Линус Торвальдс, шведоговорящий финский студент купил 386 компьютер и написал полностью новое гибкое ядро POSIX. Он выложил код в сеть, думая, что он не будет работать ни на чем, кроме своего компьютера. Однако многие люди объединили его ядро с инструментами GNU, и так появился Linux.   Сегодня более 90% суперкомпьютеров (включая весь ТОП-10), более чем половина всех смартфонов, многие миллионы стационарных компьютеров, около 70% всех сетевых серверов, большая куча планшетных компьютеров и некоторая бытовая техника (dvd-проигрыватели, стиральные машины, dsl - модемы, роутеры) управляются Linux. На сегодняшний день это наиболее часто используемая ОС.   Версия ядра Linux 3.2 была выпущена в январе 2012. Её исходный код разросся более чем на 200 000 строк (по сравнению с 3.1) благодаря более чем 4000 разработчикам из 200 коммерческих компаний включая Red Hat, Intel, Broadcom, Texas Instruments, IBM, Novell, Qualcomm, Samsung, Nokia, Oracle, Google и, даже, Microsoft.   licensing Всего существует две основные парадигмы: Свободное и Открытое исходное программное обеспечение (Free and Open Source Software (FOSS)) и Частное (патентованное) ПО. Различия между ними заключаются в контроле. У патентованного ПО контроль относится больше к продавцу (поставщику), в то время как у Свободного ПО все направлено на конечного пользователя. Но, несмотря на различия, они используют одни и те же законы об авторском праве для достижения своих целей. С юридической точки зрения, Свободное ПО дает пользователю больше прав согласно лицензионному соглашению, чем лицензионное соглашение патентованного софта, тем не менее основные законы лицензирования одинаковы. Юридическая теория утверждает, что автор FOSS, в отличие от автора общедоступного ПО (public domain software), никаким образом не отказался от авторских прав на свою работу. FOSS поддерживает авторские права, налагая лицензионное соглашение. Условия лицензии FOSS должны уважаться так же, как лицензионное соглашение платных продуктов. Всегда внимательно проверяйте лицензию перед тем как использовать стороннее программное обеспечение. Примерами патентованного (платного) по могут служить: AIX от IBM, HP-UX от HP, и Oracle Database 11g. Вы не имеете права устанавливать или использовать это ПО не заплатив за него. Вы не можете распространять копии, а так же запрещается изменять закрытый исходный код.

II. first steps on the command line

Эта глава объяснит использование man (manual pages, инструкции, да) на вашем Linux или Unix.

Man pages

1. man $command

Напечатайте manи через пробел команду, для которой вам нужна помощь и начинайте читать. Нажмите q чтобы выйти из мануала. Некоторые man'ы содержат в конце примеры.

Прим.:

…: man whois

2. man $configfile

Большая часть файлов конфигурации содержит свои собственные мануалы.

Прим.:

…: man syslog.conf

3. man $daemon

Это так же работает для большинства daemon’ов (демонов, т.е. фоновых программ) вашей системы.

Прим:

…: man syslogd

Man –k

man –k (или apropos, т.е. «по поводу») показывает список команд, которые связаны с запрашиваемой командой, а так же кратко что эти команды делают, по строчке на каждую.

Прим:

…: man –k syslog

lm-syslog-setup (8) - configure laptop mode to switch syslog.conf ...

logger (1) - a shell command interface to the syslog(3) ...

syslog-facility (8) - Setup and remove LOCALx facility for sysklogd

syslog.conf (5) - syslogd(8) configuration file

syslogd (8) - Linux system logging utilities.

syslogd-listfiles (8) - list system logfiles

 

Whatis

Чтобы увидеть только описание страницы мануала искомой команды, используйте whatis для искомой команды.

Прим:

…: whatis ls

ls (1)          - list directory contents

 

Whereis

Расположение мануала может быть установлено командой whereis.

Прим:

…: wheris –m ls

ls:   /usr/share/man/man1/ls.1.gz

Этот файл непосредственно читается командой man.

В общем случае whereis можно использовать для нахождения пути к файлу.

 

Man sections

Сейчас вы уже заметили цифры в круглых скобках. man manобъяснит, что это номера секций. Исполняемые программы и оболочки находятся в разделе 1, вот список всех секций:

1 Исполняемые программы или команды оболочки

2 Системные вызовы (функции, предоставляемые ядром)

3 Библиотечные вызовы (функции в библиотеках программ)

4 Специальные файлы (обычно находящиеся в /dev)

5 Форматы файлов и конвенций например /etc/passwd

6 Игры

7 Разное (включая пакеты макросов и соглашения), например man

8 Команды администрирования системы (как правило, только для root’a)

9 Подпрограммы ядра (не всегда)

 

8. man $section $file

При обращении к мануалу команды passwd, вы увидите,что он записан в виде passwd(1); когда речь идет о passwd file, вы увидите его записанным, как passwd(5). Как открыть справочную страницу в правильном разделе:

Прим: man passwd           # открывает первый найденный мануал

       man 5 passwd        # открывает страницу из секции 5

Man man

Если вы больше хотите знать про man, тогда Читайте Фантастический Мануал (Read The Fantastic Manual (RTFM!))!

К сожалению, мануалы не содержат ответов на все вопросы:

…: man woman

No manual entry for woman

Mandb

Если вы убеждены, что мануал существует, но вы не можете получить к нему доступ, попробуйте mandb.

Прим:

mandb

0 man subdirectories contained newer manual pages.

0 manual pages were added.

0 stray cats were added.

0 old database entries were purged.

 

6. working with directories (работа с папками)

Pwd

Чтобы узнать, в какой вообще папке вы находитесь, используйте команду pwd (Print Working Directory).

Прим:

…: pwd

/home

Cd

Чтобы изменить текущую папку, воспользуйтесь командой cd (Change Directory)

Прим.:

…: cd /etc

…:pwd

/etc

Если вы просто напечатаете cd или cd ~, то вернетесь в домашнюю папку (/home)

Чтобы перейти на папку вверх напечатайте cd .. .

Чтобы перейти в предыдущую использовавшуюся папку: cd –

Абсолютные и относительные пути.

Следует помнить об абсолютных и относительных путях в дереве файлов. Когда вы печатаете путь, начиная со слеша (/), тогда подразумевается, что путь идет из самого корня. Если же слеш не напечатан, то считается, что путь идет с той папки, в которой вы находитесь. Однако если вы находитесь в корневой директории, то нет разницы, печатать со слешем или без него.

 

Завершение пути

Кнопка Tab может помочь напечатать путь без ошибок. Если напечатать cd/et и нажать Tab, то путь автоматически дополнится до cd/etc/. Однако если напечатать cd/Et, то ничего не произойдет, поскольку был напечатан неправильный путь (все названия чувствительны к регистру)

 

Ls

Вы можете вывести список содержимого папки командой ls.

Если добавить опцию –a (ls –a), то будут показаны все файлы, включая скрытые файлы. В файловых системах Unix, если название файла начинается с точки, то он принимается как скрытый файл, и не показывается в обычных списках.

Если добавить опцию –l (ls -l), то будет выведен более полный список содержимого, то есть будет показано общее кол-во файлов, права доступа, размер, дата и время создания каждого файла.

При добавлении к предыдущему опции –h (ls –lh, ls –hl, ls –h –l, etc.) то числа (в частности размер файла) будут представлены в более понятном человеку виде (то есть в килобайтах, мегабайтах и т.п.)

 

Mkdir

Команда mkdirиспользуется для создания собственных пустых папок, для этого нужно добавить как минимум один параметр: имя папки. Помните о том, надо ли ставить “/” (относительные и абсолютные пути), если указываете путь, по которому должна быть создана папка.

Прим:

…: mkdir MyDir

Когда задается параметр –p,то будут созданы так же родительские директории, если необходимо (то есть, если ввести mkdir –p MyDir2/MyDir1/temp, то, в случае отсутствия этих папок, будет создана папка MyDir2, внутри которой будет MyDir1, внутри которой будет temp).

 

Rmdir

Когда папка пуста, можно использовать команду rmdir, чтобы её удалить. Аналогично, опция  -pрекурсивно удалит все родительские папки.

 

 

7.working with files

1. Необходимо помнить, что, во-первых, Linux чувствителен к регистру, то есть file1 и FILE1 разные файлы, так же как /etc/hosts и /etc/Hosts разные папки (по умолчанию второй даже не существует в Linux).

Во-вторых, все является файлом. Папка (директория) – это особый вид файла, но это по-прежнему файл. Даже окно терминала (/dev/pts/4) или жесткий диск (/dev/sdb) представлены где-то в файловой системе как файл.

 

File

Команда file определяет тип файла. Linux не использует расширений для определения типа файла. Вашему редактору все равно, оканчивается файл .TXT или .DOC. Как системному администратору, вам следует использовать file для определения типа файла. Вот пара примеров:

 

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 необходимо использовать опцию –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 file1). При создании файла можно так же использовать параметр –t,для изменения времени создания:

 

paul@laika:~/test$ touch -t 200505050000 SinkoDeMayo

paul@laika:~/test$ touch -t 130207111630 BigBattle

paul@laika:~/test$ ls -l

total 0

-rw-r--r-- 1 paul paul 0 1302-07-11 16:30 BigBattle

-rw-r--r-- 1 paul paul 0 2005-05-05 00:00 SinkoDeMayo

 

4. rm –команда для удаления файла. В отличие от ОС с графическим интерфейсом, командная строка не имеет корзины, или чего-либо подобного. Если вы используете rm, то файл пропадает окончательно. Чтобы предостеречь себя от случайного удаления файла, добавьте опцию –i,тогда будет задан вопрос, уверены ли вы:

paul@laika:~/Linux$ touch brel.txt

paul@laika:~/Linux$ rm -i brel.txt

rm: remove regular empty file `brel.txt'? y

paul@laika:~/Linux$

 

По умолчанию rm –r не будет удалять пустые директории. Однако есть несколько опций, которые позволят вам удалить любую директорию. Опция rm –rfизвестна потому, что она удалит всё (если у вас есть разрешение). Когда вы вошли с правами root, будьте осторожны с rm –rf (r – recursive, рекурсивно, f – force, усиленно/форсировано), на вас больше не будут распространяться ограничения. То есть вы буквально можете случайно удалить всю систему.

 

5. cp –для копирования файлов (если добавить исходный файл и конечную цель). Если цель – папка, то он будет скопирован в эту папку. Если вы хотите скопировать папку вместе со всем содержимым (и подпапками), используйте cp –r. Вы так же можете скопировать несколько файлов за раз, в этом случае последний аргумент (цель) должен быть папкой. (Прим: cp file1 file2 dir1/file3 dir1/file55 dir2).Аналогично с rm можно использовать опцию –i,для защиты от случайной перезаписи файла при копировании. Чтобы при копировании сохранить все выставленные права доступа, а так же время создания файла, используйте опцию –p.

6. mv –для изменении имени файла или для перемещения файла в другую папку. Когда надо переименовать только один файл, удобно использовать команду mv (прим: mv 1.txt 2.pdf, тогда файл 1.txt сменит название на 2.pdf).

7. rename –команда для переименования большого числа файлов за раз. Ниже приведены два примера, первый меняет все расширения из txt в png, для всех файлов, имя которых оканчивается на txt. Второй пример меняет все, что имеет в названии ABC в нижний регистр: abc, для всех файлов, которые кончаются на .png. Приведенный синтаксис работает для debian и ubuntu (до Ubuntu 7.10, у меня на виртуальной машине стоит Ubuntu 12.04, работает также)

paul@laika:~/test$ ls

123.txt ABC.txt

paul@laika:~/test$ rename 's/txt/png/' *.txt

paul@laika:~/test$ ls

123.png ABC.png

paul@laika:~/test$ rename 's/ABC/abc/' *.png

paul@laika:~/test$ ls

123.png abc.png

paul@laika:~/test$

 

Working with file contents

1. head –для просмотра первых 10 строчек файла. Можно так же показать первые n строчек файла (прим: head -4 /etc/passwd)

2. tail –аналогично для head, показывает последние 10 строк файла. Также можно задать, сколько строк (n) показывать.

3. 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$

 

4. more –эта команда полезна для отображения файлов, которые занимают больше одного экрана. Moreпозволит вам постранично увидеть содержимое файла, используйте пробел, для перемещения к след. странице. Less -команда аналогичная more, только листает из конца в начало.

5. 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

...

The Linux file tree

1.Множество дистрибутивов Linux частично следует Иерархическому Стандарту Файловой системы (Filesystem Hierarchy Standard – FHS). Есть некоторые различия в файловых системах в разных дистрибутивах Линукс. Чтобы узнать, что стоит в вашей машине, используйте man hier.Этот мануал объяснит структуру папок в вашем компьютере.

 

2.Все системы линукс имеют структуру папок, которая начинается в корневом каталоге (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

 

3. Binary directories (далее бинарники). Бинарники это файлы, которые содержат полный исходный код (машинный код). Они могут быть выполнены на компьютере. Иногда бинарники называют исполняемыми файлами.

Папка /bin содержит бинарники, которые используются всеми пользователями. Следуя FHS, /bin должна содержать /bin/cat и /bin/date(помимо всего остального). Вы можете найти подпапку /bin во множестве других папок. Например, пользователь serena может поместить её собственные программы в /home/serena/bin.Некоторые приложения часто при установке напрямую из источника поместят себя в /opt.Установщик Samba server может использовать /opt/samba/bin, для хранения своих бинарников.

 

4. /sbinсодержит бинарники для настройки операционной системы. Многие из системных бинарников (system binaries) требуют права root’а для выполнения определенных задач.

5. /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.

 

6. /opt – здесь хранится дополнительное программное обеспечение. Во многих случаях это ПО не из распределяющего хранилища (distribution repository). Большие пакеты могут устанавливать все свои файлы в /bin, /lib, /etc внутри /opt/$packagename. То есть, например, если пакет называется wp, то он установится в /opt/wp, поместит свои бинарники в /opt/wp/bin, а мануалы в /opt/wp/man.

7. /boot –здесь хранятся все файлы, необходимые для запуска компьютера. Эти файлы нечасто меняются. В Linux системах вы обычно найдете /boot/grub, которая содержит /boot/grub/grub.cfg (в более старых системах это может быть /boot/grub/grub.conf), который определяет загрузочное меню, которое отображается до запуска ядра.

8. /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 для хранения важных данных, или тех данных, которые вы хотите сохранить.

 


Дата добавления: 2018-04-05; просмотров: 358; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!