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

При работе с файлом сайта на сервере может возникнуть необходимость в определении его полного пути. Для выполнения этой задачи существует несколько способов, о них и пойдет речь далее.

Адреса файлов на серверах

Для начала предлагаю разобраться с тем, как вообще происходит получение адресов файлов. Самый распространенный способ – использование доступа к элементам при помощи протокола HTTP. В этом случае файлы выгружаются юзерами при помощи специального кодирования. В следующем отрывке кода вы наглядно видите, как происходит бинарный тип кодирования с использованием атрибута enctype:

<form action="upload" method="POST" enctype="multipart/form-data">

    <input type="file" name="myfile">

    <br/>

    <input type="submit" name="Submit">

</form>

Второй распространенный вариант – использование протокола FTP, который может работать в обоих направлениях – как для загрузки файлов, так и для их скачивания. На следующем скриншоте вы видите пример того, как отображается по FTP открытая для пользователей папка сайта с возможностью скачать любой файл.

Использование FTP-сервера для определения абсолютного пути файла

Соответственно, на этой же странице можно с легкостью получить информацию о полном пути файла.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Определение адреса файла на сервере

Разберу основные методы получения адресов файлов, хранящихся на сервере. 

Консольная утилита pwd (для Linux)

Пользователи выделенного сервера или VDS с Linux могут задействовать простую консольную утилиту pwd, которая предназначена для отображения пути текущего каталога, где сейчас и выполняются все действия. Эту утилиту можно использовать и для определения адреса файла на сервере. Вывод абсолютного пути осуществляется путем ввода простой команды:

Использование утилиты pwd для определения пути файла на сервере

Она поддерживает дополнительные опции, позволяющие немного модернизировать результат вывода:

-L отменяет разыменовывание символических ссылок, их отображение осуществляется без конвертирования в исходный путь.

-p  конвертирует символические ссылки в их исходные имена с отображением указываемых директорий.

Если вы задаетесь вопросом, можно ли использовать pwd в своих скриптах, то ответ на него будет «Да». В этом нет ничего сложного, а простое представление объявления утилиты выглядит как DIR=`pwd` или DIR=$(pwd).

Панели управления и FTP

При использовании услуг хостинга управление собственным веб-ресурсом происходит при помощи местной административной панели. Необходимо только знать ее устройство, чтобы быстро определить полный путь любого файла на сервере. Найдите домашнюю директорию в одном из разделов аккаунта. Путь к сайту может выглядеть примерно так: /var/www/user/data или /srv/www/hosts/mysite.com.

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

Если вы арендуете виртуальный хостинг, то путь к файлу легко определить, если подключиться к серверу по FTP. 

Адрес файла

Откроем свойства файла любого файла в папке тестового сайта на WordPress и увидим его полный FTP-адрес.

Создание PHP-скрипта

Есть небольшой скрипт, который нужно сохранить в отдельном файле. Он позволяет получить абсолютный путь любого файла, а реализовывается это благодаря тому, что вся информация уже хранится под одной переменной $_SERVER. Создайте пустой файл и вставьте туда следующий код:

<?php

echo 'Document root: '.$_SERVER['DOCUMENT_ROOT'].'<br>';

echo 'Полный путь к скрипту и его имя: '.$_SERVER['SCRIPT_FILENAME'].'<br>';

echo 'Имя скрипта: '.$_SERVER['SCRIPT_NAME'];

?>

Отредактируйте его под себя, после чего сохраните с любым названием и задайте тип файла .php. Используйте FTP-клиент для загрузки этого файла в корневую папку целевого сайта. 

Последний этап – запуск этого скрипта. В адресной строке браузера введите адрес вашего сайта и в конце добавьте /file.php, где file замените на название файла со скриптом. На новой странице в веб-обозревателе отобразятся примерно следующие сведения:

Document root: /home/XXXXX/YYYYY

Полный путь к скрипту и его имя: /home/XXXX/YYYYY/url_path.php

Имя скрипта: /url_path.php

Вы можете использовать один из этих методов, когда требуется определить абсолютный путь файла. 

25 июля, 2014 12:45 пп
13 086 views
| 1 комментарий

Linux, VPS

Начиная работу с сервером Linux, пользователи часто сталкиваются с проблемой поиска необходимых файлов.

Данное руководство рассматривает использование соответствующей команды find, которая позволяет искать файлы при помощи различных фильтров и параметров. Кроме того, это руководство вкратце охватывает команду locate, которую можно быть использовать для поиска команд.

Поиск по имени файла

Конечно, поиск файла по имени – самый очевидный способ найти нужный файл.

Для этого используйте:

find -name "query"

Данная команда чувствительна к регистру (то есть, она воспринимает файлы с именем file и File как два разных файла).

Чтобы найти файл по имени без учета регистра, наберите:

find -iname "query"

Чтобы найти файлы, которые не совпадают с определенным шаблоном, нужно инвертировать поиск при помощи флагов -not или метасимвола «!». Обратите внимание, при использовании «!» нужно избегать символов, чтобы оболочка bash не интерпретировала «!» еще до выполнения команды find.

find -not -name "query_to_avoid"

или

find ! -name "query_to_avoid"

Поиск по типу файла

При помощи параметра «-type» можно указать тип необходимого файла. Это работает так:

find -type type_descriptor query

Вот список общих дескрипторов, при помощи которых можно указать тип файла:

  • f: обычный файл;
  • d: каталог;
  • l: символическая ссылка;
  • c: символьные устройства;
  • b: блочные устройства.

К примеру, чтобы найти в системе все символьные устройства, нужно выполнить команду:

find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .

Чтобы найти все файлы, которые заканчиваются на .conf, используйте:

find / -type f -name "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .

Фильтрация по времени и размеру

Команда find позволяет фильтровать полученный результат, руководствуясь размером и временем последнего изменения.

Размер файла

Чтобы отфильтровать файлы по размеру, используйте параметр -size.

Также нужно внести суффикс в конце значения, чтобы указать размер:

  • c: байт
  • k: килобайт
  • M: мегабайт
  • G: гигабайт
  • b: блоки по 512 байт

Чтобы найти файлы размером ровно в 50 байт, наберите:

find / -size 50c

Чтобы найти файлы, размер которых меньше 50 байт, используйте символ «-» перед значением:

find / -size -50c

Соответственно, чтобы найти файлы, размер которых превышает 700 мегабайт, используйте перед значением символ +; команда имеет такой вид:

find / -size +700M

Поиск в зависимости от времени

Linux хранит данные о access time, modification time и change time.

  • access time: время последнего обращения к файлу (когда файл был прочитан или дописан);
  • modification time: время последнего изменения содержимого файла;
  • change time: время последнего изменения инода (inode) файла.

Для фильтрации файлов по времени используйте параметры «-atime», «-mtime» и «-ctime» соответственно.

Значение данного параметра указывает, сколько дней назад был изменен файл. Как и в случае с размером файла, можно использовать символы – и +, чтобы получить файлы, измененные меньше чем или больше чем n дней назад.

