Как найти путь к программе linux

Как в Linux узнать путь до исполняемого файла? В виндовс, например, на ярлыке или в bin/app.exe можно через свойство посмотреть

Интересуюсь с целью создавать *.desktop ярлыки для заполнениями ими рабочего стола 🗔, так как способ «добавить в избранное» мне не подходит и получается рабочий стол пустой 😔

задан 12 июл 2021 в 12:48

JaNix's user avatar

2

Команда which. Например,

user@linux:~$ which java

Вывод:

/usr/bin/java

ответ дан 12 июл 2021 в 12:54

Эникейщик's user avatar

ЭникейщикЭникейщик

25.1k7 золотых знаков30 серебряных знаков46 бронзовых знаков

6

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

pgrep <exe_name> | while read pid; do echo -ne "$pidt"; readlink -f /proc/$pid/exe; done

Например, вывод для исполняемого процесса gopls (сервер go для VS Code):

pgrep gopls | while read pid; do echo -ne "$pidt"; readlink -f /proc/$pid/exe; done
30880   /mnt/drive2/home2/user/go/bin/gopls

ответ дан 13 июл 2021 в 6:04

Pak Uula's user avatar

Pak UulaPak Uula

12.1k1 золотой знак6 серебряных знаков28 бронзовых знаков

Набрав в командной строке

$ man whereis

Увидим:

whereis locates the binary, source and manual files for the specified command names. The supplied names are first stripped of leading pathname components and any (single) trailing extension of the form .ext (for example: .c) Prefixes of s. resulting from use of source code control are also dealt with. whereis then attempts to locate the desired program in the standard Linux places, and in the places specified by $PATH and $MANPATH.

ответ дан 14 июл 2021 в 4:41

Sergey's user avatar

SergeySergey

13.1k1 золотой знак12 серебряных знаков27 бронзовых знаков

For example, I have git installed on my system.
But I don’t remember where I installed it, so which command is fit to find this out?

Mat's user avatar

Mat

51.2k10 gold badges156 silver badges139 bronze badges

asked Jan 7, 2012 at 19:33

Anders Lind's user avatar

2

If it is in your path, then you can run either type git or which git. The which command has had problems getting the proper path (confusion between environment and dot files). For type, you can get just the path with the -p argument.

If it is not in your path, then it’s best to look for it with locate -b git It will find anything named ‘git’. It’ll be a long list, so might be good to qualify it with locate -b git | fgrep -w bin.

answered Jan 7, 2012 at 19:43

Arcege's user avatar

ArcegeArcege

22.1k5 gold badges56 silver badges64 bronze badges

4

The POSIX standard way to do this is command -v git. All UNIX-like systems should support this.

answered Jan 9, 2012 at 18:28

Richard Hansen's user avatar

1

whereis git and you get the path to the command.

that is just if the git is in you PATH variable, in case you have installed it not through you package manager, it is more complex and you should use the find or locate commands.

answered Jan 7, 2012 at 19:35

Hanan N.'s user avatar

Hanan N.Hanan N.

5,6114 gold badges28 silver badges30 bronze badges

2

The other answers here seem to be largely geared towards modern versions of Linux, so if you happen to use git on an OS that doesn’t have locate, whereis, which, or apropos (like Solaris, HPUX, etc), then there is always the old standby find.

find / -name git 

One some older versions of the systems listed above, you may need a -print option supplied to find.

find / -name git -print

And if you do use locate, make sure you run updatedb periodically. (locate.updatedb on some BSD derivatives)

answered Jan 7, 2012 at 19:51

Tim Kennedy's user avatar

Tim KennedyTim Kennedy

19.2k4 gold badges38 silver badges57 bronze badges

4

To get the path to the installed program you either use whereis or which. If you happen to forget it’s name, you can useapropos with a synonym or description of your utility, e.g. apropos "version control" will find git. Following that is of course the whatis command to briefly summarize the function of a program. This does however not apply to all programs and functions on your system. Try for instance whatis "the meaning of life, universe and everything".

answered Jan 7, 2012 at 19:42

0

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

Время на прочтение
5 мин

Количество просмотров 26K

Один из самых распространённых вопросов от подписчиков — как получить путь к команде 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 эти команды окажутся полезны.

All the answers were specific to Linux.

If you also need Unix, then you need this:

