Linux путь к команде

Обновлено: 03.07.2024

Терминал и текстовые команды — главный способ управления операционной системой Linux, особенно, если речь идёт о сервере. И хоть слово «терминал» пугает новичков, поверьте, что всё гораздо проще. Сегодня мы подготовили для вас шпаргалку с базовыми командами — сохраняйте её в закладки и повышайте свою продуктивность в сотни раз. 😉

Начнём с теории

Linux (Линукс) — это целое семейство операционных систем Unix с открытым исходным кодом, основанных на ядре Linux. Сюда входят все самые популярные системы на основе ОС, например: Ubuntu, Fedora, Mint, Debian и другие. Их ещё называют дистрибутивами. Подробнее о каждом читайте в этом посте.

Терминал (или «Bash», сокращение от «Bourne-Again shell») — это программа, которая используется для взаимодействия с командной оболочкой. Терминал применяется для выполнения административных задач, например: установку пакетов, действия с файлами и управление пользователями.

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

В ОС есть несколько сотен команд и их модификаций. Они группируются по нескольким категориям:

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

Типичная команда выглядит вот так:

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

id — если вы хотите получить информацию о вашей учётной записи.

w — полезная команда, если вам нужно узнать, какой пользователь сейчас находится в системе (или команда -f — для того, чтобы узнать, откуда был совершён вход).

lsblk — если вы хотите открыть список блочных устройств хранения данных.

lscpu — отображает информацию о процессорах.

free — показывает объём свободной и уже используемой памяти (альтернативная команда — free -g).

lsb_release -a — если вы хотите получить информацию о версии вашей ОС.

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

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

ls — покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. При добавлении аргумента -R в выводе команды появятся файлы из поддиректорий.

cd — change directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем её, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.

pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd

/Desktop/, то pwd покажет что-то в духе /home/Polzovatel/Desktop.

dd — мощная утилита для взаимодействия с разделами. С её помощью можно делать копии разделов, перемещать их, удалять без возможности восстановления.

rm — опасная команда для удаления директорий и их содержимого. Стирает все данные, которые обнаружит в указанной папке без возможности к восстановлению.

