Posted
Filed under Linux

■ cp :: 파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다.

문법

■ cp [ -abdfilPprsuvxR ] 파일명1 파일명2
■ cp [ -abdfilPprsuvxR ] 파일명(들) 디렉토리

옵션

-a : 가능한한 원 파일의 구조와 속성을 그대로 복사한다.
-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.
-d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드 링크 관계를 유지한다.
-f : 복사 위치에 존재하는 파일을 제거하고 복사한다.
-i : 복사시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.
-I : 하드 링크를 만든다.
-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.
-r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.
-s : 디렉토리가 아닌 파일의 심볼릭 링크를 만든다. 소스 파일의 이름은 전체 경로 이름으로 한다.
목적지 파일 이름은 전체 경로를 주지 않아도 현재 디렉토리로 간주되므로 상관없다.
-u : 파일의 정보를 갱신한다.
-x : 다른 파일 시스템인 하위 디렉토리는 무시한다.
-R : 디렉토리를 재귀적(recursive)으로 복사한다.

설명

만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있다. -i 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할 수 있게 물어온다.

사용예

■ $ cp -i blade.Z temp.Z
■ $ cp -r * /somewhere

당연히 -r 옵션은 파일명2가 디렉토리 이름일 때만 사용이 가능하다.

■■■■ crontab : 실행될 프로그램들과 스케줄의 cron 데몬을 구성한다.

문법

■ crontab -l [ -u 사용자 ]
■ crontab -e [ -u 사용자 ]
■ crontab -d [ -u 사용자 ]

옵션

-l : crontab 파일 목록을 보여준다.
-e : 에디터를 사용하여 crontab 파일을 수정한다.
-d : 사용자의 crontab 파일을 지운다.
-u 사용자 : 특정 사용자의 crontab 파일을 다루도록 지정한다. 이 명령을 사용하려면 슈퍼 유저로 로그인해야만 한다.

설명

crontab 파일 내의 빈 핵과 # 문자로 시작되는 행은 무시된다.

파일의 각 행은 M H D m d cmd 형태로 되어 있다. 필드의 에스테리스크(*)표시는 어떠한 값이든 일치하는 조건으로 가정한다는 의미이다.

■ M 분을 의미한다.(0-59) H 시를 의미한다(0-23)
■ D 날짜를 의미한다(1-31) m 달을 의미한다(1-12)
■ d 요일을 의미한다(0-6) cmd 실행할 명령을 의미한다.

■■ csh : 이것은 유닉스 C 셸이다. 하지만 리눅스에서는 tcsh에 링크되어 있는 파일에 불과하다. 자세한 내용은 tcsh를 참조하라.

■■ cut : 파일에서 필드를 뽑아낸다. 필드는 필드 구분자나 문자 위치로 지정된다.

문법

■ cut -c문자위치 파일명(들)
■ cut -f필드 -d필드 구분자 [ -s ] 파일명(들)

옵션

-c문자위치 : 잘라낼 곳의 글자 위치를 지정한다. 콤마를 사용하거나 하이픈을 사용하여 범위를 정할 수도 있으며, 이런 표현들을 혼합하여 사용할 수도 있다.
-f필드 : 잘라낼 필드를 정한다. 지정하는 방법은 -c 옵션과 같다.
-d필드 구분자 : 필드를 구분하는 문자를 지정한다. 디폴트는 탭 문자다.
-s : 필드 구분자를 포함할 수 없다면 그 행은 하지 않는다.

사용예

■ $ cut -f1,5 -d: /etc/passwd
■ $ cut -c1,3-7 /usr/tmp/board

■■ date : 시스템은 현재의 날짜와 시간을 유지하고 있다. date 명령을 사용하면 그러한 시간을 확인할 수 있다. 또한 날짜와 시간 정보를 변경할 수 있다. 물론 시스템의 날짜와 시간은 슈퍼 유저만이 변경할 수 있다.

문법

■ date [yymmddhhmm [ss] ]
■ date +형식

설명

