Как работать в Unix Shell

Как работать в Unix ShellМногие операции с вашими файлами и на хостинге можно гораздо быстрее и эффективнее делать с помощью командной строки Unix. Так, если вы копировали файлы CMS Joomla или WordPress на хостинг по FTP, вы отметили как это долго. Оно и понятно — ведь большинство FTP клиентов позволяет копировать файлы только по одному. И после каждого копирования ещё происходит отправка — получение служебных команд, что снова увеличивает время выгрузки. Для самой быстрой и эффективной работы с вашими данными на хостинге, служит Unix Shell, с которым вы будете работать по протоколу SSH. Как работать в Unix Shell — в этой статье для начинающих ВЕБ мастеров

Что такое SSH?

Протокол Secure Shell (SSH) был разработан для того, чтобы обойти ограничения и недостатки открытых каналов связи (таких как Интернет). SSH обеспечивает шифрование всего канала связи, включая удостоверяющий пользователей обмен логинами и паролями.

Что такое Unix Shell?

Unix Shell — это командная строка Unix, или особый скриптовый язык программирования (язык команд интерпретатора). С помощью него можно очень эффективно копировать, перемещать, удалять, упаковывать в архив и т.д. На практике вам стоит освоить всего около десятка команд и несколько «ключей» к ним. Перед тем, как начать пользоваться командной строкой, стоит рассказать о файловой системе Unix.

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

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

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

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

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

PuTTY
PuTTY

Качайте себе клиент для SSH — протокола, программу PuTTY и запускайте (инсталлировать не нужно).

приглашение сервера к работе по SSH
приглашение сервера к работе по SSH

В открывшемся окне в поле “Host Name (or IP address)” вводим имя сервера, оставляем порт 22 и жмем кнопку “Open”.  Если все правильно, открывается черное окно терминала. У вас спрашивают логин — вводим и жмем “ввод”. Следующая строка — ввод пароля. Внимательно введите пароль и нажмите “ввод”. Во время ввода пароля на экране не будут отображаться никакие символы.

Если все прошло нормально, то терминал отобразит сообщение типа какая ОС приглашает вас и т.д. и внизу появится долгожданное приглашение на ввод команд. Выглядит это так:

Начинаем изучать команды Unix Shell

 

Команды просмотра списка файлов и директорий

команда pwd
команда pwd

pwd — используется для информирования вас о вашем текущем местонахождении. Чтобы воспользоваться командой pwd, просто наберите её и нажмите “ввод”.

ls — листинг директории (посмотреть какие файлы есть в папке).

ls - листинг директории
ls - листинг директории

ls -l — упорядоченный листинг,

ls -l - упорядоченный листинг
ls -l - упорядоченный листинг
ls -la — выводит самый подробный листинг
ls -la - выводит самый подробный листинг
ls -la - выводит самый подробный листинг

ls -la или (ls -l -a) — показать все файлы, включая скрытые (начинаются на точку). Синонимы директорий вы видите вверху списка, в нём:

  1. Знак — “.”  (точка) — текущая директория,
  2. Знак — “..” (две точки) — вышестоящая (родительская) директория.

Команды перехода по директориям

cd joomlaclass.spb.ru — перейти в папку

cd - перейти в папку
cd - перейти в папку

joomlaclass.spb.ru (cd = change directory, сменить директорию), если она есть в вашей домашней директории. cd .. — переместиться на уровень вверх.

cd ~ — в домашнюю директорию.

Удаление файлов и директорий

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

Кстати, скрытые файлы (такие, которые начинаются с точки) таким образом удалить нельзя. Для их удаления придется набирать rm .имя_файла (пример: rm .htaccess)

Удаление директории

Удалить НЕ пустой каталог вам просто так не удастся, вначале нужно удалить всё, что в нём. А когда каталог пуст, удаляем его командой:

rmdir имя_каталога

rmdir - как удалить каталог
rmdir - как удалить каталог

Пример удаления каталога vasya

Создание директории

mkdir имя_директории — будет создана директория с указанным именем, например:

mkdir - команда создания каталога
mkdir - команда создания каталога
результат выполнения команды mkdir
результат выполнения команды mkdir

