59, 1/3 회원가입  로그인  
   khas
   http://없음
   파일 및 문서 관련 명령어

http://www.hackerschool.org/HS_Boards/view.php?id=Lib_share&no=22 [복사]


3.1 파일 및 디렉토리 명령어



3.1.1 ls (디렉토리 내용보기)

형식
ls [-옵션] [파일 혹은 디렉토리]
명령어 위치
/bin/ls

옵션
-a, -- all : 모든 파일을 보여준다. 리눅스에서 dot(.) 로 시작하는 파일은 숨겨진 파일을 의미하여 보통때는 보이지 않지만 이 옵션을 주어서 ls를 실행시키면 dot(.)로 시작되는 파일도 보여준다.
-l, -- format=long, -- format=verbose : 파일 소요, 링크 수, 소유자명, 그룹명, 바이트 수, 최종 수정 시간 및 파일명의 긴 형식으로 출력하며, 파일명을 기준으로 정렬하여 출력한다.
-F, -- classify : 자세한 목록 나열엣 group 정보를 제외한다.
-R, -- recursive : 하위 경로와 그 안에 있는 모든 파일들도 나열한다.
-t, -- sort=time : 최종 수정 시간에 따라 출력한다.
-S, -- sort=size : 파일크기가 가장 큰것부터 정렬해서 나열한다.

설명
사용자들은 각자의 홈 디렉토리를 가지고 있다. 홈 디렉토리에는 사용자가 vi, cat, pico, emacs등으로 파일을 작성해 놓기도 하고 mkdir로 디렉토리를 만들어 놓기도 한다. 이렇게 만들어 놓은 것들을 확인하기 위해서 ls명령어를 사용한다.

참고
ls -al 과 ls -a -l은 같은 것이다. ls mydir과 ls mydir/도 같은 것이다.


3.1.2 cd (디렉토리 변경하기)

형식
cd 디렉토리

옵션
. 현재 디렉토리
.. 상위 디렉토리
~ 홈 디렉토리
/ 가장 상위 디렉토리

설명
현재 작업 디렉토리에서 다른 디렉토리로 변경하고자 하는 경우에 사용하는 명령어이다 또는 자신의 홈 디렉토리로 바로 이동할 때 사용한다.디렉토리를 따로 지정하지 않으면 로그인할 때 기본 홈 디렉토리로 이동한다. 디렉토리를 지정하는 방법에는 두 가지가 있는데, 절대경로를 이용하는 것과 상대경로를 이용하는 것이 그것이다. 절대경로의 경우는 옮기고자 하는 디렉토리 경로를 그대로 입력하면 된다. 상대경로는 현재 디렉토리를 기준으로 경로를 지정하면 되는데 (/), (.) , (..), (~)의 네가지 문자를 사용한다. 점 하나는 디렉토리, 점 둘은 현재 디렉토리의 상위 디렉토리를 나타낸다. 틸드는 일반적으로 사용자의 홈 디렉토리를 나타내는 것으로 이를 이용한 많은 활용이 있다.


3.1.3 rm (remove, 파일 또는 디렉토리를 삭제)

형식
rm [-옵션] 파일 혹은 디렉토리

명령어 위치
/bin/rm

옵션
-f, --force : 아무런 메시지를 보여주지 않기 때문에 지우기 전에 지워도 되는 파일인지 반드시 확인한 후 사용하는 것이 좋다. 셸 스크립트 안에서 사용될 때 유용하게 쓰인다.
-i, --interactive : 파일이나 디렉토리를 지울 때 지울 것인지에 대한 여부를 묻는데, 이때, 'n'이나 'N'을 입력하면 지워지지 않는다. 디렉토리인 경우 디렉토리가 가지고 있는 파일의 개수 + 디렉토리수 만큼 질문한다.
-r, -R, --recursive : 디렉토리의 경우에 디렉토리 안에 있는 디렉토리와 파일들을 포함해서 지운다.
-v, --verbose : 어떤 파일과 디렉토리를 지워는지 보여준다.
--help : 도움말을 보여주고 마친다.
--version : 버전 정보를 보여주고 마친다.

설명
이 명령은 파일 또는 디렉토리를 지우는 명령어이다.


3.1.4 cp (copy, 파일 복사)

형식
cp [-옵션] 원본파일 복사파일

명령어 위치
/bin/cp

옵션
-a, --archive : 가능한 한 원래 파일의 퍼미션을 보존한다. 옵션 -dpR과 같다
-b, --backup : 백업본을 만든다.
-d, --no-dereference : 만약 복사할 원본이 심볼링 링크된 심볼릭 파일이라면 그 심볼릭 파일 자체를 심볼릭 정보와 함께 복사한다.
-f, --force : 복사할 파일 이름이 겹쳐도 강제로 덮어쓴다.
-p, --preserve : 소유자, 그룹, 퍼미션, 시간 등을 모두 보존한 채 복사한다.
-R, --recursive : 하위 디렉토리에 대해서 재귀적으로 복사한다.
--help : 도움말을 보여주고 마친다.
--version : 버전 정보를 보여주고 마친다.

설명
똑같은 내용의 파일이 필요할 때 사용한다. mv와의 차이점은 mv는 명령어를 실행시키는 원본 파일이 보존되지 않지만 cp는 보본된다는 것이다. 복사할 위치를 지정하면 지정된 원본 파일들을 복사할 마지막 명령행 인자로 하며, 경로가 지정되면 원본 파일들을 그 경로 안으로 복사한다. 또한 명령행 인자로 두 개의 파일 이름이 사용되면, 첫 번째 파일을 두 번째 파일로 복사한다. 마지막 명령행 인자가 경로가 아니고 두 개 이상의 파일이 지정되면, 오류 메세지를 보여준다. 초기값으로 경로는 복사하지 않는다. 한 개 또는 그 이상의 파일들을 디렉토리에 복사한다. 복사하려는 디렉토리에 같은 이름의 파일이 있을 경우 겹쳐 쓰여지게 된다.


3.1.5 mv (move, 파일명 변경하거나 파일 이동)

형식
mv [-옵션] 옮길파일 옮길곳

명령어 위치
/bin/mv

옵션
-b, --backup : 대상 파일이 이미 있어, 지워지는 것에 대비해 백업 파일을 만든다.
-f, --force : 대상 파일이 이미 있어도 사용자에게 어떻게 처리할지를 묻지 않는다.
-i, --interactive : 대상 파일이 이미 있어, 사용자에게 어떻게 처리할지를 물어본다 이때, 'y'나 'Y'를 입력하여야 그 파일을 옮긴다(초기값).
-u, --update : 대상 파일이 이미 있는데, 그 파일의 최근 변경시간(modification time)이 원본 파일보다 최근의 것이면 파일을 옮기지 않는다.

설명
파일을 다른 위치로 이동할 때 사용하는 명령어이다.cp 명령이 원본 파일은 보존하고 같은 내용의 새로운 파일을 만드는 것에 비해 mv는 원본파일을 없애고 같은 내용의 새로운 파일을 만드는 것이다. 파일 이름을 바꾸고자 하는 경우에도 이용할 수 있다. 만약 다른 파일 시스템으로 이동하려고 한다면 전제조건으로 파일 시스템에 접근이 가능해야 한다.


3.1.6.mkdir (make directory, 디렉토리를 생성)

형식
mkdir [-옵션] [-- 옵션] 디렉토리이름

명령어 위치
/bin/mkdir

옵션
-m, -- mode mode : mode로 사용할 것은 chmod에서 사용하는 기호 형식이나 숫자 형식이며, 이 값은 초기값으로 지정되는 모드를 무시한다.
-p, -- parents : 필요한 경우에 상위 경로까지 만든다. 가령 'mkdir ~/dest/dir1' 명령을 사용했는데, 실제로는 '~/dest' 경로가 없는 경우 오류메시지를 보이는 것이 원칙이나 이 옵션을 만든다. 만들어지는 상위 경로의 모드 값은 'u+wx'이다.
-- help : 도움말을 보여주고 마친다.
-- version : 버전 정보를 보여주고 마친다.

설명
홈 디렉토리의 파일들은 크기가 종류에 상관없이 이름순으로 정리된다. 이렇게 사용자의 의도와는 상관없이 정리되어 있는 것은 사용자의 입장에서는 불편한 일일 수 있다. 책상 위의 문서들을 사용자의 편의에 따라 책꽂이에 나누어 분리하듯 파이들도 디렉토리로 마누어 보관하면 유용하다. 이때 디렉토리를 만드는 명령어가 mkdir 이다


3.1.7 rmdir (remove directory, 디렉토리를 삭제)

형식
rmdir [-옵션] [-- 옵션] 디렉토리