char * getExecPath (char * path,size_t dest_len, char * argv0)
{
    char * baseName = NULL;
    char * systemPath = NULL;
    char * candidateDir = NULL;

    /* the easiest case: we are on Linux */
    size_t buff_len;
    if (buff_len = readlink ("/proc/self/exe", path, dest_len - 1) != -1)
    {
        path [buff_len] = '';
        dirname (path);
        strcat  (path, "/");
        return path;
    }

    /* Ups... not on Linux, no guarantee */

    /* check if we have something like execve("foobar", NULL, NULL) */
    if (argv0 == NULL)
    {
        /* We surrender and give the current path instead */
        if (getcwd (path, dest_len) == NULL) return NULL;
        strcat  (path, "/");
        return path;
    }


    /* argv[0] */
    /* if dest_len < PATH_MAX may cause buffer overflow */
    if ((realpath (argv0, path)) && (!access (path, F_OK)))
    {
        dirname (path);
        strcat  (path, "/");
        return path;
    }

    /* Current path */
    baseName = basename (argv0);
    if (getcwd (path, dest_len - strlen (baseName) - 1) == NULL)
        return NULL;

    strcat (path, "/");
    strcat (path, baseName);
    if (access (path, F_OK) == 0)
    {
        dirname (path);
        strcat  (path, "/");
        return path;
    }

    /* Try the PATH. */
    systemPath = getenv ("PATH");
    if (systemPath != NULL)
    {
        dest_len--;
        systemPath = strdup (systemPath);
        for (candidateDir = strtok (systemPath, ":"); candidateDir != NULL; candidateDir = strtok (NULL, ":"))
        {
            strncpy (path, candidateDir, dest_len);
            strncat (path, "/", dest_len);
            strncat (path, baseName, dest_len);

            if (access(path, F_OK) == 0)
            {
                free (systemPath);
                dirname (path);
                strcat  (path, "/");
                return path;
            }
        }
        free(systemPath);
        dest_len++;
    }

    /* Again, someone has to use execve: we don’t know the executable name; we surrender and instead give the current path */
    if (getcwd (path, dest_len - 1) == NULL)
        return NULL;
    strcat  (path, "/");
    return path;
}

Как узнать, где установлена ​​программа Linux Ubuntu. В этом посте объясняется, как найти путь к команде в Linux. В Ubuntu найдите путь к приложению — найдите, где установлен пакет Ubuntu Linux.

Найдите место, где установлена ​​программа Linux Ubuntu

Где была установлена ​​программа (включая все вспомогательные файлы, так что это может быть длинный список, который вам нужно будет искать)

Синтаксис команды


dpkg-query -L APPLICATION-NAME

Применение


dpkg-query -L firefox

Для пункта меню, содержащего пакет, найдите файл в / usr / share / menu в выводе dpkg-query:

Синтаксис команды


dpkg-query -L APPLICATION-NAME | grep /usr/share/menu

Применение


dpkg-query -L firefox | grep /usr/share/menu

В этом файле вы должны найти «section =». Строка после этого текста должна указывать, где в системе меню вы найдете ссылку на приложение.

dpkg — это менеджер пакетов для Debian. dpkg — это инструмент для установки, сборки, удаления пакетов Debian и управления ими. Основным и более удобным интерфейсом для dpkg является aptitude. Сам dpkg полностью управляется параметрами командной строки, которые состоят из одного действия и нуля или более параметров. Параметр действия сообщает dpkg, что делать, а параметры каким-то образом управляют поведением действия. dpkg также можно использовать как интерфейс для dpkg-deb и dpkg-query.

Вы также можете попробовать:

Синтаксис команды


aptitude show APPLICATION-NAME

Применение


aptitude show firefox

Как найти путь к команде в Linux

Вы можете использовать команду which и whereis, чтобы найти путь к команде в Linux Ubuntu. Используя эти команды, вы можете найти путь к приложению — найти, где установлен пакет Ubuntu Linux.

который

который используется для поиска команды. который возвращает пути к файлам (или ссылкам), которые были бы выполнены в текущей среде, если бы его аргументы были заданы как команды в строго совместимой с POSIX оболочке. Это делается путем поиска в PATH исполняемых файлов, соответствующих именам аргументов. Он не переходит по символическим ссылкам.

Синтаксис команды:

which [-a] filename

Он использует параметр: -a — этот параметр может выводить все совпадающие имена пути для каждого аргумента.

где

Команда whereis используется для поиска двоичных файлов, файлов исходного кода и файлов справочной страницы для команды. whereis находит двоичные файлы, исходные файлы и файлы руководства для указанных имен команд. Предоставленные имена сначала удаляются из начальных компонентов имени пути и любого (единственного) завершающего расширения формы .ext (например: .c) Префиксы s. в результате использования контроля исходного кода также рассматриваются. Затем whereis пытается найти нужную программу в стандартных местах Linux и в местах, указанных в $ PATH и $ MANPATH.

Синтаксис команды:

whereis [options] [-BMS directory... -f] filename

Ограничения поиска (параметры -b, -m и -s) являются кумулятивными и применяются к последующим шаблонам имен в командной строке. Любое новое ограничение поиска сбрасывает маску поиска. Например:

whereis -bm ls tr -m gcc

выполняет поиск двоичных файлов и справочных страниц «ls» и «tr», а также только справочных страниц «gcc». Параметры -B, -M и -S сбрасывают пути поиска для последующих шаблонов имен. Например:

whereis -m ls -M /usr/share/man/man1 -f cal

выполняет поиск man-страниц «ls» по всем путям по умолчанию, но «cal» только в каталоге / usr / share / man / man1.

Не путайте с командой «найти». ‘Find’ выполняет поиск в дереве каталогов, основанном на каждом имени файла FILE, оценивая ВЫРАЖЕНИЕ для каждого файла, который он находит в дереве. Командная строка может начинаться с параметров «-H», «-L», «-P», «-D» и «-O». За ними следует список файлов или каталогов, в которых следует выполнить поиск. Если файлы для поиска не указаны, используется текущий каталог (‘.’).

За этим списком файлов для поиска следует список выражений, описывающих файлы, которые мы хотим найти.

Оригинал статьи

Понравилась статья? Поделить с друзьями:
  • Как по схеме составить комбинационную схему
  • Как найти равно удаленное число
  • Как найти свой пароль от инсты
  • Как найти доплату от оклада
  • Как найти доходность операций банка