반응형

리눅스명령어
가장먼저 리눅스 명령어를 배우도록 하겠습니다. 여러분들은 빨리 APM설치후 내서버를 운영하고 싶을것이다.
땍~~ 리눅스 기본 명령오도 모르면서 그런 생각을 했다면 반성하세요. 명령어 프린트해서 3일정도 공부하고 다시오길 바랍니다.


Magic SysRq Key

리눅스 시스템의 이상이나, 오동작으로 시스템의 키보드 입력이 제대로 되지 않을때
커널 옵션의 매직키를 이용하여 안전하게 재부팅 할수 있는 커널 옵션 입니다.
실제로 오라클이나 상용 서비스 시스템의 경우 무작정 파워를 리셋 해버리다 보면
데이터 손실 혹은 파일시스템 체크에 시간이 많이 걸리는 부분이 사라집니다.

커널 컴파일이 가능하시면 커널 옵션중 맨 마지막에
kernel hacking 옵션 중 Magic SysRq Key 를 부분을 * ->체크 해 주시거나

커널 컴파일이 어려우신 분은 셀 상에서 아래와 같이 한번 실행 해 주시면 되고
향후 부팅시에도 계속적으로 반영 되고자 하신다면 rc.local 파일이나 rc.sysinit 같은 파일에 등록해 주시면 됩니다.
#echo 1 > /proc/sys/kernel/sysrq

동작 법은

ALT + Print Screen + S => SYNC
ALT + Print Screen + E => term sygnal
ALT + print screen + U => umount all
ALT + print screen + B => boot
주요 명령어
※ 압축/해제
tar - 여러 파일 묶기 또는 묶긴 파일 풀기
tar cpvfz /home/aaa/aaa.tar.gz .
www 안의 내용을 모두 압축시 www 안에서 압축을 tar cpvfz aaa.tar.gz . 이런식으로 해주면
압축끝날쯤에 압축되고 있는 파일을 또압축할라고해서 exit delayed from previous errors 이런 에러가 납니다.
상위 디렉토리에서 tar cpvzf a.tar.gz ./www<-여기서 www란 압축될 디렉토리명입니다.>
이렇게 해주면 문제없이 www 디렉토리 전체를 압축하실 수 있습니다. 역시나 에러 나시는분들... 설명이 잘못된게 아닙니다.
nobody 권한은 압축할 권한이 없기때문에 에러가나는것입니다. nobody 껀 지울수도없고 삭제도못합니다.
퍼미션이 777 아닌이상. 그래서 제로보드가 사용하기가 좀 불편하죠 제로보드에는 nobody 권한 파일이 몇개 있는데 그것때문에 디렉토리를 지우지도 못하고 압축도 못하고 관리자에게 해달라고 해야하져

※ 복사
cp [옵션] [원본파일명] [목적 파일명 / 디렉토리명]

옵션
-i 파일 복사시 동일 파일명이 있을시에 사용자에게 덮어 쓸 것인지를 물어봄
-f 동일파일명 발생시에도 모두 강제적으로 복사함
-p 원본 파일의 시간 및 소유 권한 보존
-r 포함된 자식 디렉토리까지 모두 복사

du - disk used : 디스크 사용량 보기
df - disk free: 디스크의 남은 용량 보기

date - 시스템 시간 보기나 지정하기
chgrp - 파일의 사용자 그룹 바꾸기
chmod - 파일의 접근 권한 바꾸기
find - 파일 찾기
ftp - 파일 전송 프로그램
kill - 프로세스 죽이기 - "마누라 죽이기"와 상관없음 :-)
last - 사용자가 마지막 접속 상태를 보여줌
ls - 디렉토리 내용 보기 - : 파일 시스템 상의 파일을 목록을 보여준다.
문법
- ls [ -aCxdlstucriFR ][ 파일명(들) ]

옵션
-a : 도트로 시작되는 이름을 가진 파일명도 전부 보여준다.
-C : 가로 순서로 나열하여 출력한다.
-x : 세로 순서로 나열하여 출력한다.
-d : 현재 디렉토리에 대한 정보를 출력한다.
-l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.
-s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 보여준다.
-t : 파일 갱신일 순서대로 정렬한다.
-u : 엑세스(access)한 날짜 순서대로 정렬한다.
-c : inode가 마지막 바뀐 시간 순서대로 정렬한다.
-r : 정렬된 순서의 역으로 출력한다.
-i : 파일의 inode 번호를 보여준다.
-F : 파일의 특성을 쉽게 알 수 있는 문자를 나타낸다. 는 실행 가능한 파일을, /는 디렉토리 이름을 의미한다. @는 심볼릭 링크를 나타내고, =는 소켓(socket)을 나타낸다. 하지만 여러분의 리눅스는 기본적으로 이러한 특성을 보여줄 것이다.
-R : 현 디렉토리의 내용은 물론이고 서브 디렉토리의 내용까지 전부 보여준다.

설명
-l 옵션을 사용하여 볼 수 있는 정보 중 권한(permission) 정보 앞에 있는 파일 형태에 대한 기호는 다음과 같다.

- - 일반 파일
- d 디렉토리
- b 디스크의 같은 블록 형태의 장치
- c 터미널과 같은 문자 형태의 장치
- p 이름붙여진 파이프(pipe)
- s 세마포어(semaphore)
- m 공유메모리(Shared memory)

사용예
- $ ls -la /root

mcopy
: MSDOS 파일 시스템으로 혹은 DOS 파일 시스템의 파일을 복사한다.

문법
- mcopy [ -tnvm ] 파일명1 파일명2

옵션
-t : 텍스트 파일 복사시 CR/LF 문자를 \n 하나로 바꾼다.
-n : 파일을 덮어쓰게 되는 경우에도 경고하지 않는다.
-v : 자세히 안내문을 보여준다.
-m : 파일 갱신 시간을 보존한다.

사용예
- $ mcopy -t letter a:letter.txt


mkdir - 디렉토리 만들기
ps - 현재 프로세스 정보 보기
make - 실행 파일을 만들거나, 특정 작업 파일을 만들 때 사용하는 도구
more, page - 텍스트 파일 보기 명령
more
한 화면씩 츨력을 보여주는 유틸리티, 한 번에 전체적으로 볼 수 없는 파일은 이것을 사용하여 스크롤을 제어할 수 있다.

문법
- more [ -ncdflspu ][ 줄번호 ][ 파일이름(들) ]

옵션
-n : 여기서 n은 숫자를 의미하여, 숫자는 출력 윈도우의 행수를 지정한다.
-c : 위에서부터 한 행씩 지운 후 한 행씩 출력한다. 보통은 화면 전체를 지운 후 각 행을 출력하기 시작한다. 특정한 터미널을 위해 사용한다.
-d : 스페이스나 q 키를 누르라는 프롬프트를 출력한다.
-f : 화면의 행이 아닌 논리적인 행 수를 계산한다. 보통은 긴 칼럼의 행은 화면에서 행바꿈을 하여 새로운 행으로 계산된다. -f 옵션을 사용하면 이러한 행은 계산하지 않는다. -s : 여러 개의 빈 공백행은 하나로 취급한다.
-p : 스크롤하지 않는다. 대신 화면을 지우고 출력한다.
-u : 밑줄 차기를 금지한다.

설명
more는 BSD에 있었으나 지금은 System V 등에도 있으며 리눅스는 물론이고 대부분의 유닉스가 기본적으로 가지고 있는 유틸리티이다. 기본적으로 more는 한 번에 한 페이지 단위로 파일의 내용을 출력한다.

한 화면만큼 내용을 출력한 후 화면 하단에 ‘-More-' 라는 메시지를 출력하고는 잠시 출력을 중단한다. 다시 다음 페이지로 진행하기를 원한다면 스페이스바를 누른다. 또는 중단하기를 원한다면 q 키를 눌러라. 여러 개의 파일 내용을 연속적으로 보고자 한다면 원하는 여러 개의 파일 이름을 나열하면 된다.

more 명령은 몇 가지 명령을 인식할 수 있다. 스페이스 바를 누르는 것을 포함해서 다음과 같은 조작을 하는 것이 가능하다.

- : 한 줄만 스크롤된다.
- D : 반 페이지만 뒤로 이동한다.
- : 한 페이지만 뒤로 이동한다.
- B : 한 페이지 앞으로 이동한다.
- H : 도움말을 제공한다.
- V : vi 에디터를 부른다. 에디터를 종료하면 원 위치로 돌아간다.

- Q : more 를 종료한다.

사용예
- $ cat document.97 | more

기본적으로 more 명령은 첫 번째 줄 내용부터 출력한다. 하지만 원하는 부분부터 출력을 원한다면 다음과 같은 방법으로 실행할 수 있을 것이다. 다음은 13번째 행부터 출력을 시작한다.
- $ more 13 loveletter.txt

mv - 파일 이동이나, 이름 바꾸기
tail - 파일의 끝 부분 보기
rm, rmidr - 파일, 디렉토리 지우기
w - 현재 누가 접속해 있으며, 무엇을 하고있는지
문법
- w [ 사용자 ]

