Команда pwd в linux (текущий рабочий каталог)

Рабочая директория и её содержание

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

Директория в которой мы находимся называется рабочей директорией. Чтобы узнать имя рабочей директории, воспользуемся командой pwd (print working directory — вывести рабочую директорию).

Введем команду pwd в окно терминала.

1
2
3
4

 
$ pwd
/home/mikhail
 

Когда мы входим в операционную систему Linux, мы попадаем в домашнюю директорию. Это место, где мы сохраняем наши файлы. В большинстве Linux систем домашняя директория по умолчанию называется /home/имя_пользователя. Она также может быть другой, в зависимости от прихоти системного администратора

Для просмотра содержимого рабочей директории воспользуемся командой ls (list files and directories — перечислить файлы и директории). Она выведет нам директории и файлы, которые находятся в домашней директории.

Введем команду ls в окно терминала.

1
2
3
4

 
$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
 

К команде ls вернемся в следующих материалах. С её помощью можно сделать очень много интересного, но в начале нужно уделить чуть больше внимания путям и директориям.

Базовые команды Linux

pwd для показа текущей рабочей директории

Откройте консоль и введите туда

pwd

У меня вывелось:

/home/mial

Здесь (первый слеш) – это корень, home – это название папки (директории), далее (второй слеш) – отделяет название вложенной папки, mial – название второй вложенной папки.

Команда pwd показывает «текущую рабочую директорию». Текущую рабочую директорию нужно знать при указании относительных путей до файлов и папок, также некоторые программы сохраняют результаты своего выполнения в текущую директорию.

mkdir для создания новых директорий

После mkdir укажите название папки, которую вы хотите создать. Если вы укажите относительный путь, например, так:

mkdir test1

То будет создана новая папка test1 в текущей рабочей директории, т.е. в моём случае путь до неё будет

/home/mial/test1

Также можно указать абсолютный путь до папки:

mkdir /home/mial/test2

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

ls
test1  test2  test.sh  Видео  Документы  Загрузки  Изображения  Музыка  Общедоступные  Рабочий стол  Шаблоны

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

Чтобы список выглядел лучше, можно использовать команду ls с опцией -l

ls -l

После команды и опций можно указать путь до папки, содержимое которой вы хотим посмотреть. Чтобы увидеть содержимое директории /var/log нужно ввести:

ls -l /var/log

Для просмотра содержимого корневой директории:

ls -l /

cd для перехода по папкам (смены текущей рабочей директории)

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

cd test1
cd /home/mial/test2

Символ . (одна точка) означает текущую директорию, а символ … (две точки) означаете родительскую директорию. Следовательно, для перехода на один уровень вверх нужно набрать

cd ..

cp для копирования файлов

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

cp test.sh test1

Этой командой я скопировал файл test.sh в директорию test1. Проверим

ls -l test1
итого 4
-rw-r--r-- 1 mial mial 84 дек 11 15:48 test.sh

mv для переименования и перемещения файлов.

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

Файл test.sh из каталога test1 я переместил в каталог test2:

mv test1/test.sh test2

Файл test.sh в каталоге test2 я переименовал в test2.sh:

mv test2/test.sh test2/test2.sh

Файл test2.sh в каталоге test2 я переместил в каталог test1 и присвоил ему имя new.txt:

mv test2/test2.sh test1/new.txt

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

Чтобы удалить наши тестовые директории, воспользуемся командой rm. После этой команды укажите путь до файла или папки, которые нужно удалить. Если вы собираетесь удалить директорию, то используйте также опцию -r, она означает рекурсивно удалять каталоги и их содержимое. Можно указать сразу несколько файлов и (или) каталогов:

 rm -r test1 test2

Для понимания иерархии файловой системы рекомендуется ещё одна статья для новичков «Структура директорий Linux. Важные файлы Linux».

Основная информация о Find

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

Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.

Команда find имеет такой синтаксис:

find   критерий шаблон

Папка — каталог в котором будем искать

Параметры — дополнительные параметры, например, глубина поиска, и т д

Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.

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

Команда ls linux

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

$ ls опции /путь/к/папке

