Как перейти к каталогу в C:\ с помощью Cygwin?
Я пытаюсь установить PyQt4, чтобы я мог возиться с этим. Руководство по установке сказало, что мне нужно установить Sip. Последний шаг к установке Sip — использовать команду make install . В Windows этого нет, поэтому я посмотрел это и все, что увидел, сказали установить Cygwin. Так я сделал. Но. sip находится в C:\Python31\sip .
Могу ли я запустить это из команды Cygwin? Если да, то как мне это сделать?
Или я могу запустить это из обычной командной строки Windows? Если да, то как мне это сделать?
Поделиться Источник 05 декабря 2009 в 02:30
13 ответов
cd /cygdrive/c
Поделиться 05 декабря 2009 в 02:33
Я добавлю что-то, что очень помогает мне с помощью cygwin. При настройке новой системы я всегда делаю это
ln -s /cygdrive/c /c
Это создает символическую ссылку на /cygdrive/c с новым файлом с названием /c (в домашней директории)
Затем вы можете сделать это в своей оболочке
cd /c/Foo cd /c/
Поделиться 05 декабря 2009 в 03:04
cd c: теперь поддерживается в cygwin
Поделиться 28 марта 2013 в 02:51
Вы уже приняли ответ, но я просто подумал, что упомяну, что следующее также работает в Cygwin:
cd "C:\Foo"
Я думаю, что метод cd /cygdrive/c лучше, но иногда полезно знать, что вы также можете сделать это.
Поделиться 05 декабря 2009 в 02:38
Вы можете просто использовать
cd C:/Users/../..
Поделиться 20 апреля 2016 в 19:05
Поскольку вы, вероятно, захотите делать это часто, добавьте псевдонимы в ваш файл.bashrc, например:
alias cdc='cd /cygdrive/c' alias cdp='cd /cygdrive/p'
Затем вы можете просто ввести в командной строке:
Поделиться 12 февраля 2014 в 09:45
Определите переменную в.bashrc:
export C=/cygdrive/c
затем вы можете использовать
cd $C/
и вкладка автоматически завершается правильно (пожалуйста, включите / в конце)
Поделиться 18 марта 2014 в 23:18
На связанном примечании вам также может понравиться:
shopt -s autocd
Это позволяет вам перейти на каталог, просто введя в каталог
[user@host ~]$ /cygdrive/d cd /cygdrive/d [user@host /cygdrive/d]$
Чтобы сделать его постоянным, вы должны добавить его в ваш ~/.bashrc
Поделиться 12 апреля 2013 в 15:10
Вы можете попробовать это
/cygdrive/c/directoryname
Поделиться 13 июня 2013 в 09:20
То, что мне нравится, это: cd C:
Чтобы Linux чувствовал себя так, сделайте следующее:
ln -s /cygdrive/c/folder ~/folder
и используйте это так: ~/folder/..
Поделиться 06 октября 2017 в 22:59
> (Нажмите Enter, когда вы увидите эту строку)
Теперь вы находитесь на диске C.
Поделиться 09 июня 2018 в 00:13
Создайте файл с именем «overrideBashCdForWindowsPaths» в вашей папке «Главная». Вставьте следующие строки в этот файл и сохраните его:
#!/bin/bash function cd() < CD_PATH="$(history | tail -1 | sed -e "s,.*$\s*,,g")" if [ -z "$" -o "$" = "~" ]; then CD_PATH="$" fi builtin cd "$(cygpath "$CD_PATH")" >
Затем введите следующую команду в терминале, пока вы находитесь в папке «Главная»:
echo ". overrideBashCdForWindowsPaths" >> .bashrc
Закройте терминал и откройте новый. Теперь вы можете легко перейти в эту папку Windows, просто введя
cd C:\Python31\sip
Скрипт читает последнюю команду, извлекает путь и передает его в инструмент преобразования пути Cygwin. Назвав функцию «cd», мы как бы переопределяем встроенный «cd» Bash и делегируем фактический вызов ей в самой последней строке.
Поделиться 24 мая 2016 в 11:11
Что-то, что стоит упомянуть здесь, это то, что cygpath в Cygwin все еще не обрабатывает пробельные пути Windows должным образом, особенно в Bash-скриптах, работающих в Cygwin. Сложность заключается в том, чтобы понять, как Cygwin интерпретирует кавычки в Bash-скриптах.
Следующее не работает:
#!/bin/bash TBDIR="/cygdrive/c/Program\ Files\ \(x86\)/MyDir/" if [ -d "$" ]; then echo "Found MyDir directory at: $" cd "$TBDIR" else echo "MyDir program directory not found!" echo "Wrong DIR path: $" exit 1 fi
Но это работает:
#!/bin/bash # Cygwin-ism: No quotes! TBDIR=/cygdrive/c/Program\ Files\ \(x86\)/MyDir/ if [ -d "$" ]; then .
Насколько я знаю, в настоящее время нет известного обходного пути с использованием cygpath , который может правильно обрабатывать пробелы в контексте bash-скриптов, но вы можете использовать кавычки в своих скриптах.
C++, Qt
Любители работать в консоли, подобной консоли линукса, могут установить себе Cygwin, юникс подобную среду, где будут доступны стандартные консольные программы из линукса.
Ставится Cygwin довольно просто. В процессе установки в одном из режимов можно выставить флажки напротив программных пакетов, которые вы хотите установить. Я выбрал себе пакеты nano, git и что-то ещё.
После инсталляции на рабочем столе появляется ярлычок Cygwin для запуска среды.
Запуск Cygwin из любой папки
Так как я пользуюсь TotalCommander-ом, мне удобно запускать программы сразу из нужной мне директории. Создадим удобный bat-файл для запуска Cygwin.
Сразу, без долгих размышлений, копируем строку «Объект» из свойства этого ярлыка в новый созданный нами файл C:\bin\bash.bat
Полное содержимое файла будет выглядеть так:
@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -
Обратите внимание на то, что путь до exe-файла у вас может быть другим. У себя я установил Cygwin в директорию C:\cygwin .
Также если директория C:\bin у вас ещё не добавлена в переменную окружения PATH , то это следует сделать.
Настройка запуска Cygwin
После некоторой работы с Cygwin я обнаружил, что не смотря на то, что запускать Cygwin я могу из любой директории, просто прописав слово bash , сама же запускаемая среда всегда открывается в домашней директории вашего пользователя. (Домашняя директория установлена в переменной окружения HOME ).
Это выглядит не очень удобно, ведь если я пишу команду bash , находясь в директории D:\xyz , то я и рассчитываю, что запущенный Cygwin также будет находиться в директории D:\xyz .
Если вы обратите внимание, то увидите, что ярлык с рабочего стола запускает утилиту mintty.exe . Мы сразу понимаем, что необходимо ознакомиться с перечнем входящих атрибутов для данной команды.
Открываем Cygwin и вводим
man mintty
После внимательного изучения мануала, мы радуемся некоторым возможностям, о которых не подозревали, а именно: возможности задать размеры и координаты запускаемого окна Cygwin.
Открываем наш bat-файл и изменяем его содержимое на следующее:
@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -
В данном случае я установил нужный мне размер окна Cygwin и позицию появления окна (отрицательное значение -4 нужно, чтобы кромка окна оказалась за границей монитора, и её не было видно).
Теперь моё окно будет всегда появляться в удобных мне координатах, а не будет смещаться при каждом новом запуске на +8 пикселей по x,y.
Но как же быть с директорией запуска Cygwin?
Ведь переходить в нужную директорию из домашней — жутко не удобно!
Решение было найдено! Для установки текущей директории при запуске Cygwin мы можем использовать скрипт автозапуска для запускаемой среды bash .
Значит нам нужно усовершенствовать наш bash.bat файл таким образом, чтобы он создавал файл автозапуска для запускаемой консоли bash
Запускаем Cygwin, вводим команду » man bash » и читаем документацию в поисках необходимого нам. Находим несколько вариантов имён файлов для домашней директории пользователя, который запускаются при авторизации в bash.
Файлы, запускаемые при авторизации в bash :
~/.bash_profile ~/.bash_login ~/.profile
Файл, запускаемый при запуске » bash без авторизации в нём
~/.bashrc
Важное замечание: файл автозапуска ~/.bash_login (или любой другой) должен быть написан в кодировке UTF-8! И не должен использовать символы \r . (Например команда pwd у меня не выполнялась, когда файл содержал в конце символ \r , свойственный системе Windows).
Как оказалось, вывести UTF-8 текст из CMD не так-то просто, но возможно!
Вот пример, как это делается:
cmd /u /c chcp 65001 | echo некий текст >"имя_файла"
Усовершенствуем наш C:\bin\bash.bat файл, теперь он имеет содержимое:
@echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -
После запуска, консоль bash выполняет содержимое файла ~/.bash_login . Этот файл должен быть в формате UTF-8. Для этого мы вызываем CMD cо флагом /u , который сообщает, что запускаемая консоль должна возвращать результат в формате UTF-8.
Далее в этой же строке после флага /с мы передаём команду. Кстати, флаг /с означает, что после выполнения переданной команды, консоль закрывается.
Как можно увидеть, мы передаём две команды, разделённых знаком | . Данный знако позволяет записать две нужных нам команды в одну строку.
Первая команда chcp 65001 устанавливает кодировку UTF-8 в запущенной консоли. (Чтобы узнать, какая текущая кодировка установлена в консоли, достаточно вызвать команду chcp без параметров.)
Вторая команда echo текст > «%HOME%\%file%» печатает соответствующий текст в файл с именем » %HOME%\%file% «, где имена переменных развёртываются в путь к домашней директории и имени файла .bash_login .
Обратите внимание на необычное обращение к переменной CD , в которой содержится текущий каталог cmd-консоли. Если обычно переменная развёртывается записью
То в нашем случае, мы используем запись
Что позволяет сразу заменить все слеши в стиле Windows \ на слеши в стиле Linux / .
Не забываем помещать все имена файлов и директорий в двойные кавычки, таким образом это позволит попадать в директории содержащие пробелы.
За счёт того, что используется UTF-8, данная конструкция успешно позволяет открывать Cygwin в директориях с русскими именами.
Таким образом, при каждом запуске в консоли команды bash , будет запускаться скрипт C:\bin\bash.bat , который перезаписывает файл автозагрузки среды bash в Cygwin. Теперь мы можем легко и удобно запускать консоль bash из любой директории и сразу попадать в эту же самую директорию в bash-консоли.
Радуемся и наслаждаемся результатом!
Подведём итоги
- Мы установили Cygwin
- Создали файл C:\bin\bash.bat с содержимым
@echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -
- запуска терминала Cygwin в указанной позиции экрана (параметр —position )
- запуска окна определённого размера (параметр —size )
- запуска Cygwin из любой директории, набрав в консоли слово bash
- при этом запущенный Cygwin располагается в той же директории, откуда был запущен!
Основные команды Linux: делаем первые шаги в командной строке
![]()

