adduser
: 사용자를 새로 등록한다.

문법
# adduser

설명
이것은 슈퍼 유저만이 사용할 수 있다. 명령을 입력하면 로그온 이름 등을 차례로 물어오며, 그에 따라서 알맞게 입력해 나가면 된다.

# Enter login name for new account (^C to quit): blade
# Editing information for new user [blade]
# Full name: Park Chan Wook ,,사용자 전체 이름을 입력
# GD [100]: ,,정해주는 값을 그냥 사용한다.

그외에도 홈 디렉토리에 사용하는 셸 등을 계속 물어오는데, 대괄호 속에 내정된 것을 그냥 사용하고자 한다면 엔터키만 누르면 된다. 패스워드 등을 입력하고 나면 지금까지 입력된 정보를 보여주고, 몇 가지 생성 작업을 화면으로 보여준 후 작업을 종료한다.


at
: 프로그램을 지금이 아닌 나중에 실행하도록 예약한다.

문법
# at -q [-m][-f 파일명] 큐(queue) 시간
# at -r 작업번호
# at -l

옵션
-q 큐 : 대소문자 알파벳으로 큐를 지정한다. 순서적으로 빠른 알파벳이 지정된 큐 일수록 CPU 시간 점유 우선권이 낮다.
-r 작업번호 : 큐에서 작업 번호가 지시하는 작업을 지운다. 슈퍼유저가 아니라면 자신의 작업만을 지울 수 있다.
-l : 현재 계획된 작업들의 목록을 보여준다. 슈퍼 유저라면 모든 작업들의 계획목록을 보여준다.
-m : 작업이 완결되면 사용자에게 메일을 보낸다.
-f 파일명 : 표준 입력이 아닌 지시된 파일에서 작업을 읽어온다.

설명
명령은 기본적으로 표준 입력 장치를 통해서 받으며, ^D로 입력을 종료한다. 리다이렉션을 사용하여 다른 파일의 내용을 사용할 수 있다.
/etc/at.allow 파일이 있다면 이 파일에 명단이 있는 사용자만이 at 명령을 사용할 수 있다. /etc/at.allow 파일이 없다면 /etc/at.deny 파일을 찾는다. 이 파일에 목록이 있는 사용자는 at 명령을 사용할 수 없다. 두 파일 모두 찾지 못한다면 오로지 슈퍼 유저만이 at 명령을 사용할 수 있다. 그리고 /etc/at.deny 파일이 비어 있다면 모든 사용자가 at 명령을 사용할 수 있다.
시간을 지정할 때 상당히 다양한 방법을 사용할 수 있다. hhmm 혹은 hh:mm 형태도 가능하며, noon, midnight이나 오후 4시를 의미하는 teatime이라고도 할 수 있다. 오전 오후를 쉽게 구분하려면 am pm 문자를 추가해도 된다. 이미 지나간 시간이라면 다음 날 그 시간에 수행될 것이다. 정확한 날짜를 지정하려면 mmddyy 혹은 mm/dd/yy 아니면 dd.mm.yy 형태 중 선택하라.
현재부터 얼마의 시간이 경과한 후에 수행할지를 지정하려면 + 기호를 사용하라. 이 + 기호뒤에 숫자를 명시하고, 다시 뒤에 그 숫자의 단위가 무엇인지 지정하면 된다.

사용예
# at 8am work ,,work에 수록된 작업 사항들을 오전 8시에 수행하도록 한다.
# at noon work ,,정오에 work에 수록된 작업을 수행한다.
# at -f work 14:40 tomorrow ,,내일 오후2시 40분에 work 파일에 수록된 작업을 수행한다.


banner
: 인수로 주어진 문자열을 큰 글씨로 만들어서 출력한다.

문법
# banner [ -w [숫자] ] 문자열

옵션
-w : 옵션 지정만 하면 80 칼럼으로 폭을 바꾼다. 지정하지 않으면 132 칼럼으로 내정되어 있다. -w 옵션 뒤에 숫자를 지정하면 원하는 폭으로 조정할 수 있다.