Опции команды указывают как именно и в каком виде нужно выводить информацию на экран, а путь, это та папка, которую нужно отобразить. Рассмотрим основные опции утилиты:

  • — a — отображать все файлы, включая скрытые, это те, перед именем которых стоит точка;
  • — A — не отображать ссылку на текущую папку и корневую папку . и …;
  • — author — выводить создателя файла в режиме подробного списка;
  • — b — выводить Escape последовательности вместо непечатаемых символов;
  • — block-size — выводить размер каталога или файла в определенной единице измерения, например, мегабайтах, гигабайтах или килобайтах;
  • — B — не выводить резервные копии, их имена начинаются с ~;
  • — c — сортировать файлы по времени модификации или создания, сначала будут выведены новые файлы;
  • — C — выводить колонками;
  • — color — включить цветной режим вывода, автоматически активирована во многих дистрибутивах;
  • — d — выводить только директории, без их содержимого, полезно при рекурсивном выводе;
  • — D — использовать режим вывода, совместимый с Emacs;
  • — f — не сортировать;
  • — F — показывать тип объекта, к каждому объекту будет добавлен один из специализированных символов */=>@|;
  • — full-time — показывать подробную информацию, плюс вся информация о времени в формате ISO;
  • — g — показывать подробную информацию, но кроме владельца файла;
  • — group-directories-first — сначала отображать директории, а уже потом файлы;
  • — G — не выводить имена групп;
  • -h — выводить размеры папок в удобном для чтения формате;
  • — H — открывать символические ссылки при рекурсивном использовании;
  • — hide — не отображать файлы, которые начинаются с указанного символа;
  • -i — отображать номер индекса inode, в которой хранится этот файл;
  • — l — выводить подробный список, в котором будет отображаться владелец, группа, дата создания, размер и другие параметры;
  • — L — для символических ссылок отображать информацию о файле, на который они ссылаются;
  • — m — разделять элементы списка запятой;
  • — n — выводить UID и GID вместо имени и группы пользователя;
  • — N — выводить имена как есть, не обрабатывать контролирующие последовательности;
  • — Q — брать имена папок и файлов в кавычки;
  • — r — обратный порядок сортировки;
  • — R — рекурсивно отображать содержимое поддиректорий;
  • — s — выводить размер файла в блоках;
  • — S — сортировать по размеру, сначала большие;
  • — t — сортировать по времени последней модификации;
  • -u — сортировать по времени последнего доступа;
  • — U — не сортировать;
  • — X — сортировать по алфавиту;
  • — Z — отображать информацию о расширениях SELinux;
  • — 1 — отображать один файл на одну строку.

Это были все основные параметры команды ls, которые нам может когда-либо понадобиться использовать. Их очень много, но на деле будут нужны только некоторые из них, вы их быстро запомните, а все остальные сможете всегда найти в этой статье или на странице справки man ls. А теперь давайте рассмотрим несколько примеров использования команды ls linux.

4: Редактирование файлов

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

Команда nano – один из самых простых текстовых редакторов командной строки Linux. Редактор nano использует less и занимает терминал в течение всего времени работы.

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

Чтобы отредактировать file1, введите:

Приложение nano  откроет файл (который на данный момент пуст). Интерфейс выглядит так:

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

Чтобы запросить справку в редакторе, введите:

Чтобы закрыть справку, введите:

В редакторе можно вводить или изменять любой текст. Например, можно добавить в файл:

Чтобы сохранить изменения, нажмите CTRL-O. Программа попросит подтвердить имя файла, который вы хотите сохранить.

Как видите, внизу уже указаны другие опции. Редактор выводит их в зависимости от контекста (это означает, что они будут меняться в зависимости от того, что вы пытаетесь сделать). Если вы хотите сохранить изменения в file1, просто нажмите Enter.

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

Чтобы сохранить изменения, введите Y. Чтобы не сохранять, нажмите N. Чтобы не закрывать файл, нажмите CTRL-C. Если вы захотите сохранить изменения, программа предложит снова выбрать имя файла для сохранения. Чтобы сохранить в текущий файл и закрыть редактор, нажмите Enter.

Чтобы просмотреть содержимое файла, используйте cat или less.

В некоторых системах используется редактор vim или vi. Это более продвинутый и производительный редактор, но с ним сложно работать. Вместо vim или vi всегда можно использовать nano.

Использование cd в linux

Я не буду здесь описывать какими бывают пути в Linux. Мы рассматривали эту тему в отдельной статье. По умолчанию, в качестве рабочего каталога используется домашняя папка пользователя. Давайте сначала перейдем в одну из подпапок домашней папки:

Домашняя папка обозначается как ~/. Поэтому следующая команда выполнит аналогичное действие:

Правда, здесь есть преимущество. В первой команде используется относительный путь, тогда как вторая правильно выполнится из любой папки. Теперь переместимся в папку /usr/lib относительно корня:

С помощью символа черты «-» вы можете вернуться в предыдущую папку:

Используя двойную точку «..» можно перейти в родительский каталог:

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

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

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

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

Кроме cd, есть еще две дополнительные команды, это pushd и popd. Можно сказать, что простая реализация стека для рабочих каталогов. Когда вы выполняете pushd, текущий рабочий каталог сохраняется в памяти, а на его место устанавливается указанный:

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

Это реализация стека, поэтому количество каталогов в памяти не ограничено двумя. Вы можете перемещаться по такому количеству папок, как вам нужно.