명령어 위치
/bin/rmdir

옵션
-p, -- parents : 상위 경로도 지운다. 물론 상위 경로 안이 비어 있어야 가능하다.
-- help : 도움말을 보여주고 마친다.
-- version : 버전 정보를 보여주고 마친다.

설명
이 명령은 비어있는 디렉토리만을 지운다. rmdir은 디렉토리에 파일이 있으면 지울수 없다. 디렉토리안에 파일이 있다면 rm 명령어를 사용하는게 효과적일 것이다.


3.1.8 file (파일 종류 보기)

형식
file[-옵션]파일

명령어 위치
/usr/bin/file

옵션
-C : 매직 파일의 포멧을 검사한다.
-f 목록 : 목록에 해당하는 파일들에 대해서 파일들에 대해서 명령을 적용한다.
-m 파일 : /etc/magic이 아닌 다른 곳에서 파일 포멧을 참고한다. magic 파일이 다른 곳에 있을 때 이 옵션을 쓰면 된다.
-z : 압축된 파일에 대해서도 분류를 시도한다.
-L : 심복릭 링크된 파일에 대해서도 분류한다.

설명
주어진 파일을 데이터 타입에 따라 분류한다. 분류할 때는 /etc/magic또는 /usr/lib/magic 파일을 참고한다.이 명령은 자료의 종류를 미리 알려주어 사용자로 하여금 해당 파일을 볼지 안 볼지를 경저하는데 도움을 준다. 사용자가 실수로 원시 코드의 파일을 보는 경우가 있는데, 보아도 배용을 알 숭 없으므로, 사용자에게 별 도움을 주지 않는다. 따라서, 파일의종류를 먼저 확인하면 이런 실수를 줄인다.


3.1.9 ln (파일 링크)

형식
ln [-옵션] 원본파일 대상파일
ln [-옵션] 원본파일... 디렉토리

명령어 위치
/bin/ln

옵션
-b, --backup : 타켓 파일이 이미 존재하고 있을 경우 타겟 파일을 지우기 전에 백업을 한다.
-d, -F, --directory : 디렉토리에 대한 하드 링크를 가능하게 한다. 슈퍼 유저(root)등의 권한을 가진 사용자만이 행할 수 있다.
-f, --force : 타켓 파일이 이미 존재하고 있어 덮어쓰기를 해야하는 경우에 내용을 덮어쓰고 강제로 링크를 한다.
-i, --interactive : 타겟 파일이 이미 존재하고 있을 때 파일을 지울지의 여부를 물어본다.
-n, -no-dereference : 만약 링크할 파일이 심볼릭 링크된 파일이면 그 심볼릭 링크 대상이 되는 파일을 링크한다. 이렇게 하지 않고 단지 그 심볼릭 링크 파일 자체를 심볼릭 링크 정보와 함께 링크하고자 할때 이 옵션을 사용한다. --force 옵션과 함께 유용하게 쓰인다.
-s, --symbolic : 심볼릭 링크를 만든다. 이것은 다른 파일 시스템 사이에서도 가능하며, ls -l을 실행했을 때 링크 원본을 볼 수 있다.
-v, --verbose : 각 파일의 작업 상태를 자세히 보여준다.
-S, --suffix backup-suffix : 대상이 이미 있어 백어블 해야 할 경우에 그 백업 파일에서 사용할 파일 이름의 꼬리 문자를 지정한다. 이것은 이미 지정되어 있는 SIMPLE_BACKUP_SUFFIX 환경변수를 무시하게 된다. 만약 이 환경 변수도 지정되어 있지 않고 이 옵션도 사용하지 않는다면, 초기값으로 Emacs와 같이 '~'문자를 사용한다.

설명
링크라는 것은 경우에 따리 같은 파일을 다른 이름으로 액세스할 수 있게 된다. 첫 번째 경우에서 소스 파일, 타겟 파일을 모두 적어준 경우에는 같은 파일을 다른 이름으로 액세스할 수 있는 링크파일이 생성되고 타겟 파일이 이미 존재하고 있을 때는 내용을 덮어쓴다. 링크는 심볼릭 링크(소프트 링크)와 하드 링크로 나뉘어진다. 심볼릭 링크는 윈도우에서의 바로가기 정도로 생각하면 된다. 파일이나 디렉토리의 이름이 너무 길 때 사용하면 편리핟. 하드 링크는 원본 파일과 동일한 형태이지만 다른 이름으로 존재한다. 심볼릭 링크는 원본 파일을 가리키는 파일이기에 원본 파일에 비해 파일 크기가 작고 하드 링크 파일은 원본 파일과 같은 크기이다.


3.1.10 type (유형보기)

형식
type [-옵션] 이름 [이름 ...]

옵션
-type : 이름이 각각 앨리어스, 셀의 예약된 단어, 함수, 내부함수, 또는 디스크 파일일 때, alias, keyword, function, buitin 그리고 file 중 하나를 출력한다. 이름을 찾을 수 없으면 아무것도 출력하지 않고 반환값은 거짓이 된다.
-path : path 플래그를 사용하면, type은 이름이 명령 이름으로 사용되었을때 실행될 디스크 파일 이름을 반환하거나 - type은 이름을 반환하거나 -type이 file을 반환하지 않을 때에는 아무것도 반환 하지 않는다. 명령이 hash된 상태이면, -path는 PATH 상에서 처음으로 나오는 파일이 아니라 해쉬 값을 반환할 것이다.
-all : all 플래그를 사용하면, type 은 '이름'이라는 이름을 포함하는 실행 파일이 포함된 모든 장소를 포함한다. path 플래그를 함께 하용하지 않을 때에만, 엘리어스와 함수를 포함한다. all을 사용할 때에는 해쉬 명령 테이블을 참조하지 않는다.
설명
옵션 없이 사용하면, 이름이 명령 이름으로 사용되었을 때 이떻게 해석할 것인지 알려준다.
type은 -all, -type과 -path 대신 각각 -a, -t와 -p를 받아들인다. 인수는 그 뒤에 나오는 인수에대한 옵션 점검하지 않도록 한다. type은 인수를 발견했을 때에만 참을 반환하고 발견하지 못했을 때에는 거짓을 반환한다.


3.1.11 wc (문자, 단어, 라인수 세기)

형식
wc[-옵션][파일]

명령어위치 /usr/bin/wc

옵션
-C --bytes, --chars : 문자의 개수를 출력한다.
-l --lines : 라인의 개수를 출력한다.
-w --words : 단어의 개수를 출력한다.
-L, --max-line-length : 가장 긴 문장의 길이를 출력한다.
--help : 도움말을 보여주고 마친다.
--varsion : 버전 정보를 보여주고 마친다.

설명
wc는 파일의 단어, 문장, 파일 크기 등을 쉽게 확인할 수 잇또록 도와준다. 지정한 파일의 문자수, 단어수, 라인수 등을 표시한다. 하나 이상의 파일이 지정될 때에는 전체 라인수도 인쇄한다. 파일을 지정하지 않거나 -이면 표준 입력을 읽는다.


3.1.12 cat (concatenate, 파일의 내용을 화면에 보여준다.)

형식
cat [-옵션] [파일1], [파일2], ...
cat [파일] [--옵션]

명령어 위치
/bin/cat

옵션
-b, --number-nonblank : 빈줄이 아닌 줄에 차례대로 번호를 붙인다.
-n, --number : 라인 번호를 함께 나타낸다. 단, 빈 줄까지 포함해서 번호를 붙인다.
-S, --squeeze-blank : 빈 줄이 여러 개 연속으로 있을 경우, 한 개의 빈 줄로 만들어 보여준다.
-T, --show-tabs : Tab키 입력을 ^I 로 나타낸다

설명
파일의 내용을 보거나 간단한 파일을 만들 경우에 쓰인다. 파일을 읽을 때는 기본적으로 vi를 이용하고 자표가 큰 경우에는 more를 이용하기도 한다. 반대로 적은 자료일 경우에는 cat을 이용한면 편리하다. 이 명령어는 기본적으로 파일을 읽어서 표준 출력으로 내보내는 역할을 한다. 만약 cat이라고만 입력하고 아무런 파일명도 주지 않으면, 새로운 파일 생성으로 인식하고 표준 입력을 받는다. 종료할 때에는 ctrl+D를 입력하면 입력을 마친다. 단순하지만 유용하게 사용되며 리다렉션(>, <, >>)과 함께 쓰이기도 한다.


3.1.13 touch (파일의 엑세스 시간 수정)

형식
touch [옵션] MMDDhhmmYY 파일명

명령어 위치
/bin/touch