date 는 위와 같이 주어진 인수가 없다면 현재 시스템의 시간과 날짜를 출력한다. 주어지는 인지가 있다면 그에 따라서 시스템의 시간과 날짜를 변경한다.

yy는 연도를 나타내는 두 숫자이며(99년까지), mm은 월을 나타내는 수이다. 그리고 dd는 날짜, hh는 24시간 단위로 표현되는 시간이며, mm은 분을 의미한다. 마지막 ss는 초를 의미하는 부분인데, 명시하지 않아도 상관없다.

+형식 구문을 사용한다면 날짜가 출력되는 형태를 지정할 수 있다. 여기에 사용되는 기호는 다음과 같은 것들이 있다.

■ n 개행 t 수평탭
■ H 시간(00-23) I 시간(01-12)
■ k 시간(0-23) l 시간(1-12)
■ M 분(00-59) p AM 혹은 PM
■ r 시간(12단위, hh:mm:ss AM/PM)
■ s 초(00-61) T 시간(24단위, hh:mm:ss)
■ X 시간 표현(hh:mm:ss) Z 시간대(예를들어CMT)
■ a 요일표현(Sun-Sat) A 요일명(Sunday-Saturday)
■ b 달 표현(Jan-Dec) B 달이름(January-December)
■ D mm/dd/yy 형태의 날짜 h %b 와 같은 것
■ j 일년단위 날짜(001-366) m 달(01-12)
■ y 서기의 뒷부분 숫자(00-99) Y 서기(0000-9999)

사용예

■ $ date

The Oct 1 15:57:23 KST 1996

■ df : 디스크의 여유 공간을 검사하여 보고한다.

문법

■ df [ -aikpvtx ] 파일시스템

옵션

-a : 0 블록을 가진 파일도 보고한다. 기본적으로는 무시한다.
-i : 블록 사용 대신 incode 사용 정보를 보고한다.
-k : 블록의 크기를 1K바이트로 계산한다.
-p : POSIX 형태의 출력을 한다.
-v : System V의 df와의 호환을 위한 옵션이다. 무시된다.
-t 형태 : 특정 형태의 파일 시스템으로 검사를 제한한다.
-x 형태 : 특정 형태의 파일 시스템 이외의 것으로 검사를 제한한다.

설명

이것은 바이트 크기를 사용하는 대신 블록 단위로 보고한다는 점을 유의해야 한다. 기본적으로 512바이트 크기로 한 블록을 다룬다.

■■ diff : 두 개의 파일을 비교한다. 이것은 두 개의 파일이 과연 어떻게 다른가를 중요시한다. 그래서 어떻게 수정되어야만 두 파일이 같아질 수 있는지를 말해준다.

문법

■ diff [ -ibefw ] 파일명1 파일명2

옵션

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

설명

diff가 보여주는 정보는 언뜻 보아서는 이해할 수 없다. 일단 명심해야 할 것은 표본이 되는 문서는 두 번째 파일이라는 점이다. 그래서 모든 정보는 '첫번째 파일이 어떻게 수정되어야 두 번째 파일과 같아지느냐'하는 것이다.

파일2에서 파일1로 첨가(append)되어야 할 것은 'a' 기호로 표현된다. 그리고 파일1에서 제거(delete)되어야 하는 내용은 'd'로, 두 파일의 내용이 바뀌어(change)하는 내용은 'c'기호로 표시한다. 이러한 수정 기호와 함께 행의 번호가 함께 표시되며, 해당 줄의 내용이 함께 출력된다.

■ 행숫자 a 파일2시작행번호 파일2끝행번호
■ 파일1시작행번호 파일1끝행번호 d 행숫자
■ 파일1시작행번호 파일1끝행번호 c 파일2시작행번호 파일2끝행번호


사용예

■ $ diff -i doc1.txt doc2.txt

■ du : 지정된 특정 디렉토리나 파일들이 차지하는 공간을 보고한다.

문법

■ du [ -sabxL ][ 디렉토리,파일명(들) ]

옵션