설명
이 것은 who 명령과 유사한 동작을 한다. 인수로 사용자 ID를 지정한다면 특정 사용자에 대한 정보를 얻을 수 있으며, 인수없이 사용된다면 현재 시스템에 접속한 모든 사용자들의 정보를 자세히 출력한다. 출력 내용의 첫줄에는 시스템 가동 현황을 보여준다.

사용예
- $ w
- 11: 32 am up 4 min, 2 users, load average : 0.00, 0.05, 0.02
- User tty From login@ idle JCPU PCPU what
- root tty1 11:28am w
- blade tty2 11:31am -sh

wall - 모든 사용자에게 알림l
현재 시스템에 로그온되어 있는 모든 사용자들에게 메시지를 보낸다.
문법
- wall [ 파일명 ]
설명
메 시지는 각 사용자의 터미널에 나타나게 된다. 인수로 파일 이름이 주어지지 않으면 표준 입력으로부터 데이터를 받아들이며, ^D로 입력을 종결하고 메시지를 발송한다. 이것을 사용하려면 슈퍼 유저로 로그인되어야 한다. 사용자가 자신의 터미널을 메시지 수신 거부 상태로 만들어 놓더라도 슈퍼 유저는 그것을 무시할 수 있다.
사용예
- $ wall
30 minutes latter, this system will be halted!! ^D
whereis - 찾는 명령의 실행파일, 소스, 맨페이지가 어디 있는지 경로를 보여 줌
which - 명령만 찾음. 등록된 path를 통해서 특정 프로그램을 찾는다.
문법
- which 프로그램
설명
만일 사용자의 path가 매우 긴 경우에 유용하게 사용될 수 있다. find와 유사한 기능이지만 path안에 있는 프로그램을 찾을 때 간단하게 사용된다.
사용예
$ which tetries
지정된 path 안에서 tetries 프로그램을 찾는다.
who - 시스템에 접속되어 있는 사람만 보여줌
문법
- who [ -uTHqs ] [로그온 정보파일 ]
- who am I

옵션
-u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. 기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다.
-H : 헤더 라인을 프린트한다.
-q : 사용자 이름과 카운트가 구분된 목록을 보여줌
whoami - 현재 사용하고 있는 자신이 누군지 보여줌
vi
거의 유닉스 표준이라고 말할 수 있는 풀 스크린 에디터이다. 이것은 유닉스 시스템의 일부라고 말할 수 있으므로 레퍼런스에 포함했다.

문법
- vi [ 파일명(들) ]

설명
이 것은 매우 강력한 기능의 스크린 에디터이다. 메뉴 방식이 아니라 명령 입력 방식이기 때문에 처음 학습이 불편하다는 단점이 있지만 사용법을 알면 매우 빠르게 작업을 수행할 수 있다. vi대한 자세한 내용은 이 책의 앞부분이나 다른 참고 서적을 참조하라.

사용예
- $ vi manual.book ;; vi를 실행 후 manual.book을 읽어들인다.
 
 
==============================================================================
기타명령어
==============================================================================
addbib - 도서목록 형식의 데이터베이스를 만들거나, 확장
apropos - 사용설명서의 키워드 검색
ar - 라이브러리 만들기, 관리
at, batch - 원하는 시간에 원하는 명령을 실해하게 하는 명령
awk - 패턴 검색과 언어 처리
banner - 큰 글자(배너) 만들기
basename - 경로 이름에서 마지막에 있는 이름만 출력
biff - 자신에게 편지가 배달되면 알려주는 명령
bin-mail, binmail - 예전에 사용한 전자우편 프로그램
cal - 달력보기
calendar - 간단한 일정표
cat - 파일 병합과 내용 보기
cb - 간단한 C 프로그램 beautifier(?)
cc - C 컴파일러
cd - 작업 디렉토리 바꾸기
checknr - nroff 또는 troff 입력 파일 검사; 오류를 보여준다
clear - 터미날 화면 깨끗이 하기
cmp - 두 파일을 바이트 단위로 비교
colcrt - troff 파일의 밑줄 속성 문자 처리
comm - 지정 두파일의 줄 단위 비교와 그 처리
compress, uncompress, zcat - 파일 압축관련 유틸리티들
cpio - copy file archives in and out
cpp - C 언어 전처리기
csh - C 문법과 비슷한 쉘 스크립트 문법과 기타 여러 기능이 내장된 쉘
ctags - ex 나 vi 편집기에서 사용될 tag 파일을 만드는 명령
dbx - 소스 수준의 디버거
deroff - nroff, troff, tbl, eqn 관련 내용 지움
diff - 두 파일의 차이점 비교
echo - 인자를 표준 출력으로 출력
ed, red - 기본 줄 편집기
eqn, neqn, checkeq - 수식 표현 포멧 도구
error - 컴파일러 오류 메시지 목록
ex, edit, e - 줄 편집기
expand, unexpand - TAB 문자를 공백문자로 바꿈, 또는 그 반대로
expr - 인자를 수식으로 처리
file - 파일 형식 알아보기
finger - 사용자 정보 알아보기
fmt, fmt_mail - 간단한 문서나, 편지 포멧 도구
fold - 긴 줄 출력 방법 지정
gcore - 실행 중인 프로세스의 core 이미지를 구한다.
gprof - call-graph profile data(?)를 보여줌
grep - 문자열 찾기
groups - 사용자의 그룹을 보여줌
history - 이전 명령 보기
hostname - 현재 시스템 이름을 보여줌
imake - makefile 만드는 프로그램
indent - C 프로그램 소스 파일을 들여쓰기 하는 포멧 도구
install - 파일 설치
join - 관계형 데이터베이스 연산자
ld, ld.so - 링크 편집기, 동적 링크 편집기
leave - 자신의 접속 종료 시간을 알려줌
less - more 명령의 확장
lex - 어휘 분석 프로그램 생성기
lint - C 프로그램 verifier
ln - 파일의 하드, 심벌릭 링크 명령
login - 시스템 접속 명령
look - 시스템 디렉토리나, 정열된 목록에서 단어 찾기
lookbib - 도서목록형 데이타베이스에서 찾기
lorder - 오브젝트 라이브러리의 관계 찾기
lp, cancel - 인쇄 시작, 취소 lpq - 인쇄 작업 상황 보기
lpr - 인쇄
lprm - 인쇄 작업 지우기
mail, Mail - 전자 우편 프로그램
mail
: 전자 우편을 사용하기 위해 mail이라는 명령을 사용한다. System V 같은 계열의 유닉스에서는 mailx라고 하기도 한다. BSD에서는 mail이라고 하며, 당연히 BSD 계열인 리눅스에서도 그렇게 부른다.
문법
- mail [ -Hf ][ 사용자ID ]
옵션
-f : 편지가 수신된 파일을 지정하며, -f 옵션 뒤에 파일 이름을 지정한다.

설명
사용자 ID를 명시되지 않고, 인수없이 mail을 실행하면 수신된 편지를 읽을 수 있다. 편지는 mail 디렉토례 사용자ID 이름으로 만들어진 파일에 저장된다.
man - 온라인 사용자 설명서를 보는 명령
사용예
- $ man telnet
man
: 사용하고자 하는 유닉스 유틸리티에 대한 매뉴얼(manual)을 검색해서 보여준다.

문법
- man [ 장 ] 단어
- man -k 키워드

옵션
-k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든 매뉴얼의 내용을 검색하여 보여준다.

설명
셸 을 사용할 때 어떤 명령의 사용법이 기억나지 않는 경우가 있다. 혹은 매번 사용하던 명령이라도 특수한 옵션이 필요할 때 그 기호나 사용법을 정확히 확인해야 하는 경우가 많이 있다. 물론 참고 서적을 보면 되겠지만 터미널 상에서 필요한 도움말을 언제라도 제공받을 수 있다. 시스템에 내장된 매뉴얼은 빠르게 볼 수 있을 뿐만 아니라 그 내용도 완벽한 것이어서 옵션의 종류 같은 것은 빠진 것이 없다. 만일 온라인 레퍼런스를 모두 종이로 출력한다면 그 분량은 엄청날 것이 틀림없다.

위에서 보인 첫 번째 형식은 매뉴얼의 장 번호를 이름과 함께 명시해서 검색할 수도 있다. 하지만 보통은 그것을 생략하고, 검색하고자 하는 제목만을 인수로 전달해서 사용한다. 그러면 자세한 내용을 볼 수 있을 것이다. 출력된 내용은 화살표 키를 사용해 위아래로 자유로이 스크롤할 수 있다.
mcd
: MSDOS 시스템으로 현재 사용하는 디렉토리 장소를 이동한다.

문법
- mcd dos디렉토리

설명
dos 디렉토리는 슬래쉬나 백 슬래쉬 모두 사용할 수 있으며, MSDOS에서 사용되는 백 슬래쉬(\)나 와일드 카드를 사용하려면 따옴표를 사용하여 셸이 번역하는 것을 미리 막아야 한다.

사용예
- $ mcd a:/dos
mdel
: MSDOS 파일 시스템에서 파일을 제거한다.

문법
- mdel [ -v ] 파일명

옵션
-v : 진행되는 상황을 자세히 보여준다.

사용예
- $ mdel a:/letter.txt

