- •II. First steps on the command line
- •5. Man pages
- •6. Working with directories (работа с папками)
- •7.Working with files
- •8. Working with file contents
- •9. The Linux file tree
- •III. Shell expansion
- •10. Commands and arguments
- •11. Control operators
- •12. Variables
- •13. Shell history
- •14. File globbing
- •IV. Pipes and commands
- •Глава 16. Фильтры.
- •16.3 Grep
- •16.7. Sort
- •16.8. Uniq
- •16.9. Comm
- •16.12. Примеры пайпов
- •Глава 17. Основные инструменты Unix
- •17.1. Find
- •17.2. Размещение
- •17.3. Date
- •17.5. Sleep
- •17.6. Time
- •17.7. Gzip - gunzip
- •17.8. Zcat - zmore
- •18.3. Замена и удаление символов (r X X)
- •18.4. Отменить и повторить (u .)
- •18.5. Вырезать, копировать и вставить строчки (dd yy p p)
- •18.6. Вырезать, копировать и вставить строчки (3dd 2yy)
- •18.8. Объединения двух и более линий (j)
- •18.9. Слова (w b)
- •18.10. Сохранить (или нет) и выход (:w :q :q! )
- •18.11. Поиск (/ ?)
- •18.13. Чтение файлов (:r :r !cmd)
- •19.1. Предпосылки
- •19.2. Hello World
- •19.4. Комментарии
- •20.2. Если, затем, иначе (if then else)
- •20.3. If then elif
- •20.4. For loop
- •20.5. While loop
- •21.2. Shift through parameters.
- •21.3. Runtime input.
- •21.3. Sourcing a config file.
- •21.5. Get script options with getopts.
- •21.6. Get shell options with shopt.
- •Глава 22 More scripting.
- •22.1. Eval.
- •22.4. Case.
- •22.5. Shell functions.
- •Раздел VII. Local user management. Глава 23. Users.
- •23.1. Identify yourself.
- •23.2. Users.
- •23.3. Passwords.
- •23.4 Home directories
- •23.5 User shell
- •23.6. Switcj users with su
- •23.7 Run a program as another user
- •23.10 Shell environment
- •Глава 24. Groups
- •24.1 About groups
- •24.2 Groupadd
- •24.3 /Etc/group
- •24.4 Usermod
- •24.5 Groupmod
- •24.6 Groupdel
- •24.7 Groups
- •24.8 Gpasswd
- •24.9 Vigr
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.
5. Man pages
man $command
Напечатайте man и через пробел команду, для которой вам нужна помощь и начинайте читать. Нажмите q чтобы выйти из мануала. Некоторые man'ы содержат в конце примеры.
Прим.:
…: man whois
man $configfile
Большая часть файлов конфигурации содержит свои собственные мануалы.
Прим.:
…: man syslog.conf
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 Подпрограммы ядра (не всегда)
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 рекурсивно удалит все родительские папки.