Як знайти шлях програми з командного рядка?


109

Наприклад, я gitвстановив у своїй системі. Але я не пам'ятаю, де я його встановив, тож яка команда підходить, щоб дізнатися це?


45
Хе, хе " whichсправді"
командуйте

Відповіді:


123

Якщо це на вашому шляху, ви можете запустити type gitабо which git. У whichкоманди виникли проблеми з правильним шляхом (плутанина між середовищем та крапковими файлами). Тому що typeви можете отримати лише шлях із -pаргументом.

Якщо він не стоїть на вашому шляху, то найкраще шукати його, і locate -b git він знайде все, що називається "git". Це буде довгий список, тому, можливо, було б добре його класифікувати locate -b git | fgrep -w bin.


10
Я використовую locateнескінченно (це дуже швидко), але для тих, хто цього не знає, locateце лише настільки ж актуальне, як і його останнє оновлення бази даних, яке автоматично запускається щодня на моєму Ubuntu. Оновлення команда sudo updatedb... Також locateмає вбудовані можливості регулярних виразів, так що команди , як це працює: locate -br "^git$"... -b` означає обмежити пошук , щоб тільки базове ім'я ... або без -b, вона шукає повний шлях .. Також , він шукає лише ті шляхи, які ви налаштували для пошуку. Не існує управління цим командним рядком, крім ваших фільтрів регулярних виразів.
Пітер.О

7
Воліють typeв which. whichлегко плутається .
Жиль

@ Gilles, це смішно для мене, поведінка - навпаки: typeце вбудована оболонка, яка повідомляє мені псевдоніми і таке, і whichце зовнішня програма, яка показує мені шлях до виконуваного файлу ... хоча якщо є вбудований модуль, який потрапляє в таким чином, щоб виконуваний файл не називався.
quodlibetor

@quodlibetor Проблеми whichполягають у тому, що він не знає про вбудовані оболонки та функції (що актуально, коли вам цікаво, що вводить команда), і в $PATHдеяких системах використовується інше .
Жиль

48

Стандарт POSIX спосіб зробити це command -v git. Усі UNIX-подібні системи повинні підтримувати це.


4
Я знаю, що це вже понад рік, але саме це я шукав; здивований, це не прийнята відповідь.
Akoi Meexx

13

whereis git і ви отримуєте шлях до команди.

це просто, якщо git є у вас змінною PATH, якщо ви встановили її не через ваш менеджер пакунків, це складніше і вам слід скористатися командами findабо locate.


1
Вживання whichтакож рекомендується.
Nikhil Mulley

5
@Nikhil type, скоріше, ні which. Див. Розділ Як використовувати whichв псевдонімічній команді?
Жиль

13

Інші відповіді тут , здається, в значній мірі орієнтована на сучасних версіях Linux, так що якщо ви вирішили використовувати gitв ОС , яка не має locate, whereis, whichабо apropos(як Solaris, HP - UX, і т.д.), то завжди є старий резерв find.

find / -name git 

В одній із старих версій перерахованих вище систем вам може знадобитися -printопція, що постачається find.

find / -name git -print

І якщо ви все-таки використовуєте locate, переконайтеся, що ви updatedbперіодично запускаєтесь . ( locate.updatedbдля деяких похідних BSD)


8
Для програм на шляху використовуйтеtype ; це надійний і портативний (за винятком 30-річних систем).
Жиль

Дякую, @Gilles. Я ніколи про це не знав type. :) Це точно виходить у репертуарі!
Тім Кеннеді

Напевно, варто зазначити, що виконується findповний глибинний пошук файлової системи, починаючи з того місця, де ви її викорінюєте . Так ви find / -name gitзможете пройти всю вашу систему. Якщо ви знаєте, що програма стоїть на вашому шляху, ви зазвичай можете це зробити IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, хоча файлові системи Unix є достатньо дозвільними, що це може зламатися різними способами, якщо у вас є дивні символи PATH.
kodlibetor

Насправді команда, яку я дав раніше, порушить вашу PATH, правильну річ (з тими ж застереженнями, що і раніше) IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Крім того , щоб підтвердити, що ця відповідь має використовуватися тільки людьми , які не мають доступу до typeабо which або locate , тобто, майже ніхто. @ Арседж відповідь правильна.
kodlibetor

5

Щоб отримати шлях до встановленої програми, яку ви використовуєте whereisабо which. Якщо ви забули його ім'я, ви можете використовувати aproposсинонім або опис вашої утиліти, наприклад apropos "version control", знайдете git. Після цього, звичайно, є whatisкоманда коротко узагальнити функцію програми. Однак це не стосується всіх програм та функцій вашої системи. Спробуйте, наприклад whatis "the meaning of life, universe and everything".


2
Я думав, що це повернеться з "42"! ЛОЛ.
Джо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.