wc
파일내의 단어 수 등의 정보를 출력한다.
문법
- wc [ -cwl ] 파일이름(들)
옵션
-c : 문자(character)의 개수만을 알고 싶을 때 사용한다.
-w : 단어(word)의 개수만을 알고 싶을 대 사용한다.
-I : 행(line)의 숫자를 알고 싶을 때 사용한다. 혹은 개행 문자의 개수를 알고자 할 때 사용될 수도 있다.
설명
wc 라는 이름은 word counter를 의미하는 것이 아닌가 생각한다. 아무런 옵션을 주지 않고서 사용하면 행수, 단어수, 문자수를 모두 검사해서 보고한다. 텍스트 문서 속에서 단어란 공백(space)문자, 탭(tab)문자 그리고 개행(newline)문자에 의해 구분되는 문자들의 집합을 의미한다.
사용예
$ wc sample.txt
11 29 197 sample.txt

wait - 프로세스가 마치기를 기다림
wc - 단어, 줄, 바이트 계산
what - 파일에서 SCCS 버전 정보 알아냄
whatis - 명령의 간단한 설명 보여줌
write - 다른 사용자의 화면에 특정 내용을 알림
xargs - 명령행 인자 처리 명령
xstr - extract strings from C programs to implement shared strings
yacc - yet another compiler-compiler: 파싱(형태소분석) 프로그램 생성기
yes - 항상 yes만 응답하는 명령
zcat - 압축 파일 내용보기


mdir
: MSDOS 디렉토리의 목록을 보여준다. MSDOS 프롬프트 상의 dir과 같은 동작을 한다.

문법
- mdir [ -w ][파일명]

옵션
-w : 파일 크기나 생성 날짜는 제외하고 넓은 형식으로 보여준다.

사용예
- $ mdir a:/dos

mesg
: 다른 터미널의 사용자가 당신에게 write 명령 등으로 메시지를 보낼 수 있는가 아닌가를 결정한다.

문법
- mesg [ y or n ]

옵션
당 신의 터미널이 다른 사용자의 메시지를 받기 원한다면 y, 그렇지 않다면 n을 선택한다. 옵션을 선택하지 않으면 mesg는 현재 터미널의 메시지 수신 가능 여부를 확인하여 알려준다. 보통 기본적으로 터미널은 메시지를 수신할 수 있다.

사용예
- $ mesg ,,다른 이의 메시지를 수신할 수 있는지 알려준다.
- $ mesg n ,, 당신의 터미널이 메시지 수신을 거부하도록 한다.

mkdir
: 디렉토리를 새로 만들기 위해 mkdir 명령을 사용한다.

문법
- mkdir [ -m mode ][ -p ] directory

옵션
-m : 디렉토리를 만들 때 같이 사용하여 사용자 권한을 줄 수 있다.
-p : 만들 디렉토리의 상위 디렉토리까지 한꺼번에 만든다.

사용예
- $ mkdir blade.seoul ,,현재 디렉토리의 하위 디렉토리 작성
- $ cd blade.seoul
- $ mkdir -p blade/books

이것은 현재 디렉토리에서 하위 디렉토리 blade를 먼저 만든 후에 다시 그 하위 디렉토리로 books를 만든다.

mount
: 다른 파티션의 디스크나 물리적으로 다른 기억 장치를 파일 시스템으로 연결한다.

문법
- mount [ -vwrnta ] 장치명 디렉토리

옵션
-v : 마운트 작업을 수행하면서 자세한 정보를 출력한다.
-w : 마운트되는 파일 시스템을 읽기와 쓰기가 가능하도록 한다.
-r : 마운트되는 파일 시스템이 읽기 동작만 가능하도록 한다.
-n : 마운트 정보가 기록되는 /etc/rntab 파일에 정보를 기록하지 않는다.
-a : /etc/fstab 파일에 있는 모든 파일 시스템을 마운트하도록 한다.
-t 형태 : 마운트되는 파일 시스템의 형태를 지정한다.

설명
마 운트 개념은 다른 PC용 오퍼레이팅 시스템에 비해 매우 우수한 개념이라 할 수 있다. 사용자는 다른 오퍼레이팅 시스템도 마운트하여 접근할 수 있다. -t 옵션을 사용하여 그 형식을 지정하면 대부분이 형식이 가능하다. -t 옵션으로 지정할 수 있는 형태는 msdos, hpfs, minix, ext, ext2, proc, nfs, umsdos, sysv 등으로 사용자가 원하는 모든 파일 시스템이 접근할 수 있을 것이다. 현재 시스템에 마운트된 장치의 정보는 /etc/mtab 파일에 저장되어 있다.

사용예
다 음의 사용예는 다른 파티션 영역을 차지하고 있는 DOS 파일 시스템을 마운트하는 것이다. 사실, 이것은 필자가 리눅스를 설치하고 나서 실제로 했던 작업을 그대로 적어놓은 것이다. /dev/hda1 이 의미하는 바에 대해서는 본문을 참조하라(물론 이것은 독자가 설치한 방식에 따라서 다를 것이다.) 하드 디스크의 이 영역에는 Windows 95가 설치되어 있는데, 이것도 DOS 파일 시스템 형식으로 접근이 가능하며 파일의 읽기와 쓰기가 자유롭다.
- $ mount -t msdos /dev/hda1 /mswin

mv
: 파일의 위치를 이동하거나 파일의 이름을 바꾸어준다.

문법
- mv [ -fi ] 파일명1 파일명2
- mv [ -fi ] 파일명(들) 디렉토리명

옵션
-f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.
-i : 파일을 덮어쓰기 전에 사용자에게 확인한다.

설명
기존에 있던 파일을 원치않게 잃어버리는 수가 있기 때문에 확실하지 않다면 -i 옵션을 사용하는 것을 권한다.

사용예
- $ mv sisap.hong victor.dongki readme.txt ../friend
- $ mv blade.Z ../kimtaihan.Z
- $ mv /home/blade /home/friend

만 일 어떤 파일을 현재의 위치에서 다시 현재의 위치로 이동한다면 어떤일이 일어날까 고민할 것 없다. 답은 당연히 ‘아무 일도 일어나지 않는다’ 이다. 이것은 어떤 의미를 가지지 못한다. 하지만 파일 이름을 바꾸면서 현재의 위치로 ‘이동’한다면, 그것은 파일의 ‘이름을 변경’ 하는 것과 같은 효과를 거둘 것이다.

- $ mv sisap.doc LeeKiHong.doc

newgrp
: 현재 그룹 ID를 변경한다.

문법
- newgrp 그룹명

설명
이 명령을 사용하여 다른 특성 그룹들의 파일을 다룰 수 있다. 그룹을 바꾸면 패스워드를 물어오는 프롬프트가 나타난다. 그러면 그에 해당하는 그룹 패스워드를 입력해야 한다.

- No such group : No such file or directory

이것은 당신이 바꾸고자 하는 그룹 이름이 존재하지 않는다는 것이다. 그룹 이름을 잘못 지정하면 이러한 메시지를 볼 수 있을 것이다.

passwd
: 자신의 패스워드를 관리한다.

문법
- passwd [ user ]

설명
passwd 를 부르면서 사용자 이름을 지정하면 그 사용자의 암호를 관리할 수 있다. 물론 이것은 슈퍼 유저만이 할 수 있는 일이다. 암호는 암기하기는 쉬워야 하지만 타인이 추측하기는 어려워야 한다. 보통은 아무 인수없이 명령을 사용하며 암호를 바꿀 것인지 아닌지를 선택할 수 있다.

사용예
- $ passwd

paste
: 하나 혹은 그 이상의 파일로부터 칼럼 형태의 출력을 만든다. 이것은 cut과 함께 사용되는 경우가 많다.

문법
- paste [ -s ][ -d구분문자 ] 파일명(들)

옵션
-s : 각 파일을 순회하면서 paste를 수행한다.
-d구분문자 : 어떠한 문자로 칼럼을 구분하는지 지정한다. 기본값은 탭 문자이다.

설명
paste를 사용할 때 서로 붙여지는 파일명을 지정하는데, 이때 하이픈(-)으로 생략하면 표준 입력을 받아들이겠다는 뜻이 된다. 또한 paste의 출력은 항상 표준출력 장치로 나아간다.

사용예
- $ paste -d' ' namelist.tmp /home/data.tmp
두 개의 파일을 칼럼으로 합치고 그것을 화면으로 출력한다.

ps
: 유닉스는 동시에 여러 개의 프로세서가 동작되기 때문에 사용자가 그것들의 목록과 상태를 점검할 필요가 있다. ps라는 이름은 processor status를 의미한다. ps를 사용하여 프로세서들의 상태를 점검할 수 있다.

문법
- ps [ -lujsvmaxScewhm ]
- ps [ -txx ]

