#1 Online pharmacy affiliate program! Инвайты в ICQ 400*276*143


T3leads - выжми максимум из финансового трафика. Payday, debt, insurance, etc.

Небольшой мануал по Unix Shell

24.12.2007 Инструменты

Возникла необходимость написать небольшой мануал по Unix Shell для моих немногочисленных рефералов, которые извращаются с фтп и бесполезно расходуют свой трафик. Как говорится, аська хорошо, а хороший мануал еще лучше. Так что читайте.

Unix - это Open Source операционная система, т. н. противоположность MS Windows. Большинство серверов работают на Unix (Linux, FreeBSD и др.), поскольку ОС *nix изначально заточены под интернет. При этом командная строка (shell) является очень мощным и гибким инструментом, позволяющим решать практически все возникающие задачи. Для того чтобы нормально разбираться в командах, нужно уяснить немного теории Unix.

Что такое Shell?

Unix Shell - это командная строка Unix, или особый скриптовый язык программирования (язык команд интерпретатора). В папке /bin лежат разные интерпретаторы (программы, которые понимают введенные вами команды и правильно их выполняют) - sh, csh, bash и другие. Все эти интерпретаторы поддерживают традиционные команды Unix Shell и различаются только некоторыми особыми присущими только конкретному интерпретатору командами.

Файловая система

Корень всей файловой системы обозначается так: /
В корневой директории находятся папки /bin (бинарники), /tmp, /dev, /home, /root (админ), /usr и другие. Обычно на виртуальных хостингах ваша сфера влияния будет ограничена папкой /home/clients/vasya (/home/users/vasya или типа того). Это значит, что вы как рядовой юзер можете записывать файлы в папку /home/slients/vasya/ и поддиректории этой папки.

Права - это разрешение на чтение/запись/выполнение для конкретного статуса (ваш статус - юзер, которому отдали папку /home/сlients/vasya/). Кроме отдельного пользователя в иерархии Unix существуют группы пользователей и root - админ, тот кто может снести всю систему одной командой. Его права не ограничены.

Домашняя папка на языке shell обозначается так: “~“, текущая директория - “./“. Поэтому папка /home/slients/vasya/domains эквивалентно ~/domains, а если в данный момент вы находитесь в своей домашней директории, тогда можно написать “./domains“. Вышестоящая папка называется “../“.

Регулярные выражения

Крайне мощный инструмент, пришедший именно из Unix. Регулярные выражения - основа популярности скриптовых языков, таких как Perl. На начальном этапе вам хватит одного регулярного выражения - *, которое означает любую строку символов.

Теперь к практике

Итак, у нас есть shell-доступ :) . Если нет, то просим его у своего хостера. Хостер дает вам адрес сервера, на котором лежит ваша папка /home/users/vasya (например server.com), ваш логин и пароль. Если вы работаете на Windows (мануал рассчитан именно на таких людей), то качайте себе PuTTY (что это?) и запускайте (инсталлировать не нужно). В открывшемся окне в поле “Host Name (or IP address)” вводим имя сервера, оставляем порт 22 и жмем кнопку “Open”. Если все правильно, открывается черное окно терминала. У вас спрашивают логин - вводим и жмем “ввод”. Следующая строка - ввод пароля. Внимательно введите пароль и нажмите “ввод”. Во время ввода пароля на экране не будут отображаться никакие символы.

Если все прошло нормально, то терминал отобразит сообщение типа какая ОС приглашает вас и т.д. и внизу появится долгожданное приглашение на ввод команд. Выглядит это так:
>$ или [server.com ~]$ или # или еще какая угодно строка символов, которая задана в конфиге у хостера.

Формат команд такой:

команда -арг1 -арг2 … –доп.аргумент1 …

То же самое можно записать короче:

команда -арг1арг2 … –доп.аргумент1 …

Регистр символов имеет значение, команды uname и Uname - совершенно разные команды.

Теперь рассмотрим основные нужные на начальном этапе команды.

Нужные команды

1. man - вызывает справку по команде. man cd - справочная информация по команде cd. Справка обычно только на английском языке, она листается клавишами “вверх”-”вниз”, выход из справки - клавиша q.

2. uname - посмотреть какая ОС установлена на сервере. uname -a - выдать максимум информации (a = all - “все”).

3. ls - листинг директории (посмотреть какие файлы есть в папке). ls -l - упорядоченный листинг (разница налицо), ls -la или (ls -l -a) - показать все файлы, включая скрытые (начинаются на точку) и “.” (текущая) с “..” (вышестоящая папка).

4. cd ~/domains - перейти в папку domains (cd = change directory, сменить директорию), если она есть в вашей домашней директории. cd .. - переместиться на уровень вверх. Если в текущей папке (скажем ~/domains) есть папка domain.com, то перейти в него можно командой cd domain.com или cd ./domain.com. cd ~ - в домашнюю директорию.

