Linuxアプリケーションバイナリがある場所を見つける方法は?

Linuxアプリケーションバイナリがある場所を見つける方法は?

アプリケーションには通常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

  • どこにありますか?
  • そのパッケージが属しているかインストールできるパッケージ
  • どのタイプのプログラムですか(バイナリ実行可能ファイル、シェルスクリプト、シェル組み込み、エイリアス、リンク...)

このシェルスクリプトはbashDebianとUbuntuに属するツールを使用し、これら2つのディストリビューションで開発された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に移動します。、いくつかのデモ例があります。

関連情報