AnbyMata의 해킹 노트

[Linux 기초] EP.7 - 리눅스 편리하게 사용하기 - man과 자동완성 본문

[Linux 기초]

[Linux 기초] EP.7 - 리눅스 편리하게 사용하기 - man과 자동완성

AnbyMata 2025. 9. 23. 19:00

[1]  리눅스 명령어 메뉴얼 - 명령어 'man'

 리눅스의 메뉴얼 페이지를 열람하는 명령어 'man'입니다.

이 명령어를 이용하면 리눅스의 다양한 명령어와 함수, 설정 파일 등에 대한 설명을 쉽게 확인할 수 있습니다.

 

기본 사용법은

$ man [옵션] [섹션_번호] [명령어] 
# [옵션]과 [섹션_번호]는 선택사항!

입니다.

 [옵션]과 [섹션_번호]는 선택 사항입니다.

즉, 필요에 따라 옵션이나 섹션 번호는 넣을 수도, 생략할 수도 있습니다.

 

 우선, '$ man 명령어' 형태부터 살펴봅시다. 

칼리 리눅스를 실행 후, root 계정으로 로그인하여 터미널을 열어 한번 사용해보겠습니다.

 

'man ls'를 입력하면,

\'man ls' 입력!

이런 식으로 명령어 ls 에 대한 기능, 사용 방법, 옵션 설명, 예시 등이 출력됩니다.

명령어 ls 의 메뉴얼

 

 여러분이 직접 'man cd', 'man pwd' 처럼 여러 종류의 명령어를 직접 입력해보세요.

 

 

 

[2]  섹션 번호를 활용해서 메뉴얼 보기

 이번에는 man 명령어의 '섹션 번호'를 활용해보겠습니다.

기본적으로 리눅스 메뉴얼은 여러 섹션으로 나뉩니다.

그 섹션들을 정리해보면:

- 1. 사용자 명령어 : ls, cp, mv ...

- 2. 시스템 호출 : open, read, write ...

- 3. 라이브러리 함수 : printf, malloc ...

- 4. 특수 파일 : 디바이스 파일...

- 5. 파일 형식과 설정 : /etc/passwd, /etc/fstab ...

- 6. 게임

- 7. 기타 : 매크로 패키지 ...

- 8. 시스템 관리 명령어 : ifconfig, iptables ...

- 9. 커널 관련 문서

 

앞서 정리했듯이 리눅스 매뉴얼은 여러 섹션으로 나뉘어 있습니다.
섹션 번호를 모두 외울 필요는 없고, 지금은 “아, 이렇게 구분되어 있구나” 정도만 알고 넘어가셔도 충분합니다

 

 섹션 번호를 활용한 man 명령어 예시를 들어보면,

$ man 2 open  # 'open' 시스템 호출 확인

$ man 3 printf  # 'printf' 라이브러리 함수 확인

입니다.

 

 이번에도 칼리 리눅스에서 사용해봅시다. 

 

'man 3 printf'을 입력하면,

'man 3 printf' 입력!
라이브러리 함수 printf() 설명

이런식으로 '라이브러리 함수 printf()' 에 대한 설명이 나옵니다.

 

 

 

[3]  섹션 번호를 왜 써야 할까?

 여기서 여러분은 의문이 드실 겁니다. "man 명령어" 만 입력해도 메뉴얼이 나오는데, 왜 굳이 섹션 번호를 쓰는 옵션이 존재하는거지?

제가 [2] 설명의 마지막 줄에 '라이브러리 함수 printf()' 에 대한 설명이 나왔다고 설명했습니다. 

왜 'printf()'에 대한 설명이 아니라, '라이브러리 함수 printf()' 라고 적었을까요?

 

사실 리눅스에서는 같은 이름을 가진 항목이 여러 섹션에 걸쳐 존재할 수 있습니다.

예를 들어 'passwd'는 섹션 1에서는 "비밀번호 변경 명령어"로, 섹션 5에서는 "/etc/passwd 파일 형식"으로 설명됩니다.

 

 그렇다면, 그냥 'man'과 'man [섹션 번호]'에는 어떤 차이가 있을까요?

기본적으로 섹션 번호를 지정하지 않고 단순히 man을 실행하면, 매뉴얼은 섹션 1 → 8 순서로 검색하여 가장 먼저 찾은 문서를 보여줍니다.

그래서 내가 원하는 섹션 번호의 메뉴얼을 보기 위해서는 'man [섹션 번호]'를 사용해 섹션 번호를 명시해줘야 합니다.

 

 아까 예시를 든 passwd를 사용해 설명해보자면,

'man passwd' 의 경우 섹션 1의 "비밀번호 변경 명령어 passwd"에 대한 매뉴얼이 출력되고,

'man 5 passwd' 의 경우 섹션 5의 "/etc/passwd 파일 형식"에 대한 매뉴얼이 출력됩니다.

(직접 한 번 해보세요!)

 

 

 

[4]  옵션을 활용해서 메뉴얼 보기

 이번에는 man 명령어의 옵션을 활용해보겠습니다.

다양한 옵션들이 있지만, 가장 대표적인 '-k', '-f', '-a' 정도만 알아봅시다. (궁금하면 찾아보세요)

 

- 1. 'man -k [키워드]'

  + 매뉴얼 전체에서 키워드를 검색합니다.

- 2. 'man -f [명령어]'

  + 해당 명령어가 어느 섹션에 속하는지 간단히 출력합니다.

- 3. 'man -a [명령어]'

  + 같은 이름을 가진 항목이 여러 섹션에 존재할 경우, 모든 섹션의 매뉴얼을 순서대로 열람합니다.

 

예시들을 정리해보면,

$ man -k passwd
# passwd 라는 키워드가 포함된 매뉴얼 항목 검색

$ man -f passwd
# passwd가 속한 세션들 출력 = 섹센 1과 섹션 5

$ man -a passwd
# passwd가 존재하는 모든 섹션의 매뉴얼을 순서대로 열람
# 섹션 1의 passwd와 섹션 5의 passwd가 순서대로 열람됨

(이 예시들은 직접 칼리 리눅스에서 해보세요!)

 

 'man' 명령어의 경우, [옵션]과 [섹션_번호]라는 선택사항 두 가지를 같이 사용할 수도 있지만, 일반적으로는 옵션만 쓰거나 섹션 번호만 쓰는 경우가 많습니다.

(그래서 둘을 같이 쓰는 케이스들은 패스~)

 

 

 

[5]  매뉴얼 페이지 안에서 자주 쓰이는 단축키

 매뉴얼에서 자주 쓰는 단축키들을 알아봅시다!

- 'Space 바' : 다음 페이지로 넘어갑니다

- 'b' : 이전 페이지로 돌아갑니다

- '/검색어' : 원하는 검색어를 검색합니다

- 'n' : 다음 검색 결과로 넘어갑니다

- 'q' : 매뉴얼을 종료합니다

 

 

 

[6]  자동 완성 기능 - TAB 키

 여러분이 떠올리는 해커는 화려한 키보드 타이핑으로 모든 걸 해결하는 모습일 겁니다.

하지만 현실은 개발자들과 크게 다르지 않습니다. 우리 모두는 귀찮은 걸 싫어하기 때문에, 자동 완성 기능을 적극 활용할 것입니다.

 

칼리 리눅스의 터미널을 열어서 직접 해봅시다.

 

우리가 알고있는 명령어 "passwd"를 빠르게 자동 완성 시켜보겠습니다.

터미널에 "pas" 까지만 입력한 뒤, TAB키를 눌러보세요.

'pas' 입력 후, TAB 키!

'pas' 입력 후 TAB 키를 누르면, 'pas'로 시작하는 모든 명령어 후보 목록이 터미널에 표시됩니다.

 

여기서 다시 TAB 키를 활용해 원하는 명령어를 손쉽게 자동완성할 수 있습니다. (TAB 키를 누를 때마다, 자동완성 후보 목록에서 왼쪽부터 차례대로 하나씩 이동하며 선택 -> Enter 키로 선택!)

TAB키를 이용해 원하는 명령어로 이동 후, Enter 키로 선택!

 

 TAB 키를 사용한 자동완성 기능은 명령어에만 국한되지 않고, 경로나 파일/디렉토리 이름, 옵션에도 적용됩니다.

 

파일/디렉토리 이름에 적용해봅시다.

'Documents' 디렉토리로 이동하기 위해 'cd Documents/' 를 입력하는 상황입니다.

 

(어? cd /Documents 라고 입력해야 되는거 아닌가요?)

이에 대해 설명해보자면,

아시다시피, 경로의 맨 앞이 '/'으로 시작하면 절대 경로임을 나타냅니다.

근데 'cd Documents/'의 경우 경로의 맨 앞에 '/'이 없기 때문에 절대 경로가 아닌 상대 경로임을 유추할 수 있습니다.

정답은, 경로의 앞에 '/' 없이 바로 파일/디렉토리 이름이 나올 경우, 현재 디렉토리에서 해당 파일/디렉토리로 이동하라는 뜻입니다.

 

 추가적으로 Documents뒤에 '/'가 붙은 것은 "Documents가 파일이 아닌 디렉토리다"임을 명시하는 것으로, 없어도 되는 관습적 표기입니다.

 

결과적으로, 'cd Documents/'는 "현재 디렉토리에서 'Documents'라는 디렉토리로 이동해라"라는 명령어입니다.

 

 다시 돌아와서, 'cd Documents/' 를 자동완성해봅시다.

'cd D' 까지만을 입력하고 TAB 키를 누른다면,

'cd D' 입력 후, TAB 키!

아까와 마찬가지로 TAB 키로 원하는 명령어에 이동 후, Enter 키를 눌러 선택하면 자동완성됩니다.

 

 마지막으로 팁을 주자면, 어느 정도는 입력한 후, 자동완성 기능을 사용하시는게 좋습니다.

'mk' 만을 입력하고, TAB 키를 눌러서 자동완성 후보 목록을 확인해보면,

'mk' 입력 후, TAB 키!

자동완성 후보들이 너무 많음을 확인할 수 있습니다. 

이런 식으로 후보들이 너무 많으면 오히려 직접 입력하는 것보다 효율이 떨어지기 때문에, 어느 정도 입력을 충분히 한 후 자동완성 기능을 활용하는 것이 유용합니다. (어느 정도 입력해야되는지는 많은 경험이 알려줄 것입니다.)

 

 

 

EP.7 - 리눅스 편리하게 사용하기 - man과 자동완성. END.

 

EP.8 - vi 편집기로 파일 생성, 입력, 저장하기 (vi). Continue...