Linux Bash ч.1: Самые Азы
октября 15, 2011 | Published in bash, Linux | 3 Comments
Одной из особенностей операционных систем семейства Unix(Unix, Linux, BSD, MacOS) является то, что большая часть работы в них выполняется при помощи специальных программ — консольных комманд. Это достаточно условно «большая часть работы», ведь в Windows имеется CMD, а в Ubuntu имеется возможность производить большинство действий без работы с консолью (терминалом), в большей мере благодаря этому Ubuntu и называется fuman-friendly дистрибутивом. То есть потому, что вы можете работать в Ubuntu также тупо, как и в Windows, без знания устройства системы.
Эта статья посвящена консоли (терминалу) — черному окошку в которое вы вводите команды ;-) и скриптовому языку программирования Bash, который вам придется очень часто использовать работая в Linux, если только ваша работа не ограничивается в работе с документами, просмотром фильмов и прослушиванием музыки. Консоль (терминал) также часто называют командрой оболочкой, что является более официальным или даже официозным термином (термин терминал означает сам интерфейс взаимодействия с shell, но не сам shell, однако на это часто закрывают глаза).
Командная оболочка Bash произошла от командной оболочки Bourne shell — «оболочка Борна», которая была разработана для Unix Стивеном Борном — одним из основных разработчиков Unix в Bell Labs. Сокращенно Bourne shell называют просто sh.
Bash — это усовершенствованный вариант sh. Bash разшифровывается как «Bourn again shell», где происходит игра слов так как имя Bourn и слово born (рождение) созвучны, таким образом Bash можно перевести как «перерожденная оболочка Борна».
Сделаем несколько выводов:
1. Shell — это программа, которая просто выполняет вводимые пользователем команды.
2. Bash — это несколько усовершенствованный shell.
3. Bash(Shell) — это также скриптовый язык который используется в одноименной программе для написания скриптов, т.е. команд.
Shell можно сравнить с DOS (disc operation system), а скрипты можно сравнить со скриптами из *.BAT файлов.
Мы более менее разобрались с тем, что такое bash, shell, консоль, терминал и т.д. Теперь откройте в терминал. ведь мы начнем изучать некоторый базовые команды!
dir (directory — директория, папка, каталог)
vladimir@rubydev:~$ dir
antifat Desktop game_spec~ rvm-installer
bin Downloads mongodb share
blogposts em.rb~ projects VirtualBox\ VMs
books examp Public xenomen_spec~
Команда dir является псевдонимом для команды ls -C -b и печатает содержимое текущей директории в несколько столбцов.
ls (list — показывает список (list) содержимого текущей директории). ls — это одна из основных команд и поэтому она содержит очень много различных опций. Чтобы узнать подробнее о команде, которыю вы хотите использовать наберите в консоли команду info <название интересующей команды>, например:
info ls
Некоторый важные параметры (флаги) команды ls:
ls -a (или ls —all) — печатает в терминале все содержимое директории включая скрытые файлы (в Linux скрытыми файлами называются все файлы, имена которых начинаются с точки)
ls —group-directories-first — печатает сперва директории, а затем только файлы.
ls —ignore=’D*’ — печатает файлы и директории содержащиеся в текущей директории исключая файлы, имена которых соответствуют паттерну. В данном случае паттерн это ‘D*’, то есть будут игнорироваться все директории и файлы, названия которых начинаются на D.
ls —format=long — кроме имени файла печатает размер, права доступа и прочую необходимую информацию.
cp (copy) — команда выполняет копирование файлов. Пример:
cp file1 fl1 — скопирует содержимое файла file1 из текущей директории в файл fl1 также из текущей директории (файл будет создан если его нет).
cp file1 file2 dir — скопирует файлы file1 и file2 в директорию dir/.
mv (move) — данная команда занимается перемещением файлов из одного места в другое. То есть она копирует файл и затем удаляет его оригинал оставляя только копию.
rm (remove) — команда удаляет файлы.
rm <filename> — файл или список файлов
rm -f (—force) — игнорирует отсутствующие файлы и вопросы.
rm -i (—interactive=always) — для каждого удаляемого файла будет задан вопрос стоит ли его удалять.
rm -r(-R, —recursive) — позволяет рекурсивно удалять файлы из указанной директории, то есть полностью удаляется указанная директория.
touch — создает файл с указанным именем, если файл уже существует, то изменяет его временную метку.
cat <file> — копирует файл в стандартное устройство вывода/ввода, т.е. в консоль. Используя cat file вы можете в консоли почитать содержимое файла. Это аналогично cat < file, если вы будете использовать cat > file, то вводимые вами символы будут записаны в file, то есть cat можно использовать как совсем простой текстовый редактор =)
echo — печатает строку в стандартное устройства вывода.
$echo Hello, World!
Hello, World!
pwd (print working directory) — печатает текущую директорию:
$ pwd
/home/vladimir
cd (change directory — смена директории) команда ипользуется для путешествия по директориям.
cd — выполняется переход в рабочую директорию по умолчанию, то есть /home/<user>/
cd <dir> — происходит переход во вложенную директорию
сd .. — переход на уровень выше — в родительскою директорию
сd ../<dir> — переход в директорию, что находится в родительской директории текущей директории
cd ~ — синоним для cd, где ~ — ссылка на стандартную рабочую директорию пользователя. Вариант с cd ~ подходит когда вам из определенной директории нужно перейти в одну из директорий вложенных в /home/<user>/.
mkdir (make dir — создать директорию) — команда создает директорию вложенную в текущую.
$ mkdir <dir>
rmdir (remove directory — удалить директорию) — удаляет пустую директорию. Для удаления не пустой директории используйте описанную выше команду rm -r.
uname — команда печатает информацию о системе.
uname -a (—all) — печатает полную информацию о системе:
$ uname —all
Linux rubydev 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011 i686 i686 i386 GNU/Linux
-s, —kernel-name — имя ядра (Linux)
-i, —hardware-platform — платформа (i386)
-m, —machine — тип железа (i686)
-n, —nodename — имя компьютера в сети (rubydev)
-p, —processor — тип процессора (i686)
-o, —operating-system — OS (GNU/Linux)
-r, —kernel-release — релиз ядра (3.0.0-12-generic)
-v, —kernel-version — версия ядра (#20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011)
На этом все. В слудующих статьях вы узнаете еще больше команд и познакомитесь с написание Bash-скриптов.
Удачи!
Лучшая благодарность автору — ваши комментарии!
октября 15, 2011 at 17:54 (#)
собственно баш тут почти не причём
октября 15, 2011 at 18:34 (#)
давно и часто сижу в терминальчике и всем кто только начинает советую несколько базовых вещей о которых иногда люди не знают:
* использование ctrl+a/e
* использование tab’а
* использование !! и !$
опционально переход на zsh, для тех кто с настройкой париться не хочет хороший конфиг
октября 15, 2011 at 19:42 (#)
zsh вещь))