Чтобы начать работать в терминале Linux, не нужно быть гуру администрирования — достаточно знать список базовых команд для навигации, поиска и работы с файлами. В этой статье мы разберём основные команды Linux и рассмотрим их функции, чтобы помочь вам освоиться в командной строке и более эффективно использовать возможности этой ОС.
- Навигация
- Поиск
- Работа с папками
- Работа с файлами
- Переименование, перемещение и копирование
Навигация
После подключения к серверу Linux вы оказываетесь в домашней директории пользователя. Чтобы узнать точный путь к вашему текущему местонахождению, воспользуйтесь командой:
Она выведет текущую рабочую директорию (print working directory).
Если вам нужно перейти в другую директорию, для этого используется команда cd (change directory) с указанием пути к нужной вам директори:
cd /home
Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий Linux:
текущая директория, в которой вы сейчас находитесь. Например, чтобы найти документ с именем hello.txt в текущей директории, можно использовать команду:
find . -name hello.txt
директория, расположенная на уровень выше текущей. Если вы находитесь в /home/user , то комбинация .. будет обозначать папку /home . То есть, чтобы вернуться на один уровень назад, достаточно выполнить команду:
домашняя директория текущего пользователя. Например, запустить скрипт some-script.sh из домашней директории, когда вы находитесь в другой, можно с помощью команды:
sh ~/some-script.sh
предыдущая посещённая директория. Представим, что вы перешли в /home , потом вам потребовалось изменить настройки в /etc . Чтобы вернуться назад, достаточно использовать команду:
Для навигации с помощью команды 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 , команда покажет типы данных, разрешения и скрытые объекты. Например, в этом случае она выведет в терминал подробный список содержимого /etc:
ls -al /etc
Чтобы немного упростить себе жизнь, можно использовать консольные файловые менеджеры для Linux, например mc .
apt -y install mc
yum -y install mc
Его особенность — примитивный графический интерфейс. Он позволяет быстро ориентироваться в структуре каталогов, перемещаться между ними, создавать новые директории. Интерфейс разбит на два окна, между которыми вы можете перемещать объекты. Помимо прочего, в нём можно работать и с помощью мыши — перемещаться с помощью двойного клика, использовать кнопки в нижней части панели.

Поиск
С помощью команды find можно найти на сервере директорию или файл по набору условий. Структура команды проста:
find [где искать] [как искать] [что искать]
Например, мы знаем название скрипта hello.txt , но не знаем, где именно на сервере он лежит. Найти его поможет команда:
find / -name "hello.txt"
- / указывает, что искать надо, начиная с корневой директории сервера. Если вам известно, где может лежать искомое, можно задать путь точнее.
- «hello.txt» — имя файла, который нам нужно найти. Если известна только часть имени, можно указать сокращённый вариант: «hello*» , «*.txt»
Кроме -name , команда find имеет множество опций, которые позволяют уточнить условия поиска. Вот список наиболее полезных параметров:
Позволяет указать тип искомых данных: -type f — файлы, -type d — директории
Позволяет вывести файлы с определённым уровнем доступа. Например, — perm 777
Отображает только пустые файлы или папки
Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: -user root
Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: -group www-data
Позволяет задать условие относительно времени изменения:
- -mtime 7 — менявшиеся в течение последних 7 дней;
- -mtime +7 — менявшиеся более чем 7 дней назад;
- -mtime -14 — менявшиеся менее чем 14 дней назад.
Позволяет задать условие относительно времени последнего доступа, аналогично mtime
Позволяет уточнить размер (или диапазон размера)
Позволяет применить к найденным файлам команду COMMAND
Больше информации о возможностях команды find можно узнать в документации. Здесь на помощь пользователям приходит команда man — используя её, вы сможете получить полную справочную информацию о любой команде Linux:
man find
Из встроенных инструментов поиска можно также отметить утилиту whereis . Она предназначена для поиска бинарных и системных файлов и директорий служб. Следующий пример выведет список всех объектов, имеющих прямое отношение к php :
whereis php
Работа с папками
Для создания новых директорий в системе Linux используется команда 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 , о ней расскажем чуть позже.
Работа с файлами
Создание
Для создания новых файлов в ОС Linux есть несколько полезных команд.
Самый простой способ, одновременно создающий и файл, и недостающие папки — команда touch . Для этого ей достаточно только передать полный путь. Например, создадим в директории docs папку copies , а внутри неё — copies-list.txt :
touch docs/copies/copies-list.txt
Несуществующая папка copies создастся автоматически.
Если нужно создать сразу несколько файлов, можно просто перечислить их через пробел:
touch file1.txt file2.txt file3.txt file4.txt file5.txt
Ещё один способ — вызвать какой-нибудь консольный текстовый редактор с указанием полного пути к файлу. Тогда редактор автоматически создаст его и откроет для редактирования. Однако все папки придётся создать заранее, а файл придётся сохранить (даже пустой), иначе он не будет создан.
Команда ниже создаст new-file.txt с помощью редактора vi :
vi new-file.txt
Для сохранения и выхода в vi нужно нажать клавишу Esc , ввести сочетание :wq и нажать Enter . Для выхода без сохранения нужно также нажать Esc , ввести сочетание :q! и нажать Enter .
Также создать пустой файл можно с помощью команды cat или команды echo:
cat > new-file.txt echo > new-file.txt
Редактирование
Для редактирования используются консольные текстовые редакторы. Самые известные — vi и nano . В некоторых дистрибутивах vi заменён на vim ( vi improved, улучшенный vi ) или vim.tiny
Редактор vi будет доступен вам по умолчанию на большинстве Linux-систем.

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

Чтобы закрыть Vim (без сохранения), введите сочетание :q!
Если указать редактору путь к файлу, он откроет его для редактирования. Если его не существовало, то он будет создан:
vi new-file.txt
При первом входе Vim открывает файл в режиме просмотра. Он не позволяет редактировать его содержимое, но можно вводить командные последовательности, перемещаться по тексту, выполнять поиск и пр.
Чтобы начать ввод, нужно перейти в режим редактирования с помощью клавиши I . Чтобы вернуться в режим просмотра, нажмите Esc .
Перемещение по тексту выполняется с клавиатуры:
- перемещение в начало текста: Esc + дважды G
- перемещение в конец текста: Shift + G
- перемещение по строке горизонтально: стрелки ← →
- перемещение по строкам вертикально: стрелки ↑ ↓
- отображение номеров строк: Esc , введите :set number , нажмите Enter
- перемещение по номерам строк: Esc , введите : номер строки, нажмите Enter
Для выхода с сохранением файла нажмите Esc и введите :wq!
Текстовый редактор vim — краткое руководство
Более современной и удобной альтернативой Vim считается редактор nano . Современные дистрибутивы Linux включают его по умолчанию, но на ранних версиях устанавливать придётся вручную:
apt -y install nano
yum -y install nano
Вызов nano без аргументов откроет пустой редактор. Можно начать ввод (при сохранении вам будет предложено указать имя и сохранить файл) или вызвать режим помощи со списком доступных команд с помощью сочетания Ctrl + G .

