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-скриптов.

Удачи!

Лучшая благодарность автору — ваши комментарии!

Tags: ,

Responses

  1. Andrew says:

    октября 15, 2011 at 17:54 (#)

    собственно баш тут почти не причём

  2. igas says:

    октября 15, 2011 at 18:34 (#)

    давно и часто сижу в терминальчике и всем кто только начинает советую несколько базовых вещей о которых иногда люди не знают:
    * использование ctrl+a/e
    * использование tab’а
    * использование !! и !$
    опционально переход на zsh, для тех кто с настройкой париться не хочет хороший конфиг

  3. Tankard says:

    октября 15, 2011 at 19:42 (#)

    zsh вещь))

Leave a Response

Для подсветки кода используйте BB - коды: [language]...[/language], где language может быть: ruby, javascript, css, html.