설명
출력은 표준 출력으로 내정되어 있다. 글자는 열 배 정도 확대된다. 글자는 에스터리스크(*)를 조합하여 만든다.

사용예
# banner "hello world"
# banner linux | lqr ,,디폴트 프린터에 확대한 글자를 출력한다.


bash
: 이것은 리눅스의 Boume 셸이다. sh를 사용하면 sh가 bash를 호출하여 실행한다. bash를 직접 사용하지 말고 sh를 사용하도록 하라.

문법
# sh [ 옵션 ][ 파일 ]

설명
sh의 설명을 참조하라.


biff
: 전자우편의 수신을 즉시 알려주는 동작을 가능하게 할 것인지 그렇지 않은 지의 여부를 보여주거나 결정한다.

문법
# biff [ y 혹은 n]

설명
유닉스 셸은 사용중이라도 주기적으로 전자우편의 수신 여부를 점검한다. 만일 사용자가 전자우편이 도착하는 즉시 알고자 한다면 biff를 사용하여 그것을 지시할 수 있다. 또는 언제라도 그 기능을 해제할 수도 있다. biff는 인수없이 사용되면 현재 어떤 상태로 되어 있는지 보여준다. 기능 설정과 해제 여부는 y 혹은 n 인수를 주어서 결정한다.

사용예
# biff
# is n ,,전자우편 수신 즉시 통고 기능은 설정되어 있지 않음
# biff y ,,기능설정
# biff
# is y


cal
: 서기 원년부터 9999년까지의 달력을 볼 수 있다.

문법
# cal [-jy] [ [ 달 ] 연도 ]

옵션
-j : 1월 1일부터 날짜수를 계산하는 julian 날짜를 표시한다.
-y : 올해의 달력을 표시한다.

설명
인수를 하나만 준다면 그 숫자는 연도를 의미하는 것으로 간주된다. 두 개의 숫자를 준다면 앞의 것은 월, 그 다음은 연도를 의미하는 것이 된다. 우리의 습관과는 다른 방법을 사용한다. 아무 인수도 주어지지 않으면 이번달의 달력을 표시한다. 연도를 표기할 때는 서기를 완전히 표기해야 한다. 예를들어 97은 1997년이 아니라 서기 97년의 달력을 출력할 것이다.

사용예
# cal 1997
# cal 4 1997


cat
: cat은 catenate(사슬로 잇다. 연결하다)에서 이름이 유래한다. 이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다.

문법
# cat [ -benstuvETA ] [ 파일명(들) ]

옵션
-b : 공백 외의 글자가 있는 모든 행의 개수를 센다.
-e : 제어 문자를 ^ 형태로 출력하면서, 각 행의 끝에 $를 추가한다. -vE와 같다.
-n : 각 행을 출력하면서 행 번호를 함께 첨부한다.
-s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
-r : 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -vT와 같다.
-u : 유닉스 호환성을 위해 추가된 옵션으로서 무시된다.
-v : tab과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
-E : 각 행마다 끝에 $ 문자를 출력한다.
-T : 시로서 탭(tab) 문자를 출력한다.
-A : -vET 옵션을 사용한 것과 같은 효과를 가진다.

설명
유닉스 시스템은 기본적으로 텍스트 자료들을 처리하는 것을 매우 중요시 여겼다. 많은 초기 설정 작업들이 텍스트 문서로 이루어지고, 텍스트 문서를 처리하는 수많은 명령들이 있다. cat 명령은 그러한 것들 중 기본적인 것이다.

cat 명령은 읽어들이는 파일 이름을 지정하지 않으면, 기본 내정값으로 표준 입력 장치를 선정한다.

#cat
이렇게 하면 키보드로부터 입력을 받고, ^d로 입력이 끝나면 다시 표준 출력 장치인 화면으로 출력한다.

사용예
# cat document.1 ,,document.1 파일을 화면으로 출력한다.
# cat content report.first myreport

content와 report.first 두 개의 문서가 연결된 myreport라는 파일을 생성하게 된다.


cd
: 현재 작업하는 디렉토리를 변경한다.

문법
# cd [ 디렉토리 ]

설명
디렉토리 이름과 cd 명령 사이에 반드시 공백이 있어야 한다. 디렉토리 이름을 주지 않고 수행하면 사용자의 홈 디렉토리로 이동한다. 자신이 이동하고자 하는 디렉토리는 자신에게 실행 권한(execution permission)이 있어야 한다.

사용예
# cd /home
# pwd
/home


chgrp
: 파일의 그룹 소유권을 바꾼다.

문법
# chgrp [ -cfvR ] 그룹 파일들

옵션
-c : 실제로 소유자가 바뀐 파일에 대해서 자세히 기술한다.
-f : 파일의 그룹 소유권을 바꿀 수 없더라도 에러 메시지를 출력하지 않는다.
-v : 소유권의 바뀜에 대해서 자세히 기술한다.
-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.

설명
파일의 소유자나 슈퍼 유저만이 파일의 그룹 소유권을 바꿀 수 있다. chgrp 명령 뒤에 원하는 옵션을 사용한 후 목적하는 그룹의 이름을 명시하고 대상 파일의 이름을 명시한다.

사용예
# chgrp DoublePlus /usr/project/*

이것은 /usr/project의 모든 파일들의 소유권을 DoublePlus 그룹으로 바꾼다.


chmod
: 파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.

문법
# chmod [ -cfvR ] 모드 파일명(들)
# chmod [ -cfvR ] 레벨 동작 권한 파일이름(들)

옵션
-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

설명
위에서 보인 문법에서 첫 번째 보인 형식에 사용되는 모드는 파일의 권한을 8진수로 표현한 값이 된다. 파일의 권한은 세 가지가 있기 때문에 각 특성을 하나의 비트로 표현하면 0부터 7까지의 수로 표현할 수 있다. 이것은 8진법 표현이 매우 적당하다.

두 번째 형식은 어떤 사용자 레벨을 바꿀 것인가 어떻게 바꿀 것인가를 개별적으로 정하는 방법이다. 숫자를 사용하지 않고 ls 등을 사용할 때 실제로 볼 수 있는 기호 문자를 사용한다는 것과 특정 권한을 줄 것인가 뺄 것인가 지정할 수 있다는 장점이 있다. 특정한 경우 두 번째 형식이 편리하겠지만 고유한 값의 권한을 지정하는데에는 첫 번째 형식이 훨씬 편리할 것이다. 8진법을 다루는 것은 조금만 알면 너무나 쉽기 때문이다.

사용예
# chmod 666 broadboard ,,파일을 모두가 읽고 쓸 수 있도록 한다.
# chmod 746 broad ,,파일 권한을 -rwxr--rw-로 변경한다.
# chmod o+x,g-w broadboard ,,파일 소유자는 실행권한을 추가하고, 그룹은 쓰기 권한을 금지한다.
# chmod u=r broad ,, 다른 사용자의 권한을 읽기로 제한한다. 사용자의 다른 권한은 사라져 버린다.


chown
: 파일의 소유권을 다른 사람에게로 변경시킨다.

문법
# chown [ -cfvR ] 사용자 파일명(들)

옵션
-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.
-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 소유권에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.

설명
파일의 소유권을 다른 사람에게로 바꾸는 것은 슈퍼 유저만이 할 수 있다.

사용예
# chown blade /user/sisap/* ,,/usr/sisap 디렉토리의 모든 파일을 blade의 것으로 바꾼다.


clear
: clear 명령은 도스의 cls와 마찬가지로 화면을 지우는 동작을 한다.


cmp
: 두 파일을 비교하여 다른 부분을 알려준다.

문법
# cmp [-ls][파일명][파일명2][오프셋1][오프셋2]

옵션
-l : 일치하지 않는 모든 바이트 값과 그 오프셋을 알 수 있다.
-s : 비교만을 수행할 뿐 아무런 메시지도 출력하지 않는다.