옵션
-a : 파일의 엑세스 시간을 바꾼다.
-m : 파일의 갱신 시간을 바꾼다.
-c : 파일명이 존재하지 않는다면 새로운 파일을 만들지 않는다.
MM : 월 DD : 날짜 hh : 시간 mm : 분 YY : 연도

설명
지정된 파일들의 시간을 바꾼다. 옵션을 지정하지 않으면 엑세스 시간과 갱신 시간 모두를 바꾼다. 즉 디폴트 옵션은 -am이다. 지정된 파일의 이름이 없다면 명시된 시간을 가지는 새로운 파일을 생성한다.


3.1.14 man (매뉴얼 보기)

형식
man [-옵션] [섹션] [알고 싶은 명령어]

명령어 위치
/usr/bin/man

관련 파일
/etc/man.config -환경변수

man의 내용 위치
/usr/local/man

옵션
-C config_file : 사용할 man.config 파일을 지정한다. 기본값은 /etc/man.config이다.
-M path : 매뉴얼 페이지 검색을 위한 디렉토리 리스트를 지정한다. 이 옵션이 주어지지 않으면, 환경변수 MANPATH를 사용한다.
-P pager : 사용할 페이지를 지정한다. MANPAGER 환경 변수보다 우선이고 enviroment variable, PAGER 변수보다도 우선이다. 기본 설정으로 man은 /usr/bin/less-is를 이용한다.
-S section_list : 검색을 위한 매뉴얼 섹션의 리스트를 콜론으로 구분한 리스트이다. 이 옵션은 MANSECT 환경 변수보다 우선한다.
-a : 기본적으로 man은 첫 번째 발견된 매뉴얼 페이지를 표시한 뒤 종료한다. 이 옵션을 사용하면 첫 번째뿐만 아니라 명령어에 맞는 모든 매뉴얼 페이지를 표시한다.
-c : 최신의 cat 페이지가 존재하여도 소스 man 페이지를 다시 형식화한다. 만일 cat 페이지가 다른 수의 칼럼을 가진 스크린에 맞게 형식화되었거나 혹은, 이전에 형식화된 페이지가 손상되었을 때 다시 열을 맞추어 주는 역할을 한다.
-d : 실제로 man 페이지를 표시하지 않고, 디버깅 정보를 출력한다.
-D : 표시와 디버깅 정보 둘다 출력한다.
-f : whatis와 같다.
-F, --preformat : 형식화만 하고 표시하지 않는다.
-K : 모든 맨 페이지에서 지정한 문자열을 찾는다. 이것은 매우 느리기 때문에 섹션을 지정하는 것이 좋다.
-m, system : 주어진 시스템 이름에 의해서 검색하기 위해 대체 man 페이지 집합을 지정한다.
-p string : nroff 혹은 troff의 앞에 실행되는 전처리기의 차례를 지정한다. 모든 설치는 전처리기의 완전한 집합을 가지지 않기 때문에 그들을 지적하기 위해서는 eqn (e), grap (g), pic (p), tbl (t), vgrind (v), refer (r)의 전처리기 문자를 사용한다. 이 옵션은 MANROFFSEQ 환경변수보다 우선한다.
-t : man 페이지를 형식화하기 위해 /usr/bin/groff -Tps -mandoc를 사용하고, stdout에 출력한다. /usr/bin/groff -Tps -mandoc에서의 출력은 인쇄하기 전에 필터를 통과시켜야 하는 경우도 있다.
-w, --path : 실제로 man 페이지를 표시하지 않고 형식화 혹은 표시된 파일의 위치를 출력한다. 인자가 없으면 man은 man 페이지를 검색하는 디렉토리의 리스트를 표시(표준 출력에)한다. 만약 manpath가 man에 연결되어 있으면 "manpath" 는 "man -path"와 같다.
-W : -w와 비슷하지만, 추가 정보 없이 한 행에 한 개씩 표시한다. 다음과 같은 쉘 명령에서 사용하면 편리하다.
man -aW man | xargs ls -l

설명
man은 명령어의 서식들을 비롯하여 설명, 쓰는 방법, 누가 만들었는가에 대한 것까지 보여준다. /usr/man이라는 디렉토리로 가면 man1, man2, man3이라는 디렉토리가 있고 각각의 디렉토리에는 확장자가 .gz인 파일들이 있는데, man을 실행시키면 이 .gz 파일들이 풀려서 그 내용이 사용자에게 보여지도록 출력된다. 이 내용을 vi, cat, more 등의 명령으로 보면 제대로 보이지 않는 것은 그것이 실행 파일이기 때문이다. man + '알고 싶은 명령어'의 형식으로만 사용했던 사용자라면 옵션들을 주의깊게 보기 바란다. 숨어 있는 옵션들의 오묘한 진리를 터득하게 될 것이다.
/usr/man 아래에는 man의 내용이 들어있는 디렉토리가 있다. 각각의 디렉토리에 어떠한 명령어들이 있는지 알아보자.
man1 : 사용자 프로그램
man2 : 시스템 호출 명령어
man3 : 라이브러리 함수와 서브루틴
man4 : /dev 디렉토리에 포함되어 있는 특수 파일
man5 : 파일 포멧
man6 : 게임
man7 : 특별한 분류 기준이 적용되지 않는 기타 프로그램


3.1.15 find (파일 찾기 명령)

형식
find [경로명] [표현식]

명령어 위치
/usr/bin/find

옵션
-print : find 명령의 결과를 보여준다. 대개 맨 마지막에 붙이는 것이다.
-name 파일명 : 이름이 일치하는 파일을 찾아준다. 가장 많이 사용하는 연산자일 것이다. 와일드 카드(*)를 사용할 수 있다.
-perm 모드 : 파일 퍼미션 조건이 맞는 것만 찾아준다. 퍼미션은 읽기, 쓰기, 실행하기(디렉토리의 경우 디렉토리의 내용출력) 등의 rwx로 나타낼 수 있는데, 'ls -l'이라고 했을 때 각각의 파일과 디렉토리 이름 앞에 나타난다. 파일 소유자, 그룹, 그외 사용자들로 구분되어 있다.
-type : 파일 타입을 지정할 수도 있다. 예를 들면, 일반 파일이 아닌 디렉토리만 찾고 싶을 때는 이 연산자의 타입 부분에 d를 넣어주면 된다. ls -l이라고 했을 때 맨 앞에 나오는 부분임을 알면 쉽게 이해할 수 있다. 디렉토리의 경우 맨 앞에 d가 붙는다.
b: 블럭 특수 파일(블럭 디바이스)
c: 캐릭터 특수 파일(캐릭터 디바이스)
d: 디렉토리
f: 일반 파일
l: 심볼릭 파일
p: 파이프
s; 소켓
-atime +n/ -n/n : 최근 n일 이전에 액세스(access)된 파일을 찾아준다. +n은 -n일 또는 그보다 더 오래전, -n은 오늘부터 n일 전까지, n은 n일 전에 액세스되었음을 의미한다.
-ctime +n/ -n/n : atime 연사과 비슷하다. 다른 점은 atime은 얼마나 오래 전에 파일을 앣스하였는지를 검사하지만 ctime은 파을을 변경(change)시킨 날짜를 의미한다.
-cnewer 파일명 : "파일명" 부분에 적어준 파일보다 더 최근에 수정된 파일들을 찾는다.
-user 사용자이름 : "사용자이름" 부분에 지정한 사용자 소유의 파일을 찾아준다.
-nouser : 파일의 소유자가 없는 파일을 찾아준다. 예를 들어, 사용자를 삭제했을 경우 그 사용자가 이전에 만들어 두었던 파일들을 이 연산으로 찾을 수 있다.
-group 그룹이름 : user 연산과 비슷하다. 지정한 그룹 소유의 파일을 찾아준다.
-nogroup : nouser 연산과 비슷하다. 다만 소유자가 아닌 그룹이 대상이라는 점이 다를 뿐이다.
-exec 명령어 {} \; : find의 결과로 찾아낸 파일이나 디렉토리에 대해서 지정한 명령어를 적용한다.
-ok 명령어 {} \; : exec 연산과 비슷하다. 다만 다른 것은 그 명령을 행하기 전에 사용자에게 물어본다. 따라서, 좀더 안전하다. 주의할 것은 맨 뒤에 반드시 {} \;을 붙여준다. {}와 \;사이에 한칸 뛰우는것도 잊지 말아야 한다.
연산 -o 연산, 연산 -or 연산 : -o 앞의 연산이나 -o뒤의 연산 조건과 일치하는 것을 찾아준다.(or) 만약 -o가 없다면 두 조건 모두를 만족시키는 것을 찾는다.(and)
!연산, -not 연산 : !뒤에 나오는 연산과 일치하지 않는 파일이다.
\(연산\) : 연산을 그룹화한다. \(\)의 위치를 잘 살피고, \(\)를 빼버리면 안된다.
-size +n/-n/n [bckw] : n 뒤에 아무것도 쓰지 않으면 기본적으로 n 블럭 크기의 파일을 찾는다. 1블럭은 512바이트이다. 만약 n 뒤에 c를 쓰면 바이트 단위가 되고, k를 쓰면 킬로바이트, w를 쓰면 워드(즉 2바이트)가 된다. +는 지정한 크기 이상, -는 지정한 크기 이하를 나타낸다는 것은 쉽게 짐작할 수 있을 것이다.
-links n : n개의 링크를 가진 파일을 찾아준다.
--help : 도움말을 보여주고 마친다.