옵션
-l : 자세한 형태의 정보를 출력한다.
-u : 각 프로세서의 사용자 이름과 시작 시간을 보여준다.
-j : 작업 중심 형태로 출력한다.
-s : 시그널 중심 형태로 출력한다.
-v : 가상 메모리 중심 형태로 출력한다.
-m : 메모리 정보를 출력한다.
-a : 다른 사용자들의 프로세서도 보여준다.
-x : 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다. 유닉스 시 스템은 사용자가 로그아웃하고 난 후에도 임의의 프로세서가 계속 동작하게 할 수 있다. 그러면 그 프로세서는 자신을 실행시킨 셸이 없이도 계속 자신의 일을 수행한다. 이러한 프로세서는 일반적인 ps 명령으로 확인할 수 없다. 이때 -x 옵션을 사용하면 자신의 터미널이 없는 프로세서들을 확인할 수 있다.
-S : 차일드(child) CPU 시간과 메모리 페이지 결함(fault) 정보를 추가 한다.
-c : 커널 task_structure로 부터 명령 이름을 보여준다.
-e : 환경을 보여준다.
-w : 긴(wide) 형태로 출력한다. 한 행 안에 출력이 잘리지 않는다.
-h : 헤더를 출력하지 않는다.
-r : 현재 실행중인 프로세서를 보여준다.
-n : USER 와 WCHAN 을 위해 수치 출력을 지원한다.

설명
기 본적으로 ps는 현재 명령이 내려지는 셸에서 만들어진 프로세서들의 목록만을 보여준다. ps는 자신이 실행되는 당시, 현재의 셸에 의해서 수행된 프로세서들을 검사하고 보고한다는 점을 생각하자. 그러면 ps의 출력결과 리스트에 ps 자신이 있는 이유를 쉽게 이해할 수 있을 것이다. 각 필드의 의미는 다음과 같다.

- COMMAND : 명령어의 이름
- PID : 프로세서 ID, 각 프로세서를 구분하기 위한 고유의 ID
- RSS : 프로세서에 의해 사용되는 실제 메모리의 용량(K byte 단위)
- USER : 프로세서를 실행시킨 소유자의 계정을 보여준다.
- SZ : 프로세서의 자료와 스텍 크기의 (K byte 단위)
- TIME : 현재까지 사용된 CPU의 시간(분,초)
- TT : 프로세서의 제어 터미널(t3=/dev/tty3)
- %CPU : 마지막 분동안 프로세서가 사용한 CPU시간의 백분율
- START : 프로세서가 시작된 시간
- STAT : 프로세서의 상태

이중 STAT 필드는 몇 가지의 부호를 사용해서 프로세서의 상태를 표시하고 있다. 그것들을 정리해 보면 다음과 같다.

- P : 수행 가능/수행중
- T : 일시 정지
- D : 디스크 입출력 대기 같은 인터럽트할 수 없는 대기상태
- S : 20초 미만의 짧게 잠듦(sleep)
- I : 20초 이상의 길게 잠듦
- Z : 좀비(zombi) 프로세서

좀비(zomb) 상태라는 것은 프로세서가 사라질 때 시그널 처리의 문제로 완전히 소멸되지 못한 상태를 말한다.

사용예
$ ps

pwd
: 현재 작업하는 디렉토리를 알기 위해서 pwd 명령을 사용한다.

문법
- pwd

설명
현 디렉토리(current directory)가 무엇인지 보여준다.

사용예
- $ pwd
- /home/blade

reboot
: 시스템을 리부팅한다.

문법
- reboot [ -q ]

옵션
-q : 현재의 프로세서들을 종료시키지 않고, 부팅 동작만을 수행한다. 이 옵션을 사용하면 더 빠르게 리부팅할 수 있다. 다시 부팅한 기록은 로그 파일인 /var/adm/wtmp에 기록된다.

설명
이것은 모든 사용자 프로세서를 종료시키고 디스크로부터 리눅스를 다시 부팅한다. 시스템을 리부팅하기 위해 shutdown 명령의 -r 옵션을 사용할 수도 있지만 그보다 reboot 명령을 사용하는 것이 더 편리해 보인다.

사용예
- $ reboot

rcp
컴퓨터 사이에서 파일을 복사할 때 사용된다. “remote cp"에서 이름이 유래한다.

문법
- rcp [ -rpkx ] 파일명1 파일명2
- rcp [ -rpkx ] 파일명들 디렉토리

옵션
-r : 하위 디렉토리까지 재귀적으로 모두 복사한다.
-p : 파일의 시간과 모드를 보존한다.
-k : kerberos ticktets을 요구한다.
-x : 복사되는 모든 데이터에 암호화 과정을 거친다.

설명
원격 파일과 원격 호스트 이름은 콜론을 사용하여 구분한다. 마지막 인수가 디렉토리 이름이라면 지정된 모든 파일들은 그곳으로 복사된다.