설명
옵션없이 두 파일 이름만을 지정하면 cmp는 두 개의 파일 처음부터 순서대로 비교를 시작한다. 만일 끝까지 차이점을 발견하지 못하면 cmp는 조용히 끝난다.
만일 중간에 다른 점을 발견한다면 더 이상의 작업은 중단하고 차이를 발견한 지점을 알려주고는 종료한다. 또한 계속해서 일치해 나가다가 두 파일 중 어느 하나가 끝나는 경우가 있을 수 있다. 다시 말해, 한 파일이 다른 파일의 앞부분에 해당하는 경우이다. 이때는 어느쪽 파일의 end of file 표시를 만나게 되었는지를 알려주고 종료한다.
# cmp document1 document2
# document1 document2 differ: char 128, line 13 ,,차이 발견

오프셋을 지정하면 파일의 어느 부분부터 비교할 것인지를 정할 수 있다. -s 옵션이 왜 필요한 지를 이해하지 못할 테지만, cmp 명령이 보이지 않게 리턴값을 들려준다는 점을 알면 이해할 수 있을 것이다. cmp는 비교 후 두 파일이 일치한다고 판단하면 0을 리턴하며, 그렇지 않으면 1을 리턴한다. 셸 스크립트 상에서 비교 결과만을 원하고 화면에 메시지가 출력되는 것을 원치 않을 때에는 이러한 옵션을 사용할 수 있을 것이다. C 언어를 아는 사람이라면 금방 이해할 수 있었으리라 생각된다.

사용예
# cmp mail.1 mail.2 13 14


compress
: 파일을 압축하거나 압축을 푼다.

문법
# compress [ -cCdfv ] 파일명

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

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

사용예
# compress -v roman
# compress -d noman.Z 혹은 $ compress -d roman


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


find
: 원하는 특정 파일을 디렉토리를 탐색하여 찾는다. find는 매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다. 파일의 조건은 이름이나 크기, 날짜 등 다양하게 지정할 수 있다.

문법
# find [ 디렉토리 ] 탐색 조건

탐색 조건
-name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.
-perm 모드 : 파일 권한(permission)이 일치되는 것을 찾는다. 원하는 권한은 ls로 볼 수 있는 형태와 같이 지정한다.
-type ? : 형태가 같은 파일을 찾는다. 물음표(?) 부분에 디렉토리는 d, 파이프는 p, 심볼릭 링크는 l, 소켓은 s, 블록 파일은 b, 일반 파일은 f 등의 기호를 사용한다.
-links ? : 특정 개수의 링크를 가진 파일을 찾는다. 물음표 부분에 링크의 숫자를 표기한다.
-size ? : 파일의 크기가 일치하는 것을 탐색한다. 파일 크기는 블록단위로 물음표 부분에 지정한다. 한 블록은 512바이트로 내정되어 있지만 블록 숫자 뒤에 단위로 k자를 붙이면 1키로바이트 크기의 블록 숫자로 간주된다.
-user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가능하다.
-atime ? : 최근 며칠내에 엑세스한 파일을 검색한다. 날짜수는 ?에 명시한다.
-exec 명령 : 원하는 검색 조건에 맞는 파일을 찾으면 명시된 명령을 실행한다. 명령의 끝은 \;을 사용하여 끝낸다. find가 검색해낸 파일의 이름을 인수로 사용하고 싶다면 그 위치에 {}를 사용한다.
-newer 파일 : 어떤 파일보다 최근에 갱신된 모든 파일을 검색한다.

사용예
# find /bin -name ro*
# find -user qwfwq -exec cat {} list\;


finger
: 시스템 상의 사용자들에 대한 정보를 보여준다.

문법
# finger [ -slpm ][ 사용자 ]

옵션
-s : 사용자의 로그온 이름, 실제이름, 터미널 이름, 로그온 시간 등등을 보인다.
-I : -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
-p : -l 옵션 정보에서 .plan과 .project 파일을 보이지 않는다.

설명
인수로 아무 것도 주어지지 않으면, finger는 현재 시스템에 로그인되어 있는 사용자들을 보여준다. 옵션이 주어지지 않으면, 기본적으로 -l 옵션을 사용한 것으로 간주된다.