설명
단순히 파일 이름만을 가지고 찾는 것은 물론, 파일 모드, 파일타입, 크기 마지막으로 접근한 시간 등등 여러가지 다양한 조건으로 파일을 찾아준다.


3.1.16 grep (특정 문자(열) 검색하기)

형식
grep [-옵션] [파일...]

명령어 위치
/bin/grep

옵션
-G, --basic-regexp : 패턴을 기본적인 정규 표현식으로 해석한다.
-E, --extended-regexp : 패턴을 확장된 정규 표현식으로 해석한다.
-F, --fixed-strings : 패턴을 고정된 스트링 리스트나 새로운 행에 의해 구분된 것으로 해석한다. 또 egrep과 fgrep이라는 변종도 사용된다. egrep은 grep -E와 비슷하고, 기존의 Unix grep과 호환이 가능하다. fgrep은 grep -F와 같다.
설명
문서 안에서 특정 단어를 찾고 싶은 경우, 일일이 파일을 열어가면서 찾는 것은 상당히 비효율적이다. 이러한 경우에는 grep을 사용하면 된다.


3.1.17 sort (파일내의 단어 순서를 행 단위로 정렬)

형식
sort [옵션] 파일이름

명령어 위치
/bin/sort

옵션
-c : 파일이 정렬되었는지 검사한다. 그렇다면 아무런 출력도 하지 않는다.
-m : 특정한 파일을 병합한다. 파일은 이미 정렬되었다고 가정한다.
-u : 고유한 행만이 출력된다.
-o 파일명: 출력 파일 이름을 지정한다. 이름은 입력 파일 이름과 같을 수 있다.
-d : 사전(dictionary)과 같은 순서대로 정렬한다. 단어 정렬 순서에는 문자, 숫자, 공백 문자만이 사용된다.
-f : 대문자와 소문자를 구별하지 않는다.
-i : 정렬에 사용되는 문자 중 프린트될 수 없는 문자는 사용하지 않는다.
-M : 단어를 정렬할 때 달을 의미하는 문자를 취급한다. FEB는 JAN보다 뒤에 정렬된다.
-n : 숫자를 같은 문자가 아닌 정말로 숫자로 취급해서 수의 크기대로 정렬한다.
-r : 역순으로 정렬한다.
-t 문자 : 단어 등 필드를 구분하는 문자를 지정한다. 탭(tab)이나 공백 문자 이외의 문자를 구분 문자로 취급하도록 한다.
-b : 단어의 뒤에 오는 공백 문자는 정렬 키(key) 값으로 무시하도록 한다.

설명
sort명령의 정렬 방법에는 다음과 같은 기준이 있다. 일반적인 알파벳 순서로 정렬하되 소문자보다 대문자가 우선한다. 대소문자 보다 숫자가 우선한다. 숫자는 처음에 오는 숫자의 순서에 의한다. 즉 숫자들도 문자처럼 취급될 뿐이지, 실제 숫자의 대소는 생각하지 않는다


3.1.18 head (파일의 앞부분 출력하기)

형식
head [-옵션] [파일]

명령어 위치
/usr/bin/head

옵션
-c, --bytes=SIZE : 첫 번째 바이트를 출력한다.
b : 512 bytes(1block)
k : 1024 (1k) bytes
m : 1MB(mega byte)
-n, --lines=NUMBER : 지정한 수만큼 출력하며, 기본은 10이다.
-q, --quiet, --silent : 첫 부분에 파일 이름을 보여주지 않는다.
-v, --verbose : 항상 첫 부분에 파일 이름을 보여준다.

설명
파일의 앞부분을 지정한 만큼 출력한다. 파일 내용을 확인할 때 편리하다. head의 기본적인 출력 라인 수는 10이다. head의 반대 의미로 파일의 끝 부분을 출력하는 명령은 tail이다.


3.1.19 tail (파일의 뒷부분 출력하기)

형식
tail [-옵션] [파일]

명령어 위치
/usr/bin/tail

옵션
-n[l|b|c] : 파일 뒷부분 마지막 n개의 라인을 출력한다. 이 옵션으로 n을 따로 지정하지 않는 한 마지막 10개의 라인이 출력된다.
-l : lines. 기본값인 설정 라인 단위로 처리한다.
-b : blocks. 예를 들어, -10b라고 옵션을 주면 마지막 10블럭만큼을 보여준다.
-C : characters. 캐릭터 단위로 처리한다.
+n : 파일 앞부분으로부터 n개의 라인을 출력한다. head의 역할을 하게 되는 셈이다.
-c n[b|k|m], --bytes n[b|k|m] : 마지막 n 바이트만큼 만을 보여준다. b나 k, m 중에 하나를 써서 단위를 변경시킬 수도 있다.
b : 512 bytes(1block)
k : 1024 (1k) bytes
m : 1MB(mega byte)
-q, --quiet, --silent : 첫 부분에 파일 이름을 보여주지 않는다.

설명
이 명령어는 파일의 끝 부분에서 지정한 라인의 수만큼을 출력하는 명령어이다. 긴 문서의 일부분만을 볼 때에 편리한 명령어이다.tail 다음에 옵션이나 파일 이름을 써주지 않으면 표준 입력 상태가 되어서 키보드의 입력을 기다린다. 여기에서 아무리 입력을 하여도 특정 파일로 저장되지는 않는다. 입력 상태를 빠져나가려면 ctrl+F를 누르면 된다. 반대되는 명령어로는 head가 있다.


3.1.20 more (화면 단위로 출력하기)

형식
more [-옵션] [+/ 표현식] [+ 줄번호] [파일...]

명령어 위치
/bin/more

관련 파일
/usr/lib/more.help

옵션
-num : num 줄을 한 화면으로 지정한다.
-d : more 명령은 키보드의 입력을 받아야 할 때 "[Press space to continue, 'q' to quit.]" 라는 메시지를 보여주고, 글쇠가 잘못 입력되었을때 "[Press 'h' for imolatructiomola.]" 라는 메시지를 보여준다.
-s : 스크롤하지 않은 채 화면을 모두 지우고 텍스트를 보여준다.
-u : 밑줄 속성을 가진 문자를 그냥 보여준다.
+/ 표현식 : 정규 표현식이 발견되는 부분부터 보여준다.
+num : num 줄부터 보여준다.

설명
more는 내용이 긴 파일들이나 디렉토리를 보기에 편리하다. 출력하는 내용을 한 페이지 단위로 끊어서 출력한다. telnet 등과 같이 한정된 화면을 볼 때 편리하다.


3.1.21 diff (파일 비교)

형식
diff [ -ibefw ] 파일명1 파일명2

명령어 위치
/usr/bin/diff

옵션
-i : 대소문자를 구분하지 않는다.
-b : 하나 이상의 공백 문자는 모두 같은 것으로 취급해서 비교한다.
-e : ed 에디터를 위한 스크립트를 생성한다.
-f : 반대 순서로 스크립트를 생성한다. 하지만 이것은 ed 에디터에 사용될 수가 없다.
-w : 탭(tab) 문자를 포함한 모든 공백 문자를 무시하고 비교 작업을 수행한다.

설명
두 개의 파일을 비교한다. 이것은 두 개의 파일이 과연 어떻게 다른가를 중요시한다. 그래서 어떻게 수정되어야만 두 파일이 같아질 수 있는지를 말해준다.diff가 보여주는 정보는 언뜻 보아서는 이해할 수 없다. 일단 명심해야 할 것은 표본이 되는 문서는 두 번째 파일이라는 점이다. 그래서 모든 정보는 '첫번째 파일이 어떻게 수정되어야 두 번째 파일과 같아지느냐'하는 것이다.
파일2에서 파일1로 첨가(append)되어야 할 것은 'a' 기호로 표현된다. 그리고 파일1에서 제거(delete)되어야 하는 내용은 'd'로, 두 파일의 내용이 바뀌어(change)하는 내용은 'c'기호로 표시한다. 이러한 수정 기호와 함께 행의 번호가 함께 표시되며, 해당 줄의 내용이 함께 출력된다.

