정규식을 사용하여 모든 “bin”디렉토리를 방문하여 컴퓨터에서 검색하려는 일부 명령 (이름을 잊어 버린 경우)을 찾기 위해 .bashrc에 별칭을 정의하는 쉬운 아이디어가 있습니까?
예 :
ls /bin /sbin /usr/bin | grep program
모든 bin 디렉토리를 검색하기 위해 정규식을 사용하는 방법을 알고 있습니까?
답변
당신은 whereis
당신이 찾고있는 이름과 일치하는 모든 바이너리를 찾을 수 있습니다
> whereis -b ls
ls: /bin/ls
-b
옵션은 바이너리 전용이며 소스가 없으면 맨 페이지 파일도 찾을 수 있습니다.
> whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
답변
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
답변
이것은 외부 의존성 (쉘 내장에서만)으로 작동하며 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의 모든 바이너리를 나열합니다.
다음과 같은 구문을 사용할 수 있습니다.
- a * z- az 와 함께
- a? z- <1 문자> z
- a [0-9] z- az 와 함께
- A [아리조나] Z -와 AZ
- a [AZ] z- az 와 함께
- a * {a, z} * z-a.az와 같은 ….
grep을 입력 할 때 전체 단어 만 일치하고 egrep, fgrep 또는 bugreport를보고하지 않기를 원하는 경우 별표를 제거하고 원하는 위치에서만 명령 줄에 다시 추가 할 수 있습니다.
find_bin(){
for x in ${PATH//://${1} }${1}; do
[ -f "$x" ] && echo $x
done
}
이 시작과 끝을 일치시키기 위해 하나의 추가 구문이 필요합니다.
- * grep-gre로 끝나는 명령과 일치합니다 (grep, egrep 및 fgrep는 있지만 버그보고는 없음)
- grep-정확한 문자열 grep 과만 일치합니다
- grep *-grep로 시작하는 명령과 일치합니다
- 위의 모든 패턴도 적용됩니다
답변
which
정확히 그렇게 :
which commandname
답변
.bashrc에 넣으려면 별칭이 매개 변수를 사용하지 않기 때문에 별칭이 유용하지 않지만 함수는 다음을 수행합니다.
pfind () {
for d in ${PATH//:/ }
do
find $d -regex $d/"$1"
done
}
pfind '.*[ou]b.*h'
find … -reg 전체 경로에 대한 정규 표현식 검색을 정의하므로 $ d를 반복해야합니다.
pfind
프로그램 찾기 (또는 PATH 찾기)를 나타냅니다.
답변
에서 bash
명령의 첫 문자 나 두 문자를 기억하면 <character><character><TAB><TAB>
이름이로 시작하는 모든 명령 목록을 보려면을 입력 하십시오 <character><character>
.
Linux에서 “locate string”은 이름의 일부로 “string”을 가진 모든 파일과 디렉토리를 나열합니다. (먼저 DB를 구축해야합니다 updatedb
. CentOS에서는 cron.daily
작업이 실행됩니다 updatedb
.) 실행 가능한 데이터베이스를 알려주지는 않습니다. 더 많은 정보를 찾는 또 다른 방법 일뿐입니다.
답변
이동 패키지가 있다고 가정합니다.
locate programname