유닉스의 디렉터리는 루트로부터 시작하여 계층구조를 이룬다.
절대 경로명은 루트 디렉터리부터 시작하고 상대 경로명은 현재 디렉터리부터 시작한다.
파일의 사용권한은 소유자, 그룹, 기타로 구분하여 관리한다.
출력 재지정은 표준출력 내용을 파일에 저장하고 입력 재지정은 표준입력을 파일에서 받는다.
실행중인 프로그램을 프로세스라고 한다.
date -> 현재날짜 및 시간
uname -> 현재 사용중인 운영체제
who -> 현재 로그인한 사용자확인
ls -> 디렉터리의 내용을 리스트
clear -> 화면을 깨끗이 함
passwd -> 패스워드 변경
일반 파일(ordinary file)
: 데이터를 가지고 있으면서 디스크에 저장된다.
디렉터리(directory) / 폴더(folder)
: 디렉터리(폴더) 자체도 하나의 파일로 한 디렉토리는 다른 디렉토리들을 포함함으로써 계층구조를 이룬다.
ex) /home/downloads
특수 파일(special file)
: 물리적인 장치에 내한 내부적인 표현
ex) 키보드(stdin), 모니터(stdout), 프린터 등도 파일처럼 사용
홈 디렉터리(Home directory)
: 각 사용자마다 별도의 홈 디렉터리가 있다.
사용자가 로그인하면 홈 디렉터리에서 작업을 시작함.
현재 작업 디렉터리(current working directory)
: 현재 작업중인 디렉터리
pwd(print working directory) : 현재 작업 디렉터리를 프린트
cd(change directory) [디렉터리] : 현재 작업 디렉터리를 이동
mkdir(make directory) : 새 디렉터리를 만듦
$ mkdir 디렉터리
ls(list) : 디렉터리의 내용을 리스트한다.
$ ls
cs1.txt
ls -s (size)
총 6
6 cs1.txt
ls -a (all)
. ..cs1.txt
.은 현재디렉터리
..은 부모 디렉터리
ls -l (long)
-rw-r--r-- 1 kdo6301 kdo6301 0 Sep 7 22:46 test1.txt
파일사용권한 링크수 유저 그룹 파일크기 최종수정날짜 파일이름
ls -asl
경로명
: 파일이나 디렉터리에 대한 정확한 이름
파일내용리스트
1. 파일내용출력과 관련된 명령어들
cat, more, head, tail, wc등
$ 명령어 파일 -> 1개의 파일을 인수로
$ 명령어 파일* -> 0혹은 그보다 많은 파일을 인수로
$ more 파일+ -> 1개이상의 파일을 인수로
파일 내용출력
$ cat cs1.txt -> cs1.txt의 내용을 출력
$ cat -> 키보드로부터 입력받아 출력
...^D -> Ctrl + D 입력의 끝
more 명령어
: 하나 이상의 파일 이름을 받을 수 있으며, 각 파일의 내용을 페이지 단위 로 출력
head 명령어
: 파일의 앞부분(10줄)을 출력
tail명령어
: 파일의 뒷부분(10줄)을 출력
wc(word count)
: 파일에 저장된 줄,단어, 문자 개수를 세서 출력
ex) $wc cs1.txt
$ cp 파일1 파일2
: 파일1의 복사본 파일2를 현재 디렉터리 내에 만듦
ex) cp cs1.txt cs2.txt
ls -l cst1.txt cs2.txt
$ cp 파일 디렉터리
: 파일1의 복사본을 디렉터리 내에 만듦
mv(move) 파일1 파일2
: 파일1의 이름을 파일2로 변경한다.
rm(remove) 명령어
: 명령줄 인수로 받은 파일을 지운다.
rm -r 디렉토리이름
: 디렉토리를 지운다.
rmdir 명령어
: 명령어 인수로 받은 디렉터리(들)을 지운다.
$ remdir 디렉터리+
주의 : 디렉터리 내에 아무것도 없어야한다.
파일의 이름, 타입, 크기, 소유자, 사용권한, 수정시간
$ ls -sl cs1.txt
-> 6 -rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt
사용권한
: 읽기(r), 쓰기(w), 실행(x) 권한
파일의 사용권한은 소유자/그룹/기타로 구분하여 관리한다.
rw-
r-- r--
소유자 그룹 기타
chmod (change mode)
파일 혹은 디렉터리의 사용권한을 변경하는 명령어
$ chmod [-R] 사용권한 파일
: -R 옵션은 디렉터리 내의 모든파일, 하위디렉터리에 대해서도 적용
ex) chmod g+w cs1.txt
chown 명령어
: 파일이나 디렉터리의 소유자를 변경할때 사용 (Only superuser)
$ chown 사용자 파일
$ chown [-R] 사용자 디렉터리(디렉터리 내의 모든 파일, 하위 디렉터리)
chgrp 명령어
: 파일의 그룹을 변경할 수 있다. (Only 파일소유자, superuser)
$ chgrp 그룹 파일
$ chgrp [-R] 그룹 디렉터리
명령어의 표준 출력 내용을 모니터에 출력하는 대신에 파일에 저장
$ 명령어 > 파일
$ who > names.txt
: 현재 디렉토리에 names.txt를 만들고 거기에 who명령어의 내용을 저장
$ cat > list1.txt
Hi
This is the first list.
^D
: 현재 디렉토리에 list1.txt를 만들고 인수로 입력받은 문자를 저장
$ cat list1.txt list2.txt > list3.txt
: list1.txt의 내용과 list2.txt의 내용을 list3.txt 파일을 만들어 그 안에 저장
명령어의 표준 출력을 모니터 대신에 기존 파일에 추가
$ 명령어 >> 파일
$ cat >> list1.txt
Bye!
This is the end of the first list.
^D
$ cat list1.txt
->
Hi, this is the first list.
BYe!
This is the end of the first list.
명령어의 표준입력을 단어가 다시 나타날때까지의 내용으로
보통 스크립내 내에서 입력을 줄때 사용
$ 명령어 << 단어
...
단어
$ wc << end
hello!
word count
end
2 4 19
로그인된 사용자들을 정렬해서 보여주기
$ who > names.txt
$ sort < names.txt
$ 명령어1 | 명령어2
: 명령어1의 표준출력을 명령어2의 표준입력으로 바로 받는다.
ex) $who | sort
전면처리
: 명령어를 입력하면 명령어가 전면에서 실행되며 명령어가 끝날때 까지 쉘이 기다려준다.
후면처리
: 명령어들을 후면에서 처리하고 전면에는 다른작업을 할 수 있으면 동시에 여러작업을 수행할 수 있다.
: $ 명령어 &
ex)
$ (sleep 100; echo done) &
[1] 8320
$ find . -name test.c -print &
[2] 8325
$ jobs
[1] + Running ( sleep 100; echo done )
[2] - Running find . -name test.c –print
$ fg %작업번호
$ fg %1
( sleep 100; echo done )
후면처리 입출력
$ find . -name test.c -print > find.txt &
$ find . -name test.c -print | mail chang &
$ wc < inputfile &
: 실행중인 프로그램을 프로세스 라고 부른다.
각 프로세스는 고유한 pid를 갖는다.
ps 명령어를 사용하여, 나의 프로세스들을 볼 수 있다.
$ ps
PID TTY TIME CMD
8695 pts/3 00:00:00 csh
8720 pts/3 00:00:00 ps
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
chang 8695 0.0 0.0 5252 1728 pts/3 Ss 11:12 0:00 -csh
chang 8793 0.0 0.0 4252 940 pts/3 R+ 11:15 0:00 ps u
: 프로세스를 강제적으로 종료시킴
$ kill 프로세스번호
$ kill $작업번호
ex)
$ kill 8320 혹은
$ kill %1
-> [1] Terminated ( sleep 100; echo done )