grep — это полнотекстовый поиск в файле. Очень полезная команда, когда вам нужно что-то найти. Например, grep значение /путь/до/файла покажет строки в которых есть «значение». А команда grep -ril значение /путь/до/каталога/* покажет все файлы, в которых есть искомое значение.

-r — рекурсивный поиск

-i — игнорировать регистр (Case insensetive)

-l — вывести результат списком.

chown пользователь:группа — команда позволяет изменить владельца файла.

chmod — изменяет права на файл или каталог

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

Следующие команды потребуются вам при работе с файлами разного типа и объёма:

cat — показывает содержимое файлов. Также может использоваться в двух вариантах: 1) одним текстовым файлом (cat путь_к_файлу), она отображает содержимое файла в окне терминала, 2) если же указать больше элементов, то команда склеит их (cat путь_к_файлу_1 путь_к_файлу_2).

head — «голова», как и cat, показывает содержимое документов, но не всё, а только первые 10 строк. При желании количество строк можно увеличить или сократить, добавив параметр -n.

tail -f — используется для просмотра растущего файла в окне интерактивного запуска кода.

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

wget — загружает из интернета документы, картинки, целые страницы и прочий контент.

wc — считает количество строк, слов, знаков и байтов.

zip — упаковывает файлы в архив в формате .zip.

diff — сокращение от «difference». Команда показывает разницу между двумя текстовыми файлами.

Что вы можете сделать с двоичными файлами? На самом деле, вариантов не очень много:

strings — команда выведет готовые к печати строки файла;

od — позволит вам напечатать файл в восьмеричном формате;

cmp — даёт возможность побайтно сравнивать файлы.

Если вам требуется сравнить текстовые файлы друг с другом, введите эти команды:

comm — отсортированные файлы будут строка за строкой.

diff — позволяет построчно выявить различия. Эта команда используется наиболее часто в силу богатого набора опций.

Команды для управления пользователями

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

userdel — удаляет выбранную учётную запись. Синтаксис простейший: userdel <имя учётной записи>, которую нужно стереть

Для установки, удаления и обновления пакетов

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

Debian/Ubuntu

sudo apt-get install название_пакета — устанавливает программу на выбор.

sudo apt remove название_пакета — команда, используя которую можно удалить не только ПО, но и все неиспользуемые пакеты.

sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключённых репозиториях.

sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.

sudo apt purge — удаляет все файлы конфигурации вместе с пакетами ПО.

sudo apt autoremove -purge — удаляет абсолютно всё: и пакеты, и зависимости, и конфиги.

Red Hat Linux/CentOS

sudo dnf install название_пакета — устанавливает программу на выбор.

sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.

sudo dnf remove название_пакета — стирает с жёсткого диска имеющийся в системе пакет.

Бонус! Хитрости, которые сэкономят время

Этот список полезных знаков в разы ускорит вашу работу с командами:

!! — повторяет последнюю команду.

!$ — позволяет изменить команду, сохраняя последний аргумент. Например, команда less !$ — используется для повторного открытия файла в меньшем объёме.

!* —позволяет изменить команду, сохраняя при этом все аргументы. Например, head states.txt | grep '^Al' — при использовании должен быть хвост.

tail !* — избавляет от необходимости вводить остальную часть команды.

>x.txt — используется для создания пустого файла или очистки существующего.

lsof -P -i -n — определяет, к каким скриптам идёт обращение со стороны веб-сервера.

И самая крутая команда в Linux: для вывода полного руководства о той или иной команде есть man (сокращенно от manual). Чтобы вывести мануал достаточно просто выполнить man <имя команды>. В качестве примера давайте рассмотрим команду cat:

NAME
cat - concatenate files and print on the standard output

SYNOPSIS
cat [OPTION]. [FILE].

DESCRIPTION
Concatenate FILE(s) to standard output.

With no FILE, or when FILE is -, read standard input.

-A, --show-all
equivalent to -vET

-b, --number-nonblank
number nonempty output lines, overrides -n

-e equivalent to -vE

-E, --show-ends
display $ at end of each line

-n, --number
number all output lines

-s, --squeeze-blank
suppress repeated empty output lines

-t equivalent to -vT

-T, --show-tabs
display TAB characters as ^I

-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB

--help display this help and exit

--version
output version information and exit

EXAMPLES
cat f - g
Output f's contents, then standard input, then g's contents.

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

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

И, если вы хотите попробовать какие-то команды на настоящем сервере — попробуйте наши Облачные VPS с готовым шаблоном популярных дистрибутивов Linux: Ubuntu, CentOS и Django и почасовой оплатой от 44 копеек.

Для пользователей из мира Windows взаимодействие с командной строкой в Linux поначалу может показаться несколько пугающей и запутанной затеей. Однако использовать её не так уж и сложно. В этой статье мы рассмотрим наиболее распространенные команды в Linux.

Навигация по файловой системе

При навигации по файловой системе в Linux можно использовать как абсолютный, так и относительный пути к ресурсу.

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

Команда pwd

Результатом будет путь к текущему рабочему каталогу:

Команда cd

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

Так и через абсолютный путь:

Две точки .. обозначают родительский каталог или каталог уровнем выше текущего. Предположим, что в данный момент вы находитесь в каталоге /usr/local/bin. Чтобы перейти в каталог /usr/local (на один уровень выше текущего каталога), необходимо ввести:

Чтобы подняться на два уровня вверх:

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

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

$ cd имя\ каталога\ с\ пробелами

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

Команда ls

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

По умолчанию, команда ls отображает только имена файлов и каталогов. Для более подробного вывода применяется опция -l :

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

-rw-r--r-- 1 root root 337 Oct 4 11:31 /etc/hosts

По умолчанию, команда ls не показывает скрытые файлы (файлы, имена которых начинаются с точки . ). Чтобы отобразить все файлы, включая скрытые, используйте опцию -a :

Для вывода списка всех файлов в подкаталогах используйте опцию -R :

Команда file

Файлы в Linux не обязаны всегда иметь расширения для того, чтобы с ними можно было работать. Поэтому пользователю иногда трудно определить, что за файл перед ним. Команда file помогает решить данную проблему, отображая информацию о типе файла на основе его содержания:

/etc/fstab: ASCII text

Команда file может работать и с директориями, например:

/tmp/: sticky, directory

Команда touch

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

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

Если файл уже существует, команда touch изменит отметку о времени последнего доступа (или изменения) к нему.

Команда mkdir

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

Для создания родительских каталогов используется опция -p :

Вышеприведенная команда создаст полную структуру каталогов.

При использовании команды mkdir с опцией -p , она создает каталог только в том случае, если он изначально отсутствует.

Команда rmdir

Команда ln

$ ln -s имя_файла имя_ссылки

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

Команда rm

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

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

Опция -i указывает команде rm запрашивать у пользователя подтверждение перед удалением файла:

rm: удалить пустой обычный файл 'file.txt'?

Опция -d используется для удаления одного или нескольких пустых каталогов:

Опция -f указывает команде rm никогда не запрашивать подтверждения у пользователя и игнорировать несуществующие файлы.

Примечание: Будьте очень осторожны с командой rm -rf и дважды проверьте, в каком каталоге вы находитесь, т.к. вызов rm -rf безвозвратно (и без дополнительного подтверждения) удалит все файлы и папки из него.

Команда cp

$ cp file file_backup

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

$ cp file.txt /backup

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

Чтобы скопировать каталог, вместе с его файлами и подкаталогами, используйте опцию -R или -r :

$ cp -R Pictures /opt/backup

Команда mv

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

$ mv file.txt file1.txt

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

$ mv file.tx1 file1.txt /tmp

Команда tar

Команда tar является наиболее часто используемой командой для объединения нескольких файлов в один *.tar-архив — распространенный формат файлов Linux (похожий на формат .zip), причем процедура сжатия для него не является обязательной.

Предположим, что нам нужно создать .tar-архив каталога /etc, для этого необходимо использовать следующую команду:

$ tar -cvf myarchive.tar /etc

Опция -c указывает команде tar на то, что мы создаем .tar-файл, опция -v отображает список обрабатываемых файлов, а опция -f применяется для указания имени архивного файла.

Если вы хотите добавить файл к уже существующему .tar-архиву, то вместо опции -c используется опция -r . Например, давайте добавим к нашему архиву myarchive.tar файл /etc/fstab:

$ tar -rvf myarchive.tar /etc/fstab

Примечание: К уже сжатому .tar-файлу добавить новый файл или каталог не получится.

Извлечение в текущую папку файлов и каталогов из архивного файла выполняется с помощью опции -x :

$ tar -xvf myarchive.tar

Опция -C дает пользователю возможность самостоятельно указывать путь для извлекаемых файлов:

$ tar -xvf myarchive.tar -C /tmp/

Команды zip и unzip

Команда zip применяется для сжатия файлов в .zip-архив, а команда unzip — для извлечения заархивированных файлов из .zip-архива.

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

$ zip newarchive.zip file1 file2 file3

Если вы хотите сжать каталог вместе с вложенными в него файлами, то необходимо использовать опцию -r :

$ zip –r newarchive.zip /home/diego/mydocs/

Также, цифрами от 0 (без сжатия, быстро) до 9 (максимальное сжатие, медленно) вы можете указывать степень сжатия будущего архива. По умолчанию, используется 6-й уровень сжатия:

$ zip -9 –r newarchive.zip /home/diego/mytxtfiles/

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

Опция -d позволяет распаковать содержимое архива в указанную папку, например:

$ unzip myarchive.zip –d /tmp/

Команда find

Команда find выполняет поиск файлов и каталогов в заданном каталоге. Например, следующая команда будет искать файл с именем notes.txt в каталоге /home и его подкаталогах:

$ find /home/ -name notes.txt

Команда df

Команда du

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

Команда chmod

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

x (выполнение) = 1

нет разрешений = 0

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

$ chmod 644 имя_файла

Только пользователь root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу.

Для рекурсивного изменения прав всех файлов и папок в заданном каталоге, используйте команду chmod с опцией -R :

$ chmod -R 755 имя_каталога

Команда chown

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

$ chown имя_пользователя имя_файла

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

$ chown имя_пользователя:имя_группы имя_файла

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

$ chown -R имя_пользователя:имя_группы имя_каталога

Команда sudo

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

Управление пользователями и группами

Команда uname

Команда uname с опцией -a выведет подробную информацию о вашей системе: имя машины, версия операционной системы, ядра и т.д.

Команды useradd и passwd

Команда useradd позволяет создавать новых пользователей. Чтобы создать новую учетную запись пользователя, вызовите команду useradd вместе с именем нового пользователя:

После создания пользователя установите ему пароль, выполнив команду passwd:

Команда userdel

Команда userdel используется для удаления учетной записи пользователя:

Опция -r удаляет домашний каталог пользователя и связанные с ним данные:

$ userdel -r имя_пользователя

Команды groupadd и groupdel

Команда groupadd используется для создания новой группы. Просто укажите название группы в качестве параметра:

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

Команда usermod

Чтобы добавить существующего пользователя в группу, используйте команду usermod с опцией -G и именем группы:

$ usermod -a -G sudo ravesligroup

Управление процессами

Команда top

Команда kill

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

Всего существует 64 различных сигнала, но самыми популярными являются два:

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

SIGKILL (9) — сигнал, требующий от программы немедленного завершения. Все несохраненные данные при этом будут потеряны.

Например, зная PID нужного вам процесса, послать ему сигнал можно следующим образом:

В этом примере параметр -9 отвечает за сигнал SIGKILL (9), а 3501 — это идентификатор (PID) нужного вам процесса.

Работа с сетью

Команда ping

Команда ping применяется в тех случаях, когда необходимо проверить состояние подключения к серверу. Например:

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

Команда wget

Команда hostname

Команда hostname используется для проверки имени вашего хоста. Добавление опции -I в её конец покажет его IP-адрес.

Работа с текстом

Команда head

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

$ head -n 5 filename.txt

Команда tail

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

$ tail -n filename.txt

Команда diff

$ diff file1.txt file2.txt

Команда grep

$ grep blue notepad.txt

Вышеприведенная команда будет искать слово blue в файле notepad.txt и выведет все строки, в которых содержится искомое слово.

Команда echo

$ echo "Hello, world!" >> name.txt

Команда cat

Установка и удаление пакетов

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

Только root или пользователь с привилегиями sudo может устанавливать и удалять пакеты.

apt (Ubuntu и Debian)

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

Индекс apt — это база данных, содержащая записи доступных в репозиториях пакетов, подключенных в вашей системе.

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

Установка пакетов так же проста:

$ apt install имя_пакета

Чтобы удалить установленный пакет, введите:

$ apt remove имя_пакета

dnf (CentOS и Fedora)

Чтобы установить новый пакет в дистрибутивах от Red Hat, вы можете использовать команду yum или dnf:

$ dnf install имя_пакета

Начиная с CentOS 8, dnf заменил yum в качестве менеджера пакетов по умолчанию, при этом dnf обратно совместим с yum .

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

Удаление пакетов так же просто, как:

$ dnf remove имя_пакета

Справка

Параметр help

Команда man

Команда man применяется для отображения страницы руководства по заданной команде:

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

Для навигации по справочным страницам используйте клавиши со стрелочками вверх и вниз. Также вы можете нажать:

клавишу Enter для перемещения на одну строку за раз;

клавишу (Пробел) для перехода к следующему экрану;

клавишу b для возврата на один экран назад;

клавишу q для выхода из справочной страницы.

Команда history

Если вы используете Linux в течение определенного периода времени, вы быстро заметите, что можете выполнять десятки (если не сотни) команд каждый день. Таким образом, запуск команды history особенно полезен, если вы хотите просмотреть ранее введенные команды:

Команда whereis

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

gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/gcc

Дополнительно

Команда clear используется для очистки терминала, если он загроможден слишком большим количеством данных от прошлых команд

Нажатие на клавишу TAB (табуляция) приведет к автоматическому дополнению того, что вы в данный момент набираете в терминале. Например, если вам нужно перейти в папку Documents, то начните вводить команду cd Docu , а затем нажмите на клавишу TAB и терминал автоматически дополнит команду до cd Documents .

Сочетания клавиш:

Ctrl+C — останавливает и завершает команду;

Ctrl+Z — ставит выполнение команды на паузу;

Ctrl+S — временно приостанавливает вывод информации в терминал;

Ctrl+Q — продолжает вывод информации в терминал;

Ctrl+A — перемещает вас в начало строки;

Ctrl+E — перемещает вас в конец строки.

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

$ Command1; Command2; Command3

Если вместо ; использовать && , то следующая команда выполнится только после успешного выполнения предыдущей.

Есть ли простой способ распечатать полный путь file.txt ?

Я полагаю, вы используете Linux.

Я нашел утилиту под названием realpath в coreutils 8.15.

Согласно комментариям @ styrofoam-fly и @ Arch-standton, только realpath не проверяет существование файла, для решения этой проблемы добавьте аргумент e : realpath -e file

Следующее обычно делает трюк:

Я знаю есть более простой способ, но черт возьми, если я смогу это найти .

Если вы находитесь в том же каталоге, что и файл:

Замените file.txt вашим целевым именем файла.

В окнах вы можете: -

Удерживайте клавишу shift и щелкните правой кнопкой мыши по файлу, который дает вам опцию с именем "Copy as Path"

В Linux вы можете использовать команду: -

  • realpath yourfile , чтобы получить полный путь к файлу, как предлагают многие.

Я знаю, что это старый вопрос сейчас, но просто добавить к информации здесь:

Команду Linux which можно использовать для поиска пути к файлу командного файла, т.е.

Вы можете использовать скрипт fpn (полный путь) :

Работает на Mac, Linux, * nix:

Это даст вам CSV всех файлов в текущем каталоге:

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

В Mac OS X я заменил утилиты, поставляемые с операционной системой, и заменил их более новой версией coreutils. Это позволяет вам получать доступ к таким инструментам, как readlink -f (для абсолютного пути к файлам) и realpath (абсолютный путь к каталогам) на вашем Mac.

Версия Homebrew добавляет "G" (для GNU Tools) перед именем команды - так что эквивалентами становятся greadlink -f FILE и grealpath DIRECTORY .

Инструкции по установке coreutils/GNU Tools на Mac OS X с помощью Homebrew можно найти в этот раздел StackExchange .

NB. Команды readlink -f и realpath должны работать "из коробки" для пользователей не-Mac Unix.

Это объяснение того, что происходит в @ ZeRemz's ответ :

  1. Этот скрипт получает относительный путь в качестве аргумента "$1"
  2. Затем мы получаем dirname часть этого пути (вы можете передать либо dir, либо файл в этот скрипт): dirname "$1"
  3. Затем мы cd "$(dirname "$1") в этот относительный каталог
  4. && pwd -P и получите абсолютный путь к нему. Опция -P позволит избежать всех символических ссылок
  5. После этого мы добавляем базовое имя к абсолютному пути: $(basename "$1")
  6. В качестве последнего шага мы echo это

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

$0 хранит точную строку, как был выполнен скрипт.

Например, если скрипт был запущен следующим образом: $> ../../test/test.csh , $script_dir будет содержать /home/abc/sandbox/v1/../../test

Это наивно, но я должен был сделать это, чтобы быть POSIX-совместимым. Требуется разрешение на CD в каталог файла.

Вы можете сохранить это в вашем "Shell.rc" или просто положить в консоль

Это сработало очень хорошо для меня. Он не зависит от файловой системы (pro/con в зависимости от необходимости), поэтому он будет быстрым; и он должен быть переносимым для большинства * NIX. Предполагается, что переданная строка действительно относится к PWD, а не к какому-либо другому каталогу.

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

Использование с относительным путем:

С пробелами в имени файла:

В Mac указанном ниже строке работает. Не нужно добавлять какие-либо необычные линии.

В этой статье пойдет речь про команды навигации в терминале.

Решил написать несколько статей на тему терминала Linux. Постараюсь объяснять наиболее доходчиво.

Что из себя представляет корневая файловая система Linux?

Прежде, чем приступить к командам навигации в терминале, поговорим о директориях в Linux. Здесь нет дисков C:, D: и прочих.

Когда я начинал свой путь в Linux, для меня это было наиболее непонятно. Поэтому хочу пояснить этот момент.

Неважно, на сколько разделов вы разобьёте ваш диск, в системе будет:

Затем идут все остальные каталоги, которые служат для своих целей.

  • /home - хранит каталоги пользователей, в которых можно, как правило, выполнять большинство действий без пароля администратора. Ваш домашний каталог находится по адресу: /home/Ваше_Имя_пользователя .
  • /mnt и /media - в эти каталоги монтируются другие физические диски, флешки и прочие носители информации.
  • /media - сюда монтируются диски, флешки, то есть, в этом каталоге создается папка с названием вашего электронного носителя.

Остальные каталоги системные, рассказу о них стоит выделить целую статью.

Перейдем к командам в терминале.

Команды навигации в терминале.

Когда вы открываете терминал в Ubuntu, то вы находитесь в своем домашнем каталоге:

Домашний каталог

(тильда) - означает домашний каталог текущего пользователя.

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

Выполнение данной команды представлено на скриншоте выше.

Для навигации в терминале используется команда "cd" (англ. change directory - изменить каталог).

Сначала пишется команда cd, а затем путь, куда нужно перейти.

Вот так выглядит переход в каталог /home:

Но это не всё, что можно делать с помощью команды cd :

Примеры выполнения команды cd

Перейти в директорию уровнем выше:

Перейти в директорию двумя уровнями выше:

Перейти в домашнюю директорию вашего пользователя:

Перейти в домашнюю директорию пользователя user_name:

Перейти в директорию, в которой находились до перехода в текущую директорию:

Следующая команда, используемая в навигации - "ls" (сокращение от англ. list).

Если ввести в терминале:

отобразится содержимое текущей директории:

Примеры выполнения команды ls

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

Показать детализированное представление файлов и директорий в текущей директории:

Показать скрытые файлы и директории в текущей директории:

Ключи можно комбинировать вместе:

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

Автодополение названий директорий в терминале.

Когда вы вводите команду cd, вам необязательно вводить полностью имя директории, достаточно нажать на клавиатуре клавишу "TAB", произойдет автодополнение названия каталога.

Если имя не заполнилось, значит, есть еще один каталог с таким названием. Нажав дважды клавишу "TAB", выведется список с каталогами, которые имеют в своём имени начальные буквы, которые вы ввели.

Если список огромнейший, то для отмены его просмотра нажмите клавишу N.

Это касается не только "cd", но и других команд. Например, когда вы хотите отредактировать какой-то файл. Вы выполнили команду ls, увидели, что у файла имя состоит из 30 знаков, то достаточно ввести первые буквы его имени и нажать клавишу "TAB" и произойдет автодополнение.

Читайте также: