Абсолютные и относительные пути
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!