3.2 파일 및 디렉토리 권한 설정 명령어


3.2.1 umask (매스크 모드 설정하기)

형식
umask [-S] [모드]
umask [8진수 값]
기능
모드가 숫자로 시작하면 8진수로 해석한다. 그렇지 않으면 chmod와 비슷한 심볼릭 매스크로 해석한다. 모드를 생략하거나 -S 옵션을 적으면, 현재의 매스크 값을 출력한다. -S 옵션은 매스크 값을 심볼릭 형태로 출력하도록 한다. 기본 출력 형태는 8진수이다. -- 인수는 뒤에 나오는 인수에 대한 옵션 점검을 금지시킨다. 모드를 성공적으로 변경하거나 아무런 모드 값도 적지 않으면 반환 상태값은 0이고 그 나머지 경우에 대해서는 거짓이다.
파일이 리다이렉션되기 전에 이미 존재한다면, 원래 파일의 허가권 값은 보존되고 umask 값은 무시된다.
umask 셸 명령은 셸의 umask 값을 명시된 8진수로 설정하거나, 만일 인수가 생략된다면 현재의 umask 값을 보여준다. 셸의 umask 값은 변화될 때까지 보존된다. 자식 프로세스들은 그들 부모 프로세스로부터 umask 값을 상속받는다.
C 프로그램이 한 파일을 생성할 때, 시스템 호출 open() 에 대한 8진수 매개변수로 파일의 원래 허가권 설정을 제공한다. 예로서, 소유자, 그룹, 다른 사용자들의 읽기와 쓰기 허가권을 갖는 파일을 생성하기 위해서는 다음과 같이 시스템 호출을 실행한다.
fd = open ("myFile", O_CREAT | O_RDWR, 0666);
셸이 ">"를 사용하여 리다이렉션을 실행할 때 8진수 허가권 0666을 가진 파일을 수축하기 위하여 위의 예와 유사한 시스템 호출을 사용한다.
그렇지만, ">"를 사용하여 사용자가 파일을 생성하려 한다면, 그 파일의 허가권은 8진수 644로 설정된다.
$ date > date.txt
$ ls -l date.txt
-rw-r--r-- 1 glass 29 Oct 3 18.33 date.txt
모든 리눅스(또는 유닉스) 프로세스가 umask라는 특별한 값을 가지고 있기 때문이다. umask값은 파일이 생성될 때 요구되는 허가권 설정을 제한하는 데 사용된다. 셀의 기본적인 umask값은 8진수 0022이다. umask 값 설정 비트(bit)들은 요청된 허가 설정 비트들과 mask된다. 앞의 예에서 요청된 허가권 0666을 기본 umask 값인 0022로 마스크하여 최종적인 허가권 0644를 생성한다.


3.2.2 chmod (파일 속성 변경)

형식
chmod [옵션] [모드...] [파일...]
chmod [옵션] [모드...] [파일...] [--옵션]
chmod [옵션] [8진수 모드...] [파일...]
chmod [옵션] [8진수 모드...] [파일...] [--옵션]
명령어 위치
/bin/chmod

옵션
-c, --changes : 권한 변경이 올바른 파일들만 자세하게 보여준다.
-f, --silent, --quiet : 중요한 오류가 아니라면 보여주지 않는다.
-v, --verbose : 작업 진행 상태를 자세하게 설명해 준다.
-R, --recursive : 디렉토리 안에 있는 파일과 디렉토리, 또 그 디렉토리 안에 있는 모든 파일도 함께 바꾼다.
--help : 사용할 수 있는 옵션들과 그 사용법을 보여주고 마친다.
--version : 현재 버전 정보르 보여준 뒤 마친다.

설명
각각의 파일에는 파일에 접근할 수 있는 권한이 주어진다. chmod는 이러한 권한을 바꿀때 사용하는 명령어이다.
공동으로 사용하는 서버에서 다른 사용자들이 본인의 디렉토리로 들어올 수 있다. 이것을 우리 나라에서는 해킹이라고 하지만, 정확히 말해서, 크래킹이 맞는 말이다. chmod 명령어는 사용자만이 혹은 같은 그룹에 속한 사람들만이 들어오도록 설정하는 것으로, 파일의 퍼미션 혹은 접근 권한을 바꾸는 것이다. 결국 파일이나 디렉토리의 소유자나 루트만이 이 명령어를 실행시킬 수 있다.

기호 모드의 기호들
u(user) : 소유자
g(group) : 파일이 속한 그룹
o(other) : 파일의 소유자가 아닌 모든 사용자와 그룹
a(all) : 모든 사용자
+ : 권한 추가
- : 권한 제거
= : 명시된 특정한 권한만을 할당하고 나머지는 제거


3.2.3 chown (파일 및 디렉토리의 소유자 변경)

형식
chown [옵션] [사용자계정] [: 혹은 .] [그룹이름] 파일... 명령어 위치
/bin/chown
옵션
-c, --changes : 바뀐 파일들에 대해서만 자세하게 보여준다.
-f, --silent, --quiet : 바뀌어지지 않는 파일들에 대해서 오류 메시지를 보여주지 않는다.
-v, --verbose : 작업 진행 상태를 자세하게 설명해 준다.
-R, --recursive : 디렉토리 안에 있는 파일과 디렉토리, 또 그 디렉토리 안에 있는 모든 파일도 함께 바꾼다.
--help : 사용할 수 있는 옵션들과 그 사용법을 보여주고 마친다.
--version : 현재 버전 정보르 보여준 뒤 마친다.

설명
서버는 웹 기능 그리고 메일 기능 등 다양한 기능을 지원하고 이것은 각각 다른 관리자들에 의해 관리된다. 하지만 모두가 루트의 권한을 가지고 관리한다면, 이것은 보안상 위험할 수 있다. 따라서 홈페이지를 관리한다면, web이라는 계정을 만들고 그에 맞는 권한을 주어 훨씬 더 효율적으로 관리할 수 있는 것이다. 사용자와 그룹 모두를 바구어야 하는 것은 아니다. 사용자만 지정했다면 사용자만 바뀌고, group만 지정했다면 그룹만 바귄다. 사용자와 그룹은 점(.)이나 콜론(:)으로 구분해 준다.

3.3 파일 시스템 관련 명령어


3.3.1 lsattr (파일 시스템의 속성 보여주기)

형식
lsattr [-옵션][파일]
명령어 위치
/usr/bin/lsattr

옵션
-a : 디렉토리 안의 모든 파일 속성을 다 보여주고 마친다.
-d : 디렉토리 자체의 속성을 보여준다.
-R : 디렉토리와 서브 디렉토리 내부의 파일 속성까지 보여준다.
-v : 파일의 버전을 보여주고 마친다.
-V : 버전 정보를 보여주고 마친다.

설명
지정한 파일의 리눅스 파일 시스템 속성을 보여준다.


3.3.2 fstab (파일 시스템에 대한 고정적인 정보 저장하기)

서식
vi /etc/fstab

명령어 위치
/etc/fstab

설명
fstab 파일은 총 여섯 개의 필드로 나뉘어져 있다. 첫 번째에는 마운트될 장치 혹은 원격 파일 시스템을 적는다. 두 번째는 현재 시스템에서 위치할 곳을 적는다. 이 부분은 마운트되어 사용되어 질 때 이용하는 곳이다. 세 번째에는 이곳이 어떤 파일 시스템인지를 표시한다. 네 번째는 부팅시 자동으로 마운트할 것인지 아닌지를 선택한다. 다섯 번째는 dump 명령에의해 덤프될 파일이면 1, 그렇지 않다면 0이라고 한다. 여섯 번재는 부팅시 어떤 파일들을 점검할 것인지를 선택한다. 루트 파일 시스템은 1, 다른 파일은 2, 그리고 필요없거나 반화되는 것들은 0으로 한다.


3.3.3 mkfs (파일 시스템 만들기)

형식
mkfs [옵션]장치이름[블럭]

명령어위치
/sbin/mkfs

옵션
-V : 정보를 자세하게 보여준다. 여기에는 실행되는 특정 파일 시스템을 만드는 프로그램에 대한 정보도 모두 포함된다. 이 옵션이 한번 이상 사용되면 특정 파일 시스템을 만드는 데 사용될 그 프로그램의 정보만 보여주고 실질적으로 실행은 되지 않는다.이것은 실질적으로 검사하는 것에만 유용하게 쓰인다.
-t 형태 : 만들어질 파일 시스템의 형태를 지정한다. 이 옵션이 지정되지 않으면, /etc/fstab 파일에서 그 해당 파일 시스템을 찾고, 여기서도 못찾으면 기본적으로 minix 파일 시스템을 사용한다.
파일시스텝 옵션 : 각 특정 파일 시스템을 만드는 프로그램에서 사용되는 옵션을 말한다. 대부분 같은 형식의 옵션이다. -c : 파일 시스템을 만들기 전에 먼저 불량 블럭을 검사한다.
-l '파일이름' : 피일 이름으로 부터 불량 블럭 목록을 읽는다.
-v : 작업 상태, 결과를 자세하게 보여준다.

설명
mkfs는 한 장치를 리눅스 파일 시스템으로 만드는 데 사용된다.리눅스 파일 시스템으로 만드는데 사용되는 장치의 이름으로는 /dev/hda1, /dev/sda2 식의 디스크 장치 이름이나 /, /usr, /home 같은 파일 시스템을 위한 마운트 경로가 사용된다. 블록은 그 파일 시스템을 위해 사용되는 블럭의 개수이다. 명령어가 성공적으로 끝나면 0,실패하면 1을 리턴한다. mkfs를 통해 슈퍼, inode, 데이터 블록을 만들면 사용자가 사용할 수 있는 상태가 된다. 그리고 장치의 크기에 5% 정도는 남겨둔다. 이 부분은 일반 사용자들이 공간을 다 사용한다 하더라도 남겨지는 부분으로써, 루트가 시스템 복구 등의 작업을 하는데 사용하는 공간이다.


3.3.4 fsck ( 파일 시스템 검사하기)

형식
fsck [-옵션][파일 시스템옵션][파일시스템 또는 디스크디바이스]

명령어위치
/sbin/fsck

관련파일
/etc/fstab

옵션
-A : /etc/fstab 화일에 표시된 모든 화일 시스템을 한 번 씩 모두 점검한다. 보통 /etc/rc 시스템 초기화 화일에서 각 시스템마다 일일이 명령을 내리지 않고 일괄적으로 점검할 때 사용된다.
-R : -A 플래그와 같이 사용될 때 루트 화일 시스템은 제외하도록 한다. (이미 읽기-쓰기 가능으로 마운트되어 있는 경우) -T : 시작할 때 제목을 보여주지 않는다.
-N : 실행하지는 말고 어떤 작업을 할 것인지만 보여준다.
-P : -A 플래그가 설정되어 있을 때 다른 화일 시스템과 루트 화일 시스템을 병렬처리하여 점검한다. 루트 화일 시스템에 에러가 있는 경우에는 e2fscsk 바이너리와 같은 것들이 깨져있을 수 있기 때문에 안전한 방법은 아니다. 루트 화일 시스템을 좀 더 작고 컴팩트하게 다시 파티션하길 원하지 않는 시스템 관리자들을 위해서만 제공되는 옵션이다.
-s : fsck 동작을 시리얼화한다. 대화형 모드에서 여러 화일 시스템을 점검할 때 유용하다.( 주의 : e2fsck 은 기본값으로 대화형으로 실행한다. e2fsck 을 비대화형 모드로 실행하려면 -p 또는 -a 옵션을 주어 에러를 자동 치유하거나 -n 을 주어 고치지 않고 그대로 놔두도록 해야 한다.)
-V : 실행되는 각 화일 시스템용 명령을 포함하여 자세한 출력을 수행한다.
-t 화일시스템유형 : 점검할 화일 시스템 유형을 지정한다. -A 플래그가 설정되어 있는 경우 화일시스템유형 에 맞는 것만 점검한다. 화일시스템유형 앞에 no 를 붙이면 화일시스템유형 아닌 것만 점검한다.
보통 /etc/fstab 화일에 들어있는 화일시스템유형 을 따른다. 만약 해당 유형을 알아낼 수 없을 때는 fsck 는 -t 옵션에서 주어진 값을 사용한다. 주어진 값이 유효하지 않다면 현재로서는 기본값인 ext2 가 사용된다.
화일시스템옵션 : fsck 에 의해 이해되지 않는 옵션 또는 -- 옵션 뒤에 오는 옵션은 각 화일 시스템 고유의 점검 프로그램의 옵션으로 취급한다. 현재 표준적인 화일 시스템 고유의 옵션은 변동 중이다. 비록 확실하게 보장할 수는 없지만 다음 옵션들은 대부분의 점검 프로그램에서 지원한다.
-a : 물어봄 없이 자동으로 복구한다.( 주의하여 사용하기 바란다 ) e2fsck 은 -a 옵션을 단지 호환성을 위해 제공할 뿐이다. 이 옵션은 e2fsck의 -p 옵션으로 매핑된다.
-r : 화일 시스템 복구시 질문을 하게끔 한다. 주의 : 여러 fsck 가 병렬모드로 작동하고 있을 때 사용하는 것은 좋지 않다. e2fsck 의 기본 동작 방식이므로 주의하기 바란다. 이 옵션은 단지 호환성 때문에 제공될 뿐이다. 설명
파일 시스템의 이상 유뮤를 점검하고 복구하는 데에 사용된다. 검사하기 전에 반드시 언마운트를 해야 한다.fsck자체가 파일 시스템의 이상을 진단하고 수정하는 것이 아니라 점검 프로그램을 불러들이는 역할을 한다. 각 시스템 고유 점검 프로그램을 /sbin, /etc/fstab, /etc, PATH 환경 변수에 나열된 디렉토리 순으로 찾는다 서로 다른 물리적 드라이브를 점검하는 경우에 병렬적으로 처리할 수 있다. fsck는 손상된 파일, 디렉토리 등을 /lost+found 디렉토리로 연결한 뒤 오류를 수정한다.

fsck 의 종료 코드
0 - 에러 없음
1 - 화일 시스템 에러 고쳐짐
2 - 리부팅이 필요함
4 - 화일 시스템 에러를 고치지 않고 그대로 둠
8 - 실행 에러
16 - 사용법 또는 문법 에러
128 - 공유 라이브러리 에러


3.3.5 fdisk (파티션 나누기)

형식
fdisk[옵션][장치명]

명령어위치
/sbin/fdisk

옵션
-l 현재 시스템의 파티션 테이블을 나열하고 마친다.
-s 파티션 도스 파티션이 아니면 그 파티션의 크기가 출력된다.
-v 버전 정보를 보여준다

설명
물리적 하드 디스크에 칸막이를 설치하여 윈도우가 사용할 부분과 리눅스가 사용할 부분, 그 외 다른 운영체제가 사용할 부분으로 각각 나누는 것을 파티션이라 하는데, 이때 사용하는 명령어가 fdisk이다.

fdisk 에서 사용하는 명령어
a : 부트 플래그로 변경
b : BSD로 디스크 레이블 편집
c : 도스 호환 플래그로 편집
d : 생성되었던 파티션을 삭제
l : 지정된 파티션 형태의 목록을 출력
m : 도움말을 출력
n : 새로운 파티션을 추가
o :새로운 도스 파티션 테이블을 생성
p : 현재까지 만들어진 파티션 레이블을 생성
q : 변경된 파티션을 저장하지 않고 종료
s : 새로운 sun 디스크 레이블을 생성
t : 파티션의 시스템 id를 변경
u : 표시/엔트리 단위를 변경
v : 파티션 테이블을 점검
w : 변경된 파티션을 디스크에 저장하고 fdisk를 종료
x : 다른 기능(숙련자만이 사용)


3.3.6 mount (장치 연결하기)

형식
mount -t[옵션] 파일시스템 마운트될_장치 마운트될_위치
mount 마운트될_장치 마운트될_위치
mount 마운트될_위치
mount [-옵션]

명령어 위치
/bin/mount

관련 파일
/etc/fstab --> 파일 시스템 테이블
/etc/mtab --> 마운트된 파일 시스템에 대한 테이블
/etc/mtab~ --> 잠금(lock) 파일
/etc/mtab.tmp --> 임시파일

옵션
-v : 마운트된 상태를 자세하게 출력한다. 이는 mount 명령의 결과를 알기 위해 사용한다.
-f : 실제 시스템 호출은 하지 않고 마운트할 수 있는지 점검한다.
-n : /etc/mtab 파일에 쓰기 작업을 하지 않고 마운트한다. /etc가 읽기전용 파일 시스템인 경우에 필요하다.
-r : 읽기만 가능하게 마운트한다.
-w : 읽기/쓰기 모드로 마운트한다. 기본 설정 값이다.
-t vfstype : -t 다음에 쓰이는 인수는 파일 시스템의 유형을 지시한다. 현재 지원되고 있는 파일 시스템 유형은 /usr/src/linux/fs/filesystems.c의 헤더 파일로 적혀 있는데, minix, ext, ext2, ext3, xiafs, hpfs, fat, msdos, umsdos, vfat, proc, nfs, iso9660, smb, ncp, affs, ufs, sysv, xenix, coherent이다. 마지막 3개는 같은 것이며, xenix와 coherent는 앞으로 사용될 가능성이 희박하다. -sysv를 사용하는 것이 좋다.

