Ищем путь до линукс команд, как профессионалы

от автора


Один из самых распространённых вопросов от подписчиков — как получить путь к команде Linux, которую только что установили в систему с помощью пакетного менеджера, например, команды apt или DNF. Много новых разработчиков переходит к нам из мира Windows, и для многих это первый опыт использования Linux. Некоторые используют WSL (подсистему Linux в Windows 10), а остальные работают с облачными серверами напрямую по SSH. Рассмотрим ряд распространённых команд, с помощью которых можно отобразить список команд Linux или получить к ним путь.

▍ Что такое команда Linux?

Пользовательский интерфейс Windows по умолчанию графический. Однако у ОС Linux на стороне сервера по умолчанию текстовый интерфейс. Поэтому часто используются такие термины как Bash, оболочка пользователя, консоль, приглашение командной строки, терминал и так далее. Все они относятся к текстовому интерфейсу.

К примеру, в MS Windows-приложения запускаются через кнопку «Пуск». У терминала Linux назначение схожее, но туда вводятся инструкции, известные как команды Linux. Итак, вызываем терминал Linux сочетанием клавиш Ctrl–Alt–T. Затем вводим простую команду — например date, чтобы просмотреть текущую дату и время. Текст команды вводится только строчными буквами. Для запуска команды надо нажать кнопку Enter:


date, pwd, hello и ping — это команды Linux.

▍ Различные типы команд Linux

Команды Linux, которые вводят в терминал, бывают разных типов:

  1. Внутренняя или встроенная, команда оболочки.
  2. Внешняя команда / исполняемый файл.
  3. Функция оболочки.
  4. Псевдоним.
  5. Ключевое слово.

▍ Как определить тип команды Linux

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

type command type -t command type -a command

Например, давайте выясним тип команды pwd:

type pwd type date type hello type ping   # Display a single word which is one of 'alias', 'keyword', 'function', 'builtin',  # 'file or '' , if command is an alias, shell reserved word, shell function, shell builtin,  # disk file, or not found, respectively type -t ping type -t if type -t vi type -t nano   # The '-a' option shows all locations containing an executable named ping type -a ping

▍ Что такое переменная $PATH?

В Linux и Unix-подобных системах переменная PATH содержит перечень путей, по которым хранятся исполняемые программы, например ping, date, vi, docker и так далее. Чтобы просмотреть текущую переменную path, воспользуйтесь командой echo /printf:

echo "$PATH"   # OR # # More human readable format  # echo "${PATH//:/$'\n'}"

Вот что отображается у меня:

/home/vivek/google-cloud-sdk/bin /home/vivek/.local/bin /home/vivek/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/games /usr/local/games /snap/bin

Для просмотра всех исполняемых файлов в папке /bin/, выполните команду ls следующим образом:

ls /bin/ ls -l /bin/

▍ Как отобразить информацию о командах

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

command -v date command -v pwd command -v ping command -v docker

▍ Как найти команду Linux

А ещё можно легко получить путь к команде Linux с помощью команды which. Пример:

which gcc which nano

Чтобы отобразить все возможные совпадающие пути, воспользуйтесь опцией -a:

which -a ls

▍ Получаем путь к команде или man-странице Linux

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

whereis command whereis gcc whereis docker whereis lxc whereis vim

Надо, чтобы отображались только двоичные файлы? Есть вот такой вариант:

whereis -b ls

Ищете только руководства и справочные страницы? Проще простого:

whereis -m date whereis -m gcc

▍ Команды find и locate

Файлы можно также искать по имени файла. К примеру, так будет выглядеть поиск файла, в имени которого содержится слово ‘date’:

locate -b '\date' ## OR ## find / -name "date" -ls # sudo for all files  sudo find / -name "date" -ls

Результаты выполнения команды locate:

/snap/core/11316/bin/date /snap/core/11420/bin/date /snap/core18/2066/bin/date /snap/core18/2074/bin/date /snap/core20/1026/usr/bin/date /snap/core20/1081/usr/bin/date /usr/bin/date /usr/lib/byobu/date

▍ Вывод справки о командах Linux

С этим нам помогут команды whatis, help, man или info.

Команда whatis:
К каждой команде Linux прилагается man-страница (руководство, описывающее способ применения и синтаксис команды). Кроме того, справка содержит краткое описание команды. Для поиска по названиям man-страниц используется команда whatis. Она отображает описания команд для любых названий, введенных в краткой форме:

whatis ls whatis clear whatis date whatis gcc

Для всех внешних команд используются команды man или info, которые выводят на экран подробное руководство:

man date man ls man gcc man bash info ls info bash man which

Для ключевых слов и встроенных команд Bash используется команда help:

help if help exit help logout help type help command

▍ В качестве заключения

Основная проблема, с которой сталкиваются новоиспечённые пользователи Linux — поиск команд. Но благодаря этому доступному руководству вы теперь умеете получать путь к нужным командам и даже выводить справку о них в формате man-страниц. Предположим, вы установили Docker на сервер Ubuntu. Получить путь к этой системе и изучить руководство можно с помощью следующих команд:

whatis docker whereis docker type -a docker which docker find / -iname "docker" locate -b '\docker' man docker

Если вы работаете с сервером Debian или Ubuntu Linux, вам пригодятся следующие две команды. Отобразить список всех файлов, установленных на сервер пакетом Docker, можно командой dpkg:

dpkg -L docker-ce dpkg -L docker-ce | more

Результат:

/. /etc /etc/default /etc/default/docker /etc/init /etc/init/docker.conf /etc/init.d /etc/init.d/docker /lib /lib/systemd /lib/systemd/system /lib/systemd/system/docker.service /lib/systemd/system/docker.socket /usr /usr/bin /usr/bin/docker-init /usr/bin/docker-proxy /usr/bin/dockerd /usr/share /usr/share/doc /usr/share/doc/docker-ce /usr/share/doc/docker-ce/README.md /usr/share/doc/docker-ce/changelog.Debian.gz

Вывести на экран информацию о пакете Docker можно с помощью команды apt:

apt show docker-ce

Результат:

Package: docker-ce Version: 5:19.03.13~3-0~ubuntu-bionic Priority: optional Section: admin Maintainer: Docker <support@docker.com> Installed-Size: 107 MB Depends: docker-ce-cli, containerd.io (>= 1.2.2-3), iptables, libseccomp2 (>= 2.3.0), libc6 (>= 2.8), libdevmapper1.02.1 (>= 2:1.02.97), libsystemd0 Recommends: aufs-tools, ca-certificates, cgroupfs-mount | cgroup-lite, git, pigz, xz-utils, libltdl7, apparmor Conflicts: docker (<< 1.5~), docker-engine, docker-engine-cs, docker.io, lxc-docker, lxc-docker-virtual-package Replaces: docker-engine Homepage: https://www.docker.com Download-Size: 22.5 MB APT-Manual-Installed: yes APT-Sources: https://download.docker.com/linux/ubuntu bionic/edge amd64 Packages Description: Docker: the open-source application container engine  Docker is a product for you to build, ship and run any application as a  lightweight container  .  Docker containers are both hardware-agnostic and platform-agnostic. This means  they can run anywhere, from your laptop to the largest cloud compute instance and  everything in between - and they don't require you to use a particular  language, framework or packaging system. That makes them great building blocks  for deploying and scaling web apps, databases, and backend services without  depending on a particular stack or provider.   N: There are 29 additional records. Please use the '-a' switch to see them.

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


ссылка на оригинал статьи https://habr.com/ru/articles/589245/


Комментарии

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

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