Наконец, еще один момент, если вам нужно перейти в каталог, в имени которого есть пробелы, используйте символ экранирования обратный слэш «\» или просто возьмите его имя в скобки:

2: Просмотр файлов

В предыдущем разделе вы научились перемещаться по файловой системе

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

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

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

Откройте /etc/services (этот конфигурационный файл хранит данные о сервисах системы).

Команда less откроет файл. Вы увидите отрывок документа, который помещается в окно терминала.

Для прокрутки можно использовать клавиши со стрелками вверх и вниз на клавиатуре. Чтобы вывести на экран следующий отрывок файла, вы можете использовать пробел, кнопку Page Down или сочетание клавиш CTRL-f.

Чтобы вернуться к предыдущему экрану, нажмите Page Up или CTRL-b.

Чтобы найти в документе какой-либо текст, введите слеш, после которого укажите искомое слово. Например, чтобы найти «mail», нужно ввести:

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

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

Чтобы закрыть less, введите:

Кроме less существует ещё много других способов просмотра файлов. Команда cat отображает содержимое файла и немедленно возвращает вас в командную строку. Команда head по умолчанию показывает первые 10 строк файла. Аналогично, команда tail выводит последние 10 строк. Такой вывод удобно использовать в конвейеризации данных для других команд.

Примечание: Ознакомьтесь с работой вышеперечисленных команд самостоятельно (можно на примере файла /etc/services).

Просмотр файлов и папок в Linux

Более точная и подробная статья по поиску занятого места на диске.

Проверяем свободное место на всём диске:

df -h

Узнаём какие файлы хранятся в директории

ls

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

du -hs /*

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

ls -lSr |more

Показывает размер и имена директорий и файлов (сортировка по размеру). В примере сортировка по размеру директории var.

du -sk /var/* | sort -rn

Ещё одна команда (показывает в мб) сортирует по размеру (в данном случае сортировка каталога с логами):

du -k /var/log/* | sort -nr | cut -f2 | xargs -d ‘\n’ du -sh

Узнать расположение файла

Узнать где находится файл lsb_release можно командой which lsb_release. Чтобы сразу получить
дополнительную информацию выполните

ls -lF $(which lsb_release)

-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*

Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл
исполняемый.

Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями
q (query) и f (file)

rpm -qf $(which lsb_release)

redhat-lsb-core-4.1-27.el7.centos.1.x86_64

Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)

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

cp -i /etc/hosts .

cp -i /etc/hosts .

cp: overwrite ‘./hosts’?

Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой
mkdir с опцией p (parent)

mkdir -p sites/heiheiru

ls -l sites

total 0

drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru

Опции

-a или —archive

То же, что и -dR —preserve=all

—attributes-only
Не копировать содержимое файла. Скопировать только атрибуты файла.

—backup=МЕТОД
Если файл назначения существует, то создать для каждого такого файла резервную копию.

МЕТОД определяет, каким образом формируется имя резервной копии. МЕТОД может принимать значения:

  • none или off — не делать резервных копий, даже если включена опция —backup
  • numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt~2~).
  • existing или nil — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple.
  • simple или never — делать обычные резервные копии (пример: myfile.txt~).

-b
То же, что и —backup, но без аргументов.

—copy-contents
Скопировать содержимое специальных файлов (файлов устройств и FIFO) при рекурсивном копировании. Данную опцию использовать не рекомендуется.

-d
То же, что и —no-dereference —preserve=links

-f или —force

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

-i или —interactive

Вывести запрос на подтверждение перезаписи существующего файла.

-H
Переходить по символическим ссылкам, указанным в качестве источника.

-n или —no-clobber

Не перезаписывать существующие файлы.

-P или —no-dereference

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

-p
То же, что и —preserve=mode,ownership,timetamps

—preserve=СписокАтрибутов
Сохранять у файлов атрибуты, указанные через запятую в списке СписокАтрибутовЕсли возможно, то можно использовать дополнительные атрибуты: context, links, xattr, all

—no-preserve=СписокАтрибутов
Не сохранять атрибутиы, указанные в списке СписокАтрибутов

—parents
Формировать результирующее имя (результирующий путь) каждого копируемого файла с учетом полного пути, который указан для данного файла.

Например, при использовании команды cp —parents a/b/myfile dstdir, файл myfile будет скопирован в директорию dstdir/a/b. То есть будут созданы промежуточные директории.

-R или -r или —recursive

Копировать директории. Используется рекурсивное копирование — копируются директории и все их содержимое.

—reflink=КОГДА
Создавать или не создавать «легкую» клонированную копию файла, если данная функциональность поддерживается файловой системой.

КОГДА может принимать значения:always — всегда создавать «легкую» копию файла. Создается ссылка на исходные данные. Фактического копирования данных не происходит. Блоки данных копируются только тогда, когда они изменяются.auto — создается обычная полная копия.

—remove-destination
Удалить каждый существующий файл.

—sparse=КОГДА
Опция задает то, как будет выполняться копирование разреженных (sparse) файлов. Разреженный файл — это файл, в котором последовательности нулевых байтов (дыры) заменены на информацию об этих последовательностях. То есть в метаданных файла содержится список дыр.

КОГДА может принимать значения:auto — (поведение по умолчанию) копировать разреженные файлы в разреженные файлы.always — результирующий файл всегда разреженный, если в исходном есть достаточное количество нулевых последовательностей.never — не делать результирующие файлы разреженными.

—strip-trailing-slashes
Удалить у каждого исходного файла символ слеш на конце.

-s или —symbolic-link

Создать символические ссылки вместо копирования.

-s СУФФИКС или —suffix=СУФФИКС

Изменить символ суффикса, который добавляется к именам резервных копий (при использовании опции —backup). По умолчанию СУФФИКС равен значку тильды ~

-t ДИРЕКТОРИЯ или —target-directory=ДИРЕКТОРИЯ

Скопировать все исходные файлы в ДИРЕКТОРИЮ

-T или —no-target-directory

Считать, что файл назначения это обычный файл.

-u или —update

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

-v или —verbose

Выводить информацию о каждом файле, который обрабатывает команда cp.

-x или —one-file-system

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

-Z
Установить контекст SELinux для результирующего файла в значение по умолчанию.

—context=CTX
Установить контекст SELinux или SMACK в значение CTX.

—help
Показать справку по команде cp.

—version
Показать версию утилиты cp.

Специальные ярлыки

Если просто ввести команду cd без указания пути, то будет выполнен переход в домашнюю директорию. Проверим.

1
2
3
4
5

 
$ cd
$ pwd
/home/mikhail
 

Чтобы сменить рабочую директорию на предыдущую, можно использовать символ «-» (минус). Сейчас мы в домашней директории, до этого были в /usr/bin. Значит после ввода команды cd — должны снова вернуться в /usr/bin. Проверим.

1
2
3
4
5
6

 
$ cd —
/usr/bin
$ pwd
/usr/bin
 

Сослаться на домашнюю директорию любого пользователя можно добавим перед именем учетной записи символ «~» (тильда), например ~mikhail. Так мы можем указать домашнюю директорию любого пользователя вне зависимости от того, где она расположена. Проверим.

1
2
3
4
5

 
$ cd ~mikhail
$ pwd
/home/mikhail
 

Если после символа «~» (тильда) не указать имя пользователя, то данный символ будет ссылаться на собственную домашнюю директорию.

Механизм работы подобной «ссылки» реализован за счет развертывания строк (материал из будущего ;)).

А теперь заморозим виртуальную машину в данном состоянии.

Поиск больших файлов и директорий командой du

Команда du используется для вывода размеров файлов и директорий в Linux. Ее можно использовать для поиска больших файлов и директорий. Для этого выполняется команда du и результат сортируется по размеру. Таким образом можно увидеть, кто занимает больше всего места на диске.

Найдем пять самых больших файлов и директорий:

  • Символ . указывает путь и означает текущую директорию. Для поиска в другой директории укажите вместо точки ее путь.
  • Опции -ahx означают:a — искать и файлы и директории;h — выводить информацию в удобно-читаемом формате;x — не выполнять поиск на других файловых системах.
  • sort -rh выполняет сортировку результата.
  • head −5 выводит только пять первых результатов.

Следующие 9 символов обозначают права доступа.

Данные 9 символов состоят из трех групп:

  • Первая группа из трех символов обозначает права доступа владельца файла или директории (u — user).
  • Вторая группа из трех символов обозначает права доступа на файл или директорию для системной группы (g — group).
  • Третья группа из трех символов обозначает права доступа на файл или директорию для всех остальных (o — other).

У этих трёх групп одинаковая комбинация символов, то есть:

Что же они обозначают?

Очень легко запомнить:

r read, то есть, право доступа на чтение файла или директории.
w write, то есть, право на изменение и удаление файла или директории.
x eXecute, то есть, право на запуск файла как программы или вход в директорию.

Всегда располагаются в таком порядке:

Если вместо какого-то символа идёт тире (минус), к примеру:

то это значит, что отсутствуют права на изменение и удаление файла или директории.

Или так:

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

Таким образом, из нашего примера:

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

Как видите, ничего сложного нет.

Определение владельца и группы файла или директории.

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

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

Как видно на скриншоте:

  • в третей колонке идет имя владельца файла;
  • в четвертой колонке идет название группы.

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