설명
리눅스에서의 모든 장치들은 하나의 파일로 인식된다. 이런 각각의 장치들을 시스템에 인식하도록 하는 명령어 이다. 리눅스에서 tree라는 명령어를 입력하면 내부의 디렉토리들과 파일들이 트리 구조로 나타난다. 여기에서 출발점은 /이다. /에 /root가 있고 /home 등이 있어서 각각의 계정도 생기고 하는 것이다. 마운트는 직접 콘솔에서 위의 서식 형식에 따라 입력함으로써 마운트를 실행할 수도 있고, /etc/fstab이라는 파일에 기록하여서 사용할 수도 있다(fstab 참고). 자주 사용하는 장치라면 /etc/fstab에 저장하고 사용하는 것이 편리하다. mount는 /etc/mtab라는 파일에 현재 마운트되어 있는 파일 시스템의 목록을 기록해 둔다.


3.3.7 umount (장치 제거하기)

형식
umount [-옵션] 장치 | 디렉토리

명령어 위치
/bin/umount

관련 파일
/etc/mtab --> 마운트된 파일 시스템에 대한 테이블

옵션
-v : 자세한 출력 모드를 보여준다.
-n : /etc/mtab를 갱신하지 않는다.
-a : /etc/mtab 파일에 명시한 모든 파일 시스템을 포함한다.
-t 파일시스템 : 특정 파일 시스템 유형에만 적용하도록 지정한다. 둘 이상의 유형에 대해서는 콤마(,)로 구분한다. 파일 시스템 목록에 대해서는 no를 접두사로 쓰므로써 그것을 제외시킬 수도 있다.

설명
mount로 장치를 연결하였다면 당연히 해제하는 방법도 있다. 이것이 umount인다. 이것의 역할은 파일 계층 구조로부터 파일 시스템을 떼어내는 것이다. 윈도우 운영체제에 익숙한 사용자라면, 윈도우에서는 CD-ROM 드라이브나 플로피 디스크 드라이브가 항상 붙어 있어 CD나 디스켓을 삽입하면 바로 쓸 수 있는데, 리눅스는 왜 귀찮게 마운트라는 것을 사용하는지에 의문이 생길 수 있다. 본래 리눅스는 서비스를 하는 서버 시스템을 바탕으로 하는 운영체제이다. 따라서, 보다 나은 서비스를 하기 위해 시스템에서 불필요한 것들은 배제하고 시스템의 효율성을 높이기 위해서 사용하지 않는 것들은 떼어 놓는다. 이렇게 함으로써 좀더 효율적으로 시스템을 운영할 수 있다. 파일 시스템 지정 방법은 마운트된 디렉토리를 명시하거나 또는 직접 장치명을 적어주는 두 가지 방법이 있다.


3.3.8 mkswap (스왑 영역을 지정)

형식
mkswap [ -c ] 장치이름 [ 블럭크기 ]

명령어 위치
/sbin/mkswap

옵션
-c 스왑 영역을 만들기 전에 먼저 블량 블럭을 검사한다. 불량 블럭이 발견되면 그 정보를 보여준다. 이 옵션은 스왑 파티션에 대해서만 영향을 끼치지, 일반 파일에 대해서는 해당사항이 없다. 일반 파일을 스왑 파일로 만들어 사용할 경우에는 그 파일에 불량 블럭이 있는지 확인하기 위해서는 mkfs -c 명령으로 파일 시스템을 만든다.

설명
mkswap 명령은 지정한 특정 장치나, 파일을 리눅스용 스왑 영역으로 지정한다.
장치이름 인자로 사용될 수 있는 장치이름은 다음과 같다.
/dev/hda[1-8]
/dev/hdb[1-8]
/dev/sda[1-8]
/dev/sdb[1-8]
블럭크기 인자는 파일 시스템의 원하는 블럭 단위의 크기이다. 이 인자가 사용되지 않으면, 자동으로 계산된다. 블럭크기는 해당 시스템의 CPU에서 처리할 수 있는 page 크기에 따라 정해진다. MINCOUNT..MAXCOUNT 범위만의 블럭크기가 지정될 수 있다. 만약에 블럭 갯수가 MAXCOUNT를 초가했을 경우에는, MAXCOUNT까지만 사용되고, 나머지는 짤리고, 경고 메시지를 보여준다.
MINCOUNT와 MAXCOUNT 값은 다음과 같이 계산된다.
MINCOUNT = 10 * PAGE_SIZE / 1024
MAXCOUNT = (PAGE_SIZE - 10) * 8 * PAGE_SIZE / 1024
예를 들어 4KB page 처리를 할 수 있는 CPU에서는 다음과 같이 계산된다:
MINCOUNT = 10 * 4096 / 1024 = 40
MAXCOUNT = (4096 - 10) * 8 * 4096 / 1024 = 130752
각 블럭이 1KB 일때, 윗 예제의 스왑 영역은 40KB에서 127.6875MB 사이의 아무 크기나 사용할 수 있다.
만약 page 크기를 모른다면, "cat /proc/cpuinfo" 명령으로 알아 볼 수 있다.
MAXCOUNT의 계산을 할 때, 각 page의 크기에서 10바이트를 빼는 이유는 스왑 영역을 알리는 기호인 "SWAP-SPACE"라는 10 문자가 각 page에서 쓰이기 때문이다.
스왑 파일을 설정하기 위해서는 먼저 그 파일을 만들어야 한다. 스왑 파일의 사용은 일반적으로 다음과 같은 과정으로 처리된다.
# dd if=/dev/zero of=swapfile bs=1024 count=8192
# mkswap swapfile 8192
# sync
# swapon swapfile
스왑 파일로 사용할 파일은 어떠한 공백이 있어서도 안된다는 것을 주의하라. (그래서, cp(1) 명령으로 스왑 파일을 만들지 말기를)

3.4 압축 관련 명령어


3.4.1 gzip (압축하기)

형식
gzip [-옵션][이름]
명령어 위치
/bin/gzip
/usr/bin/gzip

옵션
-n, --fast, --best : n은 1부터9사이의 숫자 중 하나 이다. 1은 가장 빠르게 압축을 하므로 압축률이 좋지 않은 반면 9는 가장 호율이 좋지만 대신 압축하는 속도가 느리다.
-c, --stdout, --to-stdout : 압축 결과를 보여주고, 원래 파일은 그대로 둔다.
-d, --decompress --uncompress : 압축을 푼다 gzip -d gunzip과 같다
-f, force : 압축하려는 테이터가 지금 다른 터미널에서 엑세스되고 있는 상황이라도 압축을 강행한다. -l, --list : 주어진 압축 파일의 정보를 보여준다. 어떤파일이 압축되어 있는지 압축률을 얼마나 되는지, 압축하기전, 후의 파일 크기는 어떤지 보여준다.
-q, --quiet : 경고 메세지를 출력하지 않는다.
-r, --recursive : 디렉토리 이름을 파일명으로 주었을 때 해당 디렉토리 아래의 모든 파일을 압축하거나 해제한다.
-s 확장자, --suffix 확장자 확장자를 다른 것으로 지정할 수 있다. 기본 확장자는 .gz이다.
-t, --test : 압축된 파일이 제대로 압축이 되었는지 테스트해 본다.
-v, --verbose : 이름,압축률 등을 좀더 자세히 보여준다.
-N, --name : 따로 지정해 주지 않아도 자동으로 적용되는 기본 옵션이다. 압축하고자 하는 원래 파일의 파일명과 시간 정보를 보존한다.
-h, --help : 도움말을 보여준다.
-v, --version : 버전 정보를 보여주고 마친다.

설명
파일을 압축하는 명령어로써, 확장자가 gzip,gunzip,zcat일 파일로 압축하거나 해제한다.


3.4.2 compress (압축하기)

형식
compress [옵션] 파일명

옵션
-c : 옵션을 사용하면 압축 결과가 표준 출력으로 나가며 파일은 변함없다.
-C : 파일을 블록으로 분화하는 것을 금지한다. 이것은 compress의 구식 버전이 파일을 읽을 수 있도록 하기 위함이다.
-f : 수행 결과 파일과 같은 이름의 파일이 있다면 물어보지 않고 덮어쓴다. 또한 파일의 크기가 줄어들지 않더라도 파일 이름에 .Z를 추가한다.
-v : 파일이 압축되면 압축 효율을 퍼센트로 보여준다.