То есть, чтобы найти файл, содержимое которого было изменено 1 день назад, используйте:

find / -mtime 1

Чтобы вывести файлы, к которым обращались меньше 1 дня назад, используйте:

find / -atime -1

Чтобы найти файлы, иноды которых были изменены более трех дней назад, введите:

find / -ctime +3

Существуют также сопутствующие параметры, с помощью которых можно указать минуты вместо дней:

find / -mmin -1

Это вернет файлы, содержание которых было изменено минуту назад.

Кроме того, команда find может сравнивать файлы и выводить более новые из них:

find / -newer myfile

Поиск по владельцу и привилегиям

С помощью команды find файлы можно искать по владельцу или правам на файл.

Для того используются параметры –user, –group, и -perm соответственно. Например, чтобы найти файл, принадлежащий пользователю с именем syslog, наберите:

find / -user syslog

Аналогично, чтобы вывести файлы, принадлежащие группе shadow, используйте:

find / -group shadow

Также можно искать файлы с особыми привилегиями.

Чтобы найти файл с определенными правами, используйте:

find / -perm 644

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

Чтобы вывести все файлы, привилегии которых больше или равны указанным, используйте синтаксис:

find / -perm -644

Это вернет все файлы с дополнительными привилегиями (например, файл с привилегиями 744).

Фильтрация файлов по глубине

Чтобы выполнить примеры данного раздела, создайте  во временном каталоге структуру каталогов. Она должна состоять из трех уровней каталогов, с десятью каталогами на первом уровне. Каждый каталог (в том числе тестовый каталог) должен содержать десять файлов и десять подкаталогов.

Чтобы создать такую структуру, выполните следующую команду:

cd
mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
cd ~/test

Чтобы ознакомиться с только что созданной структурой и проверить, все ли создано правильно, используйте команды ls и cd. Затем вернитесь в тестовый каталог test:

cd ~/test

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

find -name file1
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1
./level1dir7/level2dir8/file1
. . .

Эта команда вывела достаточно объемный результат. Передав этот результат в счетчик, можно увидеть, что в итоге выведено 1111 файлов.

find -name file1 | wc -l
1111

Конечно, в большинстве случаев этот вывод слишком объемный и неудобный. Попробуйте сузить его.

Для этого можно использовать параметр –maxdepth, чтобы задать максимальную глубину поиска:

find -maxdepth num -name query

Чтобы найти file1 в каталогах level1 и выше, укажите максимальную глубину 2 (1 для каталога верхнего уровня и 1 для каталогов level1).

find -maxdepth 2 -name file1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./file1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1

Как видите, данный результат имеет гораздо более удобный вид.

Кроме того, можно указать минимальную глубину поиска:

find -mindepth num -name query

Это используется для поиска файлов, которые находятся в конце ветвей каталога:

find -mindepth 4 -name file
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .

Опять же, данный результат будет содержать огромное количество файлов (1000).

Максимальную и минимальную глубину поиска можно комбинировать, чтобы уменьшить диапазон поиска:

find -mindepth 2 -maxdepth 3 -name file
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .

Выполнение и объединение команд

Утилита find позволяет выполнять любую вспомогательную команду на все найденные файлы; для этого используется параметр –exec. Базовый синтаксис выглядит так:

find параметры_поиска -exec команда_и_параметры {} ;

Символы {} используются в качестве заполнителя для найденных файлов. Символы ; используются для того, чтобы find могла определить, где заканчивается команда.

Для примера можно найти файлы с привилегиями 644 (как в предыдущем разделе) и изменить их привилегии на 664:

cd ~/test
find . -perm 644 -exec chmod 664 {} ;

Затем можно сменить привилегии каталога:

find . -perm 755 -exec chmod 700 {} ;

Чтобы связать несколько результатов, используйте команды -and или -or. Команда –and предполагается, если она опущена.

find . -name file1 -or -name file9

Поиск файлов с помощью команды locate

Команда locate является альтернативой для find. Данная команда, как правило, работает быстрее и может легко производить поиск по всей файловой системы.

Установить эту команду можно при помощи с apt-get:

sudo apt-get update
sudo apt-get install mlocate

Но почему команда locate быстрее, чем find? Дело в том, что locate зависит от базы данных файлов в файловой системе.

Как правило, cron-скрипт обновляет эту базу данных раз в день; но ее можно обновить и вручную. Запустите эту команду:

sudo updatedb

Запомните: БД нужно регулярно обновлять, чтобы она содержала актуальные данные; в противном случае найти недавно полученные или созданные файлы будет невозможно.

Чтобы найти файлы с помощью команды locate, просто используйте следующий синтаксис:

locate query

Полученный результат также можно фильтровать.

К примеру, чтобы возвращать только файлы, содержащие сам запрос, вместо того чтобы выводить каждый файл, который содержит запрос в ведущих к нему каталогах, можно использовать флаг –b (чтоб искать только basename, базовое имя файла):

locate -b query

Чтобы команда locate возвращала только файлы, которые все еще существуют в файловой системе (то есть, файлы, которые не были удалены в промежутке между последним запуском updated и текущим вызовом locate), используйте флаг –е:

locate -e query

Чтобы просмотреть статистику, занесенную командой locate в каталог, используйте опцию –S:

locate -S
Database /var/lib/mlocate/mlocate.db:
3,315 directories
37,228 files
1,504,439 bytes in file names
594,851 bytes used to store database

Итоги

Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Каждая из этих утилит имеет свои преимущества.

Несмотря на то, что команды find и locate сами по себе очень мощны, их действие можно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте фильтровать их результаты при помощи команд wc, sort и grep.

Tags: Find, Linux, Locate, VPS

