화일및 디렉토리 관리 명령어 일반
유닉스 디렉토리및 화일 관리용 명령어들의 개요
1. 유닉스 디렉토리및 화일들
유닉스는 다양한 사용자의 작업을 지원하기 위해 수백여개의
유틸리티들을 제공한다. 향후 일정기간 동안 유닉스 통신 강좌에서는
일반적으로 가장 널리 사용되는 디렉토리를 사용하고, 조직화하기 위한
명령어및 화일 시스템 구조상에서 화일을 조작, 관리하기 위한
유틸리티들에 대해서 설명합니다. 다음은 향후 일정기간 동안 설명될
유닉스 유틸리티들에 대한 소개입니다.
1) 디렉토리의 관리
(1) 현재의 디렉토리의 절대 경로를 표시 pwd
(2) 현재 디렉토리의 내용을 출력 ls
(3) 새로운 디렉토리의 생성 mkdir
(4) 작업디렉토리의 이동 cd
(5) 현재의 디렉토리들의 삭제 rmdir
2) 화일의 관리
(1) 화일의 종류를 분류 file
(2) 화일의 내용을 출력 cat, pg
(3) 화일의 복사 cp
(4) 화일의 이동및 이름 변경 mv
(5) 화일의 링크 ln
(6) 화일의 프린트 pr, lp, lpstat, cancel
disable, enable
(7) 화일의 위치 검색 find
(8) 화일내의 특정 문자열 검색 grep
(9) 화일 내용을 정렬 sort
(10) 화일의 삭제 rm
디렉토리 관리 명령 : pwd와 mkdir
우선 이 과정을 진행하기에 앞서서 몇가지 용어에 대해 설명한다.
우리가 흔히 계층형 구조를 갖는 화일 체제를 지원하는 시스템을
(예를들면 unix 또는 dos등) 사용할 때 current directory 또는
working directory라는 말을 자주한다. 따라서 우선 이런 용어에
대해 이해를 해야만 한다. 이 두가지 용어는 본질적으로 동일한
의미를 갖는 용어이다. 계층 구조상에 있는 화일을 참조하기 위해서는
그 화일이 들어있는 디렉토리로 이동하여야 합니다. 이와 같이
사용자가 특정 화일을 참조를( 화일의 생성, 화일 내용의 참조등 )
위해 이동하여 위치하고 있는 디렉토리를 current directory 또는
working directory라 한다. 이 과정에서는 이 두가지의 디렉토리를
"작업 디렉토리"라고 총칭한다.
1. 작업 디렉토리의 절대 경로(absulute path) 표시
┌────┬────────────────────────┐
│ pwd │현재의 작업 디렉토리의 절대 경로를 표시한다. │
└────┴────────────────────────┘
이 명령어는 작업 디렉토리의 절대 경로를 표시한다. pwd 명령어는
옵션과 인자를(arguments) 사용하지 않는다. 이 명령어는 다른 명령어의
실행 전후에 계층 화일 시스템내에서의 위치를 알고자 할때 요긴하게
사용할 수 있다. 예를들자면, 새로운 화일 또는 디렉토리들을 생성하기
전에 작업 디렉토리를 확인하는데 많은 도움을 준다. 또한 pwd 명령어는
디렉토리 위치를 변경한 후에 작업 디렉토리를 확인하기 위해 요긴하게
사용될 수 있다.
(예제)
$pwd
/home/user1
2. 디렉토리의 생성
┌────┬─────────────────────┐
│ mkdir │ 하나 또는 그 이상의 디렉토리를 생성한다. │
└────┴─────────────────────┘
디렉토리는 연관된 화일들을 함께 모아두는데 유용하기 때문에,
원하는 화일들의 빠른 억세스및 검색을 허용하기 위한 효율적 구조를
만들수 있다.
mkdir 명령어는 하나 또는 그 이상의 디렉토리를 생성하기 위해
사용할 수 있다. 다수의 디렉토리를 생성하기 위해서는 명령어 다음에
디렉토리 명들을 나열하면 된다.
디렉토리명을 지정하는 규칙은 앞에서 설명했던 화일명 명명 규칙을
따른다. 다시말하면, 디렉토리명의 최대 글자수는 화일 시스템 종류에
따라 다른데, 예를들면 ufs 화일 시스템일 경우에는 256 글자를,
s5 화일 시스템일 경우에는 14 글자까지 부여할 수 있다. (영문자 기준)
신규 생성되는 디폴트 디렉토리에 대한 디폴트 접근권한은( permission )
시스템내의 모든 사용자가 읽기(read), 쓰기(write), 실행하기(execute)를
할 수 있도록 설정된다. 그렇지만 디렉토리를 생성한 사용자는(즉, owner)
-m 옵션을 지정함에 의해 디폴트 접근권한이 아닌 다른 접근권한을
부여할 수 있다. 접근 권한에 대한 자세한 설명은 차후 강의에서
자세히 설명될 것이다.
( mkdir 명령의 옵션 )
┌────┬───────────────────────┐
│ -m │ 생성되는 디렉토리의 접근 권한을 부여한다. │
│ -p │ 부모(parent) 디렉토리를 생성한다. │
└────┴───────────────────────┘
( 예제 )
1) $mkdir subdir1
작업 디렉토리내에 subdir1이라는 서브 디렉토리를 생성하는
기본적인 mkdir 명령의 사용예이다.
2) $mkdir memo letter report
하나의 mkdir 명령어를 통해 복수개의 서브 디렉토리를
생성하는 예이다.
3) $mkdir -m 700 mydir
새로 생성되는 mydir이라는 디렉토리에 디폴트 접근 권한 대신
사용자가 임의로 700이라는 접근 권한을 부여하여 생성하는
예이다. 700이라는 접근 권한은 일단, 디렉토리를 생성한
사용자만이 억세스할 수 있고, 다른 사용자는 억세스 불가한
것이라고만 이해하기 바란다. 자세한 것은 이후 자세히
설명된다.
4) $mkdir -p report/monthly
이 예제는 report라는 부모 디렉토리를 생성하고, monthly라는
서브 디렉토리를 생성한다. 즉 부모와 서브 디렉토리를 동시에
생성하는 것을 보여주는 예제이다.
참고로 -m 옵션과 -p 옵션이 동시에 지정되었을 경우에는 생성되는
부모및 서브 디렉토리에는 -p로 지정한 동일한 접근권한이 설정된다.
예를들면, $mkdir -m 700 -p report/monthly 형식이다.
디렉토리 관리 명령 : ls
1. 디렉토리의 내용 확인
┌────┬─────────────────┐
│ ls │ 디렉토리의 내용을 표시한다. │
└────┴─────────────────┘
ls 명령어는 지정한 디렉토리내의 내용을 표시해 준다. 명령어 지정시
인자(arguments)를 지정하지 않을 경우에는 현재의 작업 디렉토리의
내용을 표시한다. 내용이 많을 경우 여러 화면에 걸친 출력이 표시되는데
이 경우 <Hold screen> 키나 <^s> 와 <^q>키를 사용하여 출력을 일시 정지
또는 재개할 수 있다.
ls 명령어는 출력 양식을 변경하기 위한 많은 옵션을 갖는다. 옵션들중
가장 빈번히 사용되는 옵션들은 다음과 같다. 옵션을 지정하지 않았을때
적용되는 출력 형식은 출력 필드 단위로 정렬되어진 상태로 디렉토리의
내용들을 표시된다.
-l 옵션은 출력된 각 화일과 디렉토리들에 대한 서술형식의 (자세한 정보)
정보를 제공한다.
(옵션)
-a .으로 시작하는 화일들 즉 시스템 화일들도 일반 화일및 디렉토리와
함께 출력한다.
-i 출력되는 각 화일및 디렉토리들의 inode 정보를 표시한다.
-d 디렉토리의 내용을 표시하지않고, 지정한 디렉토리 자체에 대한
정보만을 표시한다.
-l 출력되는 각각의 화일과 디렉토리에 대한 서술 형식의 자세한 정보를
표시한다.
-r 통상은 오름차순으로 정렬되어 출력되는데, 이와 반대로 내림차순으로
정렬하여 표시한다.
-t 화일및 디렉토리의 수정 날짜를 기준으로 정렬하여 출력한다.
-x 출력되는 모든 필드들을 대상으로 정렬하여 출력한다.
-F 출력 내용에서 디렉토리들에게는 /를, 실행 화일들에게는 *를,
심볼릭 링크된 화일에는 &를 붙여 표시한다.
-R 작업 디렉토리내의 화일과 서브 디렉토리들을 표시한다.
단, 서브 디렉토리의 경우에는 그 내용들까지도 함께 정렬하여
표시한다.
다음은 ls 명령어의 사용예를 보여주고 있다.
1)
┌──────┐ 이 예는 ls 명령어가 옵션과 인자(argument)없이
│ $ls │ 현재의 작업 디렉토리의 내용을 출력해 주는
│ file1 │ 것을 보여주고 있다.
│ memo1 │ 여기서 출력되는 내용이 내림차순으로 정렬되어
│ letter │ 표시되는 것을 주목한다. 또한 출력되는 것중
│ report │ 서브 디렉토리의 내용을 함께 표시하고자
└──────┘ 할 경우에는 -R 옵션을 지정한다.
2)
┌──────┐ 이 예에서는 ls 명령어를 수행함에 있어서
│$ls report │ 디렉토리명을 지정할 경우에는 디렉토리 자체에
│annual │ 대한 정보가 아닌 그의 내용을 표시함을 보여주고
│monthly │ 있다. 만일 디렉토리 자신의 정보를 표시하고자
│statsfile │ 할 경우에는 아래와 같이 지정한다.
└──────┘
3)
┌────────────────────────────┐
│ $ls -ld report │
│ drwxr-xr-x 2 user1 admin 512 jul 9 11:02 report │
└────────────────────────────┘
이 예서는 특정 디렉토리 자체에대한 정보를 보는 방법에 대해
보여주고 있다. 출력되는 각 필드는 다음 예제에서 설명한다.
4)
┌─────────────────────────────────┐
│$ls -l │
│total 5 │
│534 drwxr-xr-x 2 user1 admin 512 May 13 08:34 . │
│231 drwxr-xr-x 2 user1 admin 512 May 7 10:30 .. │
│389 -rw-r--r-- 1 user1 admin 952 May 13 16:45 .profile │
│497 -rwxr-xr-x 2 user1 admin 1672 Jul 7 13:23 memo │
│832 lrwxr-xr-x 2 user1 admin 12 Jul 16 09:52 status->report/stats │
├─────────────────────────────────┤
│(1) (2) (3) (4) (5) (6) (7) (8) (9) │
└─────────────────────────────────┘
(1) inode 번호
유닉스 화일 시스템내에서 개개의 화일을 관리하기 위해 사용하는
테이블인 inode내의 엔트리들의 인덱스 번호로서, 각각의 엔트리들은
화일 데이타의 디스크상의 배치 상황에대한 기술과 화일의 소유자,
화일의 접근 허가, 그리고 화일 데이타의 접근 시간등의 정보를
포함하고 있다. 유닉스 운영체제는 이를 이용하여 사용자의 특정화일
참조요구시에 그 화일에 대한 전반적 정보를 얻어, 해당화일의
참조를 가능하게 한다.
다음은 inode를 잘 이해할 수 있도록 추가한 그림이다.
I-node 테이블
┌───┐ ┌──┐
│1001 ├───> data│
┌───────┐ ├───┤ └──┘
│사용자의 ├─> │ 1002 ├─┐ ┌──┐
│화일 참조 요구│ ├───┤ └──> data│
└───────┘ │1003 ├─┐ └──┘
├───┤ │
│ . │ │ ┌──┐
│ . │ └─> data│
└───┘ └──┘
inode의 자세한 역할및 내부구조, 화일 시스템 상에서의 위치등에
대해서는 유닉스 활용 방식에 대한 강의가 끝나고 연재될 유닉스
관리자 기능에서 자세히 설명될 것입니다.
(2) 화일의 종류
이 부분에는 d, -, l 문자등이 표시된다.
각각이 나타내는 의미는 다음과 같다.
d 디렉토리임을 의미한다.
- 화일임을 의미한다.
l 심볼릭 링크된 화일임을 의미한다.
(심볼릭 링크된 화일에 대해서는 이후에 설명될
ln 명령어 부분에서 자세히 설명된다. )
(3) 접근 권한
해당 화일을 억세스할 수 있는 권한을 사용자 부류별로 표시한다.
자세한 내용은 자세히 차후에 설명 되겠지만, 대략 요약하면
다음과 같다.
┌───────┬───────────┬───────┐
│ 화일 소유자 │ 동일 그룹내 사용자 │ 기타 사용자 │
├───────┼───────────┼───────┤
│ rwx │ r-x │ r-x │
└───────┴───────────┴───────┘
r = read, w = write, x = execute 권한이 부여되어 있다는 의미
(4) links
계층 구조상에 존재하는 디렉토리들은 계층을 형성하기 위해
서로간의 상.하 관계에 따라 연결되어(즉, 링크되어)
있다. 이 필드에 나오는 숫자는 해당 요소가 링크되어 있는 수를
의미한다. 예를들면 다음과 같다.
┌─────┐
│ / │
└──┬──┘
│
┌──┴──┐ 이와 같은 구조에서
│directory │ directory는 자신의
┌───┐ └┬┬─┬┬┘ ┌───┐ 부모 디렉토리인 /로의
│subdir1 ──┘│ │└───┤화일d │ 링크와 하위 디렉토리로의
└───┘ │┌┴──┐ └───┘ 링크 3개를 갖고, 자신으로의
││subdir3 링크 1개를 갖음으로써
│└───┘ 총 5개의 링크수를 갖게된다.
┌─┴─┐
│subdir2
└───┘
% 통상 링크수는 디렉토리들간의 연결관계가 변경될 경우에 새롭게
설정되는데, 화일의 경우에도 ln 명령어가 수행됨으로써 그 값이
변경될 수 있다. 기본적인 화일의 링크수는 1이다. 자신이 속한
디렉토리로의 링크 1개를 말한다. ln 명령어는 차후에 자세히
설명된다.
(5),(6)
해당 화일및 디렉토리를 생성한 사용자의 user-id및 group-id를
의미한다. 이들에 대해서는 차후 설명될 사용자및 그룹 제어 부분에서
자세히 설명한다.
(7) 크기 수
byte 단위의 화일및 디렉토리 크기를 의미한다.
(8) 수정 날짜
직전의 화일 수정 시간및 수정 날짜
(9) 화일및 디렉토리 이름
이 필드에 나타나는 내용중 stats->report/stats는 해당화일 즉,
stats가 report 디렉토리및의 stats 화일에 링크된 화일임을
의미한다.
디렉토리 관리 명령 : cd 와 rmdir 명령어
1) 작업 디렉토리의 이동 : cd
┌────────┐
│cd [arguments] │
└────────┘
cd 명령어는 작업 디렉토리를 변경하는데 사용된다. 이 명령어에는
옵션이 없고, 새로 이동할 디렉토리 명이 cd 명령어의 인자로서(arguments)
지정된다. 이때 지정하는 이동할 디렉토리 명은 상대 경로명및
절대 경로명을 모두 지정할 수 있다. (이 부분에 대해서는 계층형
구조상의 화일 참조 방식편을 참조하기 바랍니다.)
또한 cd 명령어의 특별한 기능은 인자없이 사용한 경우에 나타난다.
즉, 단순히 $ cd <return> 이라 지정하면, 현 사용자의 home directory로
곧장 이동한다는 것이다. 이를 잘 기억해 두면작업에 크게 도움이 될
것이다. 또한 cd 명령어를 수행 함으로써 사용자는 새로운 작업 디렉토리에
위치하게 되는데, 이때 pwd 명령을 통해 새로운 작업 디렉토리의 경로를
확인할 수 있다.
( 예제 )
┌──────────┐ 이 예에서 처음 pwd 명령어는 현재의
│$pwd │ 작업 디렉토리를 표시해 준다.
│/home/user1 │ 그 싯점에서 cd 명령어를 통해 report라는
│$cd report │ 서브 디렉토리로의 이동을 수행했다.
│$pwd │ 그리고 그 결과를 두번째 pwd 명령으로
│/home/user1/report │ 확인하는 예이다.
└──────────┘
┌──────────┐ 이 예는 cd 명령어의 인자로서 상대 경로명을
│$cd ../letter │ 사용하는 것을 보여준다.
│$pwd │ 이때 사용되어진 ..이라는 기호는 부모 디렉토리를
│/home/user1/letter │ 대신하는 특수문자이다.
└──────────┘
┌──────────┐ 계층 구조상의 디렉토리내, 어느 곳에서나
│$cd │ 손쉽게 사용자의 home directory로 곧장 이동할
│$pwd │ 수 있는 방법을 보여주는, 매우 좋은 예이다.
│/home/user1 │
└──────────┘
2. 디렉토리의 삭제
┌────────────────────┐
│ rmdir [-option] [directory_pathname] │
└────────────────────┘
rmdir 명령은 하나 또는 그 이상의 디렉토리를 삭제하기 위해 사용한다.
현재의 작업 디렉토리는 삭제할 수 없고, 대상 디렉토리는 반드시
빈 디렉토리이어야 한다. 다른 사용자에 의해 쓰기(write) 억세스가
수행되고 있지 않은 경우라면, 소유자(owner) 또는 관리자(superuser)만이
디렉토리를 삭제할 수 있다.
명령어 상에 디렉토리 명을 지정하기 위해, 상대 또는 절대 경로명들을
사용할 수 있다.
( 옵션 )
-p 지정한 디렉토리와 부모 디렉토리를 삭제한다.
이 경우 삭제되는 경로명에 대한 메세지를 표시한다.
-s -p 옵션과 같은 작업을 수행하나, 메세지 표시는 되지 않는다.
( 예제 )
┌───────┐ 이 예에서는 비어 있는 디렉토리인
│ $rmdir memo │ memo 디렉토리를 삭제하는 예를 보여주고
│ $ls │ 있다. 또한 명령 싱행후 ls 명령으로
│ file1 │ 결과를 확인하고 있다.
│ letter │
│ report │
└───────┘
┌─────────────┐ 대상 디렉토리가 비어 있지 않음으로써,
│ $rmdir report │ 명령어가 수행되지 않는 결과를 보여준다.
│ rmdir: report not empty │
└─────────────┘
┌───────────────────┐ report 디렉토리내의
│ $rmdir report/annual report/monthly │ annual과 monthly라는
│ $ls report │ 서브 디렉토리들을 삭제하는
│ statsfile │ 예이다. report 디렉토리는
└───────────────────┘ 그대로 유지된다.
┌─────────────────────┐
│ $rmdir -p oct91/sanders │
│ rmdir: oct91/sanders: Whole path removed.│
└─────────────────────┘
이 예에서는 -p 옵션을 사용하여 부모 디렉토리와 자식 디렉토리를
동시에 삭제하는 예를 보여준다. 이때 삭제 내용에 대한 상태 정보가
표시됨을 주목하기 바란다.
========================================================================
화일 관리 명령 : file 과 cat
1. 화일 형식의 확인 : file 명령어
┌─────────────┐
│ file [-option] file(s) │
└─────────────┘
사용자에 의해 생성되는 화일들중, 몇몇 화일들은 실행 코드들이
저장되거나, 터미널상에 표시가 적합하지 않은 데이타들이
저장되어 있다. 이런 화일들의 내용을 화면상에 표시되도록하면
시스템 장애를(hang: 우리가 흔히 시스템이 먹통이 되었다고 부르는 현상)
초래할 수 있다. 이런 현상을 방지하기 위해, file 명령어는 화일의
내용을 화면상에 표시하기 전에, 화일 형식이 불분명한 화일들의 화일 형식을
확인하는데 유용하게 사용된다.
file 명령어는 명령어 인자로(arguments) 제공된 화일들의 화일 형식을
알려준다. 이때 국제 코드 문자들이 들어있는 화일및 어떤 화일이라도
명령어 인자로서 지정할 수 있다.
file 명령어는 명령어 인자로서 지정한 화일들을 화일 형식별로 분류하기
위해 몇가지 테스트를 수행한다. 각 화일의 첫 부분이 화일 형식을
조명하기 위해서 magic number라 불리우는 특수 번호와 키워드를 검색하기
위해 검사된다. 다른 화일로의 경로명을 포함하고 있는 심볼릭 링크된
(symbolic link) 화일들도 명령어에 -h 옵션이 지정되지 않은 경우에는
링크되어 있는 화일의 형식도 검사한다. -h 옵션은 심볼릭 링크된
화일들은 검사하지 않고, 다만 "Symbolic link to pathname"이라는
메세지를 표시한다.
기본적인 화일 형식은 다음과 같다.
data 데이타 화일 ( 읽기 불가 )
commands text 쉘 프로그램 ( 읽기 불가 )
xxxx text 일반 프로그래밍 언어로 작성되어 있는 텍스트 화일
executable 실행 화일 ( 읽기 불가 )
보조적인 화일 형식
pure not stripped 컴파일된 코드 ( 읽기 불가 )
directory 디렉토리 화일
empty file 내용을 갖고 있지 않은 화일
cannot open 대상 화일이나 디렉토리가 존재하지 않는다.
( 옵션 )
-f화일명 검사할 화일들의 목록을 저장해 놓은 화일을 지정.
-h 심볼릭 링크된 화일은 검사하지 않는다.
다음은 file 명령어의 예제들이다.
┌─────────────┐
│$file file1 │
│file1 ascii text │
└─────────────┘
위의 예에서는 하나의 화일의 화일 형식을 확인하는 예를
보여주고 있다. 이때 대상 화일 지정시 이미 설명했던
쉘 특수문자들을 사용할 수 있는데 그 예는 다음과 같다.
┌──────────────────────────────┐
│$file -h * nofile │
│file1: ascii text │
│letter: directory │
│nofile: cannot open: No such file or directory │
│prog1: commands text │
│stats: symbolic link to report/statsfile │
└──────────────────────────────┘
위의 예에서는 몇가지 화일 형식의 검사 결과를 보여주고 있다.
이때 stats라는 화일은 심볼릭 링크된 화일인데 -h 옵션으로 인해
실제 링크되어 있는 화일의 형식은 분류되지 않은 것을
볼수 있다. 또한 nofile의 경우 존재하지 않는 화일이라서
에러 정보가 표시된 것을 볼수 있다.
2. 화일 내용의 확인 : cat 명령어
cat : 지정한 화일의 내용을 표시한다.
또는 다수 화일을 병합한다.
┌───────────────┐
│ cat [-option] [file(s)] │
└───────────────┘
cat 명령어는 지정한 화일의 내용을 표시한다. 화일 지정시 화일명으로
절대 또는 상대 경로명을 지정할 수 있다. cat 명령어는 화일의 크기와는
상관없이 단번에 화면상에 출력해주기 때문에, 긴 화일의 경우 내요을
확인하기 힘들다. 이 경우 <hold screen>,<^s>,<^q>등의 키를 사용하여
출력을 제어 한다. 그리고 cat 명령어 지정시 화일명을 지정치 않을 경우
cat 명령어는 터미널의 키보드로부터 입력을 받아들인다. 이에 대해서는
차후에 설명될 입출력 방향 제어 부분에서 자세히 설명한다.
cat 명령어 지정시 복수개의 화일을 지정함으로써, 본래의 화일에는
영향을주지않고, 출력상에서 화일들을 병합할 수 있다. 이런 방식으로
병합한 출력은 화일명 다음에 출력 방향 변경 명령인 >를 사용하여
특정 화일에 저장할 수 있다. 예를 들면 cat file1 file2 > allfile이라
지정하면 file1과 file2의 내용이 allfile이라는 화일에 저장된다.
화면상에 표시 불가능한 문자들은 -vet 옵션을 사용하여 표시할 수 있다.
이 기능은 프로그램 화일상에서 제어 코드로 인한 에러를 검색하는데
매우 유용하다.
( 옵션 )
-v ascii 제어 문자들을 표시한다.
-e 각 라인의 끝에 $를 표시한다.
이를 지정시에는 반드시 -v 옵션을 사용한다.
-t 탭(tab) 문자를 ^I로 표시한다.
이를 지정시에는 반드시 -v 옵션을 사용한다.
( 예제 )
┌───────────┐
│ $cat file1 │ 이 예는 개개의 화일 내용을 화면상에
│ this is file 1 │ 표시하는 예를 보여주고 있다.
│ $cat file2 │
│ this is file 2 │
└───────────┘
┌───────────┐
│ $cat file1 file2 │ 이 예는 cat 명령어상에 두개의 화일을
│ this is file1. │ 동시에 지정함으로써 출력상에서 두 화일이
│ this is file2. │ 병합되는 것을 보여주고 있다.
└───────────┘
┌────────────────────────────┐
│ $cat testfile │
│ This sample file contains │
│ several tabs and control characters │
│ like or . │
│ $cat -vet testfile │
│ This^Isample^Ifile^Icontains $ │
│ several^Itabs^Iand^Icontrol^Icharacters $ │
│ like ^b or ^c.$ │
└────────────────────────────┘
이 예에서는 제어 문자들이 들어 있는 화일의 내용을
표시하는 예이다. 위와같이 -vet 옵션을 사용하여
제어문자를 확인할 수 있다.
화일 관리 명령 : pg 와 cp
1. 화일 형식의 확인 : pg 명령어
pg : 지정한 화일의 내용을 출력한다.
┌──────────────┐
│ pg [+/-options] [file(s)] │
└──────────────┘
cat 명령어는 화일의 모든 내용을 한번에 추력하는 것과 달리,
pg 명령어는 화일의 내용을 한 화면분씩 출력한다. 또한 pg 명령어는
화일내의 정방향 또는 역방향 검색 기능과 부가적인 명령어들을
제공한다.
pg 명령어는 한 화면분의 내용을 출력하고, 화면의 끝에 :을 표시한다.
이때 다음 화면을 출력하기 위해서는 <return>을 누른다. 또한 :을
대신하여 다른 프롬프트를 사용하기 위해서는 -p string 형식으로
변경할 수 있다. 그리고 화일내의 마지막 화면이 출력되면, 마지막에
(EOF):을 표시한다. pg 명령어에 복수개의 화일을 지정함으로써
복수 화일의 내용을 출력할 수 있는데, 이 경우 (EOF):가 표시되었을때
n을 누름으로써 다음 화일을 표시할 수 있으며, p를 누름으로써
이전 화일의 내용을 표시할 수 있다.
기본적으로 pg 명령어는 한 화면에 23 라인씩을 출력한다. 출력되는
라인수는 -n 옵션으로( n은 화면상에 표시되는 라인수를 나타내는 숫자 )
변경할 수 있다. 그리고 pg 명령어는 화일 내용의 첫번째 라인부터
화면상에 출력한다. 출력을 시작할 화일상의 라인 번호도 +n 옵션을
( n은 라인번호를 의미한다. ) 사용하여 변경할 수 있다.
이와같이 라인 번호를 통해 정의하는 방식과 달리, +/pattern 옵션을
사용함으로써 지정된 pattern이라는 문자열이 들어 있는 라인의
2줄 위부터 출력을 개시할 수 있다.
pg 명령어는 화일의 내용을 참조하면서 사용할수 있는 많은 명령어를
제공한다. 예를들면 사용 가능한 명령어들을 확인할수 있는 h 명령, 화일을
편집하기 위한 v 명령어, 특정 문자열을 정방향 검색하기 위한 명령인
/pattern, 역방향 검색을 위한 ?pattern, 하나 또는 그이상의 쉘 명령어를
수행하기 위한 !command, 명령어 라인상에서 지정한 직전의 화일의
내용을 확인하기 위한 p 명령어, 특정 화일에 전체 입력을 저장하기 위한
s file 명령어등이 있다.
( 옵션 )
-p string pg 명령어 수행시 사용할 프롬프트를 변경하기 위한
옵션
-c 각 화일의 내용을 표시하기전에 스크린을 깨끝하게
지운다.
-n 스크린 크기를 n 라인으로 변경한다.
+n 화일내의 n 라인부터 화면상에 출력한다.
+/pattern pattern이 들어 있는 라인부터 출력을 시작한다.
( 예제 )
┌───────────────────┐
│$pg -p "myprompt>" file1 file2 file3 │
└───────────────────┘
각 화면상의 마지막에 출력될 프롬프트를 바꾸고,
복수개의 화일을 대상으로 작업하는 예.
┌──────────────┐
│$pg -c10 +10 file2 │
└──────────────┘
화일의 내용을 출력할 화면의 라인수를 10으로, 출력하기전에
화면을 깨끗이 지우고, 화일상의 10 번째 라인부터 출력하도록
지정한 예.
┌───────────┐
│$pg +/pattern file3 │
└───────────┘
pattern이라는 문자열이 들어있는 라인부터 출력하라는 예.
2. 화일의 복사
cp : 특정 화일을 지정한 화일로 복사하라는 명령
┌───────────────┐
│ cp [-option] source target │
└───────────────┘
cp 명령어는 화일또는 디렉토리를 복사한다. source 화일과 target 화일은
동일 디렉토리에서의 작업시에는 같은 이름을 부여할 수 없다. 또한
target이 source와 동일 화일 시스템상에 존재하는 디렉토리라면,
다수의 source 화일들을 복사할 수 있다. 그렇지만 target 디렉토리가
존재하지 않을 경우에는 cp 명령은 지정한 이름으로 화일을 생성한다.
┌──────────────────┐
│ $cp memo1 memo2 memo3 ../backup │ backup 디렉토리 밑에
└──────────────────┘ memo1, memo2, memo3 화일을
복사한다. 단, backup 디렉토리가
없으면 backup이라는 이름의
화일을 생성한다.
또한 target이 기존에 존재하는 화일일 경우에는 cp 명령어는
그 화일을 overwrite한다. -i 옵션은 기존의 화일을 overwrite함으로써
발생할 수 있는 화일 소실을 예방하는데 아주 유용하게 사용할 수 있다.
i 옵션을 사용할 경우에 target이 기존에 존재하면, overwrite할 것인가를
묻는 프롬프트를 표시한다. 그 예는 다음과 같다.
┌─────────────┐
│ $cp -i forma formb │
│ cp: overwrite formb? │ 이 경우 Yes이면 y를
└─────────────┘ No이면 n을 입력한다.
기본적으로 target 화일은 source 화일의 접근 권한을 그대로 유지한다.
-p 옵션은 source 화일의 수정 시간을 target 화일에 보존한다.
이 옵션을 지정하지 않을 경우에는 target 화일의 수정 날짜및 시간이
복사가 완료된 날짜와 시간으로 변경된다.
┌────────────────────────────┐
│ $cp file1 file2 │
│ $ls -il file1 file2 │
│ 894 -rw-r--r-- 1 user1 admin 3457 May 13 16:45 file1 │
│ 947 -rw-r--r-- 1 user1 admin 3457 Aug 23 14:17 file2 │
└────────────────────────────┘
이 예에서는 inode 번호와 변경 날짜가 바뀐 것을 주목하기 바란다.
이 예의 file2는 기존에 존재하지 않는 화일이었기 때문에
동일 접근권한이 부여된것을 볼수 있다. 만일 기존에 있는 화일일
경우에는 본래 화일의 접근 화일을 그대로 유지한다.
만약 다른 디렉토리에 복사되도록 지정했다면, 디폴트 접근 권한인
rw-rw-rw-라는 접근 권한이 부여된다
.
-r 옵션은 source 디렉토리내의 화일및 서브 디렉토리의 내용을
동일 화일 시스템상의 target 디렉토리에 복사하는데 사용되는 옵션이다.
┌──────────────┐
│ $cp -r dir1/subdir dir2 │
└──────────────┘
복사된 화일에는 source 화일과 다른 inode 번호가 부여된다. 왜냐하면
source 화일과는 다른 디스크상의 기억 영역에 저장되기 때문이다.
( 옵션 )
-i 기존의 화일을 overwrite할 경우에 프롬프트를 표시하라는 의미.
-p source 화일의 수정 날짜와 시간을 target 화일에 보존한다.
-r source 디렉토리의 화일과 서브 디렉토리를 모두 복사한다.
========================================================================
화일 관리 명령 : mv
1. 화일의 이동 : mv 명령어
mv : 화일을 이동하거나 화일 이름을 바꾸는 명령
┌───────────────┐
│ mv [-option] source target │
└───────────────┘
mv 명령어는 동일 화일 시스템내의 화일들을 이동하거나 이름을 바꾼다.
대상 화일의 접근 권한이나 수정 시간은 그대로 유지된다.
명령어에 지정한 source와 target 화일명은 동일 디렉토리내에서는
동일하게 지정할 수 없다. 만약 target으로 지정한 이름이
동일 화일 시스템상에서 존재하는 디렉토리일 경우에는, 복수개의
source 화일들을 이동할 수 있다.
┌─────────────┐ backup이라는 디렉토리에
│ $mv memo1 ../backup │ memo1 화일을 이동한다.
└─────────────┘
( 이때 backup이라는 디렉토리가 없을 경우에는 아래와 같이
처리된다. )
그렇지만 target 디렉토리가 존재하지 않을 경우에는 mv 명령어는
지정한 target명으로 화일을 생성한다. 또한 target으로 지정한 화일이
기존에 존재할 경우에는 mv 명령어는 그 내용을 overwrite 한다.
이 경우 -i 옵션을 사용하면 overwrite로 인한 화일 소실을
방지할 수 있다. -i 옵션을 사용했을 경우 target 화일이 존재할 경우에는
작업 계속 수행여부를 묻는 프롬프트를 뿌려준다.
┌─────────────┐ 계속 수행 여부를 yes(y) 또는
│ $mv -i forma formb │ no(n)를 지정한다.
│ mv: overwrite formb? │
└─────────────┘
-f 옵션은 target 화일이 overwrite된다 하더라도, 프롬프트를
표시하지 않고, 작업을 강행한다. 옵션을 지정하지 않았을 경우에는
이 옵션이 사용된다.
새로 생성된 target 화일은 본래의 화일과 디스크상의 동일 기억 영역을
점유하기 때문에 본래의 inode 번호를 유지한다.
┌─────────────────────────────┐
│ $ls -il file1 │
│ 894 -rw-r--r-- 1 user1 admin 3457 May 13 16:45 file1 │
│ $mv file1 file2 │
│ $ls -il file1 file2 │
│ 894 -rw-r--r-- 1 user1 admin 3457 Aug 23 14:17 file2 │
│ file1: No such file or directory │
└─────────────────────────────┘
위의 예에서는 이동 전과 이동 후의 화일의 inode 번호와 접근권한이
변화되지 않음을 보여주는 예이다.
( 옵션 )
-i 기존의 화일을 overwrite 하기전에 작업 수행 여부를
묻는 프롬프트를 표시한다.
-f overwrite 수행 여부를 묻는 프롬프트를 표시하지 않는다.
( 디폴트 옵션이다. )
========================================================================
화일 관리 명령 : ln
1. 화일의 링크 : ln 명령어
ln : source와 target 화일을 링크(link)한다.
( 단순하게 설명하자면 하나의 화일을 여러 이름으로 참조
할 수 있게 제공되는 기능이다. )
┌────────────────┐
│ ln [-option] source target │
└────────────────┘
링크란 화일을 가르키고 있는 디렉토리내에 보존되는 정보이다.
운영체제는 화일이 생성되었을때 첫번째 링크를 생성한다.
화일의 부가적인 링크는 ln 명령어를 사용하여 생성할 수 있다.
ls -l 명령어는 화일의 링크 수를 보여준다.
이때 같이 디렉토리의 링크 수가 표시되는데, 디렉토리의 링크수는
서브 디렉토리의 수를 나타낸다.
┌─────────────────────────────┐
│ $ls -il file1 │
│ 894 -rw-r--r-- 1 user1 admin 3457 May 13 16:45 file1 │
└─────────┬───────────────────┘
└──링크수
계층 구조의 화일 시스템에서는 특정한 화일을 참조하기 위해서는
그 화일이 위치하고 있는 디렉토리의 상대 경로 또는 절대 경로를
선언해 주어야 한다.
ln 명령어는 통상 다른 디렉토리들에 있는 화일로의 다양한 참조 방식을
생성하기 위해 사용된다. 즉, ln 명령어에 지정한 다른 디렉토리상에
위치하고 있는 source 화일을 참조하기 위해 경로명을 지정하는 대신,
사용자는 target 화일명 만을 지정함으로써 참조할 수 있게 해준다.
┌─────────────┐ 명령 수행후 qtr1 화일을
│ $ln qtr1 report/annual │ report/annual 디렉토리내에서도
└─────────────┘ annual 디렉토리내에 있는 화일처럼
사용할 수 있다. 만일 annual이라는
디렉토리가 없을 경우에는 annual이라는
이름의 링크 화일을 생성한다.
링크 명령은 화일의 또다른 복제본을 작성하는 것이 아니라,
또다른 포인터 만을 생성한다. 링크된 화일로의 변경은 화일을 참조하기
위해 사용된 화일 이름에 영향을 받지 않는다. 즉 어떤 이름으로도
화일을 갱신할 수 있고, 갱신 후에도 어떤 화일 이름으로 참조한다
하더라도 동일하게 갱신된 내용을 참조할 수 있다는 의미이다.
ln 명령어상에 지정하는 source 화일은 하나 이상 여러개를 지정할 수
있다. ln 명령어는 명령어 라인상의 마지막 인자를(arguments) target이라고
가정한다. 이때 마지막 인자는 화일 또는 디렉토리를 지정할 수 있다.
┌──────────────────┐
│ $ln qtr2 qtr3 qtr4 report/annual │ qtr2, qtr3, qtr4 화일을
└──────────────────┘ report/annual 디렉토리에
링크한다. 만일 annual이라는
디렉토리가 없을 경우에는
"annual not found"라는
에러 메세지가 표시된다.
만약 target이 기존의 화일이면, ln 명령어는 target 화일을 overwrite
한다. 이 경우 -n 옵션을 지정하면은 target 화일이 overwrite되는 것을
방지할 수 있다. 그리고 화일은 디렉토리에 링크될 수 있다.
┌──────────────┐ -n 옵션을 사용함으로써
│ $ln -n filex oldfile │ oldfile이 기조에 존재하고 있기
│ ln: oldfile: file exists │ 때문에 작업이 수행되지 않는 것을
└──────────────┘ 볼수 있다.
-s 옵션이 사용된 경우를 제외하곤, 링크는 다른 화일 시스템들간에
생성될 수 없다. -s 옵션은 링크될 화일의 경로명을 포함하고 있는 화일인
심볼릭 링크(symbolic link) 화일을 생성한다.
심볼릭 링크는 다른 화일 시스템가에도 링크를 수행할 수 있다.
┌──────────────────────────────────┐
│$ls -il /fs1/fileA │
│24130 -rw-r--r-- 1 user1 admin 952 May 13 16:45 fileA │
│$ln -s /fs1/fileA /fs2 │
│$ls -il /fs2/fileA │
│24133 lrwxrwxrwx 1 user1 admin 37 Aug 23 14:37 /fs2/fileA->/fs1/fileA
└──────────────────────────────────┘
위의 예에서는 심볼릭 링크가 수행된후 target 디렉토리내에
동일한 이름의 또다른 화일이 하나 생성된 것을 볼수 있다.
이때 source와 target 화일의 inode 번호가 틀림을 확인 할 수 있다.
target 화일에는 화일의 내용은 들어 있지 않고, source 화일로의
절대 경로명이 들어 있기 때문에, target 화일명으로 화일을
참조해도 source 화일로 참조 했을때와 같은 내용이 참조된다.
링크는 이후에 설명될 rm 명령어를 사용하여 삭제된다.
( 옵션 )
-n 기존에 존재하는 target 화일을 overwrite하지 않는다.
-s 심볼릭 링크를 생성한다.
========================================================================
화일 프린트 제어 명령 : pr, fmt, lp, lpstat, cancel, disable, enable
강의를 시작하기에 앞서 유닉스에서의 화일 프린트 개요에 대해서
먼저 설명한다. 기본적으로 DOS 운영체제의 경우 단일 사용자 환경을
지원하기 때문에 어느 한 싯점에서의 작업은 오직 하나만이 수행된다.
따라서 한 싯점의 프린트 요구는 하나이기 때문에 별다른 제어 없이
요구가 발생하는데로 프린터로 프린트할 화일의 내용을 보내주기만
하면된다. 그러나 유닉스의 경우는 그와 다르다.
유닉스는 다중 사용자및 다중 작업 수행을 지원하기 때문에 어느
한 싯점에서의 프린트 요구는 하나 그 이상일 것이다. 따라서 프린트
요구를 제어할 수 있는 특별한 도구가 필요하게 된다. 유닉스가
채택한도구가 바로 SPOOL 이다.
각 단말에서 요구되어진 프린트 요구와 관련된 정보들은 ( 프린트 요구사항과
프린트될 화일 내용등 ) 기본적으로 SPOOL이라는 영역에 저장된다.
이 SPOOL 영역은 LP Print service Devicer에의해 관리되며,
각각의 프린트 요구들은 처리상의 우선 순위에 따라 특정 요구가 선택되어
프린터로 보내져 출력을 하게된다.
이러한 작업 환경하에서 사용자는 프린터 작업에 대한 제어를 다양한
유틸리티들을 통해 수행할 수 있게 되는데, 이런 유틸리티들에 대해
지금부터 설명한다.
1. 출력을 위한 화일 내용의 형식 설정 : pr과 fmt
1) pr : 지정한 화일의 내용을 프린트할 형식으로 변화하여화면에 표시한다.
┌─────────────┐
│ pr [-option] file(s) │
└─────────────┘
pr 명령어는 일반적으로 프린터로 출력을 준비하기 위해 사용된다.
화일명을 지정하지 않을 경우에는 pr 명령어는 터미널의 키보드로 부터
입력을 받아들인다. 프린트 형식으로 변환된 출력은 화면상에 표시된다.
이 경우에 출력을 출력 방향 변환 특수문자를 ( | ) 사용하여 프린트 명령어
(즉, lp)로 보내거나 , 또다른 형식 변환문자인 >를 사용하여, 화일에
저장할 수 있다.
기본적으로 화일은 페이지들로 분할되어 프린트된다. 이때 페이지의
기본 구성 형식은 66 라인의 페이지 길이, 72 칼럼의 페이지 폭, 머리말과
꼬리말의 각각 5 라인으로 구성된다. 또한 머리말과 꼬리말에는
화일명, 날짜, 시간과 페이지 번호를 갖는다. pr 명령어의 옵션을
사용함으로써 위의 기본 형식을 변경할 수 있다. 가장 널리 사용되고 있는
옵션들은 아래와 같다.
( pr 명령어 옵션 )
+n n 페이지부터 화면에 표시한다. ( 미지정시 1 페이지 )
-d 각라인마다 한 라인의 공백 라인을 붙여 출력한다.
-h newfile 머리말에 출력되는 화일명을 newfile로 변경한다.
-ln 페이지의 라인수를 n 라인으로 변경한다.
-p 화면상에 한 페이지를 출력할때마다 표시를 정지한다.
-t 머리말과 꼬리말을 생략한다.
( 예제 )
┌──────────┐ longtext 화일의 내용을 프린트 형식으로
│ $pr -dt longtext │ 변환하는데, 각 라인마다 한라인의 공백라인을
└──────────┘ 그리고 머리말과 꼬리말은 생략한다.
┌───────────────────────────┐
│ $pr -ph "Fourth Quarter Summary" report/annual/qtr4 │
└───────────────────────────┘
qtr4 화일의 내용을 프린트 형식으로 변환하는데, 각 페이지마다
화면상에 표시를 중지하고, 머리말의 화일명 부분을 지정한
문자열로 변환한다.
2) fmt : 텍스트 형식 변환기
fmt 명령어는 출력의 폭을 변경하기 위해 주로 사용한다.
fmt에서 제공하는 옵션들중에 -s는 프로그램 화일에 대한 작업 수행시
적당하다. 예를들면 fmt -w 20 fileZ는 20 문자폭을 갖도록 하기위해
fileZ를 변환한다.
( 옵션 )
-w n 텍스트의 폭을 n 칼럼으로 변경한다.
-s 칼럼을 변경하면서 지정한 지정 칼럼 미만의 라인을 병합하지
않는다.
┌────────────┐ memo.oct라는 화일의 폭을 45 칼럼으로
│ $fmt -w 45 memo.oct │ 지정하여 출력을 생성한다.
└────────────┘
┌────────────┐ script2 화일을 프린트 형식으로
│ $fmt -s script2 │ 변환하는데, 짧은 라인을 병합하는
└────────────┘ 작업은 수행하지 않는다.
2. 화일의 프린터로의 출력 : lp
lp 명령어는 SPOOL에(Printer Queue) 하나 또는 그 이상의 화일을
위치 시킴으로써 프린트를 LP print sevice로 하여금 출력할 수
있게 한다. 명령어상에 화일명을 지정하지 않을 경우에는 터미널로
부터 입력을 받는다. SPOOL에 등록되는 모든 프린트 요구들은 각각
유일한 이름의 식별명을 부여 받게된다. 이를 프린트 요구 식별명이라 한다.
프린트 요구 식별명은 lp 명령어가 실행되었을때 printer_name-n 형식으로
( 여기서 n은 SPOOL내에서 유일한 번호로 자동 부여된다. ) 자동적으로
부여되어 표시된다. 이 프린트 요구 식별명은 프린트 요구의 상태를
확인하거나, 프린트 작업 요구를 취소하는 명령어에서 사용될 수 있다.
이러한 명령어들에 대해서는 차후에 계속 설명한다.
LP print service에 관한 내용은 시스템 관리자 과정에서 자세히 설명한다.
참고로 LP print service는 시스템 관리자에 의해서 구성되고, 관리된다.
lp 명령어는 프린트 처리에 영향을 끼치는 몇가지 옵션들을 제공한다.
예를들면 -q 옵션은 프린트 요구에대한 처리 우선 순위를 바꾼다.
우선 순위 값은 최고 0부터 최저 39까지를 부여할 수 있다.
우선 순위 제한은 시스템 관리자에 의해서 사용자에게 할당된다.
많이 사용되어지는 lp 명령어의 옵션은 다음과 같다.
( 옵션 )
-d printer 지정한 printer 또는 지정한 printer class로 (다수의
프린터중 몇개의 프린터를 하나의 그룹으로 묶어 참조할 수
있도록 관리자가 부여한 그룹이름을 class라 한다. )
프린트를 할 것을 지시한다.
-f form 시스템에 사전 정의되어 있는 프린트 양식중 지정한
form으로 프린트를 수행한다.
-m 프린트가 완료된 후에 사용자에게 메일을 통해 통보한다.
-n number 프린트할 부수를 지정한다.
-q number 프린트 요구에대한 처리 우선 순위를 할당한다.
-t title banner 페이지를 프린트 한다.
-w 프린트후에 터미널로 완료 메세지를 표시한다.
( 예제 )
┌─────────────────┐statsfile의 내용을 5부 프린트하고,
│$lp -wn5 report/statsfile │ 완료후 단말에 완료 메세지를
│request id is lp00-54 ( 1 file ) │ 프린트 한다.
└─────────────────┘
┌──────────────────┐laser라는 프린터로 memo, file1
│ $lp -md laser memo file1 │이라는 화일을 프린트 하고,메일로
│ request id is laser-55 ( 2 files ) │ 완료를 통보한다.
└──────────────────┘
========================================================================
화일 프린트 제어 명령 : lpstat, cancel, disable, enable
강의를 시작하기에 앞서 이번에 설명되는 명려어들을 설명하기
위해 사용되는 몇가지 요어에 대해서 먼저 설명하고자 한다.
1)디폴트 프린터( Default printer )
통상 하나의 유닉스 시스템에는 하나 이상의 프린터가 운영되는데,
이런 상황에서 사용자가 프린터로 출력을 하기 위해선, 시스템에
구성되어 있는 프린터중 어느 프린터를 사용할 것인지를
지정해야 한다. 그러나 매번 프린트를 할 때마다 프린터를
지정한다는 것은 꽤 번거로운 일일 것이며, 사용자가 프린트 요구를
낼때 프린터를 지정하지 않는 실수도 많을 것이다.
따라서 유닉스에서는 사용자가 프린터를 지정하지 않았을때
사용될 프린터를 선언할 수 있는 기능을 관리자에게 부여한다.
이때 관리자가 지정한 프린터를 디폴트 프린터라 한다.
2)폼(form)과 휠(wheel)
폼이란 시스템상에 구성된 프린터에 사용 가능한, 텍스트 또는 도형이
이미 프린트되어 있는 종이를 일컫는다. 예를들면 전화 요금 고지서,
세금 고지서와 같은 것이다.
시스템 관리자는 새로운 폼의(즉; 양식) 프린트 용지를 사용하는
프린트 작업을 수행하기 위해서, 사전에 시스템에 사용할 프린터
용지에 대한 특성을 선언해 주어야 한다. 대략 9가지의 특성을
정의하게되는데, 그것은 페이지 길이, 페이지 폭, 페이지 수,
행피치, 문자 피치, 문자 set, 리본 색상, 주석(comment), 정렬 형식
등이다. 사용자가 프린트 요구를 내릴때, 이렇게 사전에 선언된 폼을
지정하게 되면 LP Print Servie는 출력 형식을 이 폼으로 맞추어
추력을 해주게 된다.
휠이란 프린터에 출력할 텍스트들의 문자 형태를 나타낸다.
이를 정확히 이해하기 위해선, 볼 타자기에서 사용하는 활자가
사전에 조각되어 있는 볼을 연상하면 된다.
1. 프린터 상태 확인 :lpstat
lpstat : LP Print Service의 상태를 표시한다.
┌──────────┐
│ lpstat [-option] │
└──────────┘
lpstat 명령어는 프린터 큐(SPOOL)의 상태와 LP Scheduler의 상태,
디폴트 시스템 프린터, 현재 사용 가능한 프린터들의 Device 화일들,
가용한 프린터들에 대해서 Printer Scheduler가 프린트 요구를
받아들이고 있는 경우에, 프린터가 온라인인지 오프라인인지와
프린터 큐내의 프린트 요구들과 같은 LP Print service에 관련된
기타 정보들을 표시한다.
옵션없이 lpstat 명령어는 명령어를 입력한 사용자의 프린트 요구들을
표시한다. lpstat 명령어는 LP Print Service에 관련된 각각의 정보를
표시하기 위한 옵션들을 제공한다. 많이 사용되는 옵션들은 다음과 같다.
( 옵션 )
-a ptr_list 지정한 ptr_list내의 프린터들에 요구된
프린터 요구들을 표시한다.
-d 디폴트 프린터 이름을 표시한다.
-f form_list 지정한 form_list내의 유효한 폼(form)을 검증한다.
-p ptr_list 지정한 ptr_list내의 프린터 상태를 표시한다.
-r 프린트 스케쥴러의 상태를( running 또는
not running ) 표시한다.
-s 디폴트 프린터, 모든 프린터, 사용 가능한 폼(form),
문자 set, 프린트 휠(wheel)등과 같은 프린트 스케쥴러의
요약 정보를 표시한다.
-t 프린트에 관련된 모든 정보를 표시한다.
-u user 지정한 사용자에 의한 프린트 요구의 상태를 표시한다.
-v ptr_list ptr_list내에 들어있는 프린터의 디바이스 화일명을
표시한다.
( 예제 )
┌────────────────────┐
│$lpstat │
│lp00-33 user1 1181 Sep 16 00:43 │
└────────────────────┘
명령어를 입력하고 있는 사용자가 수행한 프린트 요구들을 표시한다.
출력된 내용은 순차적으로 프린트 요구 식별자, 프린트 요구를 요구한
사용자의 로그인 id, 프린트 화일의 크기, 프린트 요구를 내린 시간
등이다.
┌───────────────────┐
│$lpstat -u user2 │
│lp00-32 user2 144 Sep 16 00:43 │
└───────────────────┘
특정 사용자가 내린 프린트 요구 정보를 확인키 위해 -u 옵션을 사용한
예이다.
┌─────────────┐
│ $lpstat -r │
│ scheduler is running │
└─────────────┘
LP Print Service의 프린터 스케쥴러의 상태를 확인키 위해
-r 옵션을 사용한 예이다.
┌───────────────────────────────┐
│$lpstat -t │
│scheduler is running. │
│system default destination: lp00 │
│device for lp00: /dev/term/02 │
│device for lp01: /dev/term/02 │
│lp00 accepting requests since Mon Sep 16 08:08:20 EDT 1991 │
│lp01 accepting requests since Mon Sep 16 08:38:34 EDT 1991 │
│printer lp00 is idle.\ │
│ enabled since Mon Sep 16 08:46:50 EDT 1991. available. │
│printer lp01 is idle. │
│ enabled since Mon Sep 16 08:38:45 EDT 1991. available. │
└───────────────────────────────┘
LP Print Service의 전반적인 상황을 확인하기 위해 -t 옵션을
사용한 예이다. 출력 내용중 몇가지를 살펴보면, 디폴트 프린터 이름및
시스템에 구성되어 있는 프린터들과 그들이 사용하는 디바이스 화일명,
그리고 각각 프린터에 대한 정보등이 표시되어 있다.
2. 프린트 요구 취소 : cancel
cancel 지정된 프린터 요구를 취소한다.
┌──────────────┐
│ cancel [id] [printer] │
└──────────────┘
cancel 명령어는 프린터 큐에 등록되어 있는 프린트 요구를 제거한다.
그러나 cancel 명령어는 이미 프린트가 개시된 요구에 대해서는
명령어를 수행하지 않는다. 큐로부터 하나 또는 그 이상의
프린트 요구를 삭제하기 위해서는 cancel 명령어상에 복수개의
프린트 요구 식별자를 지정한다. 또한 특정 프린터에 등록된 모든
프린트 요구를 삭제하기 위해서는 프린터 명을 cancel 명령어의
인자로 지정한다.
( 옵션 )
없음
( 예제 )
┌─────────────────┐ lp00-33이라는
│ $cancel lp00-33 │ 프린트 요구를
│ request "lp00-33" cancelled │ 취소한다.
└─────────────────┘
┌─────────────────┐ 한번의 cancel
│ $cancel lp01-45 lp01-46 │ 명령어로 복수개의
│ request "lp01-45" cancelled │ 프린트 요구를
│ request "lp01-46" cancelled │ 취소한다.
└─────────────────┘
┌──────────┐ laser라는 프린터에
│ $cancel laser │ 요구된 모든 프린트 요구를
└──────────┘ 취소한다.
3. 프린터의 사용중지 : disable
disable : 지정한 프린터를 사용 중지한다.
┌─────────────────┐
│ disable [-option] printer(s) │
└─────────────────┘
disable 명령어는 지정한 프린터를 오프라인 상태로 만들고, 프린터의
작동을 중지한다. 현재 프린트 되고있는 요구 또한 중지된다( -c옵션
이 적용된다. ).
┌────────────────┐
│$disable lp00 │
│printer "lp00" now disabled │
└────────────────┘
-w 옵션을 지정할 경우에는 프린터를 중지시키기 전에
현재 프린트를 수행하고 있는 요구가 완료될 때까지 기다린다.
lpstat 명령어는 프린터의 현재 상태를 확인하는데 유용하게 사용할 수
있다. lpstat 명령어는 사용중지된 프린터에대해 사전 정의되어 있는
형식의 메세지를 표시한다. 만약 사용자가 프린터가 사용중지 되어있는
이유를 표시하고자 한다면, disable -r 명령을 이용하여 재지정할 수
있다.
┌──────────────────────────────────┐
│$disable -r "Clearing paper jam." lp01 │
│printer "lp01" now disabled │
│$lpstat -t │
│scheduler is running │
│system default destination: lp01 │
│device for lp01: /dev/term/02 │
│lp01 accepting requests since Mon Sep 16 09:38:34 EDT 1991 │
│printer lp01 disabled since Wed Sep 18 16:38:45 EDT 1991. available.│
│ Clearing paper jam. │
└──────────────────────────────────┘
사용중지된 프린터들은 enable 명령어를 통해 사용 개시할수 있다.
( 옵션 )
-r reason lpstat의 출력상에 표시되는 프린터의 사용중지 이유를
선언한다.
-w 프린터를 사용중지 하기전에 현재의 프린트 작업을 끝낸다.
4. 사용 중지된 프린터의 사용 재개 : enable
enable 지정한 프린터를 사용 재개한다.
┌────────────┐
│ enable printer(s) │
└────────────┘
enable 명령어는 지정한 프린터로 하여금 프린트 요구를 처리하도록 한다.
┌─────────────────┐
│ $enable lp00 │
│ printer "lp00" now enabled │
└─────────────────┘
'Academy I > Tech Academy' 카테고리의 다른 글
Unix 7 프로세스, 쉘 (0) | 2014.12.04 |
---|---|
Unix 6 유틸리티 (0) | 2014.12.04 |
Unix 5 통신,네트워크 (0) | 2014.12.04 |
Unix 4 검색과 권한 (0) | 2014.12.04 |
Unix 2 계층구조, 파일, 디렉토리 (0) | 2014.12.04 |
Unix 1 역사,구성,특징 (0) | 2014.12.04 |
HTML5 CSS3 Javascript 책 공개링크 (0) | 2014.12.03 |
[오라클에러] ORA-03135 조치방안 (0) | 2014.11.14 |