Распаковка архивов

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

Упаковка в tgz программой Total Commander
Упаковка в tgz программой Total Commander

Кстати, архив с расширением .tar.gz (или .tgz) — это специфический UNIX-овый формат, может быть создан из под Windows в Total Commander.
Выделите все файлы для упаковки на одной панели, нажмите Alt + F5 — и укажите тип архива TGZ. Упаковка произойдет в папку на соседней панели.

TGZ — имеет один из самых эффективных алгоритмов сжатия (лучше, чем ZIP)

Упаковываем в архив

tar -czf archive.tar.gz ‘www’ — упаковываем содержимое каталога www в один архив — archive.tar.gz

как упаковать в TGZ архив весь каталог
как упаковать в TGZ архив весь каталог

Можно также войти в корневой каталог вашего сайта на CMS (Joomla или WordPress), и упаковать все файлы в один архив (файл — arch.tgz):

tar -czf arch.tgz ./* — (означает «упаковать в файл arch.tgz все файлы данного каталога»)

Копирование файлов и каталогов

Например, нужно скопировать все файлы из каталога old в каталог new

cp -r old/* new/ — копируем все файлы и подкаталоги из каталога old в каталог new

Если стоит задача скопировать не все файлы, а только с расширением .html — набираем команду:

cp old/*.html new/ — копируем все файлы с расширением *.html из каталога old в каталог new

Перемещаем файлы и каталоги

mv old/* new/ — перемещаем (копируем и удаляем на старом месте) все содержимое каталога old в каталог new

Скачивание файла с другого сайта

Команда wget дает возможность скачать файл или каталог с другого сайта.

К примеру, можно скачать архив со скриптом прямо на хостинг, и там уже его распаковать.
Пример:
wget http://ftp.drupal.org/files/projects/drupal-6.13.tar.gz
скачает вам на хостинг архив с движком Друпал. Загрузка будет в ту папку, в которую вы перешли с помощью команды cd. Остается только распаковать архив, как это было описано выше.

Изменение прав доступа к файлу

Команда chmod — изменение режима доступа к файлам.

Иногда требуется вручную изменить режим доступа к файлам на диске Unix-сервера. Зачастую это нужно при размещении на сервере CGI-скриптов. Подробно о работе chmod и режимах доступа можно прочитать в документации по chmod. Я же приведу примеры работы с chmod в условиях хостинга:

  • chmod 755 script.pl — изменить режим доступа к файлу script.pl на 755 (это нужный для скриптов режим доступа);
  • chmod -R 755 cgi-bin/*.pl — изменить режим доступа на 755 для всех файлов с расширением *.pl в каталоге cgi-bin и во всех его подкаталогах;
  • chmod 000 www/file.html — изменить режим доступа к файлу file.html в каталоге www на 000 (нули). При таком режиме доступа, его никто не сможет открыть. Так можно быстро запретить доступ через веб к какому-то файлу.

В заключение скажу, что в в Unix очень много разных команд. Например в ОС FreeBSD их порядка 650. Однако здесь, я постарался описать только те команды, которые могут быть полезны в тех ограниченных условиях, которые доступны при работе со стандартным хостингом. Думаю, что вы легко овладеете ими, и почувствуете себя немного «хакерами». Успехов.

Мои видеоуроки по Unix Shell для начинающих ВЕБ мастеров

Поделиться этим:

Комментарии 3

  • Добавил в закладки, спасибо, то вечно забываю какую-то команду и трачу кучу времени на поиск описания.. но у вас все так доступно и классно расписано, короче респект!
    Кстате wget думаю тоже многим будет полезна..
    команда wget дает возможность скачать к примеру архив со скриптом прямо на хостинг и там уже его распаковать.
    Пример: wget http://ftp.drupal.org/files/projects/drupal-6.13.tar.gz скачает вам на хостинг архив с движком друпал.. скачает в ту папку в которую вы перешли с помощью команды cd. Потом остается просто распаковать как это сделать писалось в статье.

  • Хорошая статья, узнал несколько полезных ключей к командам

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *