Как перейти в домашнюю директорию cygwin
Перейти к содержимому

Как перейти в домашнюю директорию cygwin

  • автор:

Как перейти к каталогу в 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-консоли.

Радуемся и наслаждаемся результатом!

Подведём итоги

  1. Мы установили Cygwin
  2. Создали файл 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: делаем первые шаги в командной строке

url image

Чтобы начать работать в терминале 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

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

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