
응용 프로그램에는 일반적으로 3가지 파일 형식이 포함되어 있습니다.
- 바이너리 파일
- 구성 파일
- 애플리케이션 데이터
Linux(예: CentOS, RHEL)는 특정 애플리케이션에 대한 바이너리를 어디에 저장합니까? 신청을 위해 어떻게 찾을 수 있나요?
답변1
whereis
이 작업 에 사용할 수 있습니다 .
$ whereis python3
python3: /usr/bin/python3.5m /usr/bin/python3 /usr/bin/python3.5 /usr/lib/python3 /usr/lib/python3.5 /etc/python3 /usr/local/lib/python3.5 /usr/share/python3 /usr/share/man/man1/python3.1.gz
답변2
바이너리 자체를 찾으려면 또 다른 방법은 입니다 type
.
$ type python3
python3 is /usr/bin/python3
$
구성 파일과 데이터 파일의 위치 측면에서 이를 결정하는 가장 좋은 위치는 일반적으로 관련 man
페이지입니다.
$ man python3 | grep -A10 FILES
FILES AND DIRECTORIES
These are subject to difference depending on local installation conven‐
tions; ${prefix} and ${exec_prefix} are installation-dependent and
should be interpreted as for GNU software; they may be the same. The
default for both is /usr/local.
${exec_prefix}/bin/python
Recommended location of the interpreter.
${prefix}/lib/python<version>
${exec_prefix}/lib/python<version>
$
답변3
which
다음과 같이 사용해 볼 수 있습니다 .
$ which zoom
/usr/bin/zoom
이것은 심볼릭 링크일 수 있으므로 실제 실제 경로를 찾으십시오.
ls -la $(which zoom)
lrwxrwxrwx 1 root root 22 Apr 24 07:19 /usr/bin/zoom -> /opt/zoom/ZoomLauncher
답변4
쉘 스크립트what-about
what-about
나는 를 통해 액세스할 수 있는 실행 가능한 프로그램에 대한 몇 가지 기본 정보를 표시하기 위해 쉘스크립트를 사용하고 있습니다 PATH
.
- 어디에 위치해 있나요?
- 해당 패키지가 속해 있거나 설치할 수 있는 패키지
- 어떤 유형의 프로그램입니까(바이너리 실행 파일, 쉘 스크립트, 쉘 내장, 별칭, 링크...)
이 쉘스크립트는 bash
Debian 및 Ubuntu에 속하는 도구를 사용하며 이 두 배포판에서 개발된 Linux 배포판에서도 사용할 수 있습니다. dpkg
[debian] 패키지의 전체 내용을 보려면 다음을 사용하거나 dpkg
따라갈 emacs
수 있습니다.이 링크는 AskUbuntu로 이동합니다..
해당 프로그램이 속한 패키지를 다른 배포판에서 찾으려면 원래 질문에 CentOS 및 RHEL이 언급되어 있으므로 dpkg
해당 도구로 교체해야 합니다.
여기있어:
#!/bin/bash
LANG=C
inversvid="\0033[7m"
resetvid="\0033[0m"
if [ $# -ne 1 ]
then
echo "Usage: ${0##*/} <program-name>"
echo "Will try to find corresponding package"
echo "and tell what kind of program it is"
exit 1
fi
command="$1"
str=;for ((i=1;i<=$(tput cols);i++)) do str="-$str";done
tmp="$command"
first=true
curdir="$(pwd)"
tmq=$(which "$command")
tdr="${tmq%/*}"
tex="${tmq##*/}"
if test -d "$tdr"; then cd "$tdr"; fi
#echo "cwd='$(pwd)' ################# d"
while $first || [ "${tmp:0:1}" == "l" ]
do
first=false
tmp=${tmp##*\ }
tmq="$tmp"
tmp=$(ls -l "$(which "$tmp")" 2>/dev/null)
tdr="${tmq%/*}"
tex="${tmq##*/}"
if test -d "$tdr"; then cd "$tdr"; fi
# echo "cwd='$(pwd)' ################# d"
if [ "$tmp" == "" ]
then
tmp=$(ls -l "$tex" 2>/dev/null)
tmp=${tmp##*\ }
if [ "$tmp" == "" ]
then
echo "$command is not in PATH"
# package=$(bash -ic "$command -v 2>&1")
# echo "package=$package XXXXX 0"
bash -ic "alias '$command' > /dev/null 2>&1" > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo 'looking for package ...'
package=$(bash -ic "$command -v 2>&1"| sed -e '0,/with:/d'| grep -v '^$')
else
echo 'alias, hence not looking for package'
fi
# echo "package=$package XXXXX 1"
if [ "$package" != "" ]
then
echo "$str"
echo "package: [to get command '$1']"
echo -e "${inversvid}${package}${resetvid}"
fi
else
echo "$tmp"
fi
else
echo "$tmp"
fi
done
tmp=${tmp##*\ }
if [ "$tmp" != "" ]
then
echo "$str"
program="$tex"
program="$(pwd)/$tex"
file "$program"
if [ "$program" == "/usr/bin/snap" ]
then
echo "$str"
echo "/usr/bin/snap run $command # run $command "
sprog=$(find /snap/"$command" -type f -iname "$command" \
-exec file {} \; 2>/dev/null | sort | tail -n1)
echo -e "${inversvid}file: $sprog$resetvid"
echo "/usr/bin/snap list $command # list $command"
slist="$(/usr/bin/snap list "$command")"
echo -e "${inversvid}$slist$resetvid"
else
package=$(dpkg -S "$program")
if [ "$package" == "" ]
then
package=$(dpkg -S "$tex" | grep -e " /bin/$tex$" -e " /sbin/$tex$")
if [ "$package" != "" ]
then
ls -l /bin /sbin
fi
fi
if [ "$package" != "" ]
then
echo "$str"
echo " package: /path/program [for command '$1']"
echo -e "${inversvid} $package ${resetvid}"
fi
fi
fi
echo "$str"
#alias=$(grep "alias $command=" "$HOME/.bashrc")
alias=$(bash -ic "alias '$command' 2>/dev/null"| grep "$command")
if [ "$alias" != "" ]
then
echo "$alias"
fi
type=$(type "$command" 2>/dev/null)
if [ "$type" != "" ]
then
echo "type: $type"
elif [ "$alias" == "" ]
then
echo "type: $command: not found"
fi
cd "$curdir"
쉘스크립트는 프로그램 "뒤에 있는" 링크 또는 일련의 링크를 찾을 수 있습니다.
당신은 또한 볼 수 있습니다이 링크는 AskUbuntu로 이동합니다., 몇 가지 데모 예제가 있습니다.