답변:
bash 함수를 사용하십시오 type
. whereis
바이너리 실행 파일뿐만 아니라 bash 및 별칭에 내장 된 기능을 식별하기 때문에 보다 낫습니다 . whereis
패턴 일치를 수행하기 때문에 더 좋습니다- type
지정한 것을 찾으십시오.
이 -a
옵션을 사용 하여 경로에서 모든 실행 파일을 표시하십시오.
~$ type python
python is /usr/local/bin/python
~$ type -a python
python is /usr/local/bin/python
python is /usr/bin/python
python is /usr/local/bin/python
~$ whereis -b python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python /usr/local/bin/python2.6 /usr/local/bin/python2.5 /usr/local/bin/python2.7 /usr/local/bin/python2.7-config /usr/local/bin/python2.5-config /usr/local/bin/python2.6-config /usr/local/lib/python2.6 /usr/local/lib/python2.5 /usr/local/lib/python2.7 /usr/include/python2.4
~$ whereis -b time
time: /usr/bin/time /usr/include/time.h
~$ type -a time
time is a shell keyword
time is /usr/bin/time
PATH='type -p ffmpeg'
(작은 따옴표를 백틱으로 바꿉니다). 고마워, 더그 해리스 내 예제가 다른 사람들에게도 도움이되기를 바랍니다. :)
이것은 외부 의존성 (쉘 내장에서만)으로 작동하며 busybox ash 와도 작동합니다.
때로는 정확히 일치하는 단어를 찾는 방법을 기억할 수 없습니다. 밀접하게 일치 해야하는 사람들에게는 bashrc에 추가 할 수있는이 기능이 있습니다.
find_bin(){
for x in ${PATH//://*${1}* }*${1}*; do
[ -f "$x" ] && echo $x
done
}
find_bin grep은 경로에 {grep, egrep, fgrep, bugreport, ...}와 함께 이름에 grep과 함께 $ PATH의 모든 바이너리를 나열합니다.
다음과 같은 구문을 사용할 수 있습니다.
grep을 입력 할 때 전체 단어 만 일치하고 egrep, fgrep 또는 bugreport를보고하지 않기를 원하는 경우 별표를 제거하고 원하는 위치에서만 명령 줄에 다시 추가 할 수 있습니다.
find_bin(){
for x in ${PATH//://${1} }${1}; do
[ -f "$x" ] && echo $x
done
}
이 시작과 끝을 일치시키기 위해 하나의 추가 구문이 필요합니다.
find_bin "[aeiou]b.*"
``ubuntu-bug ''또는``ebrowse ''를 찾지 못했습니다. 스크립트는 AFAIK, 글 로빙하지 정규 표현식에 사용하지만, 난 정말`$를 이해하지 못하는 {PATH // : // * $ {1} *} * $ {1} *`
.bashrc에 넣으려면 별칭이 매개 변수를 사용하지 않기 때문에 별칭이 유용하지 않지만 함수는 다음을 수행합니다.
pfind () {
for d in ${PATH//:/ }
do
find $d -regex $d/"$1"
done
}
pfind '.*[ou]b.*h'
find ... -reg 전체 경로에 대한 정규 표현식 검색을 정의하므로 $ d를 반복해야합니다.
pfind
프로그램 찾기 (또는 PATH 찾기)를 나타냅니다.
IFS=:; for dir in $PATH; do ...; done
. 또한 구문 분석 대신 ls
globbing 디렉토리를 사용하십시오. echo *"$1"*
(정규 표현식은 아닙니다.
에서 bash
명령의 첫 문자 나 두 문자를 기억하면 <character><character><TAB><TAB>
이름이로 시작하는 모든 명령 목록을 보려면을 입력 하십시오 <character><character>
.
Linux에서 "locate string"은 이름의 일부로 "string"을 가진 모든 파일과 디렉토리를 나열합니다. (먼저 DB를 구축해야합니다 updatedb
. CentOS에서는 cron.daily
작업이 실행됩니다 updatedb
.) 실행 가능한 데이터베이스를 알려주지는 않습니다. 더 많은 정보를 찾는 또 다른 방법 일뿐입니다.
man -k를 사용하여 각 명령의 맨 페이지 내에서 검색 할 수 있습니다.
man -k packet
PF_PACKET (7) - packet interface on device level.
gpgsplit (1) - Split an OpenPGP message into packets
ip6tables (8) - IPv6 packet filter administration
iptables (8) - administration tool for IPv4 packet filtering and NAT
lft (1) - print the route packets trace to network host
lft.db (1) - print the route packets trace to network host
packet (7) - packet interface on device level.
pcap-filter (7) - packet filter syntax
tc-bfifo (8) - Packet limited First In, First Out queue
tc-pfifo (8) - Packet limited First In, First Out queue
tcptraceroute (1) - A traceroute implementation using TCP packets
tcptraceroute.db (8) - print the route packets trace to network host
tcptraceroute.mt (1) - A traceroute implementation using TCP packets
traceproto (1) - print the route packets trace to network host
traceproto.db (1) - print the route packets trace to network host
traceroute (1) - print the route packets trace to network host
traceroute-nanog (1) - print the route packets trace to network host
traceroute.db (1) - print the route packets trace to network host
traceroute6 (1) - print the route packets trace to network host
traceroute6.db (1) - print the route packets trace to network host
man -k "packet limited"
tc-bfifo (8) - Packet limited First In, First Out queue
tc-pfifo (8) - Packet limited First In, First Out queue
괄호 안의 숫자는 명령 매뉴얼 페이지의 섹션을 나타냅니다. 예를 들어 섹션 3과 5는 명령이 아닙니다. 물론 슬프게도 일부 명령에는 매뉴얼 페이지가 없다는 것을 고려해야합니다.
apropos program/library/related/anything really
Serchword에 대한 맨 페이지를 검색하고 정규식 지원이 포함되어 있습니다. 나는 ncmpcpp를 철자하는 방법을 결코 기억할 수 없다.
apropos mpd
ing 나는 ncmpcpp를 포함하여 모든 mpd를 찾을 수 있습니다