Kernel : 하드웨어관리. 기계어사용.
Shell : ‘사람(자연어) – Shell(번역) – Kernel(기계어)’ 명령어 해석기.
– Shell 종류 : Bourne(기본), C, Korn(유닉스에서 가장 많이 씀), Bash(리눅스용 쉘), …
GUI에서 터미널을 실행하면, 가장 처음 나오는 것이 Bourne쉘이다.
# _
Bourne Shell에서 bash 입력 후, bash쉘을 사용 할 수 있다.
# bash
bash-2.05# _
사용후, 나올때는 exit를 입력한다.
bash-2.05# exit
# _
터미널을 끌때도, exit를 입력한다.
# exit
rlogin이나 ssh등을 이용해 다른 시스템에 접속 후 나올때도 exit명령어를 입력한다.
Directory tree : 디렉토리와 파일로 구성된 구조.
/ : 루트 (하위의 ‘/’는 딜리미터(Delimiters))
/export/home : 윈도우의 Documents and Settings, 리눅스의 /home
/opt : 윈도우의 Program Files
/usr : 윈도우의 WINDOWS
/etc : 윈도우의 제어판
/dev : 윈도우의 장치관리자
Path name(경로)
Absolute path name : 절대경로
항상 ‘/’로 시작.
아래를 입력하면 /test/a/b/c 디렉토리로 이동한다.
cd /test/a/b/c
Relative path name : 상대경로, 기준은 현재디렉토리
‘./’ 혹은 ‘../’로 시작.
현위치가 /test/a/b/c 디렉토리일 경우, 상위디렉토리인 /test/a/b 로 이동한다.
cd ..
파일과 디렉토리 이름 설정시 주의사항
- 이름은 최대 255자.
- Alphabet, numeric, hyphen(-), underscore(_), period(.)만을 사용하는 것이 좋다.
- 대문자와 소문자는 각기 다른 단어로 인식되므로, 소문자로 항상 작성하길 추천.
- *(asterisks), &(ampersands), |(pipes), “”(quotes), $(dollar signs) 와 ‘스페이스’ 는 사용하지 않는 것이 좋다.
- .(period)으로 시작하는 파일은 히든파일이다.
- 윈도우와 달리 확장자의 개념이 없다.
현재디렉토리표시(pwd = print working directory)
pwd를 입력하면, 현재 디렉토리의 위치가 표시된다.
pwd
/test/a/b
cd ..
pwd
/test/a
cd /test/a/b/c
pwd
/test/a/b/c
ls : 디렉토리 내용 표시
ls : 현재 디렉토리 하위 파일리스트를 보여준다.
ls -a : 숨김파일포함 모든파일의 리스트를 보여준다.
ls -l : 상세정보를 포함하여 보여준다.(파일, 디렉토리 구분에 용이하다.)
bash-2.05# ls
a aa cc
bash-2.05# ls -a
. .. .a a aa cc
bash-2.05# la -l
총 —-
drwxr-xr-x 3 root other 512 4월 30일 11:00 a
-rw-r–r– 1 root other 9612 4월 30일 11:25 aa
-rw-r–r– 1 root other 3331332 4월 30일 11:27 cc
ls -al : 모든파일+상세정보.(= ls -la)
bash-2.05# la -al
총 —-
drwxr-xr-x 3 root other 512 4월 30일 11:23 .
drwxr-xr-x 3 root other 512 4월 30일 10:59 ..
-rw-r–r– 1 root other 0 4월 30일 11:25 .a
drwxr-xr-x 3 root other 512 4월 30일 11:00 a
-rw-r–r– 1 root other 9612 4월 30일 11:25 aa
-rw-r–r– 1 root other 3331332 4월 30일 11:27 cc
bash-2.05# _
ls -lh : 상세정보의 파일용량단위를 K, M 등의 단위로 보여준다.
bash-2.05# ls -lh
총 —-
drwxr-xr-x 3 root other 512 4월 30일 11:23 .
drwxr-xr-x 3 root other 512 4월 30일 10:59 ..
-rw-r–r– 1 root other 0 4월 30일 11:25 .a
drwxr-xr-x 3 root other 512 4월 30일 11:00 a
-rw-r–r– 1 root other 9.4K 4월 30일 11:25 aa
-rw-r–r– 1 root other 3.2M 4월 30일 11:27 cc
bash-2.05# _
ls -r : 리버스. 출력순서가 기존과 반대다.
bash-2.05# ls -r
cc aa a
bash-2.05# ls -lr
총 —-
-rw-r–r– 1 root other 3.2M 4월 30일 11:27 cc
-rw-r–r– 1 root other 9.4K 4월 30일 11:25 aa
drwxr-xr-x 3 root other 512 4월 30일 11:00 a
bash-2.05# _
ls -ld : 그 디렉토리의 경로만을 보여준다.
ls -R : 하위 디렉토리의 내용까지 보여준다.(하위의 파일과 디렉토리가 많을경우 비추천.)
bash-2.05# ls -R
.:
a aa cc
./a:
b
./a/b:
bash-2.05# ls -lR
.:
총 —-
drwxr-xr-x 3 root other 512 4월 30일 11:00 a
-rw-r–r– 1 root other 9612 4월 30일 11:25 aa
-rw-r–r– 1 root other 3331332 4월 30일 11:27 cc
./a:
총 2
drwxr-xr-x 3 root other 512 4월 30일 11:00 b
./a/b:
총 0
bash-2.05# _
다른 경로의 ls출력은 명령어 뒤에 해당 경로를 적는다.
bash-2.05# pwd
/
bash-2.05# ls -l /test
총 —-
drwxr-xr-x 3 root other 512 4월 30일 11:00 a
-rw-r–r– 1 root other 9612 4월 30일 11:25 aa
-rw-r–r– 1 root other 3331332 4월 30일 11:27 cc
bash-2.05# _
ls명령어 출력물, 읽는 법.
bash-2.05# ls -l
drwxr-xr-x 5 user1 staff 512 Feb 22 14:51 dir1
-rw-r–r– 1 user1 staff 0 Feb 22 14:51 file
bash-2.05# _
– 맨처음나오는 것이 File type, Permissions.
– d 또는 _ 는 디렉토리이냐 파일이냐 표시.
– 그뒤로 붙는 것들이 파일퍼미션(3개씩 구성되며, 오너, 그룹, 아더 순).
– 파일퍼미미션 rwx는 각각 읽기 쓰기 실행하기 를 의미.
– 두번째 숫자가 링크 카운트.
– 세번째 user1이 오너.
– 네번째 staff가 그룹.
– Feb 22 14:51 은 마지막 수정시간 (Last modification date and time)
– 마지막은 파일이름. 디렉토리와 파일 구분안되니 주의(맨앞 d 와 _ 로 구분)
mkdir : 디렉토리 만들기
mkdir /test : 루트 밑에 test라는 디렉토리를 만든다.
mkdir /test/a/b/c/d : /test/a/b/c까지 이미 존재하여야 디렉토리생성이 된다.
mkdir -p /test/a/b/c/d : 하위 디렉토리가 존재하지 않아도, 한방에 생성한다.
rmdir : 디렉토리 지우기
rmdir /test: 루트 밑에 test디렉토리를 삭제한다. /test에 내용이 존재할 경우, 삭제되지 않는다.
rm -r /test : test 하위의 파일 및 디렉토리 모두 한방에 삭제한다.(주의)
rm -ir /test : -i를 붙이면, 삭제할 것인가를 물어본다.(항상 -i를 붙이는 연습)
쉘에서의 특수문자
~ (Tilde) : 홈디렉토리(/export/home/)의 유저로 바로가기(cd ~/usr1)
* (Asterisk) : 히든파일제외 모든 것. (자릿수상관없음)
? (Question) : ?한개당 한자리를 의미.
[] (Square Brackets) : 한문자를 치환한다.
[abd] : a또는 b또는 d
[A-Z] : A또는 B또는.. Z
[0-9] : 0또는 1또는.. 9
ls -l [a]* : a* 에 해당하는 모든 파일및 디렉토리 출력
ls -l [acd] : a또는 c또는 d인 파일 출력
ls -l [a-z] : a또는 b또는 … z출력
<, > (Redirect) :
< : 표준입력장치 재지정(표준은 키보드)
> : 표준출력장치 재지정(표준은 모니터)
>> : 지정파일에 추가시 내용밑에 추가로 적힘.
ls -a /test > a.txt : ls -a /test 출력물이 모니터가 아닌 a.txt에 출력저장됨. 기존 a.txt가 공파일이 아닐경우, 기존내용은 삭제되고 새로운 내용이 저장됨.
ls -a /test >> a.txt : 기존 a.txt의 내용 밑에 추가로 저장됨.
| (Pipe) : 앞의 명령어를 실행한 후, 뒤의 명령어를 실행.
a|b|c : a의 결과값을 b에게주고, b의 결과값을 c에게 준다. c가 최종작업.
a;b;c : a와 b와 c 따로 작업한다.(상위작업성공여부 상관없음)
a&&b&&c : a작업이 성공하면, b작업실행. b작업이 성공하면, c작업실행.
file : file abc라 치면 abc라는 파일의 파일타입을 화면에 보여준다.
cat 파일이름 : 파일이름에 해당하는 파일의 내용을 표시. 내용이 장문일경우 상단이 지나가버리므로, 단문의 내용을 표시하기에 적합하다.
cat > 새로운파일 : 새로운파일을 만들어 입력가능. Ctrl+D로 입력종료.
cat 파일1 파일2 > 새파일 : 파일1과 파일2의 내용을 합쳐 새파일에 작성.
cat /dev/null > 파일 : 파일의 용량을 0으로 변경. 내용전체 삭제됨.
more 파일이름 : 장문의 내용을 볼때 사용한다.
spacebar : 다음화면
return : 다음라인
b : 이전화면
f : 다음화면
h : HELP
q : 종료
/검색어 : 검색
n : 다음 검색
tail : 파일의 마지막 10라인을 표시한다.(로그기록을 볼때 자주씀)
tail -f : 실시간으로 파일의 변경내용이 출력됨.
wc : 워드카운트, 파일에 포함된 [라인수, 단어수, 문자수] 출력
-l : 라인수 표시, -w : 단어수 표시, -c : byte수 표시, -m 문자수 표시
cp : 파일이나 디렉토리 복사
cp 옵션 원본 복사본
cp a b : a를 복사하여 b를 만들라.
cp -i a b : b가 존재할경우, 덮어쓸까요? 하고 물어본다
cp -r :디렉토리, -r이 없을경우 디렉토리 안옮김
cp -p : 속성까지 복사, 시간까지 같아짐.
리눅스에서는 -a : 전부옮김(파일+디렉토리)
cp는 디렉토리가 없으면 복사할 수 없다.
/test2가 존재하는 상태에서 cp a /test2를 입력하면, a라는 파일은 /test2/a 의 위치로 복사되지만, /test3의 사례와 같이, 디렉토리가 존재하지 않는다면 /test3 이라는 파일명으로 복사가 된다.
mv : 파일이나 디렉토리 옮김
mv -i :물어봄
mv -f :디렉토리
디렉토리가 존재하지 않는다면 이동되지 않는다.
/test2 디렉토리가 존재하지 않는 상태에서, mv b /test2를 입력하게 되면, 현재 폴더의 b라는 파일이 루트의 test2라는 파일로 변환된다. mv c /test3/의 사례와 같이, 딜리미터를 달았다 할지라도, mv명령어는 디렉토리를 생성하지않기 때문에, 루트아래의 test3이라는 파일로 변환된다.
rm : 파일이나 디렉토리 삭제
rm -i : 지울까요?
rm -r : 디렉토리까지 삭제
rm * : 디렉토리 제외 파일만 삭제시.
rm *.txt : 모든 .txt파일을 삭제한다.(-r명령어가 빠졌으므로 디렉토리 제외)
rm -r *.txt : 모든 .txt파일 및 디렉토리 삭제.
touch : 파일 껍데기만 만들기
touch -t 월일시간분 :12190815 : 시간수정
mkfile -n 10m ab.txt : 10메가짜리 ab.txt를 생성