5. rm - удалить.
rm * - удалить все файлы, на которые у вас есть права на запись. Папку таким образом удалить нельзя. Кстати * = ./*
rm -R ./* - удалить все файлы и папки (и файлы в папках любой вложенности) в текущей директории. В такой ситуации скорее всего вас будут каждый раз спрашивать удалить файл или нет. Чтобы убрать вопросы, пишем
rm -R -f ./* или rm -Rf ./* - теперь команда снесет все содержимое текущей папки без разговоров.

6. wget - залить на хост. Посмотрите man wget - команда очень мощная.
wget http://domain.com/archive.tar.gz - залить в текущую папку этот архив с удаленного сервера. Если у вас обрубится подключение, wget продолжит работу и докачает все что нужно. Кстати формат архива .tar.gz совершеннее zip или rar и сжимает лучше.

7. Распаковка архивов:
tar -xzf archive.tar.gz для архива в текущей папке.
unzip archive.zip - для zip архивов.
unrar archive.rar - для rar архивов.

8. Копирование/перемещение файлов
mv ./temp ./ - переместить все файлы из вложенной папки temp в текущую
cp ./temp ./pepetun - скопировать все файлы из вложенной папки temp в папку pepetun.

На мой взгляд этих команд достаточно для первого раза. На самом деле большинство из них имеют очень много аналогов, например для rm есть аналог unlink, директории можно удалять командой rmdir… Точное количество команд шелла наверное не знает никто.

Итак, для тех кто хостится на hqhost для установки шопов Главмеда или мп3 каталога или еще чего нужно сделать следующие шаги:

1. Логинимся на своем шелле. Начальная папка - ваша домашняя директория.
2. Идем в папку нужного домена
cd domains/вашдомен.com/html
3. Забираем упакованный шоп
wget http://там-где-лежит-ваш-шоп/shop.tar.gz
4. Распаковываем
tar -xzf shop.tar.gz
5. Дальше ставим по инструкции.

Каналы (pipes)

Каналы - это возможность задать последовательность действий одной командой. Пример:
cd ~/domains/shop.com/html && ls -l - переход в папку и вывод ее содержимого. && - логическое И: следующая команда выполняется если успешно завершилась предыдущая. Аналогично можно разделять команды логическим ИЛИ (||) - можно предусмотреть какое-то специальное действие для случая, если первая команда не сработает. Каналы незаменимы когда вам нужно повесить задание из нескольких команд на крон (выполнить скрипт, потом почистить временные файлы или кеш и т.д.).

Большинство ошибок при работе с шеллом - это синтаксические ошибки в командах, или не поставленный перед аргументами дефис, или неразбериха с ориентацией среди директорий. Так что самое правильное решение возникающих проблем - внимательно повторить нужные операции.

Для начала все, если есть вопросы или замечания - пишите в комменты, будем вносить в этот мануал нужные изменения.


Комментариев (10) на «Небольшой мануал по Unix Shell»

  1. Sergey пишет:

    Есть еще несколько полезных команд
    head -n - показать первые N строк файла
    tail -n - показать последние N строк файла
    tail -f - показывать в реальном времени конец файла - полезно для тестирования и просмотра логов
    apropos - найти, какая программа делает то, что описано в фразе, например apropos convert или apropos ftp client

    Если есть вопросы, пишите, отвечу еще :)

  2. Александр пишет:

    Делал все по инструкции - все ок ;)
    Спасибо.

  3. egorych пишет:

    “apropos - найти, какая программа делает то, что описано в фразе, например apropos convert или apropos ftp client”

    О, я о такой команде не знал, спасибо :) .

  4. art пишет:

    а rar может и не стоять. я с этим иногда обламываюсь, по привычке раров запакую и залью. пробовал поставить, вроде все сделал как админ сервера сказал, но так и не заработал unrar |:

  5. egorych пишет:

    2art:
    forum.ubuntu.ru/index.php?topic=16678.msg116066 :)

  6. Пупс пишет:

    tar -zxvf filename.tar.gz (добавил v) распакует в текущую директорию и еще выведет на экран полные пути до файлов, которые распаковал.

    ps afx - список процессов.

    top - типа диспечера процессов. обновляется автоматически =)

    find / -name filename ищет файл под названием filename начиная с “/” корневой директории.

    whereis php выводит полный путь до php.

    а вообще самое главное - это команда man. man название_команды и выводится справка, как использовать команду.

  7. bukvoed пишет:

    “имеют очень много налогов” - опечатка, исправьте.
    спасибо, очень нужная статья. и вообще блог классный, подписался :)

  8. egorych пишет:

    Ок, поправлю ;)

  9. parovoz пишет:

    Спасибо за статью!

  10. Ant пишет:

    Пойду учиться и эксперементировать.
    Спасибо за то что так всё просто обьяснено…

Comments RSS Feed

Оставьте свой комментарий



Click to hear an audio file of the anti-spam word