터미널에 없는 편리한 기능을 제공
커맨드에 '인자'와 '옵션'을 줘서 원하는 결과를 만들어 내는 것
커맨드가 작동할 대상을 지정하기 위해 사용(하이픈(-) 안붙음)
커맨드가 구체적으로 어떤 방식으로 동작할지 지시하기 위해 사용(하이픈(-) 붙음)
* 넓은 의미에서 옵션도 인자라고 하는 경우 있음
* 주요 인자와 옵션만 기억해두고 이외에는 검색해서 사용
cal -B 2
현재 날짜가 있는 달부터 그 이전 달들의 달력도 함께 출력,-B 2
는 현재 달로부터 이전 2개의 달 까지 함께 출력해 줌
여기서 -B
는 인자 값을 주어야 함. 인자 값을 주지 않는 경우 커맨드가 실행되지 않음.
cal -B 2 -j
현재 달로부터 2개월 전의 달력까지 함께 출력해 주지만 1월 1일부터 몇 번째 날짜인지 표시해줌
여기서 -j
옵션은 인자 값을 필요로 하지 않음
이렇게 값을 섞어서 쓸 수 있지만 인자 값을 필요로 하는 옵션을 뒤에 적어 인자값을 적어줘야함!
잘 실행되는 섞인 옵션
인자 값을 필요로 하는
-B
옵션을 앞으로 쓰니 실행되지 않음
(인자 값을 필요로 하지 않는-j
에게2
라는 인자값이 붙게되고-B
에는 인자값이 없는 것으로 처리되기 때문!)
공식 메뉴얼 또한 커맨드 창을 통해 알 수 있는데 커맨드 창에 man 궁금한 커맨드(인자)
를 입력하면 된다.
man cal
(캘린더 메뉴얼)을 커맨드 했을 때 실행되는 메뉴얼
아래 방향키
: 내용 더보기스페이스 키
: 메뉴얼의 다음 페이지위 방향키
: 메뉴얼 내용에서 위로 한줄 이동b
: 위로 한페이지 이동(backward)q
: 공식 매뉴얼 화면에서 나가기(quit)위 방향키
: 이전에 사용했던 커맨드 아래 방향키
: 이전에 사용했던 커맨드에서 최근 커맨드로 이동history
커맨드 : 실행한 커맨드 전부 출력, 여기서 커맨드를 다시 실행하고 싶다면 !번호
를 쓰면 됨원하는 디렉토리나 파일이름의 첫글자를 쓰고 tab키
를 누르면 자동완성
만약 같은 알파벳으로 시작하는 파일이 2개 이상이면 tab키
를 한번더 누르고 조금더 구체적으로 작성하면 됨
ctrl + a
: 커서가 맨 앞으로 이동
ctrl + e
: 커서가 맨 뒤로 이동
* 디렉토리나 파일 이름에 공백이 들어있을 경우에는 작은 따옴포('')를 이용하여 묶어준다
~
(틸드, Tilde)현재 사용자의 홈 디렉토리
pwd
('p'rint the name of 'w'orking 'd'irectory)현재 작업중인 디렉토리 출력
즉, 이말은 이 두개가 같다고 표현할 수 있다.
~jaekyung = /Uswers/jaekyung
디렉토리를 포함하고 있는 디렉토리
cd
('c'hange 'd'irectory)디렉토리를 변경
cd 가고싶은 경로
cd /
: 루트 디렉토리로 이동cd ~
: 홈 디렉토리로 이동cd -
: 이전 경로로 이동루트 디렉토리를 기준으로 어떤 파일이나 디렉토리가 가지고 있는 고유한 경로
/Users/jaekyung/Pictures
/Users/jaekyung/Document
나의 현재 위치를 기준으로 나타낸 경로
.
: 현재 위치한 디렉토리
..
: 현재 디렉토리를 포함하고 있는 부모 디렉토리
만약, 현재위치가 /Users/jaekyung
일때 /Users/jaekyung/Pictures
로 가는 경로를 나타낸다면
절대경로 : /Users/jaekyung/Pictures
상대경로 : ./Pictures
1) 루트 디렉토리에서 멀리 있는경우 그 주변의 경로를 나타낼 때
2) 프로그램의 소스코드 내에서 경로를 표시할 때
(프로그램을 다른 컴퓨터에서 실행하는 경우 호환성 문제로 인해 상대경로로 표시하는게 더 좋음)
ls
커맨드(list)현재 디렉토리 안에 자식 디렉토리나 파일들의 리스트를 보여줌
ls
의 옵션ls -l : 결과를 긴 리스트 형식으로 보여줌(long listing format)
유닉스 에서는 디렉토리나 파일의 이름앞에 .
을 붙이게 되면 ls커맨드를 썼을 때 나타나지 않음 = 숨겨져 있음.(보통 수정할 일이 거의 없는 설정 파일등은 이렇게 숨겨놓는 경우가 많음)
이렇게 숨겨져 있는 파일 보는 ls
의 옵션은 ls -a
임
ls -a : 디렉토리 안에 숨겨져 있는 자식 디렉토리나 파일 보기(all)
모든 파일을 리스트 형식으로 보고 싶을 때는
ls -al 또는 ls -la 라고 쓰면 됨
디렉토리 자체의 정보를 확인 할때에는 -d
옵션 사용하면 됨
Pictures 디렉토리의 자체 정보 출력 : ls -l -d Pictures
ls -l
실행시 리스트 중 시작 문자가 d
또는 -
로 시작함.
여기서 d
는 디렉토리를 나타내며 -
는 파일을 나타냄.
유닉스에는 다양한 종류의 파일이 있는데 (사실 디렉토리도 넓은 의미에서는 파일의 종류중 하나임!!) 종류로는 다음과 같다
파일종류 | 문자 |
---|---|
일반파일 | - |
디렉토리 | d |
캐릭터 장치 파일 | c |
블록 장치 파일 | b |
소켓 | s |
파이프 | p |
심볼릭 링크 | ㅣ |
mkdir
(make directory)디렉토리 만들기
mkdir 만들고 싶은 디렉토리 이름(만들고 싶은 디렉토리 이름과 그 경로)
touch
파일 만들기
touch 만들고 싶은 파일 이름
mv
(move)디렉토리나 파일을 옮기거나 이름 변경
mv '옮기고 싶은 파일 or 디렉토리 이름' '도착지가 될 경로(절대 or 상대 둘다 가능)'
* 주의할 점: 이동하게 되는 디렉토리 안에 같은 이름의 파일이 있으면 그파일을 뒤짚어 씌게 됨
-> 방지를 위해 -i
옵션을 주게 되면 덮어쓰게 될 상황이 생길시 바로 덮어쓰지 않고 사용자의 의견을 물어봄(interactive)
mv -i file ../alreadyExists
이렇게 사용하게되면 터미널에서 overwrites ../alreadyExists?
가 출력되며 덮어쓸건지 물어보게 됨 이때 y(yes)
를 입력하면 덮어쓰고 n(no)
를 입력하면 아무일도 일어나지 않게 됨.
mv '원래 파일 or 디렉토리 이름' '변경할 파일 or 디렉토리 이름'
복사 붙여넣기
cp '복사할 파일 이름' '붙여넣기할 이름'
* 주의할 점: 붙여 넣으려는 이름의 파일이 이미 존재하면 기존 파일의 내용을 덮어쓰게 됨/
여기서도 방지를 위해 -i
옵션을 주게 되면 덮어쓰게 될 상황이 생길시 바로 덮어쓰지 않고 사용자의 의견을 물어봄(interactive)
디렉토리를 복사, 붙여넣기 할 때에는 디렉토리의 자식 디렉토리까지 함께 복사할지 여부등을 결정할 옵션을 설정해줘야 한다.
-r
: 재귀적 복사 붙여넣기(recursive) = 하위 디렉토리까지 모두 복사rm
(remove)디렉토리와 파일 삭제
rm 삭제할 파일
디렉토리를 삭제할 때에는 자식 디렉토리도 삭제할지에 대해 옵션을 설정해 줘야함
-r
: 재귀적 삭제(recursive) = 하위 디렉토리까지 모두 삭제rm -r 삭제할 디렉토리 이름
여기서도 삭제할 디렉토리 안에 중요한 파일이 있을 수 있음으로 -i
옵션을 사용하여 삭제 여부를 확인 받는게 좋다.
파일들의 내용을 이어서 출력
cat '내용을 보고싶은 파일 이름' '이어서 보고싶은 파일 이름'
하지만 이렇게 출력시 내용을 확인하는데 어려울 수 있음 여기서 사용하는 less
커맨드를 사용하면 됨
less 보고싶은 파일 이름
하게되면 보다 편리하게 볼 수 있는 기능을 제공
아래 방향키
: 한줄씩 아래로 이동위 방향키
: 한줄씩 위로 이동스페이스 키
: 다음페이지 이동b
: 이전 페이지 이동(backward)G
: 내용의 가장 마지막으로 이동g
: 내용의 가장 처음으로 이동q
: 화면에서 나가기(quit)두개의 파일을 합쳐서 less로 편하게 보고싶을 때
less '보고싶은 파일이름' '보고싶은 파일이름2'
여기서 사용할 수 있는 기능
:n
: 다음으로 이동:p
: 이전으로 이동파일의 맨 앞부분 부터 출력
파일의 내용중 맨 처음 10줄 출력
head 원하는 파일 이름
출력되는 내용 조정시 옵션 -n
을 사용
맨 처음 20줄의 내용을 확인하고 싶으면 아래와 같이 작성
head -n 20 원하는 파일이름
파일의 맨 뒷부분 부터 출력
파일의 내용중 맨 뒷부분 10줄 출력
tail 원하는 파일 이름
출력되는 내용 조정시 옵션 -n
을 사용
맨 뒷부분 30줄의 내용을 확인하고 싶으면 아래와 같이 작성
tail -n 30 원하는 파일이름