터미널에서 사용 가능한 응용 프로그램 명령을 나열하는 방법

터미널에서 사용 가능한 응용 프로그램 명령을 나열하는 방법

저는 Fluxbox를 사용하고 있는데 최근에 비디오 편집 애플리케이션을 시작하고 싶었는데 이름이 기억나지 않습니다. 저는 보통 터미널에서 애플리케이션을 실행하므로 Xmonad의 "run or raise" 기능과 같이 모든(애플리케이션 또는) 애플리케이션 특정 명령을 나열하는 방법이 있는지 궁금합니다. 이 기능은 1:14에서 볼 수 있습니다.http://www.youtube.com/watch?v=AyNkBLhIpQk&feature=관련

편집: 설치된 모든 응용 프로그램 목록(shotwell, gedit, gvim, vim, vi, firefox, chromium-browser 등 사용 가능한 모든 응용 프로그램 명령 목록)을 반환하는 명령을 터미널에 입력할 수 있기를 원합니다. 등) 실행할 수 있는 애플리케이션(어떤 애플리케이션이 있는지)을 알고 싶습니다.

답변1

을 사용하는 경우 내장된 다음을 bash(1)사용할 수 있습니다 .compgen

$ compgen -abc -A function

-a별칭, -b내장 함수, -c명령 및 -A function셸 함수의 경우. 이들을 제외하고 싶다면 꽤 큰 목록을 얻을 수 있으므로 어느 것을 선택할 수 있습니다(내 시스템에는 3206개의 명령이 있습니다).

compgen명령은 명령줄 완성 후보를 생성하는 데 사용되지만 이 목적으로도 사용할 수 있습니다.

답변2

"실행할 수 있는 애플리케이션"이 "경로의 실행 파일"과 동의어라고 가정하면 이는 간단합니다.

#!/bin/bash
IFS=: read -ra _dirs_in_path <<< "$PATH"

for _dir in "${_dirs_in_path[@]}"; do
    for _file in "${_dir}"/*; do
        [[ -x ${_file} && -f ${_file} ]] && printf '%s\n' "${_file##*/}"
    done
done

답변3

최소한 하나의 문자를 입력한 후 를 누르면 Tab이름이 해당 문자로 시작하는 모든 실행 프로그램 목록이 표시됩니다. 이것은 ... 불리운다완료 또는 자동 완성.

다음 셸 조각을 사용하여 모든 실행 프로그램을 나열할 수 있습니다.

( IFS=':'; set -f;
  for dir in $PATH; do
    for x in $dir/*; do echo $x; done
  done )

여기에는 갖고 있는 모든 실행 프로그램이 나열되며, 이는 아마도 원하는 "모든 응용 프로그램"보다 더 일반적일 것입니다. 또한 다른 명령에 의해 호출되도록 의도된 많은 명령을 볼 수 있으며 사용자가 직접 호출하는 경우는 거의 없습니다. GUI에서 호출되도록 설계된 응용 프로그램 목록은 *.desktop아래 파일을 통해 확인할 수 있습니다 /usr/share/applications. 다음 명령은 이를 표시합니다( 명령에 일반적으로 필요한 인수 유형을 %u나타내는 이동 경로 등을 찾을 수 있습니다.%c데스크탑 파일 형식 사양).

grep -Proh '(?<=^Exec=).*' /usr/share/applications

dpkg -lDebian, Ubuntu 및 그 파생물 아래에 있는 패키지를 나열하면 어떤 애플리케이션을 설치했는지 더 잘 이해할 수 있습니다 rpm -ql.

관련 정보