설명
압축된 파일은 이름에 접미사 .Z가 추가된다. 압축 알고리즘에 의해 크기가 줄어드는 경우만 압축을 수행한다. -d 옵션은 역으로 압축을 풀지만 uncompress를 사용하면 옵션을 주지 않고 압축을 풀 수 있다. 압축을 푸는 경우 파일 이름 뒤에 접미사 .Z를 생략할 수도 있다.


3.4.3 split (파일 나누기)

형식
split [옵션] [입력 파일[출력 파일]]

명령어 위치
/usr/bin/split

옵션
-b, --bytes=SIZE : 나누는 단위를 지정한다.

설명
하나의 파일을 여러개의 작은 파일로 나눈다. 용량이 큰 파일을 잘게 나누어 플로피 디스켓에 담아 이용할 수 있다. 지정한 입력 파일(파일 이름 대신 -를 입력하면 표준 입력으로부터 입력받음)을 일정 라인마다 잘라서 다른 파일로 저장하며 원 파일은 그대로 있다. 파일을 foobar라로 지정해 두었다면 결과적으로 생기는 출력 파일의 이름은 foobara, foobarb ... 가 되며, 출력 파일을 지정하지 않으면 xaa, xab ... 의 이름을 가지게 된다. split를 실행시키면 기본적으로 1000행의 단위로 파일을 자른다.


3.4.4 tar (파일 묶기)

형식
tar -옵션 [만들 tar 파일] [묶을 파일]

명령어 위치
/bin/tar

관련 파일
/usr/include/tar.h

옵션
-c : tar 형식의 파일을 생성한다. tar 형식의 파일 이름은 기본적으로 "/dev/rmt8" 이다.
-f : 옵션 다음에 필요한 파일명을 써줌으로써, 기본값으로 설정된 이름을 변경할 수 있다.
-v : 장황하게 긴 출력을 조장한다.
-x : 명명된 파일을 추출해낼 수 있게 한다.
-t : 목차를 보여준다.
-r : 무조건 리스트된 파일을 보관 파일에 덧붙인다.
-u : 이미 보관된 파일보다 더 최근의 파일을 덧붙인다. 만일 파일 목록이 디렉토리 이름을 가지고 있다면, 디렉토리 내용은 재귀적으로 덧붙여지거나 추출된다.
-z : gzip 형식으로 만든다.

설명
여러개의 파일들을 하나로 묶는다. 압축과 혼돈하기 쉬운데, 압축과는 달리 단지 나뉘어진 파일들을 하나의 이름으로 묶는 역할을 한다.tar 은 왜 필요할까? gzip은 압축 프로그램으로, 파일 자체의 크기를 줄여준다. 그러나 많은 파일들을 압축하려고 할 때 매번 각각의 파일별로 압축을 한다는 것은 비효율적인 일이다. 그리고 전송을 할 때에도 불편하다. 여러 개의 파일들이 하나로 묶여져 있다면 편리하지 않겠는가? 이런 때에 쓰이는 명령어가 tar이다.

3.5 백업명령어

3.5.1 cpio (복사본 만들기)

형식
cpio [-옵션]
cpio [-옵션] 패턴
cpio [-옵션] 디렉토리
명령어위치
/bin/cpio

관련파일
/usr/include/cpio.h

옵션
-o : 표준입력으로부터 파일명의 목록을 가지고 와 그 파일들의 백업을 포함하는 cpio 형식 파일을 생성한다
-v : 파일들을 복사하는 동안 각 파일의 이름을 보여준다.
-i : cpio형식 파일을 표준 입력으로부터 읽어와 입력 채널로 부터 명시된 패턴에 일치하는 모든 파일을 재생성한다. 기본적으로, 오래된 파일들이 최근의 파일 위로 복사되지 않는다
-u : 무조건적으로 목차를 보여주게 한다.
-d : 복사 실행 도중에 필요하다면 디렉토리를 생성하게 된다
-t : 표준 입력으로부터 파일 이름의 목록을 가져와서 그들의 내용을 명명된 디렉토리로 복사한다. 이 옵션은 하나의 서브 디렉토리를 다른 장소로 복사하는 데 유용하다.
-p : 표준 입력으로부터 파일 이름의 목록을 가져와서 그들의 내용을 명명된 디렉토리로 복사한다. 이 옵션은 하나의 서브 디렉토리를 다른 장소로 복사하는 데 유용하다.
-r : 재귀 옵션은 cp 유틸리티를 사용하는 것이 더 편리하다. -I 옵션은 가능하다면 물리적 복사를 수행하는 대신 링크(link)를 생성한다. 설명
cp 명령어 외에 한꺼번에 복사해서 묶어 두는데 휠씬 편한 명령어로, 백업용으로 좋다.

3.5.2 dd (블럭장치 읽고 쓰기)

형식
dd [--옵션][변수=값]

명령어 위치
/bin/dd

옵션
if=file : 표준입력 대신에 지정한 file을 입력 대상으로한다.
of=file : 표준 출력 대신에 지정한 file을 출력 대상으로한다. conv=notrunc옵션을 사용하지 않는 한 seek='바이트크기'에서 지정한 크기에 따라 출력 파일을 자른다.
ibs=bytes : 한번에 bytes 바이트씩 읽는다.
obs=bytes : 한번에 bytes 바이트씩 쓴다.
bs=bytes : 한번에 bytes 바이트씩 읽고 쓴다. ibs,obs 값 무시한다.
cbs=bytes : 한번에 bytes 바이트씩 변환한다.
skip=blocks : 입력 시작에서 blocks 단위만큼 ibs 크기를 건너 뛴다.
seek=blocks : 출력 시작에서 blocks단위만큼 ibs크기를 건너 뛴다.
count=blocks : 입력 blocks의 ibs크기만큼만 복사한다.
conv=keywords : 컴마로 나누어진 단어들에 대하여 파일로 변환한다.
block : cbs 단위로 변환할 때 읽은 것 안에 있는 줄 바꿈 문자들을 공백 문자로 바꾼다.
unblock : cbs 단위로 변환할 때 읽은 것 안에 있는 공백 문자들을 줄 바꿈 문자로 바꾼다.
lcase : 대문자를 소문자로 바꾼다.
ucase : 소문자를 대문자로 바꾼다.
swap : 입력되는 두 바이트의 순서를 바꾼다. 유닉스의 dd명령과 달리, 이것은 읽혀질 짝이 맞지 않는 추가 바이트 하나가 생겼을 경우, 그냥 그대로 작업한다. 즉, 입력 파일에서 짝이 맞지 않는 하나의 바이트가 남으면, 이것의 순서가 바뀌지 않는 한 마지막 바이트는 단순히 복사된다.
noerror : 오류를 읽어도 계속 진행된다.
notrunc : 출력 파일을 자르지 않는다.
sync : ibs 블럭 크기와 obs블럭 크기에 차이가 있을 경우, 그 여백을 NULL문자로 채운다.

설명
dd 명령은 지정한 블록크기 만큼 파일을 복사할 때 사용된다. 초기값으로는 표준입력과 표준 출력을 사용하고 선택적으로 그 파일의 변환도 수행한다. 쉽게 파일을 특정 크기로 나누는 데 주로 사용된다. 부팅 디스크를 만들거나 스왑 파일을 만들 때 유용하게 쓰인다.

3.5.3 restore (다시 저장하기)

형식
restore -옵션[-f 덤프할파일]파일이름

명령어 위치
/sbin/restore

옵션
-r : dumpFile에 있는 모든 파일들을 현재의 디렉토리로 복구하낟. 따라서, 현재의 디렉토리를 덤프하지 않도록 주의를 요한다.
-t : 파일들을 복구하는 대신에 dumpFile의 내용을 보여준다.
-x : dumpFile로 부터 명시된 이름의 파이들만을 복구하도록 한다. 만일 파일 이름이 디렉토리 이름이라면 그 안에 것들이 재귀적으로 복구 된다.
-i : dumpFile의 목차를 일고 사용자가 복구하기를 원하는 파일들을 직접 선택할 수 있게 하는 대화형 모드로 진입한다. 대화형 모드에 대하여 더 자세히 알고자 한다면 man 유틸리티를 이용하라.

설명
restore는 이전에 수행한 dump 실행으로부터 파일을 복구 시킨다. 만일 dumpFile이 지정되지 않았으면 "/dev/rtm8"이 기본으로 사용된다.

  Hit : 6179     Date : 2005/11/11 03:50



    
chenkim4 많은정보 ㄳ 합니다 2007/08/21  

Copyright 1999-2026 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org