Для сохранения нажмите Ctrl + O — редактор предложит ввести имя файла: введите имя и нажмите Enter . Если файл существовал и имя изменять не требуется, просто нажмите Enter .
Для выхода из редактора нажмите Ctrl + X .
Чтение
Бывает, что нам нужно получить какую-то информацию из файла без необходимости редактировать его. В таком случае необязательно использовать текстовый редактор — в Linux есть и более простые инструменты.
Например, команда 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
Эта команда приобрела некоторую популярность из-за того, что её используют ради шутки над неопытными администраторами и пользователями, которые только начинают своё знакомство с системой Linux. Им под тем или иным предлогом предлагают выполнить из терминала команду 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 :
man wget
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
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 на сервере Linux, нужно выполнить два шага:
-
Настроить права на запуск файла для пользователей с помощью команды chmod :
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
Переименование, перемещение и копирование файлов и папок
Скопировать файл в терминале Linux можно с помощью команды:
cp [что копируем] [куда копируем]
К примеру, вы можете сделать копию конфигурационного файла, который вы хотите изменить. Здесь мы создаём копию nginx.conf :
cp nginx.conf nginx.conf.copy
Директории копируются аналогично. При необходимости скопировать каталог со всем содержимым (рекурсивно) нужно добавить к команде ключ -r :
cp -r /docs /files
Здесь мы создаём копию docs со всем её содержимым с именем files .
Переместить файл также просто, для этого используем в терминале команду mv :
mv [что переместить/переименовать] [куда переместить/как назвать]
Например, следующая команда переместит файл file.txt в директорию new :
mv file.txt docs/new
Переименовать файл тоже не составит труда. В Linux переименование аналогично перемещению в ту же самую папку, но с новым именем. Например, команда ниже переименует file.txt (в директории /docs/new/) в todolist.txt:
mv /docs/new/file.txt /docs/new/todolist.txt
В этом примере file.txt переименовывается в todolist.txt
Аналогично можно перемещать и переименовывать директории.
Теперь, когда вы знаете базовые команды для работы с терминалом Linux, самое время познакомиться с файловой системой.
Смена каталога с помощью cd
Смените каталог легко, если вы знаете где вы находитесь в данный момент (ваш текущий каталог) и куда вы хотите отправиться. Каталог, в который вы хотите попасть, выше или ниже текущего?
Чтобы сменить каталог, выполните команду cd . Команда в таком виде перенесёт вас в ваш домашний каталог; чтобы перейти в другой каталог необходимо указать путь к нему.
Вы можете использовать абсолютные или относительные пути. Абсолютные пути указываются от верхнего каталога / (называемого корнем) до указанного каталога; относительные пути указываются от текущего каталога, где бы он не находился. Дерево, показанное ниже, приведено в качестве примера, помогающего понять команду cd .
/ directory1 directory2 directory3
Если вы находитесь в directory3 и хотите перейти в directory1 , вы должны подняться в дереве каталогов выше.
Если вы введете:
находясь в каталоге directory3 , вы получите сообщение об ошибке, сообщающее о том, что нет такого каталога. Это происходит потому что, действительно, нет каталога directory1 в каталоге directory3 .
Чтобы подняться к каталогу directory1 , вы должны ввести:
Это абсолютный путь. Он указывает Linux начать сверху и опуститься в каталог directory1 .
Запомните, абсолютные пути перенесут вас В любой каталог ИЗ любого, а относительные пути, перенесут вас в каталоги, расположенные ниже текущего.
Рисунок 10-3. Абсолютные пути указывают полный путь
Путь является абсолютным, если первый символ в нём / ; в противном случае это относительный путь.
Рисунок 10-4. Относительные пути указываются относительно текущего расположения
Ниже приведено упражнение с относительными и абсолютными путями. В вашем домашнем каталоге введите относительный путь:
Команда cd .. указывает системе подняться на один уровень выше текущего каталога. Очевидно, команда cd ../.. перенесёт вас выше на два каталога.
Выполнив полностью команды этого примера, вы должны оказаться в каталоге /X11 , в котором хранятся конфигурационные файлы и каталоги, относящиеся к X Window System.
Взгляните на последнюю команду cd . Вы должны указать системе:
Подняться на один уровень выше к родительскому каталогу вашего домашнего каталога (вероятно, это будет /home )
Затем поднимитесь к родительскому каталога текущего (вероятно, вы окажетесь в / )
Затем спуститесь к каталогу etc
Наконец, перейдите в каталог /X11
Укажите абсолютный путь, чтобы быстрее перейти к каталогу /X11 . Введите:
Всегда проверяйте где вы находитесь, прежде чем указать относительный путь к каталогу или файлу. Однако если вы будете использовать абсолютные пути, вам не придётся задумывать об этом. Если вы не знаете, где вы находитесь, введите pwd .
Таблица 10-2. Параметры команды cd
| Команда | Функция |
|---|---|
| cd | переносит вас в ваш домашний каталог |
| cd ~ | также переносит вас в ваш домашний каталог |
| cd / | переносит вас в корневой каталог всей системы |
| cd /root | переносит вас в домашний каталог пользователя root, или супер-пользователя, учётной записи, созданной во время установки системы |
| cd /home | переносит вас в каталоге home, в котором находятся каталоги пользователей |
| cd .. | переносит вас на один уровень выше |
| cd ~otheruser | переносит вас в домашний каталог пользователя otheruser , если только пользователь otheruser дал вам соответствующие разрешения |
| cd /dir1/subdirfoo | Вне зависимости от того, где вы находитесь, этот абсолютный путь перенесёт вас прямо в каталог subdirfoo , подкаталога, вложенного в dir1 |
| cd ../../dir3/X11 | Этот относительный путь сначала поднимет вас на два уровня выше, затем спустит в dir3, и наконец, в каталог X11. |
Теперь когда вы начали понимать как менять каталоги, посмотрите, что произойдет, если вы перейдёте в домашний каталог пользователя root (суперпользователя). Введите:
Если вы не зарегистрированы под именем root, при обращении к этому каталогу вы получите сообщение «в доступе отказано».
Запрещая доступ к учётным записям root и других пользователей (или их домашним каталогам), ваша система Linux защищается от случайного или преднамеренного повреждения. Обратитесь к разделу Владение и разрешения
Чтобы перейти в каталог root, воспользуйтесь командой su . Введите эту последовательность команд:
[newuser@localhost newuser]$ su Password: ваш пароль root [root@localhost newuser]# cd /root [root@localhost /root]#
Как только вы введете правильный пароль root, вы заметите, что ваше приглашение изменилось и теперь в нём отмечено ваше звание суперпользователя, в начале приглашения учётной записи root отображается символ «#» (как показано на Рисунке 10-5 ).
Рисунок 10-5. Превращение в root
Теперь, если вы выполните cd для перехода к домашнему каталогу пользователя root, вы получите к нему доступ.
Завершив работу под именем root, просто введите в приглашении exit .
[root@localhost /root]# exit exit [newuser@localhost newuser]$
| Назад | Начало | Вперед |
| Определение вашего текущего каталога с помощью pwd | Вверх | Просмотр содержимого каталога с помощью ls |