-s : 총 합계만을 따진다. 하위 디렉토리의 숫자 등은 나오지 않는다.
-a : 크기가 계산된 각 파일의 크기를 보인다.
-b : 바이트 크기로 출력한다.
-x : 현재 디렉토리에 마운트된 파일 시스템만 검사된다.
-L : 심볼릭 링크 자신의 공간 대신 연결된 파일의 크기를 다룬다.

설명

디렉토리나 파일을 지정하지 않으면 현재 디렉토리로 간주된다. 크기는 1K 바이트 크기의 블록으로 보고한다.

사용예

■ $ du /root ,,/root 디렉토리의 공간 크기를 보고한다.

■■■ echo : echo는 인수로 지정된 문자열을 그대로 화면에 출력한다. 이것은 인수로 주어진 문자열이 오퍼레이팅 시스템으로 읽혀진 후에 다시 그대로 화면에 '메아리'치는 것으로 생각할 수 있다.

문법

■ echo [ -ne ] 문자열

옵션

-n : 새로 개행하지 않고 출력하게 한다.
-e : 문자열 중에서 백슬래쉬와 조합되는 특수 문자를 인식하게 한다. 그러한 특수 문자들은 다음과 같은 것들이 있다.

■ \a 밸소리 \b 백스페이스
■ \f 용지바꿈(form feed) \n 행바꿈
■ \r 0 칼럼으로(carriage return) \f 탭(tab)
■ \v 수직 탭 \\ 백슬래쉬 문자
■ \nnn 8진법으로 표기되는 ASCII 문자 \c 출력 후 행바꿈 금지

설명

일반적으로 echo 명령은 프롬프트 상에서 사용되는 일은 없다. 하지만 스크립트 작성시 번번히 사용된다. 셸 스크립트 상에서 echo 명령은 BASIC의 PRINT 명령이나 C 언어의 printf() 함수와 같이 메시지를 출력하는 데에 자주 사용된다. 또한 전혀 필요없을 것 같은 echo의 -n 옵션도 스크립트 상에서는 유용하게 사용될 수 있다.

사용예

■ $ echo "The RedHat !"
■ The RedHat !
■ $ echo -e 'Linux\RedHat !'
■ Linux RedHat !

■ ed : 풀 스크린 에디터를 사용할 수 없는 열악한 환경의 터미널을 위한 라인 에디터(line editor)이다.

문법

■ ed [ - ][ -s ][ -p문자열 ] 파일명

옵션

- : e, r, w, q, ! 명령에 의해 발생하는 메시지를 금지한다.
-s : 검사 작업을 금지한다.
-p문자열 : 프로프트를 원하는 문자열로 바꾼다.

설명

ed는 기능이 다양한 에디터이나 라인 에디터는 거의 사용할 일이 없을 것이다.

■■ env : 현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행한다. 또는 현재의 환경을 보고한다.

문법

■ env [ - ][-i ][ -u 이름 ][ 이름=값 ][명령]

옵션

- : 뒤에 오는 이름=값 목록으로 환경을 제한한다.
-i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
-u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다.

설명

'이름=값'의 형식으로 특정 환경 변수를 지정해서 명령을 실행한다. 이러한 값을 필요한 대로 여러 개 나열하면 되고, 현재의 환경은 변경하지 않으므로 명령의 수행이 끝나면 환경의 상태는 이전과 다름없게 된다.

사용예

■ $ env HOME=/usr/victor tsh

홈 디렉토리 변수를 지정하여 셸을 실행한다.

■ $ env ,,현재 설정되어 있는 환경 변수들을 보여준다.

■■ file : 파일이 어떠한 형태의 파일인지 알아낸다.

문법

file [-czL ][ -fm 파일명 ] 파일명(들)

옵션

-c : 매직 파일의 파싱된 형태를 보여준다.
-z : 압축되어 있는 파일의 형태를 검사한다.
-L : 뒤따르는 심볼릭 링크를 야기시킨다.
-f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정한다.
-m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정한다.

설명

파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지 등을 인식한다. 에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.

사용예

■ $ file -z /home/Book.Z

2009/07/17 20:30 2009/07/17 20:30