В этом разделе вы познакомитесь с основами навигации по системе. Для множества задач нужно уметь добираться до конкретного места в системе, и эти навыки формируют фундамент вашего успеха в работе с Linux. Постарайтесь разобраться в навигации.
Как узнать, в какой директории вы находитесь
Первая команда, которую мы изучим — pwd
, сокращение от Print Working Directory (выведи рабочую директорию). Вы скоро увидите, что множество команд в Linux — это аббревиатуры слов, описывающих их. Это помогает лучше их запомнить. Собственно, команда и выводит текущую рабочую директорию. Попробуйте использовать ее.
1. pwd
2. /home/karpaff
Правильное выполнение многих команд терминала зависит от того, в нужном ли месте вы находитесь. Почаще используйте эту команду, чтобы не забывать, в какой вы директории.
Как узнать содержимое директории
Мы научились определять, в какой директории мы находимся. Теперь давайте научимся узнавать содержимое директории. В этом нам поможет команда ls
— сокращение от list (список). Давайте опробуем ее.
1. ls
2. bin Documents public_html
Команда pwd
отрабатывает сама по себе, без аргументов. ls
в этом плане посильнее. В случае выше мы запустили ее без аргументов — она выведет список содержимого данной директории. Но от ls можно получить больше — ниже дана схема ее использования:
ls [ключи] [директория]
В примере выше квадратные скобки обозначают, что эти пункты опциональны, и мы можем запускать команду и с ними, и без них. Ниже я запустил разные варианты ls
, чтобы продемонстрировать ее работу.
1. [email protected]: ls
2. bin Documents public_html
3. [email protected]:
4. [email protected]: ls -l
5. total 3
6. drwxr-xr-x 2 karpaff users 4096 Mar 23 13:34 bin
7. drwxr-xr-x 18 kapraff users 4096 Feb 17 09:12 Documents
8. drwxr-xr-x 2 karpaff users 4096 May 05 17:25 public_html
9. [email protected]:
10. [email protected]: ls /etc
11. a2ps.cfg aliases alsa.d cups fonts my.conf systemd
12. ...
13. [email protected]: ls -l /etc
14. total 3
15. -rwxr-xr-x 2 root root 123 Mar 23 13:34 a2ps.cfg
16. -rwxr-xr-x 18 root root 78 Feb 17 09:12 aliases
17. drwxr-xr-x 2 karpaff users 4096 May 05 17:25 alsa.d
18. ...
19. [email protected]:
Рассмотрим код по частям:
- Строка 1 — запуск
ls
в базовой форме. Она вывела список содержимого текущей директории. - Строка 4 — запуск
ls
с ключом-l
, который означает, что команда выведет длинный список. В длинном списке есть следующее:- Первый символ означает, является ли объект файлом
-
или директориейd
. - Следующие 9 символов — типы разрешений для файла или директории.
- Следующее поле — количество блоков (пока что не задумывайтесь об этом).
- Дальше — владелец файла или директории (в данном случае — karpaff)
- Дальше — группа, которой принадлежит файл или директория (в данном случае — users).
- Следующая часть — размер файла/директории.
- Затем идет время изменения.
- И в конце — название файла или директории.
- Первый символ означает, является ли объект файлом
- Строка 10 — запуск
ls
с аргументом командной строки/etc
. Когда мы так делаем,ls
выводит содержимое не рабочей директории, а той, которую мы передали в качестве аргумента. - Строка 13 — запуск
ls
и с ключом, и с аргументом командной строки. Соответственно, здесь был произведен вывод длинного списка директории/etc
. - Строки 12 и 18 означают лишь, что для краткости я вырезал стандартный вывод некоторых команд. При запуске команд вы увидите более длинный список файлов и директорий.
Пути к файлам
При рассмотрении предыдущих команд мы затронули тему путей. Я хотел бы углубиться в эту тему, поскольку она важна для более эффективного использования Linux. Неважно, пытаемся мы обратиться к файлу или директории через командную строку, на самом деле мы обращаемся по пути. Путь — это способ добраться до конкретного файла или директории в системе.
Абсолютные и относительные пути
Существует два типа путей — абсолютные и относительные. Обращаемся мы к файлу или директории, мы будем использовать один из этих типов путей (система в любом случае будет направлена в правильное место).
Для начала нужно понять, что файловая система под Линуксом — это иерархическая структура. Наверху этой структуры находится корневая директория. Она обозначается одним слэшем /
. У нее есть свои поддиректории, у них свои и так далее. Файлы могут находиться в любой из директорий.
Абсолютные пути указывают положение файла или директории относительно директории root
. Их можно узнать по слэшу в начале пути /
.
Относительные пути указывают положение файла или директории относительно ващего текущего местоположения в системе. Они не начинаются со слэша.
Пример:
1. [email protected]: pwd
2. /home/karpaff
3. [email protected]:
4. [email protected]: ls Documents
5. file1.txt file2.txt file3.txt
6. ...
7. [email protected]: ls /home/karpaff/Documents
8. file1.txt file2.txt file3.txt
9. ...
- Строка 1 — запускаем
pwd
, чтобы узнать, где мы находимся. - Строка 4 — запускаем
ls
с аргументом в виде относительного пути. Documents — директория в той папке, в которой мы сейчас находимся. Такая команда может выдать разный результат в зависимости от того, где мы находимся. Если бы у нас был другой пользователь в системе, скажем, Вася, и мы запустили бы эту команду в его домашней директории, выводом стало бы содержимое папки Documents Васи. - Строка 7 — запускаем
ls
с аргументом в виде абсолютного пути. Вывод такой команды будет одинаков вне зависимости от того, где мы сейчас находимся.
Скоро вы увидите, что множество вещей в Linux можно получить несколькими разными способами. Пути — не исключение. Ниже приведены некоторые иные компоненты для построения путей.
~
(тильда) — обозначение вашей домашней директории. Например, если ваша домашняя директория /home/karpaff, то к директории Documents можно обратиться по пути /home/karpaff/Documents или по пути ~/Documents..
(точка) — указание на директорию, где вы сейчас находитесь. Например, в примере выше на 4 строке мы обратились к директории Documents с помощью относительного пути. Тот путь можно было записать как ./Documents (Обычно в этом нет необходимости, но ниже мы рассмотрим примеры того, где это может пригодиться)...
(две точки) — указание на родительскую директорию. Вы можете использовать такое сокращение в пути несколько раз, чтобы подниматься по иерархии. Например, если вы были в папке/home/karpaff
, вы можете запустить командуls ../../
и выводом будет список содержимого корневой директории.
Теперь вы знаете, что к местоположению можно обращаться множеством разных способов. Некоторые из вас зададутся вопросом, какой вариант лучше использовать? Ответ: любой, который больше нравится. Обращаетесь вы к файлу или директории, в командной строке вы обращаетесь по пути, а путь вы можете составить, используя любой из элементов, представленных выше. Лучший подход в этом деле — удобный именно для вас.
Примеры:
1. [email protected]: pwd
2. /home/karpaff
3. [email protected]:
4. [email protected]: ls ~/Documents
5. file1.txt file2.txt file3.txt
6. ...
7. [email protected]: ls ./Documents
8. file1.txt file2.txt file3.txt
9. ...
10. [email protected]: ls /home/ryan/Documents
11. file1.txt file2.txt file3.txt
12. ...
13. [email protected]:
14. [email protected]: ls ../../
15. bin boot dev etc home lib var
16. ...
17. [email protected]:
18. [email protected]: ls /
19. bin boot dev etc home lib var
20. ...
После того, как вы сами поиграетесь с этими командами в командной строке, вы станете лучше их понимать. Убедитесь, что понимаете, как работают элементы построения пути, поскольку мы будем использовать их в следующих уроках.
Как сменить директорию
Для передвижения по системе используется команда cd
, сокращение от change directory (сменить директорию). Она работает следующим образом:
cd [местоположение]
Подсказка: если вы запустите команду без аргументов, она вернет вас в домашнюю директорию.
Команду cd
можно запускать и без аргументов, как мы видели в подсказке выше, но обычно ее запускают с одним аргументом командной строки — месту, в которое мы хотим перейти. Место определяется абсолютным или относительным путем с использованием любых элементов для построения путей, упомянутых выше.
Пример:
1. [email protected]: pwd
2. /home/karpaff
3. [email protected]: cd Documents
4. [email protected]: ls
5. file1.txt file2.txt file3.txt
6. ...
7. [email protected]: cd /
8. [email protected]: pwd
9. /
10. [email protected]: ls
11. bin boot dev etc home lib var
12. ...
13. [email protected]: cd ~/Documents
14. [email protected]: pwd
15. /home/karpaff/Documents
16. [email protected]: cd ../../
17. [email protected]: pwd
18. /home
19. [email protected]: cd
20. [email protected]: pwd
21. /home/karpaff
Автодополнение
Прописывать пути вручную может быть утомительно. А если вы, как и я, постоянно опечатываетесь, то вам очень поможет маленький механизм командной строки под названием автодополнение.
Когда вы печатаете путь в командной строке, нажмите кнопку Tab, чтобы применить механизм автозавершения. Если ничего не произошло, значит существует несколько вариантов продолжения пути. Нажмите Tab снова, и вы увидите эти варианты. Продолжайте печатать и опять нажмите Tab, и механизм снова попытается завершить путь за вас.
Это сложно продемонстрировать в статье, так что попробуйте потестировать эту фичу сами. Если вы напечатаете в командной строке cd /hTab/<начало вашего имени пользователя>Tab, вы поймете, как это работает.
Что нужно запомнить
Команды
pwd
Выводит текущую директорию.ls
Выводит писок содержимого директории.cd
Переводит в другую директорию.
Понятия
Относительный путь
Местоположение файла или директории относительно вашего текущего местоположения в системе.Абсолютный путь
Местоположение файла или директории относительно корневой папки файловой системы.
Практические задания
Давайте применим то, что мы только что узнали, на практике. Попробуйте выполнить следующие задания:
1. Начнем с передвижения по системе. Используйте команды cd
и ls
, чтобы больше узнать о директориях вашей системы и о том, что в них есть. Постарайтесь использовать разные варианты относительных и абсолютных путей. Интересные места для исследования:
• /etc
— здесь хранятся конфигурационные файлы системы.
• /var/log
— здесь хранятся файлы логов для разных системных программ. (У вас может не быть разрешений просматривать все в этой директории. Пусть это вас не останавливает. Пара сообщений об ошибках никому не помешает)
• /bin
— место, в котором хранятся некоторые часто используемые программы.
• /usr/bin
— еще одно место, в котором хранятся системные программы.
2. А теперь вернитесь в домашнюю директорию 4 разными способами.
3. Постарайтесь почаще использовать автодополнение. Зачем напрягаться, если компьютер может что-то делать за вас?
Для начала работы в терминале Linux не нужно быть гуру администрирования — достаточно знать список базовых команд для навигации и работы с файлами и папками.
- Навигация
- Поиск
- Работа с папками
- Работа с файлами
- Переименование, перемещение и копирование
Навигация
После подключения к серверу вы оказываетесь в домашней папке пользователя. Чтобы узнать точный путь к вашему текущему местонахождению, воспользуйтесь командой:
pwd
Она выведет текущую рабочую директорию (print working directory).
Если вам нужно перейти в другую папку, для этого используется команда cd
(change directory) с указанием пути к нужной вам папке:
cd /home
Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий:
/ | корневая папка сервера |
. |
текущая директория, в которой вы сейчас находитесь. Например, чтобы найти файл с именем find . -name hello.txt |
.. |
директория, расположенная на уровень выше текущей. Если вы находитесь в папке cd .. |
~ |
домашняя папка текущего пользователя. Например, запустить скрипт sh ~/some-script.sh |
– |
предыдущая посещённая директория. Представим, что вы перешли в папку 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
имеет множество опций, которые позволяют уточнить условия поиска подробнее. Вот список наиболее полезных параметров:
|
Позволяет указать тип искомых данных: |
|
Позволяет вывести файлы с определённым уровнем доступа. Например, – |
|
Отображает только пустые файлы или папки |
|
Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: |
|
Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: |
|
Позволяет задать условие относительно времени изменения файлов:
|
|
Позволяет задать условие относительно времени последнего доступа к файлу, аналогично |
|
Позволяет уточнить размер (или диапазон размера) искомых файлов |
|
Позволяет применить к найденным файлам команду |
Больше информации о возможностях 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
.
-
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
-
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
- Ubuntu и Debian:
-
Утилита
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
на сервере, нужно выполнить два шага:
-
Настроить права на запуск файла для пользователей:
chmod +x ./script.sh
-
Запустить скрипт. Если вы находитесь в той же директории, где лежит скрипт, достаточно вызвать его по имени:
./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
Загрузить PDF
Загрузить PDF
В этой статье мы расскажем вам, как в Windows найти полный путь к файлу с помощью строки поиска, Проводника или окна «Выполнить».
-
1
Нажмите ⊞ Win+S. Откроется строка поиска.
-
2
Введите имя файла. Откроется список совпадающих результатов.
-
3
Щелкните по имени файла правой кнопкой мыши. Откроется меню.
-
4
Нажмите Открыть папку с файлом. Откроется папка с нужным файлом.
-
5
Щелкните в конце строки с именем файла. Вы найдете ее над списком файлов и под значками опций. Полный путь к файлу будет выделен.
- Нажмите Ctrl+C, чтобы скопировать путь.
- Нажмите Ctrl+V, чтобы вставить скопированный путь.
Реклама
-
1
Нажмите ⊞ Win+E. Откроется окно Проводника.
- Клавиша Windows находится в левом нижнем углу клавиатуры.
-
2
Перейдите в папку с нужным файлом. Ваши действия будут зависеть от того, где находится файл. Как правило, нужно дважды щелкнуть по диску (его букве), а затем дважды щелкнуть по нужной папке, чтобы открыть ее.
-
3
Щелкните по нужному файлу правой кнопкой мыши. Откроется меню.
-
4
Выберите Свойства. Эта опция находится внизу меню.
-
5
Найдите путь к файлу в строке «Расположение». Вы найдете ее посередине окна.
- Чтобы скопировать путь, дважды щелкните по нему — путь будет выделен, а затем нажмите Ctrl+C.
- Чтобы вставить путь, нажмите Ctrl+V.
Реклама
-
1
Перейдите в папку с нужным файлом. Например, если файл находится на рабочем столе, перейдите на рабочий стол.
-
2
Нажмите ⊞ Win+R. Откроется окно «Выполнить».
-
3
Перетащите файл в окно «Выполнить». Когда значок файла окажется в окне «Выполнить», отпустите кнопку мыши.
-
4
Найдите полный путь к файлу в поле «Открыть». В этом поле отображается путь к файлу.
- Чтобы скопировать путь, дважды щелкните по нему — путь будет выделен, а затем нажмите Ctrl+C.
- Чтобы вставить путь, нажмите Ctrl+V.
Реклама
Об этой статье
Эту страницу просматривали 18 274 раза.
Была ли эта статья полезной?
Вот простой пример. Я скачал chrome и теперь не знаю как его запустить через терминал. Насколько я знаю, нужно найти
chrome --> bin --> fail.sh
Но как найти где папка chrome?
Перепыл всю систему не пойму. В windows просто нажал правой кнопкой и свойства и там путь…
Что я не так делаю?
задан 21 янв 2016 в 10:39
Sirop4ikSirop4ik
10.7k17 золотых знаков59 серебряных знаков125 бронзовых знаков
1
Вообще, запускаемый файл браузера Chrome называется google-chrome
или google-chrome-stable
. Найти полный путь к запускаемому файлу можно командой:
which <имя файла>
which google-chrome-stable
При условии, что файл находится в одной из папок, перечисленных в переменной окружения $PATH
. Если это не так, найти его можно командой
find / -name <имя файла>
Но тогда и запустить его из консоли можно будет только как
/full/path/to/<имя файла>
Последняя команда найдет файл по имени, даже если он не запускаемый, если хватит прав.
ответ дан 21 янв 2016 в 11:24
2
Чаще всего хватает
whereis файл
Но если не находит, то можно поискать обычным способом
find / -name chrome
На моей убунте он установлен в /opt/google/chrome
ответ дан 21 янв 2016 в 10:43
MonocerosMonoceros
2942 серебряных знака11 бронзовых знаков
2
При работе с файлом сайта на сервере может возникнуть необходимость в определении его полного пути. Для выполнения этой задачи существует несколько способов, о них и пойдет речь далее.
Адреса файлов на серверах
Для начала предлагаю разобраться с тем, как вообще происходит получение адресов файлов. Самый распространенный способ – использование доступа к элементам при помощи протокола 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 открытая для пользователей папка сайта с возможностью скачать любой файл.
Соответственно, на этой же странице можно с легкостью получить информацию о полном пути файла.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Определение адреса файла на сервере
Разберу основные методы получения адресов файлов, хранящихся на сервере.
Консольная утилита pwd (для Linux)
Пользователи выделенного сервера или VDS с Linux могут задействовать простую консольную утилиту 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
Вы можете использовать один из этих методов, когда требуется определить абсолютный путь файла.