??
tar
마그네틱 테이프 기록 장치를 위한 명령이다. 파일을 테이프 기록장치로 기록하거나 읽어온다.
문법
■ tar 동작 [ 옵션 ] 플래그인수 파일명(들)
설명
테이프와 같은 순차적 기록 장치는 디스크와는 특성이 다르다. tar명령과 마그네틱 테이프에 대한 내용은 다른 자료를 참고하기 바란다. 리눅스를 사용하는 사람들은 테이프 기록 장치를 사용하는 경우는 거의 없을 것이다.
사용예
■ $ tar cf /home/blade/data.tar /home/blade/data
???
tcsh
tcsh는 bash와 마찬가지로 리눅스에서 사용하는 c 셸 명령 번역기이다. bash 셸이 표준 Bourne 셸에 기능을 보강한 것처럼, 이것은 C 셸의 확장판으로 생각할 수 있다. 리눅스 사용자는 tcsh를 이용해서 C 셸을 사용할 수 있다.
문법
■ tcsh [ -cefinstvxTVX ] [ 파일명 ]
옵션
?-T : tenex라고 하는 특수한 기능을 수행하도록 한다.
?-V : -v 옵션과 같지만 초기화 스크립트의 수행에도 영향을 미친다.
?-X : -x 옵션과 같지만 초기화 스크립트의 수행에도 영향을 미친다.
나머지 옵션들은 bash셸과 같다. 본문 4장에서 bash 셸의 옵션에 대해 설명한 부분을 참조하라.
설명
C 셸은 Bourne 셸 이후에 만들어진 셸로, 캘리포니아 버클리 대학에서 만들었다. 또한 리눅스에서 tcsh는 csh라는 이름의 링크 파일을 가지고 있다.
표준적인 C 셸의 이름이기 때문이다. 셸에 대한 내용과 bash에 대한 사용을 참조하라.
??
tee
파이프 연결 출력을 양방향으로 나눈다.
문법
■ tee [ -ia ] 파일명(들)
옵션
?-i : 인터럽트를 무시하도록 한다.
?-a : 지정된 파일들로 출력이 덮어쓰지 않고, 뒤에 추가되도록 한다.
설명
이것은 파이프 연결 흐름을 두 개의 방향으로 갈라지도록 한다. 마치 파이프를 연결할 때 사용되는 T자 연결관과 같다.
사용예
■ $ ls -l | tee list.output | more
파일 목록을 list.output이라는 파일에 기록함과 동시에 more를 사용하여 화면으로 ls 출력 내용을 볼 수 있다.
???
test
파일의 각종 상태를 검사하여 결과를 알려준다. 이것은 셸 스크립트 상에서 if 문이나 while 문 등과 함께 사용되는 것이 보통이다.
문법
■ test 표현식
■ [ 표현식 ]
표현식
■ ? -r 파일명 : 파일이 읽기 권한이 있으면 참
■ ? -w 파일명 : 파일이 쓰기 권한이 있으면 참
■ ? -x 파일명 : 파일이 실행하기 권한이 있으면 참
■ ? -f 파일명 : 파일이 일반(regular) 파일이면 참
■ ? -d 파일명 : 파일이 디렉토리이면 참
■ ? -b 파일명 : 파일이 존재하고 블록 장치 파일이면 참
■ ? -c 파일명 : 파일이 문자 전용 파일(character special file)이면 참
■ ? -u 파일명 : 파일이 set-user-ID 플래그가 세트되어 있으면 참
■ ? -g 파일명 : 파일이 set-group-ID 플래그가 세트되어 있으면 참
■ ? -k 파일명 : 파일이 sticky 비트가 세트되어 있으면 참
■ ? -s 파일명 : 파일의 크기가 0보다 크면 참
■ ? -t 파일 디스크립터 : 파일 디스크립터에 해당하는 파일이 열려 있고, 터미널 장치로부터 사용되고 있으면 참, 기본 디스크립터 값은 1이다.
■ ? -z 문자열 : 문자열의 길이가 0이면 참
■ ? -n 문자열 : 문자열의 길이가 t 이상이면 참
■ 문자열 1 = 문자열2 : 문자열1과 문자열2가 같으면 참
■ 문자열 1 != 문자열2 : 문자열1과 문자열2가 다르면 참
■ 문자열 : 문자열이 널(null)이 아니면 참, 널 문자열이면 거짓
■ 정수1-eq정수2 : 두 개의 정수1과 정수2가 같으면 참
■ 정수1-ne정수2 : 두 정수가 다르면 참
■ 정수1-gt정수2 : 정수1이 정수2 보다 크면 참
■ 정수1-ge정수2 : 정수1이 정수2 보다 크거나 같으면 참
이외에도 -lt(작으면) -le(작거나 같으면), !(논리부정), -a(AND), -o(OR) 등과 같은 표현을 사용할 수 있으며, 괄호를 사용할 수도 있다.
설명
표현 방식이 두 가지가 있는데, 첫 번째 형식은 test 명령을 사용하는 것이고 두 번째 표현 방식은 대괄호를 사용하여 표현식을 기술하는 것이다. 물론 두 번째 방식이 더욱 많이 사용된다. 스크리트 상에서 판독력이 훨씬 좋기 때문이다. test는 표현식을 주지 않으면 에러 메시지를 발생한다.
사용예
■ if [ -d blade.room ]
■ then
■ cd blade.room
■ echo "It's changed to the blade.room"
■ fi
셸 스크립트에 대한 부분을 참고하고, 자신이 직접 test 구문을 사용한 스크리트를 작성해 보라.
???
time
프로그램이 수행되는 시간을 측정한다.
문법
■ time 명령
설명
time의 인수로 측정하고자 하는 명령을 준다. time은 세 가지 다른 형태의 시간 측정 결과를 보고한다. 실제로 얼마만큼의 시간이 걸렸는가 하는 real 커널이 사용한 시간을 제외하고 CPU에서 소비된 시간을 나타내는 user그리고 실제로 얼마만큼의 커널 시간을 할애했는가 하는 sys시간이 있다. sys+user 시간이 실제로 작업에 할애된 시간이며, real 값에서 sys+user 값을 뺀 결과값은 다른 프로세서 처리에 할당된 시간이다.
사용예
■ $ time cc project.c
컴파일하는 데에 걸리는 시간을 측정한다.
???
touch
파일의 엑세스 시간이나 갱신 시간을 수정한다.
문법
■ touch [ -amc ] MMDDhhmmYY 파일명(들)
옵션
?-a : 파일의 엑세스 시간을 바꾼다.
?-m : 파일의 갱신 시간을 바꾼다.
?-c : 파일명이 존재하지 않는다면 새로운 파일을 만들지 않는다.
■ MM : 월 DD : 날짜
■ hh : 시간 mm : 분 YY : 연도
설명
지정된 파일들의 시간을 바꾼다. 옵션을 지정하지 않으면 엑세스 시간과 갱신 시간 모두를 바꾼다. 즉 디폴트 옵션은 -am이다. 지정된 파일의 이름이 없다면 명시된 시간을 가지는 새로운 파일을 생성한다.
사용예
■ $ touch -a 0615120097 bladenote
파일의 엑세스 시간을 97년 6월 15일 12시로 변경한다.
?
tr
특정한 문자들을 다른 문자로 변경한다. 대부분 리다이렉션과 함께 사용한다.
문법
■ tr [ -cd ] 변경할 문자 변경문자
옵션
? -c : 파일의 모든 내용을 보이지 않고 바꾸는 작업만 보여준다.
? -d : 파일에서 변경할 문자를 제거한다.
설명
문자 표현시 백슬래쉬 문자 뒤에 8진법 숫자를 써서 문자 코드를 표현할 수 있다. 또한 [c1-c2]와 같은 하이픈 표현으로 문자의 범위를 지정할 수 있으며 [c*n]과 같은 방법으로 n 만큼의 문자 반복을 표현할 수도 있다. 변경할 문자의 변경 문자의 개수는 같아야 한다.
사용예
■ $ tr -d "1532" readme.txt readable
readme.txt의 파일에서 캐리지 리턴 문자와 eof마크를 제거하고 readable파일로 리다이렉션한다.
??
true
셸 상에서 참의 의미를 가지는 0을 반환한다.
문법
■ true
설명
셸 스크립트 상에서 무한 루프를 만들 때 등의 경우 사용될 수 있다. Bourne 셸 상에서는 콜론 문자(:)로 같은 효과를 얻을 수 있다.
사용예
다음의 스크립트는 무한정 문자를 출력한다.
■ while true
■ do
■ echo -e "over and over..."
■ done
??
tty
현재 로그온되어 있는 터미널의 장치 이름을 알려준다.
문법
■ tty [ -s ]
옵션
?-s : 표준 입력이 터미널 장치인지 아닌지를 시험한다. 터미널이 표준이라면 0을 반환하며 아니라면 1을 반환한다.
설명
만일 -s 옵션을 사용하지 않고서 tty를 입력했을 때 표준 입력 장치가 터미널이 아니라면 'not a tty'라는 메시지를 출력한다.
사용예
■ $ tty
■ /dev/tty1
???
umask
파일을 생성할 때 현재 사용되고 있는 권한(permission)값의 마스크가 무엇인지 알려주거나 그것을 새로 지정할 때 사용된다.
문법
■ umask [ 마스크 ]
설명
아무런 인수없이 사용하면 파일 생성시 사용되고 있는 디폴트 마스크가 무엇인지 알려준다. 마스크를 지정하면 원하는 값을 지정할 수 있다.
마스크 값은 세 자리의 8진법 숫자로 구성된다. 이것을 마스크라고 부르는 이유는 마스크 값의 각 비트가 들어오는 값을 걸러내는 역할을 하기 때문이다. 즉 마스크 값이 0이면 권한 지정에 제한을 두지 않는다는 것이고 6이라면 읽기와 쓰기에 제한을 가한다는 의미가 되기 때문이다.
사용예
■ $ umask 033
자신은 제한이 없지만 다른 사용자나 그룹은 쓰기와 실행을 할 수 없다.
???
umount
설정된 마운트 정보를 해제한다.
문법
■ umount 장치명 or 마운트포인트
■ umount -a
■ umount -t 파일시스템 형태
옵션
?-a : 모든 파일 시스템의 마운트 정보를 해제한다.
?-t : 특정 형태의 파일 시스템만을 선택하여 해제된다. 옵션 뒤에는 어떤 파일 시스템을 해제할 것인지 지정한다.
설명
마운트되어 있는 장치와의 설정을 해제한다. /dev/hda3와 같은 이름이나 /dosc와 같은 포인트 이름을 사용한다. 파일 시스템 형태를 지정할 때는 msdos, minix, hpfs 등과 같은 이름을 사용한다. 마운트 해제시 사용중인 장치는 해제하지 못한다. 예를들어 /dosc 디렉토리에 위치한 상태에서 도스파일 시스템과의 마운트를 해제하지는 못한다.
사용예
■ $ umount /dev/hda1
???
uname
시스템 이름과 다른 정보를 보여준다.
문법
■ uname [ -snvma ]
옵션
?-s : 시스템 이름을 알려준다.
?-n : 시스템의 노드(node) 이름을 알려준다.
?-r : 오퍼레이팅 시스템의 증명번호를 알려준다.
?-v : 오퍼레이팅 시스템의 버전(version) 번호를 알려준다.
?-m : 하드웨어의 이름을 알려준다.
?-a : 모든 정보를 알려준다. -snrvm 과 같다.
설명
-s 옵션은 기본값으로 내장되어 있다. 옵션이 없다면 시스템 이름을 알려준다.
사용예
■ $ uname -sm
??????
uncompress
compress로 압축되어 있는 파일의 압축을 푼다.
문법
■ uncompress 파일명(들)
설명
사실상, compress의 -d 옵션을 사용하면 압축을 풀 수 있기 때문에 이 명령은 불필요하다. 하지만 옵션을 사용하는 것보다 의미있는 단어를 사용함으로 좀더 친숙하게 사용할 수 있다. uncompress는 자신이 압축 풀기 동작을 수행하는 것이 아니라 -d 옵션을 주어 compress를 호출한다. uncompress 자신의 파일 크기는 아주 적다.
사용예
■ $ uncompress blade.Z
??
user
여러 명의 사용자가 동시에 유닉스 시스템에 로그인하여 사용하고 있을 때 어떤 사람들이 시스템에 접속해 있는지를 알아야 할 필요가 있다. 이때 간단히 사용자들의 id 이름만을 알고자 한다면 users 명령을 사용하면 된다.
문법
■ users
설명
이 명령은 아무런 옵션이 없다. 시스템이 네트워크에 연결되어 있다면 이 명령은 모든 네트워크 상에서 작업하는 사용자들을 보여주지는 못한다. 단지 그 명령이 사용되는 지역 호스트 상의 사용자들을 보여줄 수 있다.
사용예
■ $ users ?
■ sisap blade
??????????
uudecode?uuencode
uuencode는 USENET과 같이 ASC2 코드만을 다루는 미디어를 위해 바이너리 코드를 변환한다. uudecode는 그 반대의 동작을 수행한다.
문법
■ uudecode [파일명]
■ uuencode [파일명] 이름
설명
기본적으로 표준 입력으로 읽거나 쓴다. uuencode는 디코딩되었을 때 사용될 파일의 이름도 함께 명시한다. e-mail 이나 USENET 은 바이너리 코드를 사용하지 않기 때문에 이 작업으로 바이너리 파일을 보내고 받을 수 있다.
사용예
■ $ uuencode canexe.Z canexe.Z > exemail.uu
canexe.Z 라는 파일을 인코딩 작업을 거친 후 exemail.uu라는 파일로 저장한다. 이 파일을 디코딩하면 canexe.Z라는 이름으로 파일이 만들어진다.
?
vi
거의 유닉스 표준이라고 말할 수 있는 풀 스크린 에디터이다. 이것은 유닉스 시스템의 일부라고 말할 수 있으므로 레퍼런스에 포함했다.
문법
■ vi [ 파일명(들) ]
설명
이것은 매우 강력한 기능의 스크린 에디터이다. 메뉴 방식이 아니라 명령 입력 방식이기 때문에 처음 학습이 불편하다는 단점이 있지만 사용법을 알면 매우 빠르게 작업을 수행할 수 있다. vi대한 자세한 내용은 이 책의 앞부분이나 다른 참고 서적을 참조하라.
사용예
■ $ vi manual.book ;; vi를 실행 후 manual.book을 읽어들인다.
???
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
현재 시스템에 로그온되어 있는 모든 사용자들에게 메시지를 보낸다.
문법
■ wall [ 파일명 ]
설명
메시지는 각 사용자의 터미널에 나타나게 된다. 인수로 파일 이름이 주어지지 않으면 표준 입력으로부터 데이터를 받아들이며, ^D로 입력을 종결하고 메시지를 발송한다. 이것을 사용하려면 슈퍼 유저로 로그인되어야 한다. 사용자가 자신의 터미널을 메시지 수신 거부 상태로 만들어 놓더라도 슈퍼 유저는 그것을 무시할 수 있다.
사용예
■ $ wall
30 minutes latter, this system will be halted!! ^D
??
wc
파일내의 단어 수 등의 정보를 출력한다.
문법
■ wc [ -cwl ] 파일이름(들)
옵션
?-c : 문자(character)의 개수만을 알고 싶을 때 사용한다.
?-w : 단어(word)의 개수만을 알고 싶을 대 사용한다.
?-I : 행(line)의 숫자를 알고 싶을 때 사용한다. 혹은 개행 문자의 개수를 알고자 할 때 사용될 수도 있다.
설명
wc라는 이름은 word counter를 의미하는 것이 아닌가 생각한다. 아무런 옵션을 주지 않고서 사용하면 행수, 단어수, 문자수를 모두 검사해서 보고한다. 텍스트 문서 속에서 단어란 공백(space)문자, 탭(tab)문자 그리고 개행(newline)문자에 의해 구분되는 문자들의 집합을 의미한다.
사용예
$ wc sample.txt ?
11 29 197 sample.txt
???
which
등록된 path를 통해서 특정 프로그램을 찾는다.
문법
■ which 프로그램
설명
만일 사용자의 path가 매우 긴 경우에 유용하게 사용될 수 있다. find와 유사한 기능이지만 path안에 있는 프로그램을 찾을 때 간단하게 사용된다.
사용예
$ which tetries
지정된 path 안에서 tetries 프로그램을 찾는다.
??
who
현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다.
문법
■ who [ -uTHqs ] [로그온 정보파일 ]
■ who am I
옵션
?-u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
?-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다.
?-H : 헤더 라인을 프린트한다.
?-q : 사용자 이름과 카운트가 구분된 목록을 보여줌, 다른 옵션은 무시된다.
?-s : 호환을 위해 포함된 옵션으로 무시된다.
설명
아무런 인수없이 who 명령을 사용한다면 users명령처럼 지역 호스트상의 사용자 목록을 보여준다.
자신이 누구인지를 알려면 인수로 am I를 사용한다. 그러면 다음과 같은 바보같은 질문이 될 것이다.
■ $ who am I ?
이런 명령도 가끔은 필요할 것이다. 가령 친구의 계정으로 로그인했는데 그것을 잊어버렸을 경우라든지 아무도 없는 학교 실습실에 켜진 채 놓여진 터미널을 발견했을 때 누가 사용하다가 자리를 비웠는지 알고 싶을 때 등이다.
사용자가 로그인하거나 로그아웃할 때마다 /var/adm/wtmp 파일에 기록된다. 이 파일을 보면 사용들이 들어오고 나간 것을 확인할 수 있다. 이 파일 이름을 who 명령의 인수로 주면 그것을 볼 수 있는 것이다.
???
write
사용자의 터미널 사이에 메시지를 전달한다.
문법
■ write [ 사용자 ][ tty ]
설명
메시지를 전달하고자 하는 사용자의 이름을 지정한다. 만일 한 사용자의 이름으로 두 명 이상이 사용중이면 특정 터미널을 지정하여(tty) 메시지를 전달할 수 있다. write는 표준 입력 장치로 전달할 메시지를 입력받는다. 각행에서 리턴 키를 누를 때마다 메시지가 전달되며, ^D를 누르면 그만둔다.
메시지가 수신되면 ‘Message from 보낸사람 터미널’등의 정보를 보여주어서 누가 어느 터미널에서 메시지를 보내는지를 알 수 있도록 한다. 보내고자 하는 사람이 로그인되어 있지 않다면 ‘user is not logged on이라고’ 알려주며 만일 그 사람의 터미널이 메시지 수신을 거부하고 있는 상태라면 ‘permission denied 라는’ 말을 보여준다. 그는 아마도 mesg n 명령을 사용했을 것이다.
사용예
■ $ write victor
■ Do you have the linux-CDROM ?
■ ^d
tar
마그네틱 테이프 기록 장치를 위한 명령이다. 파일을 테이프 기록장치로 기록하거나 읽어온다.
문법
■ tar 동작 [ 옵션 ] 플래그인수 파일명(들)
설명
테이프와 같은 순차적 기록 장치는 디스크와는 특성이 다르다. tar명령과 마그네틱 테이프에 대한 내용은 다른 자료를 참고하기 바란다. 리눅스를 사용하는 사람들은 테이프 기록 장치를 사용하는 경우는 거의 없을 것이다.
사용예
■ $ tar cf /home/blade/data.tar /home/blade/data
???
tcsh
tcsh는 bash와 마찬가지로 리눅스에서 사용하는 c 셸 명령 번역기이다. bash 셸이 표준 Bourne 셸에 기능을 보강한 것처럼, 이것은 C 셸의 확장판으로 생각할 수 있다. 리눅스 사용자는 tcsh를 이용해서 C 셸을 사용할 수 있다.
문법
■ tcsh [ -cefinstvxTVX ] [ 파일명 ]
옵션
?-T : tenex라고 하는 특수한 기능을 수행하도록 한다.
?-V : -v 옵션과 같지만 초기화 스크립트의 수행에도 영향을 미친다.
?-X : -x 옵션과 같지만 초기화 스크립트의 수행에도 영향을 미친다.
나머지 옵션들은 bash셸과 같다. 본문 4장에서 bash 셸의 옵션에 대해 설명한 부분을 참조하라.
설명
C 셸은 Bourne 셸 이후에 만들어진 셸로, 캘리포니아 버클리 대학에서 만들었다. 또한 리눅스에서 tcsh는 csh라는 이름의 링크 파일을 가지고 있다.
표준적인 C 셸의 이름이기 때문이다. 셸에 대한 내용과 bash에 대한 사용을 참조하라.
??
tee
파이프 연결 출력을 양방향으로 나눈다.
문법
■ tee [ -ia ] 파일명(들)
옵션
?-i : 인터럽트를 무시하도록 한다.
?-a : 지정된 파일들로 출력이 덮어쓰지 않고, 뒤에 추가되도록 한다.
설명
이것은 파이프 연결 흐름을 두 개의 방향으로 갈라지도록 한다. 마치 파이프를 연결할 때 사용되는 T자 연결관과 같다.
사용예
■ $ ls -l | tee list.output | more
파일 목록을 list.output이라는 파일에 기록함과 동시에 more를 사용하여 화면으로 ls 출력 내용을 볼 수 있다.
???
test
파일의 각종 상태를 검사하여 결과를 알려준다. 이것은 셸 스크립트 상에서 if 문이나 while 문 등과 함께 사용되는 것이 보통이다.
문법
■ test 표현식
■ [ 표현식 ]
표현식
■ ? -r 파일명 : 파일이 읽기 권한이 있으면 참
■ ? -w 파일명 : 파일이 쓰기 권한이 있으면 참
■ ? -x 파일명 : 파일이 실행하기 권한이 있으면 참
■ ? -f 파일명 : 파일이 일반(regular) 파일이면 참
■ ? -d 파일명 : 파일이 디렉토리이면 참
■ ? -b 파일명 : 파일이 존재하고 블록 장치 파일이면 참
■ ? -c 파일명 : 파일이 문자 전용 파일(character special file)이면 참
■ ? -u 파일명 : 파일이 set-user-ID 플래그가 세트되어 있으면 참
■ ? -g 파일명 : 파일이 set-group-ID 플래그가 세트되어 있으면 참
■ ? -k 파일명 : 파일이 sticky 비트가 세트되어 있으면 참
■ ? -s 파일명 : 파일의 크기가 0보다 크면 참
■ ? -t 파일 디스크립터 : 파일 디스크립터에 해당하는 파일이 열려 있고, 터미널 장치로부터 사용되고 있으면 참, 기본 디스크립터 값은 1이다.
■ ? -z 문자열 : 문자열의 길이가 0이면 참
■ ? -n 문자열 : 문자열의 길이가 t 이상이면 참
■ 문자열 1 = 문자열2 : 문자열1과 문자열2가 같으면 참
■ 문자열 1 != 문자열2 : 문자열1과 문자열2가 다르면 참
■ 문자열 : 문자열이 널(null)이 아니면 참, 널 문자열이면 거짓
■ 정수1-eq정수2 : 두 개의 정수1과 정수2가 같으면 참
■ 정수1-ne정수2 : 두 정수가 다르면 참
■ 정수1-gt정수2 : 정수1이 정수2 보다 크면 참
■ 정수1-ge정수2 : 정수1이 정수2 보다 크거나 같으면 참
이외에도 -lt(작으면) -le(작거나 같으면), !(논리부정), -a(AND), -o(OR) 등과 같은 표현을 사용할 수 있으며, 괄호를 사용할 수도 있다.
설명
표현 방식이 두 가지가 있는데, 첫 번째 형식은 test 명령을 사용하는 것이고 두 번째 표현 방식은 대괄호를 사용하여 표현식을 기술하는 것이다. 물론 두 번째 방식이 더욱 많이 사용된다. 스크리트 상에서 판독력이 훨씬 좋기 때문이다. test는 표현식을 주지 않으면 에러 메시지를 발생한다.
사용예
■ if [ -d blade.room ]
■ then
■ cd blade.room
■ echo "It's changed to the blade.room"
■ fi
셸 스크립트에 대한 부분을 참고하고, 자신이 직접 test 구문을 사용한 스크리트를 작성해 보라.
???
time
프로그램이 수행되는 시간을 측정한다.
문법
■ time 명령
설명
time의 인수로 측정하고자 하는 명령을 준다. time은 세 가지 다른 형태의 시간 측정 결과를 보고한다. 실제로 얼마만큼의 시간이 걸렸는가 하는 real 커널이 사용한 시간을 제외하고 CPU에서 소비된 시간을 나타내는 user그리고 실제로 얼마만큼의 커널 시간을 할애했는가 하는 sys시간이 있다. sys+user 시간이 실제로 작업에 할애된 시간이며, real 값에서 sys+user 값을 뺀 결과값은 다른 프로세서 처리에 할당된 시간이다.
사용예
■ $ time cc project.c
컴파일하는 데에 걸리는 시간을 측정한다.
???
touch
파일의 엑세스 시간이나 갱신 시간을 수정한다.
문법
■ touch [ -amc ] MMDDhhmmYY 파일명(들)
옵션
?-a : 파일의 엑세스 시간을 바꾼다.
?-m : 파일의 갱신 시간을 바꾼다.
?-c : 파일명이 존재하지 않는다면 새로운 파일을 만들지 않는다.
■ MM : 월 DD : 날짜
■ hh : 시간 mm : 분 YY : 연도
설명
지정된 파일들의 시간을 바꾼다. 옵션을 지정하지 않으면 엑세스 시간과 갱신 시간 모두를 바꾼다. 즉 디폴트 옵션은 -am이다. 지정된 파일의 이름이 없다면 명시된 시간을 가지는 새로운 파일을 생성한다.
사용예
■ $ touch -a 0615120097 bladenote
파일의 엑세스 시간을 97년 6월 15일 12시로 변경한다.
?
tr
특정한 문자들을 다른 문자로 변경한다. 대부분 리다이렉션과 함께 사용한다.
문법
■ tr [ -cd ] 변경할 문자 변경문자
옵션
? -c : 파일의 모든 내용을 보이지 않고 바꾸는 작업만 보여준다.
? -d : 파일에서 변경할 문자를 제거한다.
설명
문자 표현시 백슬래쉬 문자 뒤에 8진법 숫자를 써서 문자 코드를 표현할 수 있다. 또한 [c1-c2]와 같은 하이픈 표현으로 문자의 범위를 지정할 수 있으며 [c*n]과 같은 방법으로 n 만큼의 문자 반복을 표현할 수도 있다. 변경할 문자의 변경 문자의 개수는 같아야 한다.
사용예
■ $ tr -d "1532" readme.txt readable
readme.txt의 파일에서 캐리지 리턴 문자와 eof마크를 제거하고 readable파일로 리다이렉션한다.
??
true
셸 상에서 참의 의미를 가지는 0을 반환한다.
문법
■ true
설명
셸 스크립트 상에서 무한 루프를 만들 때 등의 경우 사용될 수 있다. Bourne 셸 상에서는 콜론 문자(:)로 같은 효과를 얻을 수 있다.
사용예
다음의 스크립트는 무한정 문자를 출력한다.
■ while true
■ do
■ echo -e "over and over..."
■ done
??
tty
현재 로그온되어 있는 터미널의 장치 이름을 알려준다.
문법
■ tty [ -s ]
옵션
?-s : 표준 입력이 터미널 장치인지 아닌지를 시험한다. 터미널이 표준이라면 0을 반환하며 아니라면 1을 반환한다.
설명
만일 -s 옵션을 사용하지 않고서 tty를 입력했을 때 표준 입력 장치가 터미널이 아니라면 'not a tty'라는 메시지를 출력한다.
사용예
■ $ tty
■ /dev/tty1
???
umask
파일을 생성할 때 현재 사용되고 있는 권한(permission)값의 마스크가 무엇인지 알려주거나 그것을 새로 지정할 때 사용된다.
문법
■ umask [ 마스크 ]
설명
아무런 인수없이 사용하면 파일 생성시 사용되고 있는 디폴트 마스크가 무엇인지 알려준다. 마스크를 지정하면 원하는 값을 지정할 수 있다.
마스크 값은 세 자리의 8진법 숫자로 구성된다. 이것을 마스크라고 부르는 이유는 마스크 값의 각 비트가 들어오는 값을 걸러내는 역할을 하기 때문이다. 즉 마스크 값이 0이면 권한 지정에 제한을 두지 않는다는 것이고 6이라면 읽기와 쓰기에 제한을 가한다는 의미가 되기 때문이다.
사용예
■ $ umask 033
자신은 제한이 없지만 다른 사용자나 그룹은 쓰기와 실행을 할 수 없다.
???
umount
설정된 마운트 정보를 해제한다.
문법
■ umount 장치명 or 마운트포인트
■ umount -a
■ umount -t 파일시스템 형태
옵션
?-a : 모든 파일 시스템의 마운트 정보를 해제한다.
?-t : 특정 형태의 파일 시스템만을 선택하여 해제된다. 옵션 뒤에는 어떤 파일 시스템을 해제할 것인지 지정한다.
설명
마운트되어 있는 장치와의 설정을 해제한다. /dev/hda3와 같은 이름이나 /dosc와 같은 포인트 이름을 사용한다. 파일 시스템 형태를 지정할 때는 msdos, minix, hpfs 등과 같은 이름을 사용한다. 마운트 해제시 사용중인 장치는 해제하지 못한다. 예를들어 /dosc 디렉토리에 위치한 상태에서 도스파일 시스템과의 마운트를 해제하지는 못한다.
사용예
■ $ umount /dev/hda1
???
uname
시스템 이름과 다른 정보를 보여준다.
문법
■ uname [ -snvma ]
옵션
?-s : 시스템 이름을 알려준다.
?-n : 시스템의 노드(node) 이름을 알려준다.
?-r : 오퍼레이팅 시스템의 증명번호를 알려준다.
?-v : 오퍼레이팅 시스템의 버전(version) 번호를 알려준다.
?-m : 하드웨어의 이름을 알려준다.
?-a : 모든 정보를 알려준다. -snrvm 과 같다.
설명
-s 옵션은 기본값으로 내장되어 있다. 옵션이 없다면 시스템 이름을 알려준다.
사용예
■ $ uname -sm
??????
uncompress
compress로 압축되어 있는 파일의 압축을 푼다.
문법
■ uncompress 파일명(들)
설명
사실상, compress의 -d 옵션을 사용하면 압축을 풀 수 있기 때문에 이 명령은 불필요하다. 하지만 옵션을 사용하는 것보다 의미있는 단어를 사용함으로 좀더 친숙하게 사용할 수 있다. uncompress는 자신이 압축 풀기 동작을 수행하는 것이 아니라 -d 옵션을 주어 compress를 호출한다. uncompress 자신의 파일 크기는 아주 적다.
사용예
■ $ uncompress blade.Z
??
user
여러 명의 사용자가 동시에 유닉스 시스템에 로그인하여 사용하고 있을 때 어떤 사람들이 시스템에 접속해 있는지를 알아야 할 필요가 있다. 이때 간단히 사용자들의 id 이름만을 알고자 한다면 users 명령을 사용하면 된다.
문법
■ users
설명
이 명령은 아무런 옵션이 없다. 시스템이 네트워크에 연결되어 있다면 이 명령은 모든 네트워크 상에서 작업하는 사용자들을 보여주지는 못한다. 단지 그 명령이 사용되는 지역 호스트 상의 사용자들을 보여줄 수 있다.
사용예
■ $ users ?
■ sisap blade
??????????
uudecode?uuencode
uuencode는 USENET과 같이 ASC2 코드만을 다루는 미디어를 위해 바이너리 코드를 변환한다. uudecode는 그 반대의 동작을 수행한다.
문법
■ uudecode [파일명]
■ uuencode [파일명] 이름
설명
기본적으로 표준 입력으로 읽거나 쓴다. uuencode는 디코딩되었을 때 사용될 파일의 이름도 함께 명시한다. e-mail 이나 USENET 은 바이너리 코드를 사용하지 않기 때문에 이 작업으로 바이너리 파일을 보내고 받을 수 있다.
사용예
■ $ uuencode canexe.Z canexe.Z > exemail.uu
canexe.Z 라는 파일을 인코딩 작업을 거친 후 exemail.uu라는 파일로 저장한다. 이 파일을 디코딩하면 canexe.Z라는 이름으로 파일이 만들어진다.
?
vi
거의 유닉스 표준이라고 말할 수 있는 풀 스크린 에디터이다. 이것은 유닉스 시스템의 일부라고 말할 수 있으므로 레퍼런스에 포함했다.
문법
■ vi [ 파일명(들) ]
설명
이것은 매우 강력한 기능의 스크린 에디터이다. 메뉴 방식이 아니라 명령 입력 방식이기 때문에 처음 학습이 불편하다는 단점이 있지만 사용법을 알면 매우 빠르게 작업을 수행할 수 있다. vi대한 자세한 내용은 이 책의 앞부분이나 다른 참고 서적을 참조하라.
사용예
■ $ vi manual.book ;; vi를 실행 후 manual.book을 읽어들인다.
???
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
현재 시스템에 로그온되어 있는 모든 사용자들에게 메시지를 보낸다.
문법
■ wall [ 파일명 ]
설명
메시지는 각 사용자의 터미널에 나타나게 된다. 인수로 파일 이름이 주어지지 않으면 표준 입력으로부터 데이터를 받아들이며, ^D로 입력을 종결하고 메시지를 발송한다. 이것을 사용하려면 슈퍼 유저로 로그인되어야 한다. 사용자가 자신의 터미널을 메시지 수신 거부 상태로 만들어 놓더라도 슈퍼 유저는 그것을 무시할 수 있다.
사용예
■ $ wall
30 minutes latter, this system will be halted!! ^D
??
wc
파일내의 단어 수 등의 정보를 출력한다.
문법
■ wc [ -cwl ] 파일이름(들)
옵션
?-c : 문자(character)의 개수만을 알고 싶을 때 사용한다.
?-w : 단어(word)의 개수만을 알고 싶을 대 사용한다.
?-I : 행(line)의 숫자를 알고 싶을 때 사용한다. 혹은 개행 문자의 개수를 알고자 할 때 사용될 수도 있다.
설명
wc라는 이름은 word counter를 의미하는 것이 아닌가 생각한다. 아무런 옵션을 주지 않고서 사용하면 행수, 단어수, 문자수를 모두 검사해서 보고한다. 텍스트 문서 속에서 단어란 공백(space)문자, 탭(tab)문자 그리고 개행(newline)문자에 의해 구분되는 문자들의 집합을 의미한다.
사용예
$ wc sample.txt ?
11 29 197 sample.txt
???
which
등록된 path를 통해서 특정 프로그램을 찾는다.
문법
■ which 프로그램
설명
만일 사용자의 path가 매우 긴 경우에 유용하게 사용될 수 있다. find와 유사한 기능이지만 path안에 있는 프로그램을 찾을 때 간단하게 사용된다.
사용예
$ which tetries
지정된 path 안에서 tetries 프로그램을 찾는다.
??
who
현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다.
문법
■ who [ -uTHqs ] [로그온 정보파일 ]
■ who am I
옵션
?-u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
?-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다.
?-H : 헤더 라인을 프린트한다.
?-q : 사용자 이름과 카운트가 구분된 목록을 보여줌, 다른 옵션은 무시된다.
?-s : 호환을 위해 포함된 옵션으로 무시된다.
설명
아무런 인수없이 who 명령을 사용한다면 users명령처럼 지역 호스트상의 사용자 목록을 보여준다.
자신이 누구인지를 알려면 인수로 am I를 사용한다. 그러면 다음과 같은 바보같은 질문이 될 것이다.
■ $ who am I ?
이런 명령도 가끔은 필요할 것이다. 가령 친구의 계정으로 로그인했는데 그것을 잊어버렸을 경우라든지 아무도 없는 학교 실습실에 켜진 채 놓여진 터미널을 발견했을 때 누가 사용하다가 자리를 비웠는지 알고 싶을 때 등이다.
사용자가 로그인하거나 로그아웃할 때마다 /var/adm/wtmp 파일에 기록된다. 이 파일을 보면 사용들이 들어오고 나간 것을 확인할 수 있다. 이 파일 이름을 who 명령의 인수로 주면 그것을 볼 수 있는 것이다.
???
write
사용자의 터미널 사이에 메시지를 전달한다.
문법
■ write [ 사용자 ][ tty ]
설명
메시지를 전달하고자 하는 사용자의 이름을 지정한다. 만일 한 사용자의 이름으로 두 명 이상이 사용중이면 특정 터미널을 지정하여(tty) 메시지를 전달할 수 있다. write는 표준 입력 장치로 전달할 메시지를 입력받는다. 각행에서 리턴 키를 누를 때마다 메시지가 전달되며, ^D를 누르면 그만둔다.
메시지가 수신되면 ‘Message from 보낸사람 터미널’등의 정보를 보여주어서 누가 어느 터미널에서 메시지를 보내는지를 알 수 있도록 한다. 보내고자 하는 사람이 로그인되어 있지 않다면 ‘user is not logged on이라고’ 알려주며 만일 그 사람의 터미널이 메시지 수신을 거부하고 있는 상태라면 ‘permission denied 라는’ 말을 보여준다. 그는 아마도 mesg n 명령을 사용했을 것이다.
사용예
■ $ write victor
■ Do you have the linux-CDROM ?
■ ^d
Tag | 레퍼런스