명령이 어디에 있고, 설명이 어디에 적혀 있고, 방금 무엇을 실행했는지 찾는 도구다.

man과 --help

Bash
man ls
man -k partition
ls --help
help cd

man은 매뉴얼을 less로 연다. `/`로 찾고 `q`로 나간다. 절 번호가 있으면 `man 5 crontab`처럼 적는다. 1절은 사용자 명령, 5절은 파일 형식이다.

`man -k`는 짧은 설명에서 단어를 찾는다. apropos와 같다. 설명이 검색 데이터베이스에 있어야 한다. 비어 있으면 `mandb`로 인덱스를 만든다. 권한이 필요할 수 있다.

대부분의 외부 명령은 `--help`로 짧은 옵션 목록을 낸다. `help`는 bash 내장 명령용이다. cd, export, alias는 프로그램 파일이 아니라 셸이 직접 처리한다. 이때는 `help cd`가 셸 동작과 맞다.

어느 명령이 실행되나

Bash
type cd
type ls
command -v ls
which ls

type은 그 이름이 별칭인지, 내장인지, 함수인지, 파일인지 알려 준다. `command -v`는 실행에 쓰일 경로나 내장 여부를 한 줄로 보여 준다. which는 PATH 안의 파일만 찾는다. 별칭과 내장을 놓칠 수 있어서, 확인할 때는 type을 쓴다.

Bash
echo "$PATH"

PATH는 명령을 찾을 디렉터리를 콜론으로 이어 둔 값이다. 앞에서부터 찾는다. 같은 이름의 명령이 둘이면 먼저 나오는 쪽이 실행된다.

출력과 정보

Bash
printf '%s %d\n' count 3
date '+%Y-%m-%d %H:%M:%S'
uname -a
file /bin/ls
stat notes.txt

printf는 형식에 맞춰 출력한다. echo의 `-e`와 역슬래시는 셸마다 달라서, 스크립트에는 printf가 분명하다.

date의 형식 문자열에서 `%Y`는 연도, `%m`은 달, `%d`는 날, `%H`는 시, `%M`은 분, `%S`는 초다. 따옴표로 감싸야 공백이 한 인자로 남는다.

uname `-s`는 커널 이름, `-r`은 릴리스, `-m`은 기계 종류, `-a`는 한 줄 요약이다. file은 내용으로 종류를 추정한다. stat은 크기, 권한, 소유자, inode, 접근·수정·변경 시각을 보여 준다.

history와 alias

Bash
history
history 20

history는 이 셸이 기억한 명령이다. `!번호`는 그 번호의 명령을 다시 실행한다. 실행 전에 번호가 맞는지 본다. Ctrl-r은 이력에서 거꾸로 검색한다.

Bash
alias ll='ls -al'
alias
unalias ll

별칭은 그 셸에서 짧은 이름을 명령으로 바꾼다. 설정 파일에 적지 않으면 세션이 끝나면 사라진다. `unalias`로 지운다.

Bash
env
export EDITOR=vim

env는 현재 환경 변수를 출력한다. export한 변수는 그 셸에서 실행하는 자식 프로그램에 넘어간다.