Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

리눅스에서 모든 셸 명령어를 한눈에 확인하는 방법 – compgen과 탭 키 활용법

리눅스 셸이 인식할 수 있는 모든 명령어를 한 번에 나열해주는 명령어가 실제로 존재하지만, 이를 알고 있는 사용자는 생각보다 드뭅니다. GNU/Linux 기반 운영체제의 명령줄을 다루면서 마주치게 되는 가장 역설적인 상황(Catch-22)이 바로 이것입니다. 다행히도 셸이 직접 알려주지 않더라도 해당 명령어를 익히는 방법은 매우 간단합니다.

먼저 Ctrl+Alt+T를 눌러 터미널을 엽니다. Xfce4, KDE, LXDE 데스크톱 환경을 사용한다면 애플리케이션 메뉴에서 '시스템 도구(System Tools)'를 클릭한 후 '터미널(Terminal)'을 선택하세요. Ubuntu Unity 사용자는 Dash에서 '터미널'을 검색하면 됩니다. 물론 전통적인 가상 터미널 환경에서도 동일하게 작동합니다.

방법 1: compgen 셸 내장 명령으로 목록 확인하기

터미널에 compgen -c | more라고 입력하면 실행 가능한 모든 명령어가 화면에 나열됩니다. 스페이스바를 누를 때마다 다음 페이지로 넘어갈 수 있습니다. 참고로 이 유틸리티는 '명령어'의 범위를 매우 넓게 잡기 때문에, 일반적으로 명령어라고 생각하지 않는 특수문자들도 함께 출력됩니다. 이런 기호들은 긴 명령어들을 서로 연결하는 용도로 쓰이기 때문에 단독으로 입력하면 실행되지 않습니다.

최신 터미널 에뮬레이터를 사용하고 있다면 화면에서 사라진 내용은 언제든 스크롤을 올려 다시 확인할 수 있습니다. 원하는 명령어를 찾았다면 q 키를 한 번만 누르면 바로 명령 프롬프트로 돌아옵니다. compgen은 bash 내장 명령이므로 Almquist 셸이나 C 셸에서는 사용할 수 없다는 점에 유의하세요.

compgen은 몇 가지 추가 옵션도 제공합니다. 셸 내장 명령이다 보니 man 페이지가 없어 사용법을 파악하기 어려울 수 있지만, 옵션 자체는 외우기 어렵지 않습니다.

  • compgen -a : 설정된 모든 별칭(alias) 목록 출력
  • compgen -b : 모든 셸 내장(built-in) 명령 목록 출력
  • compgen -k : 셸 예약 키워드(keyword) 목록 출력

명령어에 대해 더 자세히 알고 싶다면 man builtins를 입력하여 bash 셸 매뉴얼 페이지를 열어보세요. bash가 스스로 처리할 수 있는 모든 기능을 설명하기 때문에 페이지가 상당히 깁니다. 여기서 /compgen을 입력하고 Enter를 누르면 해당 항목을 검색할 수 있습니다. 처음에는 첫 번째 언급 부분만 강조되므로 /를 입력한 뒤 다시 Enter를 누르면 compgen의 역할을 설명하는 단락을 만나게 됩니다.

참고로 compgen -c와 마찬가지로 compgen -b | more처럼 more를 함께 사용해야 결과가 화면 밖으로 흘러내리는 것을 막을 수 있습니다. 나머지 옵션들은 출력량이 많지 않습니다. 그래도 최신 터미널 에뮬레이터를 사용한다면 출력이 화면을 넘어가도 스크롤을 올려 언제든 확인할 수 있습니다.

방법 2: 탭 키 자동완성 트릭 활용하기

bash 프롬프트에서 탭(Tab) 키를 두 번 누르면 제안 목록이 나타나는 기능을 이미 알고 있을 것입니다. 명령어를 일부만 입력한 후 탭 키를 누르면 나머지 부분이 자동으로 완성됩니다. 대부분의 사용자는 이 기능을 활용해 긴 디렉터리 경로로 이동하거나 이름이 긴 파일을 일일이 입력하지 않고도 삭제하는 등의 작업을 편하게 처리하고 있습니다.

특정 명령과 조합하면 이 트릭으로 시스템의 모든 명령어를 확인할 수도 있습니다. bash --norc를 입력하고 Enter를 눌러 가장 기본적인 형태의 bash 세션을 시작하세요. 대부분의 배포판은 기본 설정에서 이 기능(탭 두 번 제안)을 비활성화해 두기 때문입니다. 프롬프트가 평범한 형태로 바뀐 것이 보일 것입니다. 이제 아무것도 입력하지 않은 상태에서 탭 키를 두 번 누릅니다.

'모든 가능성을 표시할까요?'라는 확인 메시지가 나타나면 y 키를 누릅니다. 그러면 시스템에 있는 모든 명령어 목록이 표시됩니다. 원하는 명령어를 찾았다면 q 키를 눌러 빠져나오세요. 이 목록은 지금까지 보아 온 다른 bash 제안 목록과 동일하게 작동하므로 같은 방식으로 문제없이 탐색할 수 있습니다. 앞선 방법과 달리 파이프(|)로 다른 명령에 연결하지 않아도 알파벳순으로 정렬되어 있다는 점이 장점입니다.

새 세션을 종료하고 싶다면 exit를 입력하면 됩니다. 그러면 원래의 명령 프롬프트로 돌아갑니다.

작성자 소개

리눅스에서 모든 셸 명령어를 한눈에 확인하는 방법 – compgen과 탭 키 활용법

Kevin Arrows

Kevin Arrows는 10년 이상의 업계 경력을 지닌 베테랑 기술 전문가로, Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있습니다. 최신 기술 동향을 꾸준히 학습하는 것에 큰 열정을 가지고 있으며, 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 기술 분야의 주제에 대해 폭넓게 집필해 왔습니다. 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들에게 널리 인정받고 있는 필자입니다.