사용예
- $ rcp victor.com:/root/* /home/victorfile
- 원격 호스트 victor.com의 /root에 있는 모든 파일들을 자신의 컴퓨터에 있는 디렉- 토리 /home/vitorfile로 복사한다.

rm
파일을 지우는 명령이다. 이것은 remove의 의미를 가진 이름임을 기억하라.

문법
- rm [ -firv ] 파일명

옵션
-f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 성가신 작업을 하지 않고서도 강제로 파일을 지울 수 있다.
-i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다.
-r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.
-v : 파일을 지우기 전에 파일의 이름을 나타내준다.

설명
rm 명령의 동작은 정확히 말해서 ‘파일의 레이블을 삭제한다’라고 말할 수 있다. 단순히 파일을 지운다고 말하는 것은 틀릴 수도 있는 것이다. 왜냐하면 유닉스 상에서는 하나의 파일이 여러 다른 디렉토리에서 동시에 여러개의 이름을 가질 수 있기 때문이다. 만일 어떤 파일이 세 개의 레이블을 가지고 있다면 rm 명령으로 하나의 레이블을 지우는 것은 그 파일 자체를 지우지는 못한다. 다른 두 개의 파일 이름이 아직 유효하기 때문이다. 다시 두 번째 레이블을 지우더라도 파일은 하나의 파일 이름을 가지고 살아있으며, 마지막 하나의 파일 이름이 제거될 때에만 파일은 지워지는 것이다.

사용예
- $ rm blade.Z
- $ rm report.txt tempfile object.mainroutine hello.java
- $ rm -r blade ,, blade와 하위 디렉토리 파일 모두를 제거

rmdir
원하는 디렉토리를 제거한다.

문법
- rmdir [ -p ] 디렉토리

옵션
-p : mkdir의 -p 옵션의 반대 동작으로 하위 디렉토리와 그 상위 디렉토리 모두를 제거할 수 있다. 이때 모든 디렉토리는 비워져 있어야 한다. 수행 후 결과가 어떻게 되었는지를 보여준다.

설명
제거하기를 원하는 디렉토리는 미리 모든 파일들이 비워져 있어야 한다. 이러한 작업을 편리하게 하기 위해서는 파일을 지우는 명령인 rm 명령을 -r 옵션과 사용하면 된다.

사용예
- $ rmdir -p sisap/books
디렉토리가 비워져 있다면 books를 제거한 후 sisap을 제거한다.

shutdown
시스템을 종료할 때 일반적으로 사용되는 명령이다.

문법
- shutdown [ -thnrfck ] 시간 [ 메시지 ]
- shutdown now

옵션
-t n : t 옵션 뒤에 n초를 명시해서, 경고 메시지를 보낸 후 n초 후에 kill 시그널을 보낸다.
-h : shutdown시 halt를 실행하게 한다.
-n : 디스크 동기화 동작의 수행을 금지한다. 이런 옵션은 보통 사용할 일이 없을 것이다.
-r : 시스템 종료를 완료하고 나서 다시 부팅 과정을 수행한다.
-f : 빠른 리부팅을 한다. 리부팅시 파일 시스템 검사를 하지 않는다.
-c : 이미 예약되어 있는 shutdown을 취소한다. 이 옵션을 준다면 시간 인수는 줄 수 없다. 하지만 메시지는 사용자들에게 줄 수 있다.
-k : 모든 동작을 제대로 수행하지만 시스템을 종료할 시간이 되면 아무 것도 하지 않는다. 보는 사람으로 하여금 ‘절로 누구 놀리나’하는 말이 나오게 한다. k는 ‘just kidding'의 의미라고 한다.

설명
요 즘은 컴퓨터를 끄기 전에 반드시 shutdown 절차를 거쳐서 시스템을 정리해야 한다는 것이 상식으로 통한다. 8비트 컴퓨터를 사용할 때는 그런 복잡한 것은 생각하지 않아도 문제 없었는데 말이다. 하드웨어와 스위치를 내리는 데에 소프트웨어의 허락을 받아야만 하는 것이다. shutdown 명령은 미리 사용자들에게 경고만을 보내고, 정해진 시간에 시스템을 종료한다. 시간은 24시간 단위의 표기법을 사용하며 종료 5분전에는 시스템에 로그인이 금지된다. 시스템 종료 시간이 가까워짐에 따라 각 사용자들에게 메시지를 주기적으로 출력하여 경고를 보낸다.

사용예
다음은 밤 11시 30분에 시스템을 종료하도록 예약하며 사용자들에게 그것을 알린다.
- $ shutdown 23:30 System will be down at 11:30 PM!!
시간을 명시할 때 now를 사용하면 곧바로 시스템을 종료한다. 리눅스 사용자들은 컴퓨터를 끄기 전에 이렇게 하면 간단하다. 혼자 사용하고 있을 때 번거로운 과정은 필요 없을 테니까 말이다.

sleep
sleep이라는 명령은 이름 그대로 잠자는 일 외에는 하는 일이 없다.

문법
- sleep 시간

설명
시 간은 초 단위의 정수 숫자이다. 전면(foreground)에서 수행된다면 사용자의 터미널은 정해진 시간만큼 잠을 잘 것이다. 물론 정해진 시간에 즉각 일어나니 안심해라. 원한다면 ^C로 흔들어 깨울 수도 있다. sleep을 사용하는 가장 좋은 예는 3장에서 본 것과 같이 다중 작업을 시행할 때이다.

다음과 같은 확인자를 사용한다면 다른 시간 단위를 사용할 수 있다.

S 초 m 분
h 시간 d 날짜

sort
파일내의 단어 순서를 행
adduser 또는 useradd---사용자 추가

# adduser thkim
thkim란 아이디를 만든다.
# adduser -p world -g class -s '/bin/bash' -d '/home/thkim' thkim
비밀번호가 world이고 그룹은 class 쉘은 bash 홈디렉토리는 /home/thkim 인 thkim란 아이디를 만든다.
userdel ---사용자 삭제
# userdel thkim
thkim란 아이디를 삭제한다.
# userdel -r thkim
thkim란 사용자의 홈 디렉토리까지 삭제한다.
passwd ---비밀번호 지정
# passwd thkim
thkim란 아이디에 패스워드를 부여한다.
ls ---파일과 디레토리에 대한 정보를 출력한다.

# ls -al
-l: 파일의 모든 정보 출력
-c: 최근 변경한 시간 순서데로 출력
-d: 디렉토리 명만 출력
-F: 파일의 특성을 출력( /디렉토리 *실행화일)
-a: dot(.)으로 시작하는 파일의 이름을 포함한 모든 내용을 출력
현재 디렉토리의 모든 파일을 상세히 본다.
cd ---디렉토리 사이를 이동한다.[현재 디렉토리 변경]

# cd -
방금 전의 디렉토리로 이동한다

# cd ~
홈 디렉토리로 이동한다

# cd ..
한 단계 위의 디렉토리로 이동한다

# cd /
최상위 디렉토리로 이동한다

# pushd .
현재 디렉토리를 기억한다

# popd
기억된 디렉토리로 이동한다[한 번만 가능]
cp ---파일을 다른 디렉토리로 복사하거나 다른 이름으로 복사한다.

# cp thkim /root
thkim란 파일을 /root 로 복사한다.
mv ---파일을 다른 디렉토리로 이동하거나 파일명을 변경한다.

# mv thkim hoho
thkim란 파일을 hoho로 바꾼다.
# mv thkim /work
thkim란 파일을 /work/로 이동 시킨다.
rm ---파일을 삭제한다.

# rm /root
/root 디렉토리를 지운다 :)
mkdir ---디렉토리를 생성한다.

# mkdir thkim
thkim란 디렉토리를 만든다.
rmdir ---디렉토리를 삭제한다.

# rmdir thkim
thkim란 디렉토리를 지운다

# rm -r tmp
tmp 디렉토리와 모든 내용을 지운다.
man ---지정한 명령어에 대한 설명 또는 도움말을 출력한다.

# man ls
ls에 대한 설명을 본다.
info ---man명령어 보다 자세히 나와 있음

# info ls
ls에 대한 설명을 본다.
more ---지정한 파일의 내용을 한 화면에 출력하면서 잠시 멈춘다.

# more thkim
thkim 파일을 본다
종료는 q
cat ---지정한 파일의 내용을 출력한다.

# cat thkim|more
thkim 파일을 한 화면씩 본다.
grep ---특정 파일내의 지정한 패터[문자열]과 일치하는 행을 출력한다.

# cat thkim|grep thkim
thkim란 파일에 thkim라는 문자열을 찾는다.
chmod ---파일의 접근권한[도스에서의 속성]을 변경한다.

# chmod go-rwx /root or chmod 700 /root
/root 디렉토리에 그룹과 기타 사용자의 읽기 쓰기 실행 권한을 없앤다.
u: 파일 소유자, g: 그룹, o: 기타 사용자, a: 모든 사용자
+: 사용허가부여, -: 사용허가박탈, =: 허가 취소
r: 읽기 허가, w:쓰기 허가, x: 실행 허가
r = 4, w = 2, x = 1
chown ---파일의 소유자를 변경한다.

# chown thkim file
file의 소유권을 thkim로 바꾼다.
df ---사용가능한 디스크의 용량을 출력한다.

# df
사용 가능한 디스크 용량을 출력한다.
du ---지정해준 디렉토리내의 파일이 차지하는 용량을 알아내는 명령어

# du -b /home
/home 디렉토리 밑의 용량을 바이트로 표시한다.

# du -sh /usr
/usr 디렉토리 밑의 용량을 메가바이트 단위로 보여준다.
cfdisk --- 디스크 정보를 출력한다.

# cfdisk
hdparm ---하드 디스크 인터페이스

# hdparm -c3 -d1 /dev/hda
hda드라이브 32bit전송 dma모드를 On 시킨다.
find ---주어진 파일명과 동일한 파일을 찾고, 그 경로를 출력한다.

# find / -name thkim -print
최상위 루트 디렉토리부터 검색하여 검색된 파일을 한 행에 하나씩 표준 출력

# find . -name thkim -print
현제의 작업 디렉토리에서 검색

# find / -size +1000 -print
최상위 루트에서 크기가 1000블록 이상인 파일 검색

# find . -size -1000 -print
현 디렉토리에서 크기가 1000블록 이하인 파일 검색

# find . -mtime +10 -print
10일 이전에 수정된 파일 검색

# find . -mtime -10 exec rm {} \:
10일 이내에 수정한 파일을 검색하여 모두 지운다

# find / -cmin 5 -print


 
Ⅰ. 리눅스
1. 리눅스의 정의
․ 운영체제란 하드웨어와 응용프로그램 사이에서 응용 프로그램을 그 목적에 맞게 수행하도록 하드웨어를 제어하고 그 처리결과를 다시 응용 프로그램으로 보내는 역할.
․ 리눅스는 유닉스타입의 운영체제로 리누스 토발즈에 의해 그 커널이 최초 개발.
․ 초기에는 서버용 운영체제였으나 현재는 서버/데스크탑용 운용체제로서 각광.
2. 리눅스의 탄생
리눅스가 등장 배경 :  대표적인 서버 운영체제인 유닉스가 개인용 운용체제로 거듭난 것. 1991년 리누스 토발스라는 헬싱키의 대학생이 개인용 PC에서 멀티태스팅을 구현하기 위한 운영체제를 연구하였고, 그 연구결과를 인터넷상에 공개해 수많은 프로그래머들이 새로운 기능을 보강하여 오늘날의 리눅스체제를 만들어 냄.
1) 유닉스의 등장
리눅스의 모태가 되는 유닉스는 다중 사용자와 멀티태스킹 기능을 효과적으로 수행할 수 있는 운영체체를 만들기 위한 프로젝트에 참여한 미국 벨 연구소의 켄 톰슨 (Ken Tompson)에 의해 1969년에 개발.
유닉스는 PDP-7 기종에 맞게 설계된 어셈블리 언어(특정한 기종에서만 사용될 수 있는 언어)였기 때문에 호환성이 없어서 데니스 리치가 개발한 C언어로 다시 쓰이게 됨.
 C 언어의 특징은 어셈블리 언어처럼 하드웨어를 직접 통제할 수 있을 뿐만 아니라 특정한 하드웨어에 관계없이 프로그램을 작성할 수 있는 상반된 두 가지 성질을 모두 가지고 있다. 따라서 C언어로 작성된 소스코드는 필요할 때에 이식될 하드웨어 환경에 맞게 다시 컴파일하는 과정을 통해서 다른 기종에서도 사용될 수 있게 됨.
2) 유닉스의 진화
 ․ 1969년 버클리 대학에서는 유닉스에 네크워크 기능를 집중적으로 보강하는 연구를 하여 BSD라고 명명함. 통신 기능과의 결합으로 더욱 강력해짐
 ․ AT&T에서도 System V개발.
3) 리눅스 탄생
 헬싱키 대학의 리누즈 토발즈(Linus B.Torvalds)가 유닉스의 커널을 PC에서 사용 가능한 커널로 만들어 인터넷에 공개.
4) 리눅스의 발전
리누즈 토발즈가 커널을 개발 : 리눅스의 아버지
Free Software Foundation의 회장인 리챠드 스톨만 : 리눅스의 성자

3. 리눅스의 장단점
 1) 장점
․ 유닉스와 완벽하게 호환 가능
․ 공개 운영체제
․ PC용 OS보다 안정적
․ 리눅스는 무료
․ 하드웨어의 기능의 효율적 사용
․ 강력한 네트워크를 구축
․ 다양한 응용프로그램을 제공
․ 다중작업이 가능합니다.
․ 인터넷의 모든 기능을 지원
 2) 단점
․ 공개운영체제이기 때문에 문제점 발생시 보상받을 수 없다
․ 한글입출력이 어렵습니다.
․ 보안에 취약할 것이라는 선입관
 
4. 리눅스 배포판들
 해외 배포판 : 슬랙웨어 (Slackware), 레드햇 (Red Hat), 데비안 (Debian), 오픈 리눅스(Open Linux), Linux-Mandrake, SuSE-Linux등
 한글 배포판 : K 리눅스, 엑셀 리눅스, 알짜 리눅스, 미지리눅스, 파워리눅스, q리눅스, 와우리눅스, 한컴리눅스
5. 리눅스의 미래
․ 인터넷이용으로 리눅스의 중요성이 더욱 부각
․ 소스코드를 무료로 제공으로 수많은 프로그래머들에 의해 엄청난 속도로 개발
Ⅱ 리눅스 기초
1. 수퍼 유저와 일반 유저
․일반 유저: 보통의 작업을 수행하는 사용자. 시스템 전체에 영향을 주는 조작은 하지 못함. 다른 사용자의 파일변경이 불가능, $ 프롬프트가 나타남.
․수퍼 유저 : 소프트웨어 설치, 디스크 백업, 사용자 등록 등 시스템 전체를 관리하는 사용자. 시스템에 관한 모든 권한을 가짐, # 프롬프트가 나타남.
2. 로그인, 로그아웃
․로그인 : 시스템을 사용하는 사람이 누구인가를 시스템에 알리는 작업
           (사용자 명과 패스워드 입력)
․로그아웃 : 시스템 사용의 종료
           (logout 또는 [ctrl]+D 입력)
3. 명령어 실행
 ex) $ cal
     $ cal -y(올해의 달력 표시)
     $ date
     $ date -u
4. 수퍼 유저로 변경
     $ su
     Password:(패스워드는 표시 안됨)
     #
     # exit
     $
5. 시스템 종료
     # shutdown -h +1 ***Attention***(1분후 메시지 표시하고 종료)
     # halt(시스템 종료)
     # reboot(리부팅)
6. 셀(shell)
   사용자와 커널 사이의 중개 역할

                              
7. 명령어 히스토리
   ↑↓ : 명령어의 히스토리 표시
   ctrl+r : 명령어의 히스토리 검색
   history : 명령어의 히스토리 화면 표시
   ex) his [tab] : 자동 완성 기능
       !9 : 실행 명령 선택
8. 표준 입출력
   < : 표준 입력          > : 표준 출력        >> : 추가 입력
   ex) cat > a.txt    cat >> a.txt    cat < a.txt
9. 복수 명령어 실행 : ;   
    ex) date ; cal
10. 표준 출력을 다른 명령에 연결 :  |
    ex) cal -y | less
        less cal.txt : (페이지 단위로 출력)
* tree 명령 : 디렉토리의 계층적 표시

Ⅲ 파일관리
 리눅스의 디렉토리 구조는 /(루트)라는 디렉토리가 있고 그 아래에 디렉토리가 연결되는 트리(tree)구조를 가지고 있다.
1. 경로명
  1) 절대 경로 : 디렉토리 구조의 최상위 계층인 /에서부터 표기
  2) 상대 경로 : 현재 디렉토리부터 경로명을 지정
2. 현재 디렉토리 확인
   pwd
3. 디렉토리를 이동하는 명령
   cd
   - : 이전의 디렉토리        ~ : 홈 디렉토리
   .. : 바로 윗 단계            . : 현재 디렉토리
  지정안함 : 홈 디렉토리
4. ls
  DOS의 dir과 비슷한 명령어인데, 디렉토리명 등을 출력시키며 옵션에 따라 다양한 정보와 함께 출력된다.
옵션
-a: 디렉토리 내의 모든 파일 출력
-i : 파일의 inode와 함께 출력한다.
-l : 파일 허용 여부, 소유자, 그룹, 크기, 날짜 등을 출력한다.
-m: 파일을 쉼표로 구분하여 가로로 출력한다.
-r : 정렬 옵션이 선택되었을 때, 그 역순으로 출력한다.
-s : KB 단위의 파일 크기를 출력한다.
-t : 최근에 만들어진 파일 순서대로 출력한다.
-x : 파일 순서를 세로로 출력한다.
-F : 파일의 형태와 함께 출력한다.
-R : 서브 디렉토리의 내용을 포함하여 출력한다.
-S : 파일 크기가 큰 순서로 출력한다.
-U : 정렬하여 출력한다.
-1 : 라인당 한 파일씩 출력한다.
--help : 도움말을 화면상에 나타낸다.
--version : 'ls'의 파일 버전과 함께 출력한다.
5. mkdir
  디렉토리 생성
  ls -dl 디렉토리
6. cp
  파일이나 디렉토리 복사
  -r : 디렉토리 전체 복사        -v : 복사전에 파일명 표시
7. mv
  다른 디렉토리로 이동 및 이름 변경
8. rm
  파일이나 디렉토리 삭제
  -f : 강제 삭제         -r : 디렉토리 삭제
9. rmdir : 디렉토리 삭제
* 와일드카드 이용하여 실습 : *
* 참고 : man : manual(도움말)
10. more
   명령어로 한 페이지씩 문서를 보여준다.
11. less
   more와 비슷한 명령어로 한 페이지씩 문서를 보여준다. 문서의 앞으로도 이동이 가능하다.
12. cat
  파일의 모든 내용을 한번에 화면에 나타나게 한다.
13. echo
  주어진 인자를 단순히 화면에 나타나게 한다.
14. grep
  주어진 패턴을 포함하는 파일의 라인을 출력시킨다.
옵션
-C : 일치하는 문장의 상하 두 라인까지 포함하여 출력한다.
-c : 일치하는 라인의 갯수를 출력한다.
-h : 파일명은 출력하지 않는다.
-i : 대소문자 구분하지 않는다.
-l : 일치하는 내용을 가지는 파일명만 출력한다.
-n : 일치하는 내용을 가지는 라인 번호를 출력한다.
-s : 에러 메시지만을 출력한다.
-v : 일치하지 않는 내용을 출력한다.
-x : 전체 라인이 일치해야 출력한다.
예)
rm이라는이름이 들어간 파일을 ls중에서 찾을 때 - ls | grep rm
 
15. find
 원하는 파일을 디렉토리를 탐색하면서 지정된 조건에 만족하는 파일을 찾는다. 이름이나, 크기, 날짜, 사용자등의 조건을 지정하여 찾을 수 있다.
-name : 찾고자 하는 파일의 이름을 정하면 된다.
-perm : 파일의 권한 (permission)이 일치하는 것을 찾는다.
-user : 사용자의 ID에 따라서 검색한다.
-atime : 최근 며칠내에 접속한 파일을 검색한다
-newer : 최근에 갱신된 모든 파일을 검색한다.
예)
maria라는 이름을 가진 파일을 찾으려면, find -name maria
17. mount
  cdrom이나 floppy disk를 사용하게 만들어 준다.
floppy mount : -t msdos /dev/fd0 /mnt/floppy
cdrom mount : mount -t iso9660 /dev/cdrom /mnt/cdrom
18. umount (언마운트; unmount)
 디렉토리와 연결되었던 시디롬이나 플로피 디스크를 분리시켜 주는것을 말한다. 플로피나 시디롬을 다 쓰고 나면 항상 언마운트를 시켜주어야 한다.
19. 리디렉션 (redirection)
- 리디렉션이란 어떤 명령을 실행한 후에 생기는 내용물을 사용자가 원하는 곳으로 출력하기 위해 만들어졌는데 표준 입력, 표준 출력, 에러 출력 등의 방향을 다른 곳으로 바꾸는 것이다.
리디렉션의 기호는 ">"이다. 보통, ">" 을 이용하여 명령의 결과를 파일로 리디렉트시켰을 때 그 파일이 존재해 있었다면 그것을 덮어쓴다. ">>"를 쓰면 파일을 덧붙여 쓰게 된다.
20. 파이프라인
 파이프라는 것은 여러 명령을 함께 사용할 때, 한 명령의 결과가 다른 명령으로 전송되는 통로이다. 명령어를 하나 하나씩 일일이 치지 않고도 한꺼번에 여러가지를 실행할 수 있어 편리하다.
예)
ls화면을 한 페이지씩 출력하려면 ls | more , 중단 하려면 q를 치면 된다.

Ⅳ Process 관리
1. ps ( process )
 현재 진행중인 프로세스에 대한 정보를 출력한다.
2. pstree ( process tree)
 ps 에 의해서 출력되는 프로세스 정보를 트리 형태로 나타낸다.
3. top
 cpu와 메모리를 사용하는 작업들에 대한 시스템 정보를 출력한다.
원래 화면으로 되돌아 가려면 q를 입력한다.
4. arch (architecture)
 현재 사용하고 있는 cpu의 모델을 출력(i686- 인텔 펜티엄)
5. cal (calendar)
 현재의 달을 출력해 주는데, cal과 함께 원하는 월과 연도를 숫자를 입력하면 원하는 달 의 달력을 볼 수 있다.
-j를 입력하면 율리우스달 력을 볼 수 있다.
6. clock
 CMOS 설정 시간을 출력하거나 변경할 수 있다.
7. date
 현재의 시간과 날짜를 출력한다.
 
8. df (disk free)
 하드의 전체 용량 및 남은 용량 볼 때 사용한다.
옵션
-h(human) 사람이 쉽게 알 수 있는 형태인 바이트 단위로 출력한다.
9. du (disk usage)
각각의 디렉토리와 파일들이 차지하고 있는 디스크 용량을 출력한다.
예) temp2 디렉토리가 차지하는 용량을 보려고 할 때, du temp2
10. free (free memory)
 현재 사용중인 시스템의 메모리 상태를 출력한다.
옵션
-m(Megabyte) 메모리의 양을 메가 바이트 단위로 출력한다.
-k (Kilobyte) 메모리의 양을 킬로 바이트 단위로 출력한다.
11. quota
 각각의 사용자들이 사용할 수 있는 디스크의 용량을 나타낸다.
12. uname (unix name)
 사용중인 운영체제에 대한 정보를 출력한다.
옵션
- a(all) 현재 사용중인 운영체제와 커널의 컴파일 정보 등을 출력한다.
13. su
 현 상태에서 다른 사용자로 다시 login한다. 만약 사용자 id를 입력하지 않으면, root로 login 된다.
14. shutdown
 시스템을 종료할 때 일반적으로 사용되는 명령어이다.
옵션
- t n 옵션 t 뒤에 n 초만큼 후에 경고 메시지 후에 kill 신호를 보낸다.
- h (halt) 완전히 닫는다.
- r (reboot) 종료후 재부팅을 한다.
- f (fast) 빠른 리부팅을 한다 .(파일 시스템 검사 생략 )
15. reboot
- 재 부팅 시키는 것을 말한다.
옵션
- q 현재의 실행프로그램을 종료하지 않고 부팅만 다시 시킨다.
16. kill
- 프로세스 종료하기. 현재 실행중인 프로세스를 강제로 종료시키는데 사용
kill signal ID PID
kill -l
옵션
-2 : 실행 중인 프로세스에게 인터럽트 키 신호를 보냄
-9 : 가장 확실하게 실행 중인 프로세스를 종료시킴
17. tty
 현재 사용하고 있는 단말기 장치의 경로명과 파일명을 보여줌
18. whereis
 실제 프로그램이 어떤 디렉토리에 존재하는지 관련된 모든 경로명을 보여줌
예) whereis vi
19. fsck (file system check)
 파일 시스템의 상태가 올바른지 검사하고, 잘못된 것이 있으면 바로 잡는다.
옵션
- a : 검사도중 발견된 에러를 자동적으로 복구한다.
- r : 검사도중 에러가 발견되면 복구 여부를 물어본다.(사실 사용되지 않는다.)
- s : 순차적인 방법으로 검색한다.
- V : 검색 중 각종 정보를 자세하게 보여준다.
- N : 실제로 검사 작업을 하지는 않도록 한다.

Ⅴ 사용자 관리
1. chgrp
 파일의 그룹 소유권을 바꾼다.
옵션
-c : 실제로 소유자가 바뀐 파일에 대해서 자세하게 설명
-f : 소유권을 바꿀 수 없어도 에러 메시지를 나타내지 않는다.
-v : 소유권의 이전에 대해서 자세히 기술한다.
-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.
* 파일의 소유자나 슈퍼 유저만이 파일의 그룹 소유권을 바꿀 권한이 있는데,
chgrp + 옵션 바꾸고자 하는 그룹의 이름+ 디렉토리+ 파일 이름
예) /root그룹에 있는 ak이라는 파일을 white라는 그룹으로 소유권을 이전하려면,
chgrp white /root/ak
2. chmod
 파일의 모드를 바꿀 때 사용하는데 파일의 모드는 권한(permission)을 제어한다.
옵션
-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.
* r(read 읽기), w(write 쓰기), x(execute 실행)의 3가지 권한이 있는데, 각 단위당 2진법으로 표현된다. 따라서 읽기, 쓰기, 실행 등의 모든 권한을 주려면, 4+2+1, 따라서 합계 7이된다.
만약 모든 그룹의 권한을 다 허용해 줄 경우, 777이 된다.
예)
우선 권한을 보기위해, ls -al을 쳐보면 wow 라는 파일이 rw-r--r--로 되어있다는 것을 알 수 있다.
여기서, 첫 번째 3자리는 소유자, 두 번째 3자리는 그룹, 마지막 3자리는 타인에게 허용할 것인지 여부를 보여주는 것이다.
여기서의 소유자는 읽고 쓰기가, 그룹과 타인은 읽기만 허용이 되어있다.
모두가 사용할 수 있게 하려면 777이 된다.
chmod 777 wow
3. chown
 파일의 소유권을 다른 사람에게 변경할 때 사용한다.
옵션
-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.
-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 소유권에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.
파일의 소유권을 다른 사람에게로 바꾸는 것은 슈퍼 유저만이 할 수 있다.
예)
root/에 있는 wow라는 파일을 test라는 그룹으로 소유권을 바꿀 때
chown test /root/wow
ll을 쳐서 소유권이 바뀌었는지 확인해 보면 된다.
5. 시스템의 사용자 정보에 대한 명령어
* finger
 시스템을 사용하고 있는 사용자들의 이름과 주소등 신상 명세를 출력한다.
변경할 때는 chfn(change finger name)을 사용하면 된다.
* id (identification)
- 사용자의 개인 id 와 그룹의 id 번호를 출력한다.
* logname
 로그인해 있는 사용자의 이름을 출력한다.
* uptime
 현재의 시간과 로그인 시간의 총합, 평균적인 시스템 사용 현황을 출력한다.
* w (who is logged on and what they are doing)
 로그인 되어있는 사람과 현재 실행중인 작업의 종류를 출력한다.
* who
 시스템을 사용하고 있는 사용자들의 이름과 터미널 번호, 로그인 시간 출력한다.
* whoami
- 가상 콘솔 기능을 사용하거나 여러명의 사용자로 동시에 로그인해 있을 때, 현재 시스템을 사용하고 있는 자신이 누구인가를 출력한다.
* adduser
 사용자를 추가하기 위한 명령어인데 명령어 뒤에 원하는 사용자 명을 써 넣는다.

Ⅵ Network
[1] ping
Ping은 현재 사용하고 있는 시스템이 네트워크로 연결된 원격지 호스트를 인식하고 있는지를 테스트하여 네트워크로 연결되어 있는지의 여부와 접근할 원격지 호스트가 정상적으로 작동되고 있는지 알아봅니다. 따라서 ping의 중요한 기능은 상대편 네트웍을 테스트 할 수 있다는 것입니다.
현재 보낸 패킷과 받은 패킷사이의 통계치를 보여주면 제대로 실행된 것입니다.
[2]ifconfig
Interface 란 NIC(Network Interface Card)를 세팅하는 것입니다.여기서는 ifconfig유틸러티를 사용하여 어떻게 IP address, netmask, gateway등을 설치하는지를 알보도록 하겠습니다.
우선 한텀에서 다음처럼 입력을 합니다.
ifconfig [interface]
ifconfig interface [atype] options | address...
옵션
up : interface를 활성화 시킵니다
down: interface를 비활성화 시킵니다.
address : [aaa.bbb.ccc.ddd]의 모양을 가집니다.
Ⅶ vi 에디터
[1] 시작
vi의 실행은 한글 환경에서 vi를 입력하면 되고, 콘솔모드에서 한글을 다루려면, han을 먼저 입력한 뒤, vi를 입력하면 됩니다. vi를 실행시키는 방법은 간단합니다. 셸상에서 'vi'라고 입력하고 Enter 키만 누르면 된다. 그러면 새로운 문서를 편집할 수 있는 환경이 만들어집니다.
예) >vi
기존의 문서를 편집하고자 할 때에는 파일의 이름을 구체적으로 명시합니다.
예) >vi file1
지정한 파일의 내용을 읽기 전용으로 열어서 볼 때는 다음과 같이 명시합니다.
예) >vi -R file
>view file
[2] vi의 세가지 모드
① 입력 모드 - i, a, o, I, A, O를 누른 후 텍스트를 입력할 수 있는 상태
② 명령 모드(Esc모드) - ESC키를 누른 상태
③ 콜론 모드(Ex모드) - ESC키를 누르고, :(콜론)을 입력한 상태
그리고, 이러한 기본적인 모드들을 다른 편집기의 활용과 비교해보자면, 다음과 같습니다.
① 입력 모드 - 다른 편집기에서 타이핑을 하여 파일의 내용을 입력하는 과정
② 명령 모드 - 다른 편집기의 편집(Edit) 메뉴에서 제공하는 복사(Copy), 붙이기(Paste),삭제(Delete) 등의 편집 기능의 활용
③ 콜론 모드(ex 모드) - 다른 편집기의 파일(File) 메뉴에서 수행하는 열기(Open), 저장 (Save), 다른 이름으로 저장(Save as) 등의 명령 수행
vi는 실행될 때 명령 모드에서 시작하고, 실행을 종료할 때에는 콜론 모드에서 종료 명령을 수행한다. 또한 vi는 대문자와 소문자 구분을 확실히 해두어야 한다
(1) 입력 모드
- i : Insert, 현재 커서의 위치에 글자를 삽입
- I : Insert, 커서가 있는 줄(line)의 맨 앞에 글자를 삽입
- a : Append, 현재 커서 위치의 다음 칸에 글자를 추가
- A : Append, 커서가 있는 줄(line)의 맨 뒤에 글자를 추가
- o : Open line, 현재의 줄 다음에 새로운 줄을 삽입
- O: Open line, 현재의 줄 앞에 새로운 줄을 삽입
(2) 명령 모드
입력 모드에서 명령 모드로 다시 전환하려면 Esc 키
명령모드는 편집모드라고도 하는데, 글을 입력시키는 방법이 아닌 수정과 편집을 할 수 있는 상태
잘못된 명령을 내렸을 때 'u'라는 명령어를 통해서 Undo, 즉 복구가 가능
(3) 콜론 모드
명령모드에서 콜론 모드로 전환하려면 ':'명령을 실행
[3] 종료
편집한 데이터를 저장하고 종료하려면, wq(Write and Quit)를 입력.
예) :wq
저장하지 않고, 강제로 종료하려면, q!(Quit!)를 입력
예) :q!
vi를 끝내지 않고, 현재 작업 중인 내용을 저장만 하려면, w를 입력
예) :w
[4] 정규표현식의 특수 기호들
- . : 한글자를 대표하는 기호 (dos 의 ? 와 동일)
- * : 여러개의 문자를 동시에 대표하는 기호
- ^ : 줄의 처음시작
- $ : 줄의 맨끝
- % : 처음줄부터 끝줄까지
- [a-z] : a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 를 대표
- [A-Z] : A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 를 대표
- [AB] : A 또는 B
[5] 명령 모드(ESC 모드)에서 사용되는 몇가지 기호
- G : 화일의 맨끝으로
- ^ : 현재줄의 맨앞 (빈칸무시)으로
- 0 : 현재줄의 맨앞으로
- $ : 현재줄의 맨 뒤로
- w : 다음 단어로
- b : 이전 단어로
[6] 커서 움직이기
 명령모드 상태에서 커서를 마음대로 움직일 수 있습니다.
① 글자 단위 이동
- h : 커서를 한칸 왼쪽으로 이동하는 명령
- j : 커서를 한줄 아래로 이동하는 명령
- k : 커서를 한줄 위로 이동하는 명령
- l : 커서를 한칸 오른쪽으로 이동하는 명령
② 줄 단위 이동
- ^ : 빈칸을 무시하고, 커서를 현재 줄의 첫글자로 이동하는 명령
- 0 : 커서를 현재줄의 처음으로 이동하는 명령
- $ : 커서를 현재줄의 맨끝으로 이동하는 명령
- % : 짝을 이루는 기호 확인하기
- + : 커서를 다음줄의 처음으로 이동하는 명령
- - : 커서를 이전 줄의 처음으로 이동하는 명령
- Return : 커서를 다음줄의 처음으로 이동하는 명령
- n| : 현재줄의 n 번째 열로 (n은 임의의 숫자)
- H(Home) : 커서를 화면상에 처음줄로 이동하는 명령
- M(Middle) : 커서를 화면상에 중간줄로 이동하는 명령
- L(Last) : 커서를 화면상의 마지막줄로 이동하는 명령
- nH : 화면상의 처음줄로부터 n 줄 밑으로 이동(n은 임의의 숫자)
- nL : 화면상의 마지막줄로부터 n 줄 위로(n은 임의의 숫자)
- gg : 맨 마지막줄로
- n : n 번째줄로
③ 단어 단위 이동 - w(word) : 커서를 다음단어의 첫글자로 이동하는 명령
- b(back) : 커서를 이전단어의 첫글자로 이동하는 명령
- e(end) : 커서를 다음단어의 끝 글자로 이동하는 명령
- E : ?, ! 등 구두점을 무시하고, 현재 단어의 끝으로 이동
④ 화면단위 이동
- Control + F (Forward) : 한화면 밑으로 이동
- Control + B (Backward) : 한화면 위로 이동
- Control + D (Down) : 반쪽화면 밑으로 이동
- Control + U (Upon) : 반쪽화면 위로 이동
- Control + L : 화면 재표시 (글자가 깨졌을 경우; 윈도의 F5와 비슷)
- Control + R(edraw) : 화면 재표시 (글자가 깨졌을경우)
[7] 편집하기
① 복사, 붙이기, 합치기
- y (Yank) : 복사하기
- yy : 한 줄 전체의 내용을 복사한다
- y$ : 현재 위치에서 그 줄의 끝까지 복사한다
- yG : 현재 위치에서 파일의 끝까지 복사한다(G는 파일의 마지막 줄)
- p (Put or Paste) : 붙이기
- np : n번만큼 p 명령을 반복. 2p라면 버퍼의 내용을 두 번 붙여넣는다
- P : 위로(왼쪽으로) 붙이기
② 지우기, 복구하기, 바꾸기
- d$ : 커서가 있는 위치에서 그 줄의 끝까지 지우기
- D : 커서부터 줄의 끝까지 삭제합니다. (d$ 와 동일)
- d (Delete) : 지우기
- dd : 현재커서가 위치한 줄의 전체를 삭제합니다.
- ndd : n줄지우기 (n 은 임의의숫자)
- dw : 한단어 지우기
- d move : 커서가 위치한 곳부터 move까지 삭제
- u (Undo) : 되살리기 명령으로 버퍼에 저장되어 있는 원래의 내용을 복구
- 2u : 두번복구하기
- c (Change) : 바꾸기
- cw : 한단어 바꾸기
- r (Replace) : 한글자 바꾸기
- R : 바꾸면서 삽입이 아닌 수정(modify) 모드로 들어간다. 윈도에서 Insert 키를 누르고 수정 상태로 들어가는 것과 같다
[9] 찾기
- /요 : 현재 위치에서 아래쪽 방향으로 '요'라는 단어를 찾는다
- ?요 : 현재 위치에서 위쪽 방향으로 '요'라는 단어를 찾는다
[10] 편집모드 지정하기
- i : insert 현재커서위치
- I : 현재커서가 위치한 줄의 맨처음에
- a : append 현재커서위치 바로 다음에
- A : 현재커서가 위치한 줄의 맨끝에
- o : open 현재커서위치 바로 아래줄에
- O : Open 현재커서위치 바로 윗줄에
[12] 버퍼 이용하기
- "xyy : x 라는 이름의 버퍼에 한줄 복사 하기
- "xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기
- := : 현재 줄번호 보여주기
- :/pattern/ = pattern 이 위치한 줄번호 보여주기
[13] ex 명령어 익히기
① ex 명령어의 기본형식
예)
- :1,10 co 50 : 1 줄 부터 10 줄 까지를 50 줄 이후로 복사
- :34,50 d : 34 줄 부터 50 줄 까지 삭제
- :100,150 m 10 : 100 줄 부터 150 줄까지를 10 줄 이후로 옮김
- :.,$ d : 현재줄부터 끝까지 지우기
- :/pattern/ d : pattern 이 들어있는 줄 지우기
② g 옵션 붙여 문서전체에 적용하기
- :g/리눅스 : 파일 전체에서 '리눅스'가 있는 마지막 줄로 이동한다
- :g/리눅스/ p : 파일 전체에서 '리눅스'가 있는 줄을 보여준다
- :g/리눅스/ nu : 파일 전체에서 '리눅스'가 있는 줄을 번호와 함께 보여준다
- :60,100 g/리눅스/ p : 60~100줄 사이에서 '리눅스'가 있는 줄을 보여준다
- :g/리눅스/d : 문서 전체에서 '리눅스'가 있는 줄을 제거한다
③ 저장 및 종료하기
- :w : 저장하기 (write)
- :q : 종료하기 (quit)
- :wq : 저장하고 종료하기
- :w! : 강제로 저장하기 (read-only 로 열었을경우)
- :q! : 편집한 내용을 저장하지 않고 종료하기
- :w new_file_name : 새로운 파일이름으로 저장하기
- :230,$ w file_name : 230 줄부터 끝줄까지 file_name 으로 저장하기
- :.,600 w file_name : 현재줄부터 600줄까지 file_name 으로 저장하기
- :340,$ w >> new_file : 340줄부터 끝줄까지 new_file 에 추가하기
[14] 쉘 명령실행
- :!! : vi를 중단하고 이전의 셸 명령을 실행
- :sh : vi를 중단하고 셸을 실행
- :!csh : vi를 중단하고 새로운 C쉘을 실행
[19] 패턴에 의한 치환
- :s/pattern/replace/ : 현재 줄을 치환한다
- :lines/pattern/replace/ : 지정한 줄을 치환한다
- :line,lines/pattern/replace/ : 지정한 범위를 모두 치환한다
- :%s/pattern/replace/ : 모든 줄을 치환한다


반응형

'Linux > Linux 명령어' 카테고리의 다른 글

리눅스 kill사용법  (0) 2007.05.29
데비안 패키지 관리 apt 명령어  (0) 2007.03.11
mount,umount  (0) 2007.03.11
Posted by Real_G