Путь на сервере до файла через php, выведем на экран ! Вообще получим путь на сервере до файла разными способами!

  • Что такое путь до файла на сервере -> теория

    Иногда, очень трудно понять, что означают те или иные значения! Как можно объяснить по простому, Что такое путь до файла на сервере!?

    Давайте посмотрим в адресную строку и там вы увидите ссылку на файл и выше выделенного красным, вы не сможете подняться, это домен или по-другому называется -> корневая папка, но данный путь на корневой папке не останавливается…

    https://dwweb.ru

    /page/php/096_put_na_servere_do_fayla_php.html

    Пример пути на сервере:

    Выше есть еще несколько папок, с разной степенью доступа! И если мы весь путь, который существует выше корневой папки поставим вместо домена. то получим путь на сервере до файла

    home/domen/dwweb_ru/www

    /page/php/096_put_na_servere_do_fayla_php.html

    И если вы используете php, то вам все равно придется использовать путь на сервере до файла, потому, что многие функции работают только с файлом, к которому прописан путь на сервере

  • Получить путь до файла на сервере

    Можно ли получить путь до файла на сервере без php!? Можно, но зачем!? Предположим, что у вас нет php!? Очень странно, но возможно! Никогда такой херней не занимался, но что не сделаешь для своих любимых пользователей…

    У меня только единственный способ … кроме обращения в тех поддержку…

    Заходим в админку, поскольку я не умею гадать, то заходим в свою админку сайта, у нас это DIRECTADMIN на ruweb — е

    Ищем вкладку создать ftp аккаунт.

    После того, как вы попали на новую вкладку опять нажимаем ftp аккаунт

    Получить  путь до файла на сервере

    Далее выбираем первый чекбокс и внизу видим путь на сервер до корневой папки:

    Получить  путь до файла на сервере

  • Получить путь до файла на сервере -> способ №1

    Да! Напоминаю, что в зависимости от структуры вашего сервера, и будет зависеть путь до файла на сервере

    Для того, чтобы получить путь до файла на сервере нам понадобится, путь на сервере до корневой папки

    $_SERVER[‘DOCUMENT_ROOT’];

    Далее нам понадобится путь от корневой, до файла:

    $_SERVER[‘REQUEST_URI’];

    Теперь соберем все вместе и выведем через echo

    echo $_SERVER[‘DOCUMENT_ROOT’].$_SERVER[‘REQUEST_URI’];

    И получим путь на сервере до файла через глобальную переменную $_SERVER

    home/domen/dwweb_ru/www/page/php/096_put_na_servere_do_fayla_php.html

    Но у данной переменной есть некоторый минус, она вам покажет все, что есть после расширения, например get запрос.

    Давайте сделаем живой пример и создадим ссылку с гет запросом нажмите по ссылке и посмотрите ниже пункта 4, что прибавилось в строке…, выделено красным:

    https://dwweb.ru/page/php/096_put_na_servere_do_fayla_php.html?example=10

    Можно избавиться от гет запроса, и всякой другой шняги, которую суют пользователи после расширения, см. -> здесь

  • Как получить путь на сервере до файла с помощью -> __FILE__

    Существуют некоторые константы, которые иногда называют «Магические константы» и одну из них я в данном пункте буду использовать!

    Для того, чтобы получить путь на сервере до файла с помощью __FILE__, нам потребуется в самом файле установить код php!

    Прямо здесь, выведем вот такую конструкцию получения всего пути на сервере до файла:

    echo __FILE__ ;

    Код получения пути на сервере с помощью __FILE__

    <?

    echo __FILE__;

    ?>

    Пример вывода пути до файла на сервере:

    Теперь давайте посмотрим… что выведет выше приведенная конструкция… разметим код прямо здесь:

    home/domen/dwweb_ru/www/page/php/096_put_na_servere_do_fayla_php.html

  • Путь на сервере до файла php с использованием PHP_URL_PATH

    Когда вам нужно избавиться от всякого мусора в пути до файла на сервере, то можно использовать ниже идущий способ:

    Если вы собирайтесь делать сайт, то вам все равно придется иметь на борту несколько путей и разных, в разных переменных!

    Так не получится, что например вы написали одну переменную и этого вам хватит — точно вам говорю не хватит!

    Вчера мы рассматривали путь до корневой папки …

    Из которой вы узнали, что путь до корневой папки я помещал в переменную — $home

    $home = $_SERVER[‘DOCUMENT_ROOT’];

    В переменную $parse_url поместим функцию parse_url и разберем на части $_SERVER[‘REQUEST_URI’] из которой получим только часть ссылки где есть путь:

    $parse_url = parse_url($_SERVER[‘REQUEST_URI’], PHP_URL_PATH);

    Теперь можем соединить $home . $parse_url

    Выведем на экран путь на сервере до файла с помощью echo:

    echo $home . $parse_url ;

    Код вывода пути до файла php

    Соберем весь код вывода пути до файла в одном месте:

    <?

    $home = $_SERVER['DOCUMENT_ROOT'];

    $parse_url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

    echo $home . $parse_url ;

    ?>

    Результат вывода пути на сервере до файла php:

    И чтобы проверить работоспособность приведенного кода выше, разместим его пярямо здесь:

    home/domen/dwweb_ru/www/page/php/096_put_na_servere_do_fayla_php.html

  • Как сделать путь на сервере самостоятельно?

    Кроме всех выше перечисленных способов получения пути к файлу — мы констатируем, что файл уже существует, а если нам нужно создать путь к файлу, который не существует?

    Для того, чтобы сделать такой путь на сервере нам понадобится:

    Константа, которая не изменяется, (кроме если вы не выше корневой) — это путь до корневой на сервере :путь до корневой

    echo $_SERVER[‘DOCUMENT_ROOT’];

    Результат:

    home/domen/dwweb_ru/www

    Далее — нам нужно знать путь до папки(если папка будет существовать), например :

    /example/example_2/

    Соединим :

    echo $_SERVER[‘DOCUMENT_ROOT’].’/example/example_2/’;

    Выведем:

    home/domen/dwweb_ru/www/example/example_2/

    И третье… надо знать название и разрешение файла:

    example.html

    Соединим :

    echo $_SERVER[‘DOCUMENT_ROOT’].’/example/example_2/example.html’;

    Выведем:

    home/domen/dwweb_ru/www/example/example_2/example.html

    Мы вывели предполагаемый путь до не существующего файла.

    Зачем такое нужно?

    Когда вы создаете новый контент, то файла изначально не существует.

    Но путь к предполагаемому файлу вы должны знать!

    Естественно! Папки должны существовать — если нет, то предварительно их нужно создать.

    Для начала работы в терминале Linux не нужно быть гуру администрирования — достаточно знать список базовых команд для навигации и работы с файлами и папками. 

    • Навигация
    • Поиск
    • Работа с папками
    • Работа с файлами
    • Переименование, перемещение и копирование

    Навигация

    После подключения к серверу вы оказываетесь в домашней папке пользователя. Чтобы узнать точный путь к вашему текущему местонахождению, воспользуйтесь командой:

    pwd

    Она выведет текущую рабочую директорию (print working directory). 

    Если вам нужно перейти в другую папку, для этого используется команда cd (change directory) с указанием пути к нужной вам папке:

    cd /home

    Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий:

    / корневая папка сервера
    .

    текущая директория, в которой вы сейчас находитесь. Например, чтобы найти файл с именем hello.txt в текущей директории, можно использовать команду: 

    find . -name hello.txt
    ..

    директория, расположенная на уровень выше текущей. Если вы находитесь в папке /home/user, то комбинация .. будет обозначать папку /home. То есть, чтобы вернуться на один уровень назад, необязательно вводить весь путь: 

    cd ..
    ~

    домашняя папка текущего пользователя. Например, запустить скрипт some-script.sh из домашней папки, когда вы находитесь в другой директории, можно так:

    sh ~/some-script.sh

    предыдущая посещённая директория. Представим, что вы перешли в папку /home, потом вам потребовалось изменить настройки в папке /etc. Чтобы вернуться назад, достаточно использовать команду: 

    cd -

    Для навигации с помощью команды cd есть два формата указания пути к нужной папке: абсолютный и относительный.

    Абсолютный путь — это полный путь от корневой папки сервера «/». Например, вот такой: 

    /var/www/data/username/data/www/example.com/

    Также к абсолютным относятся пути, в которых используется ~ — указание на домашнюю папку текущего пользователя. Например, при доступе к файлу ~/.bash_profile он всегда будет открываться из одного и того же места: вместо ~ будет использоваться значение переменной окружения $HOME, которое не меняется.

    Относительный путь — это неполный путь. Он указывается относительно какого-то объекта: например,  текущей рабочей директории. То есть в начале отсутствует символ корневой папки «/».

    ./docs/files/file.txt
    
    file.txt

    Представим, что мы сейчас работаем с файлами в папке /var/www/data/username. Нам нужно отредактировать содержимое в директории на уровень выше — /var/www/data. Чтобы управлять данными в этой папке, нам не обязательно постоянно указывать полный путь к ним — можно работать с относительным, начиная его с «../»

    Также относительные пути используются, когда нужно выполнить операцию над файлом или папкой в директории, в которой мы сейчас работаем. Для выполнения команды достаточно указать имя файла или папки — система поймёт, что мы имеем в виду файл из текущего каталога.

    Чтобы отобразить список содержимого папки, можно использовать команду ls (list). Если дополнить её ключами -al, она покажет типы данных, разрешения и скрытые файлы. Следующий пример покажет названия файлов и папок текущей рабочей папки:

    ls

    А этот выведет в терминал подробный список содержимого папки /etc:

    ls -al /etc

    Чтобы немного упростить себе жизнь, можно использовать консольные файловые менеджеры, например, mc.

    • Ubuntu и Debian:

      apt -y install mc
      
    • CentOS:

      yum -y install mc

    Его особенность — примитивный графический интерфейс. Он позволяет быстро ориентироваться в структуре каталогов, перемещаться между ними, создавать новые директории. Интерфейс разбит на два окна, между которыми вы можете перемещать файлы и папки. Помимо прочего, в нём можно работать и с помощью мыши — перемещаться двойным кликом по папкам, использовать кнопки в нижней части панели. 

    Поиск

    С помощью команды find можно найти на сервере папку или файл по набору условий. Структура команды проста: 

    find [где искать] [как искать] [что искать]

    Например, мы знаем название файла hello.txt, но не знаем, где именно на сервере он лежит. Найти его поможет конструкция:

    find / -name "hello.txt"
    • / указывает, что искать надо, начиная с корневой папки сервера. Если вам известно, где может лежать искомый файл, можно задать путь точнее.
    • -name указывает, что искать надо строго по имени.
    • "hello.txt" — имя файла, который нам нужно найти. Если известна только часть имени, можно указать сокращённый вариант: "hello*", "*.txt"

    Кроме -name, команда find имеет множество опций, которые позволяют уточнить условия поиска подробнее. Вот список наиболее полезных параметров:

    -type

    Позволяет указать тип искомых данных: -type f — файлы, -type d — директории

    -perm

    Позволяет вывести файлы с определённым уровнем доступа. Например, —perm 777

    -empty

    Отображает только пустые файлы или папки

    -user

    Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: -user root

    -group

    Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: -group www-data

    -mtime

    Позволяет задать условие относительно времени изменения файлов:

    • -mtime 7 — файлы, менявшиеся в течение последних 7 дней;
    • -mtime +7 — файлы, менявшиеся в срок более чем 7 дней назад;
    • -mtime -14 — файлы, менявшиеся в срок менее чем 14 дней назад.

    -atime

    Позволяет задать условие относительно времени последнего доступа к файлу, аналогично mtime

    -size

    Позволяет уточнить размер (или диапазон размера) искомых файлов

    -exec COMMAND {}

    Позволяет применить к найденным файлам команду COMMAND

    Больше информации о возможностях find можно узнать в файлах документации:

    man find
    

    Из встроенных инструментов поиска можно также отметить утилиту whereis. Она предназначена для поиска бинарных и системных файлов и директорий служб.  Следующий пример выведет список всех файлов и папок, имеющих прямое отношение к php:

    whereis php

    Работа с папками

    Для создания новых директорий используется команда mkdir с указанием пути до создаваемой папки. Пример ниже создаст папку /new в существующей директории /home/user:

    mkdir /home/user/new

    Если нужно создать сразу несколько вложенных папок, можно использовать параметр -p. В таком случае все несуществующие директории, указанные в пути, будут созданы автоматически. Представим, что нам нужно создать вложенные папки docs/photos/2020-08-17 в текущей директории — это будет выглядеть так:

    mkdir -p docs/photos/2020-08-17

    Если нужно создать несколько папок за раз, можно просто перечислить их через пробел:

    mkdir docs pictures games

    Удалить папку можно с помощью команды rmdir с указанием пути. Папка будет удалена только в случае, если она пуста (можно использовать параметр --ignore-fail-on-non-empty, чтобы удалить папку в любом случае). Для удаления нескольких вложенных папок можно аналогично использовать параметр -p. Пример ниже удалит папку /photos и все каталоги внутри неё: 

    rmdir -p docs/photos

    Для удаления есть более эффективный инструмент, rm, про который расскажем ниже.

    Работа с файлами

    Создание

    В терминале есть несколько способов создания новых файлов. 

    Самый простой, одновременно создающий и файл, и недостающие папки — команда touch. Достаточно передать ей полный путь к файлу. Для примера создадим в папке docs папку copies, а внутри неё — файл copies-list.txt:

    touch docs/copies/copies-list.txt

    Несуществующая папка copies создастся автоматически.

    Если нужно создать сразу несколько файлов, можно просто перечислить их через пробел: 

    touch file1.txt file2.txt file3.txt

    Ещё один способ создания новых файлов — вызвать какой-нибудь консольный текстовый редактор с указанием полного пути к файлу. Однако все папки придётся создать заранее. Тогда редактор автоматически создаст файл и откроет его для редактирования. Если не сохранить файл в редакторе, даже пустой, он не будет создан. Команда ниже добавит новый файл с помощью редактора vi:

    vi new-file.txt

    Для сохранения и выхода из файла в vi нужно нажать клавишу Esc, ввести сочетание :wq и нажать Enter. Для выхода без сохранения нужно также нажать Esc, ввести сочетание :q! и нажать Enter.

    Ещё пара способов создания пустых файлов: 

    cat > new-file.txt
    
    echo > new-file.txt

    Редактирование

    Для редактирования файлов используются консольные текстовые редакторы. Самые известные — vi и nano. В некоторых дистрибутивах vi заменён на vim (vi improved, улучшенный vi) или vim.tiny

    Редактор vi будет доступен вам по умолчанию на большинстве Linux-систем.

    А теперь к делу. Vi (более известен как Vim) — старый, очень гибкий и при этом не очень простой в плане управления редактор. Собственно, так он и попал в популярные программистские и админские шуточки. 

    Запуск редактора без аргументов откроет его в режиме справки: 

    vi

    Чтобы закрыть Vim (без сохранения), введите сочетание :q!

    Если указать редактору путь к файлу, он откроет его для редактирования. Если файл не существовал, он будет создан:

    vi new-file.txt

    При первом входе Vim открывает файл в режиме просмотра. Он не позволяет редактировать его содержимое, но можно вводить командные последовательности, перемещаться по тексту, выполнять поиск и пр.

    Чтобы начать ввод, нужно перейти в режим редактирования с помощью клавиши I. Чтобы вернуться в режим просмотра, нажмите Esc.

    Перемещение по тексту выполняется с клавиатуры:

    • перемещение в начало текста: Esc + дважды G
    • перемещение в конец текста: Shift + G
    • перемещение по строке горизонтально: стрелки
    • перемещение по строкам вертикально: стрелки
    • отображение номеров строк: Esc, введите :set number, нажмите Enter
    • перемещение по номерам строк: Esc, введите : номер строки, нажмите Enter

    Для выхода с сохранением файла нажмите Esc и введите :wq!

    Текстовый редактор vim — краткое руководство

    Более современной и удобной альтернативой Vim считается редактор nano. Современные дистрибутивы включают его по умолчанию, но на ранних версиях устанавливать придётся вручную: 

    • Ubuntu и Debian:

      apt -y install nano
    • CentOS:

      yum -y install nano

    Вызов nano без аргументов откроет пустой редактор. Можно начать ввод (при сохранении вам будет предложено указать имя и сохранить файл) или вызвать режим помощи со списком доступных команд с помощью сочетания Ctrl+G.

    Для сохранения файла нажмите Ctrl+O — редактор предложит ввести имя файла: введите имя и нажмите Enter. Если файл существовал, и имя изменять не требуется, просто нажмите Enter.

    Для выхода из редактора нажмите Ctrl+X.

    Чтение

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

    Команда cat позволяет вывести в терминал всё содержимое файла, который указан в качестве аргумента: 

    cat example.txt

    Однако, если мы заведомо знаем, что в файле большой объём информации, нет смысла выводить его целиком. Например, команды head и tail могут вывести часть содержимого с начала или конца файла соответственно. Если добавить к ним ключ -n, можно уточнить, сколько строк текста нужно вывести:

    head -n 3 example.txt

    tail -n 3 example.txt

    Помимо прочего, команда tail очень удобна для чтения логов с ключом -f. В таком режиме она открывает файл в режиме ожидания и выводит все добавляемые данные. Пригодится для тестирования или дебаггинга.

    Иногда нам всё-таки нужно полностью просмотреть файл. При этом читать его вывод в терминале неудобно. На такие случаи есть команда less — она открывает файл (или переданный в неё вывод другой команды) в режиме чтения: 

    less example.com

    В режиме чтения less можно перемещаться, искать текст и многое другое. Все командные последовательности и горячие клавиши можно вывести с помощью параметра --help:

    less --help

    Для выхода из режима чтения введите q и нажмите Enter.

    Удаление

    Для удаления файлов используется команда rm. Она крайне опасна — неправильное применение грозит удалением всего содержимого сервера. Поэтому, как говорится, семь раз отмерь, один раз отрежь: категорически важно перепроверять путь, который вы указываете для удаления.

    Самая простая версия rm удалит файл с предварительным подтверждением — для этого потребуется ввести y и нажать Enter:

    rm new-file.txt

    Для полного же уничтожения всего и вся к команде добавляются параметры -rf. Первый отвечает за рекурсивное удаление данных (т.е. удаление вложенных файлов и папок), второй позволяет отключить подтверждение при удалении. Например, следующая команда удалит папку photos, размещённую в папке docs, и всё её содержимое:

    rm -rf docs/photos

    Для шуток над неопытными администраторами им под тем или иным предлогом предлагают выполнить команду rm -rf [/] (без квадратных скобок). Она удаляет всё содержимое сервера от корня. Результат — все данные безвозвратно теряются, а сервер перестаёт работать. 

    Скачивание и загрузка

    Для передачи файлов на сервер и с сервера есть много способов. Самые простые — использование wget, curl или scp.

    1. wget позволяет скачивать данные на сервер. Он поддерживает HTTP, HTTPS и FTP протоколы.

      wget [как скачать] [откуда скачать]

      Скачать файл по ссылке в вашу текущую рабочую директорию можно с помощью команды:

      wget https://ru.wordpress.org/latest-ru_RU.tar.gz

      С помощью параметра -P можно указать путь, куда нужно сохранить скачиваемый файл:

      wget -P /var/www/example.com https://ru.wordpress.org/latest-ru_RU.tar.gz

      Полный список параметров wget можно посмотреть в справочной информации: 

      man wget
    2. curl используется как для скачивания файлов на ваш сервер, так и для передачи данных с него на другие серверы / хранилища. Он универсальнее wget благодаря огромному количеству поддерживаемых протоколов: FTP, HTTP, HTTPS, IMAP, POP3, SCP, SFTP, SMB,  SMTP, Telnet и др.

      curl [как скачать] [откуда скачать / куда загрузить]

      В современных дистрибутивах curl установлен по умолчанию. При необходимости установить его вручную можно следующим образом: 

      • Ubuntu и Debian:
        apt -y install curl
      • CentOS:
        yum -y install curl

      Для работы с curl нужно знать название и расположение файлов, которые необходимо скачать/загрузить. Например, так будет выглядеть команда на скачивание файла по ссылке: 

      curl -O https://ru.wordpress.org/latest-ru_RU.tar.gz

      В примере мы скачиваем архив latest-ru_RU.tar.gz по ссылке и сохраняем его в текущую рабочую директорию с таким же именем — за это отвечает ключ -O. Если использовать опцию -o, можно задать своё имя (wp.tar.gz) для сохраняемого файла: 

      curl -o wp.tar.gz https://ru.wordpress.org/latest-ru_RU.tar.gz

      Если нам нужно загрузить файл c нашего сервера на другой, используется следующая конструкция:

      curl -T filename.txt https://example.com/downloads/filename.txt

      Здесь файл filename.txt из текущей рабочей директории загружается на сайт example.com в папку downloads/ и сохраняется с именем filename.txt. Пример подразумевает, что у нас есть права на запись в указанный каталог.

      Остальные возможности curl можно узнать в справочной информации: 

      man curl
    3. Утилита scp позволяет копировать файлы между двумя серверами, используя протокол SSH. 

      scp [где взять файлы] [куда их загрузить]

      Например, для передачи файла filename.txt с нашего сервера на удалённый сервер 1.2.3.4 в папку new-documents пользователя username можно использовать следующую команду:

      scp ~/documents/filename.txt username@1.2.3.4:/home/username/new-documents

      В процессе система запросит у нас пароль пользователя username для подключения к удалённому серверу. После авторизации файл будет скопирован на целевой сервер в указанную папку.

      Чтобы скачать файл с удалённого сервера, достаточно немного видоизменить нашу команду: 

      scp username@1.2.3.4:/home/username/documents/filename.txt ~/new-documents/

      Здесь мы в качестве источника для получения копии файла указали удалённый сервер, а в качестве цели для загрузки копии — папку на текущем сервере. 

      С помощью scp аналогичным образом можно копировать данные между двумя удалёнными серверами:

      scp username1@1.2.3.4:/home/username1/documents/filename.txt username2@2.3.4.5:/home/username2/new-documents

    Запуск исполняемых bash-скриптов

    Чтобы запустить скрипт script.sh на сервере, нужно выполнить два шага: 

    1. Настроить права на запуск файла для пользователей:

      chmod +x ./script.sh
    2. Запустить скрипт. Если вы находитесь в той же директории, где лежит скрипт, достаточно вызвать его по имени: 

      ./script.sh

      В некоторых случаях нужно использовать команду sh либо указать путь к исполняемому файлу командной оболочки:

      sh ./script.sh

      либо 

      /bin/bash ./script.sh

      Если вы находитесь в другой директории, для запуска нужно указать полный путь к скрипту. 

    Чтобы иметь возможность запускать скрипт из любого места на сервере одной простой командой, можно создать для него алиас — короткую команду (псевдоним), которая будет ассоциироваться системой с полным вызовом скрипта.

    Весь список существующих алиасов системы можно вывести с помощью команды alias:

    Создать свой постоянный алиас можно с помощью файла .bashrc, размещённого в домашнем каталоге вашего пользователя. Нужно открыть его для редактирования:

    vi ~/.bashrc

    В соответствующем разделе нужно добавить ваш алиас в следующем формате:

    alias [короткая команда]='[исходная команда]'

    Например, если нам потребуется создать псевдоним для скрипта выше, настройки будут выглядеть так: 

    alias myScript='sh /путь/к/скрипту/script.sh'

    Чтобы после добавления алиас сразу стал доступен, предварительно нужно обновить командную оболочку: 

    source ~/.bashrc

    После этого вы сможете вызывать ваш скрипт с помощью короткой команды.

    Скрипт можно добавить в расписание планировщика cron, чтобы он запускался регулярно.

    Как настроить cron по ssh

    Переименование, перемещение и копирование файлов и папок

    Скопировать файл в терминале можно с помощью команды:

    cp [что копируем] [куда копируем]

    C её помощью можно, к примеру, создать копию конфигурационного файла, который вы хотите изменить. Здесь мы создаём копию конфигурационного файла nginx.conf

    cp nginx.conf nginx.conf.copy

    Папки копируются аналогично. При необходимости скопировать каталог со всем содержимым (рекурсивно) можно добавить к команде ключ -r:

    cp -r /docs /files

    Здесь мы создаём копию папки docs со всем её содержимым с именем files.

    Переместить или переименовать файл также просто: 

    mv [что переместить/переименовать] [куда переместить/как назвать]

    Например, следующая команда переместит файл file.txt в папку new:

    mv file.txt docs/new

    Переименовать файл не сложнее:

    mv /docs/new/file.txt /docs/new/todolist.txt

    В этом примере файл file.txt переименовывается в todolist.txt

    Аналогично можно перемещать и переименовывать директории. 

    Теперь, когда вы можете перемещаться по серверу и работать с файлами и папками, самое время познакомиться с файловой структурой Linux-систем. 

    Структура каталогов Linux

    SSH позволяет управлять аккаунтом напрямую на сервере. С его помощью можно собрать полную информацию о занятом дисковом пространстве и количестве файлов, а также, например, импортировать объемный дамп базы данных, работать с системой контроля версий git и проектами на Node.JS или Python.

    После подключения вы увидите приглашение командной строки: [username@server ~]$ 

    • username — логин вашего аккаунта на хостинге;
    • server — имя сервера, на котором он размещен.

    Для работы требуется знание команд. Они выглядят так: command -key argument

    • command — название команды;
    • -key — дополнительные опции (ключи);
    • argument — значение, с которым будет работать команда (путь до папки, фраза, которую нужно найти и т.д.).

    Рекомендуем прочитать справочную информацию для команды, которую вы планируете использовать, введя в консоли man. Обратите внимание, справочник англоязычный.

    Например, откроем руководство для ls: [username@server domains]$ man ls Чтобы выйти из режима справки, нажмите «q».

    Команды для работы с файлами

    ls — просмотр содержимого каталога

    Команда выводит перечень видимых файлов и папок: [username@server domains]$ ls
     domain.ru site.ru

    Чтобы получить полную информацию о содержимом каталога, пригодятся ключи:

    • -l — вывести подробную информацию о файле;
    • -a — отобразить скрытые файлы;
    • -h — отобразить размер файла в удобном формате (по умолчанию выводится в байтах).

    [username@server domains]$ ls -lah
    итого 16K
    drwxr-xr-x. 4 username username 4,0K янв 23 12:11 .
    drwx--x---. 4 username service 4,0K дек 25 18:45 ..
    drwxr-xr-x. 3 username username 4,0K дек 3 07:01 domain.ru
     drwxrwxr-x. 3 username username 4,0K янв 23 12:12 site.ru

    pwd — показать полный путь до директории

    Команда выводит полный путь до каталога, в котором вы находитесь: [username@server domains]$ pwd
     /home/username/domains

    cd — переход по директориям

    Для перехода между каталогами используйте команду cd. В качестве аргумента укажите путь до папки, куда нужно переместиться: [username@server ~]$ cd domains/domain.ru/public_html/ // Переходим в каталог domains/domain.ru/public_html/ .

    // Проверяем:
    [username@server public_html]$ pwd // Выводим путь до текущего каталога.
     /home/username/domains/domain.ru/public_html // Готово. Переход осуществлен.

    Чтобы перейти на уровень вверх относительно текущего каталога, введите cd ..: [username@server public_html]$ cd ..
    [username@server domain.ru]$ pwd // Выводим путь до текущего каталога.
     /home/username/domains/domain.ru // Мы перешли на уровень выше.

    cd — — шаг назад (вернуться к предыдущему каталогу): [username@server domain.ru]$ cd -
     /home/username/domains/domain.ru/public_html // Перешли к каталогу public_html, где были ранее.

    cd (без параметров) — перейти в домашний каталог: [username@server public_html]$ cd
    [username@server ~]$ pwd // Выводим путь до текущего каталога.
     /home/username // Вернулись в домашний каталог пользователя username.

    mkdir — создание папки

    Команда имеет вид: mkdir путь_до_каталога, где «путь_до_каталога» — путь к создаваемой папке, в конце указывается ее имя.

    Например: [username@server ~]$ mkdir domains/site.ru/example // Создаем каталог example по пути domains/site.ru/.

    Если вы создаете каталог в том же месте, где находитесь, полный путь указывать не нужно: [username@server ~]$ cd domains/site.ru/ // Переходим в каталог site.ru.
    [username@server site.ru]$ mkdir example2 // Создаем каталог example2 в текущем каталоге.

    // Проверяем:
    [username@server site.ru]$ ls // Выводим список файлов.
     example2 public_html // Каталог example2 создан.

    touch — создание файла

    touch создаёт пустой файл с именем и расширением, которое вы укажете, или обновляет дату модификации существующего файла: [username@server domains]$ touch example.txt // Создаем файл example.txt в текущем каталоге.

    // Проверяем:
    [username@server domains]$ ls // Выводим список файлов.
     example.txt // Файл example.txt создан.

    rm — удаление папок и файлов

    Для удаления файла достаточно указать путь до него: [username@server public_html]$ rm example.txt

    Чтобы удалить директорию, используйте ключи -r (рекурсивно) и -f (без подтверждения): [username@server public_html]$ rm -rf example1

    Очистить текущий каталог от всех файлов и папок можно с помощью команды: [username@server public_html]$ rm -rf *

    cp — копирование файлов/папок

    В качестве аргументов для команды укажите сначала полный путь до файла, который нужно скопировать, и через пробел полный путь до каталога, куда будет произведено копирование.

    Чтобы скопировать папку со всем ее содержимым, укажите ключ -r (рекурсивно): [username@server]$ cp -r /home/username/domains/site.ru/public_html/example /home/username/domains/domain.ru // Копируем папку example из domains/site.ru/public_html в domains/domain.ru.

    Если вы находитесь в том же каталоге, где и объект, который нужно скопировать, полный путь до него указывать не нужно: [username@server public_html]$ cp -r example2 /home/username/domains/domain.ru // Копируем папку example2 из domains/site.ru/public_html в domains/domain.ru.

    // Проверяем:
    [username@server public_html]$ cd /home/username/domains/domain.ru // Переходим в каталог domains/domain.ru.
    [username@server domain.ru]$ ls // Выводим список файлов.
     example2 public_html // Папка скопирована.

    mv — перемещение или переименование файлов и папок

    Синтаксис команды mv такой же как, и у cp (копирование). Укажите сначала полный путь до файла, который нужно перенести, а затем путь до каталога, куда будут перемещены данные.

    Пример:  [username@server domain.ru]$ mv primer.txt /home/username/domains/site.ru/public_html // Переносим файл primer.txt из domains/domain.ru/ в domains/site.ru.

    //Проверяем:
    [username@server domain.ru]$ ls // Выводим список файлов в каталоге domain.ru.
    example2 public_html // Проверяем, что в списке нет файла primer.txt.
    [username@server domain.ru]$ cd /home/username/domains/site.ru/public_html // Переходим в каталог domains/site.ru/public_html.
    [username@server public_html]$ ls // Выводим список файлов.
     primer.txt // Файл перенесен.

    Чтобы переименовать файл, введите сначала текущее имя, а затем — новое: [username@server public_html]$ ls // Выводим список файлов в текущем каталоге.
    example.txt
    [username@server public_html]$ mv example.txt primer.txt // Изменяем имя example.txt на primer.txt.

    // Проверяем:
    [username@server public_html]$ ls // Выводим список файлов.
     primer.txt // Файл переименован.

    wget — получение файлов со сторонних сайтов

    Скачивайте файлы на ваш аккаунт хостинга со сторонних ресурсов с помощью утилиты wget.

    Wget работает с протоколами HTTP, HTTPS и FTP. С ее помощью удобно скачивать архивы, установочные пакеты в нужную директорию на дисковом пространстве аккаунта. Чтобы начать процесс закачки, выполните команду: [username@server ~]$ wget http://domain.ru/archive.zip

    scp — передача файлов с компьютера

    Команда scp поможет передать файлы с вашего устройства на unix на аккаунт. Заранее устаналивать соединение по SSH для использования этой утилиты не нужно. Выполните команду: [user@mycomputer ~] $ scp /home/user/desktop/file.txt username@domain.ru:domains/domain.ru/public_html Здесь /home/user/desktop/file.txt — путь до файла на копьютере, username@domain.ru — логин аккаунта на хостинге и доменное имя или IP-адрес сервера, domains/domain.ru/public_html — путь до директории, куда нужно загрузить файл.

    Чтобы передать каталог, используйте ключ -r (рекурсивно):

    [user@mycomputer ~] $ scp -r /home/user/desktop/folder username@domain.ru:domains/domain.ru/public_html

    du — получение информации о занятом дисковом пространстве

    По умолчанию команда выводит информацию о весе каждого каталога и подкаталога в байтах и пути до них: [username@server domains]$ du
    4 ./site.ru/example
    4 ./site.ru/public_html
    12 ./site.ru
    20 ./domain.ru
     36 . 

    Чтобы читать результат работы команды было проще, добавьте ключи:

    • -s — вывести общий объем каталога;
    • -h — отобразить размер файла в удобном формате (Кб, Мб или Гб).

    В качестве аргумента укажите символ «*»: команда посчитает размер каждого каталога и файла в директории:  [username@server ~]$ du -sh *
    70M domains
    4,0K example2
    4,0K tmp
    12K username_wor00.sql.bz2.gz
     16K username_wor1.sql

    find — поиск файлов/папок

    Команда имеет вид: find путь_до_каталога -ключи , где «путь_до_каталога» — папка, с которой начинается поиск.

    Рекомендуем ознакомиться с руководством (man) для find, так как она обладает обширным набором ключей. Мы рассмотрим основные:

    • -name — поиск файлов, имена которых соответствуют заданному шаблону;
    • -type — поиск файлов определенного типа:
      • f — обычный файл;
      • d — каталог;
      • l — символическая ссылка.

    Примеры

    Найти все файлы с расширением .php в текущем каталоге (обозначается символом «.») и подкаталогах: [username@server ~]$ find . -name "*.php"

    Найти все файлы с расширением .php, а также файлы, имена которых начинаются с точки в каталоге public_html: [username@server ~]$ find ./public_html -name "*.php" -o -name ".*"

    Найти все каталоги, имена которых начинаются с «w» в текущей папке: [username@server ~]$ find . -name "w*" -type d

    Количество файлов

    С помощью find можно посчитать количество файлов на аккаунте. Выполните команду:  [username@server ~]$ find . | wc -l 

    grep — поиск файлов по их содержимому

    Команда имеет вид: grep «текст» путь_до_файла, где «текст» — информация, которую нужно найти, «путь_до_файла» — путь к файлу, по которому производится поиск.

    Узнаем с помощью grep, какая база данных используется сайтом: [username@server domain.ru]$ grep "username_" -R // username_ — начало имени базы данных. Замените «username» на логин вашего аккаунта, -R — рекурсивный поиск.
    public_html/example.php:define('DB_NAME', 'username_wor00');
    public_html/example.php:define('DB_USER', 'username_wor00');

    stat — подробная информация о файле

    Выполните команду stat, чтобы узнать, когда файл был создан и изменялся: [username@server public_html]$ stat example.php
    Файл: «example.php»
    Размер: 3317 // Размер в байтах.
    Inode: 57804829 // Уникальный индексный дескриптор.
    Доступ: (0644/-rw-r--r--) // Права доступа.
    Uid: ( 3645/username) // ID и имя владельца.
    Gid: ( 3646/username) // ID и имя группы владельца.
    Доступ: 2018-01-23 12:03:21.829402333 +0300 // Дата последнего обращения.
    Модифицирован: 2017-12-20 13:34:11.831201546 +0300 // Дата внесения последних изменений в содержимое файла.
     Изменён: 2018-01-23 12:03:41.231474591 +0300 // Дата последнего изменения имени файла или прав доступа.

    ln — создание ссылки на файл

    Чаще всего применяется для создания символических ссылок (ярлыков). Используйте их, если необходимо, например, изменить путь до корневой директории сайта.

    Команда имеет вид: ln -s исходный_файл целевой_файл, где «целевой_файл» будет ссылкой на «исходный_файл». Всегда указывайте полный путь к исходному файлу: [username@server domains]$ ln -s /home/username/domains/domain.ru/public_html/example1 /home/username/domains/site.ru/public_html/example2

    // Проверяем:
    [username@server domains]$ ls -la site.ru/public_html/example2 // Выводим полную информацию о каталоге example2.
     1 username username 53 янв 23 12:14 example1 -> /home/username/domains/domain.ru/public_html/example1

    Для удаления символической ссылки перейдите в каталог, где сохранен «целевой_файл» и удалите созданный ярлык: [username@server public_html]$ cd /home/username/domains/domain.ru/public_html/ // Переходим в каталог, где расположена папка example1.
    [username@server public_html]$ ls -la // Проверяем наличие символической ссылки: выводим полную информацию о каталоге.
    drwxrwxr-x. 2 username username 4096 янв 23 12:08 example1
    lrwxrwxrwx. 1 username username 53 янв 23 12:09 example2 -> /home/username/domains/domain.ru/public_html/example1
    [username@server public_html]$ rm example2 // Удаляем ярлык.
    [username@server public_html]$ ls -la // Еще раз выводим список файлов и проверяем, удалена ли символическая ссылка.
     drwxrwxr-x. 2 username username 4096 янв 23 12:08 example1

    сhmod — изменение прав доступа

    Изменить права на файл или папку можно с помощью команды chmod xxx путь_до_файла , где xxx — права, «путь_до_файла» — путь до папки или файла. Чтобы изменить права и на папку, и на ее содержимое, добавьте ключ -R (рекурсивно).

    Пример

    [username@server domains]$ chmod -R 777 /home/username/example2 // Устанавливаем права 777 для папки example2 и ее содержимого.

    // Проверяем:
    [username@server ~]$ stat example2 // Смотрим статус.
    Файл: «example2»
    Доступ: (0777/drwxrwxrwx) // Права для каталога example2 изменены на 777.
    [username@server ~]$ cd example2/ // Переходим в example2.
    [username@server example2]$ ls // Выводим содержимое каталога.
    copytest.txt example1
    [username@server example2]$ stat copytest.txt // Смотрим статус файла copytest.txt.
    Файл: «copytest.txt»
     Доступ: (0777/-rwxrwxrwx) // Права доступа к файлу изменены на 777.

    mc — Midnight Commander

    Midnight Commander — файловый менеджер с текстовым интерфейсом, встроенный в консоль. Для запуска введите в команду mc.

    Работа с базами данных

    mysql — подключение к базе данных

    Процесс подключения к базе данных с помощью команды mysql мы описали в статье.

    Импорт дампа базы данных

    mysql позволяет импортировать дамп базы данных, загруженный на дисковое пространство аккаунта. Выполните команду: [username@server domains]$ mysql -u db_username -p db_name < dump_name.sql где

    • db_username — имя пользователя базы данных;
    • db_name — название базы;
    • dump_name.sql — имя дампа.

    mysqldump — экспорт дампа БД

    Чтобы выгрузить дамп на дисковое пространство аккаунта выполните команду: [username@server domains]$ mysqldump -u db_username -p db_name > dump_name.sql Он будет помещен в каталог, из которого выполнялось действие.

    Работа с архивами

    Выбор команды для распаковки архива зависит от формата, в котором он создан: [username@server domains]$ unzip archive.zip
    [username@server domains]$ unrar x archive.rar
    [username@server domains]$ tar xf archive.tar
    [username@server domains]$ tar xfz archive.tar.gz
    [username@server domains]$ gunzip archive.gz
     [username@server domains]$ 7za x archive.7z

    Особенности

    Для команды rar обязательно укажите параметр «x», чтобы сохранить структуру.

    gunzip распаковывает файлы, после чего удаляет архив. Если нужно его сохранить, создайте копию на дисковом пространстве аккаунта.

    Создать архив можно в формате .zip или .tar: [username@server domains]$ tar cf archive.tar directory/ // Помещаем каталог directory в архив archive.tar.
     [username@server domains]$ zip -r archive directory // Помещаем каталог directory в архив archive.zip.
    Он будет сохранен в каталоге, где выполнялась команда. // Проверяем:
    [username@server domains]$ ls // Выводим список файлов.
     archive.tar archive.zip directory domain.ru example.txt site.ru // Архивы archive.zip и archive.tar созданы.

    crontab — планировщик Cron

    Настройте выполнение скриптов по расписанию с помощью планировщика Cron. Чтобы добавить новое задание, выполните: [username@server ~]$ crontab -e

    Откроется окно текстового редактора vim, нажмите клавишу «i», чтобы внести изменения. Добавьте команду в конец документа. Она состоит из времени выполнения (минута, час, число, месяц, день недели), пути до утилиты и пути до выполняемого скрипта, например: 15 12 * * * /usr/local/bin/wget http://domain.ru/script.php // Скрипт script.php будет выполняться каждый день в 12:15 

    Выбор интерпретатора зависит от скрипта, который нужно выполнить. Для php-скриптов подойдет php, curl или wget, для Python или Node.js — python или node соответственно.

    Чтобы узнать путь до нужного интерпретатора, выполните команду: [username@server ~]$ which php

    Сохраните изменения в редакторе vim. Нажмите Esc и введите «:q!»

    Вместо php укажите имя интерпретатора.

    idn — преобразование домена в Punycode

    Чтобы перевести IDN-домен в Punycode, выполните команду: [username@server ~]$ idn домен.рф

    Горячие клавиши

    Для удобства работы в консоли используйте горячие клавиши.

    • clear — очистить окно;
    • history — посмотреть список выполненных команд;
    • Ctrl+C — остановить выполнение команды;
    • Ctrl+D — выйти из системы;
    • !! — повторить последнюю команду;
    • Tab — автодополнение. Начните вводить имя папки или файла и нажмите Tab — название будет дописано автоматически.

    Понравилась статья? Поделить с друзьями:

    Не пропустите также:

  • Углы выпуклого четырехугольника относятся как найдите меньший
  • Код ошибки 80072f8f при обновлении windows 7 как исправить ошибку
  • Как можно исправить цифру на бумаге
  • Как найти название журнала
  • Как найти периметр квадрата умножением формула

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии