절대 경로 : 최상위 디렉토리(/)를 기준으로 하는 경로
상대 경로 : 현재 디렉토리(.)를 기준으로 하는 경로
. : 현재 위치한 디렉토리를 의미한다.
.. : 현재 위치한 디렉토리 상위 디렉토리를 의미한다.
~ : 홈 디렉토리를 의미한다.
경로를 표현할 때는 디렉토리 사이를 '/'를 통해 구분한다.
이 글에 사용되는 모든 예시는 macOS를 기준으로 한다.
man : 메뉴얼 페이지를 보여준다.
리눅스에서 사용하는 모든 명령어는 shell에서 man을 통해 그에 대한 설명을 볼 수 있다. 사용법은 'man command'이다.
mkdir의 설명을 보기 위해 위와 같이 입력하면
이와 같이 mkdir에 대한 man page를 볼 수 있다. 종료는 q를 입력하면 된다.
cd(Change Directory) : 해당 디렉토리로 이동한다.
ls(list) : 현재 위치한 디렉토리의 파일 및 디렉토리 목록들을 출력한다. -al 옵션을 이용하면 모든 파일의 정보를 볼 수 있다.
shell에서 명령어의 옵션은 '-','--'를 명령어의 뒤에 붙여 사용한다. '-'는 주로 한 글자로 이루어진 옵션을, '--'는 주로 두 글자 이상으로 이루어진 옵션을 붙일 때 사용된다.
mkdir(make directories) : operands의 이름에 해당하는 디렉토리를 순차적으로 생성한다.
rmdir(remove directories) : operands의 순서대로 디렉토리를 삭제한다. 디렉토리가 비어 있는 경우에만 작동한다.
rm(remove) : 파일 또는 디렉토리를 삭제한다.
mv(move) : 파일을 다른 디렉토리로 이동하거나 이름을 변경한다.
cp(copy) : 파일을 복사한다.
touch : 파일의 수정 시각과 접근 시각을 변경한다. 0바이트 파일을 생성하기 위해 자주 사용되는 명령어이다.
디렉토리를 다룰 때는 '-r'옵션을 많이 사용한다.
cat(concatenate) : 파일을 순차적으로 읽어 standard ouput으로 출력한다.
head : 파일의 첫 번째 줄을 보여준다.
tail : 파일의 마지막 부분을 보여준다.
echo : 특정된 operands를 standard output으로 출력한다.
chmod(change file modes) : 파일의 permission을 변경하는 명령어이다.
파이프는 '|'을 이용해 아래와 같이 사용한다.
cmd1 | cmd2
cmd1의 stdin은 키보드 입력이고 cmd1의 stdout이 cmd2의 stdin이 된다.
결과적으로 화면에 보이는 것은 cmd2의 stdout이 된다.
sort, grep, cat 등의 명령어와 함께 자주 사용된다.
stdout의 Redirection은 '>'을 이용해 아래와 같이 사용한다.
command > filename ; stdout을 redirect한다.
stderr의 Redirection은 '2>', '>&'을 이용해 아래와 같이 사용한다.
command 2> filename ; stderr만 redirect한다.
command >& filename ; stedrr, stdout을 모두 redirect한다.
stderr의 redirection이 '2>'인 이유는 stderr의 file descriptor가 file table에서 2번이기 때문이다.