사용예
$ finger
Login Name Tty Idle Login Time Office Office Phone
blade kimtaihan 2 1 Oct 20 11:31
root root 1 Oct 20 11:28


fsck
: 파일 시스템이 완전한 상태를 유지하고 있는가를 검사하고, 잘못된 것은 바로 잡는다.

문법
# fsck [ -arsVN ][ 파일시스템 ]

옵션
-a : 검사도중 발견된 에러를 자동적으로 복구한다.
-r : 검사도중 에러가 발견되면 복구할 것인가를 물어온다. 이것은 하위 호환성을 위한 것으로서 사실상은 사용되지 않는다.
-s : 병렬적인 방법이 아니라 순차적인 방법으로 검색한다.
-V : 검색중 각종 정보를 자세하게 보여준다.
-N : 실제로 검사 작업을 하지는 않도록 한다.

설명
이것은 시스템이 처음 가동될 때 자동으로 호출된다. 이름은 file system check를 줄인 것으로, 파일 시스템을 스캔(scan)하여 일관성을 유지하고 있는가를 검사한다.
디스크의 블록이 bitmap에는 사용되지 않은 상태로 표시되었음에도 불구하고 inode로부터 참조된다든지 반대로 사용된 블록으로 표시되었는데도 inode로부터 참조되지 않는 일이 있는가를 검색한다. 그 외에도 inode 링크계수가 올바른지 두 개 이상의 inode가 같은 블록을 참조하는지 혹은 블록번호가 유효한 것인가 등의 여러 가지를 검사한다.
-a 옵션을 사용하였다면 검사도중 발견된 오류는 자동으로 복구된다. -r 옵션을 사용한다면 반드시 -s 옵션을 함께 사용해야 한다. fsck는 기본적으로 한꺼번에 몇 개의 검사를 병행하는 병렬 작업을 하기 때문에 하나의 에러를 발견하더라도 다른 검사는 계속 수행되고 있다. 검사 시간을 최대한 절약하기 위해서 병렬 작업을 하기 때문에 사용자의 수정과 다른 검사 작업의 호홉이 맞지 않을 수 있다. 그러므로 -s 옵션을 주어서 오직 하나의 검사 작업만 진행되도록 해야 한다. 그러나 -r 옵션은 하위 버전과의 호환성을 위한 것으로서 사용자는 -a 옵션만을 사용하는 것으로서 충분하다. 파일 시스템을 지정해 주지 않으면 /etc/fstab 파일에 나열된 파일 시스템을 검색한다.


grep/fgrep
: 파일내에서 특정 패턴을 검색한다. 이름은 Global Regular Express Printer 의 머리글자이다.

문법
# grep [ -vclhnief ] 표현 파일명(들)
# fgrep [ -vclhnief ] 문자열 파일명(들)

옵션
-V : 일치되는 내용이 없는 라인을 표시한다.
-C : 일치되는 내용이 있는 행의 개수를 센다.
-I : 일치되는 내용이 있는 파일의 이름만을 표시한다.
-h : 일치되는 내용을 찾은 파일의 이름을 표시하지 않는다.
-n : 일치 내용이 있는 행은 행번호와 함께 표시된다.
-i : 대소문자 구분을 하지 않는다.
-e 표현 : 표현이 하이픈 문자로 시작될 때 사용한다.
-f 파일 : 찾으려는 문장이나 표현이 있는 파일을 지시한다.

설명
원하는 탐색 단어 혹은 문장을 검색한다. 표현은 일반 표현식을 사용한다. fgrep은 문자열을 검색할 때 빠르게 사용할 수 있다.

사용예
# grep catch myletter ,,myletter에 catch라는 단어가 있는지 검사한다.
# grep "[Cc]atch" myletter ,,앞 글자가 대소문자인지 상관하지 않고 catch라는 단어를 찾는다. 이것은 다음의 fgrep 명령과 같은 동작을 한다.
# fgrep catch myletter