기본명령어(GNU
and Unix Commands)
unix ->
대형서버
linux -> 1991년 (0.02) 리누즈 토발즈
개발, 리챠드 스톨만이 배포(FSF -> GNU선언 -> GPL라이센스)
minix -> 교육용 unix
⊙
Shell
- 리눅스 명령어
실행기
- 프로그래밍 언어
- 컴퓨터 또는 커널을 사용자와 연결시켜주는 매개 역할
linux kernel(기계어) <-> shell <->
사용자(c언어)
프로그램의 실행을 위한 인터페이스이고, 간단한
프로그래밍 언어이다.
사용자가 특정한 명령어를 입력하면 우선 shell이
접수하여 그것을 해석하고, 해석된 명령을 실행할 수 있게끔 도와주는 명령어
처리기.
shell은 커널과 사용자를 중재해 주는 역할을 하는 것이다.
shell은 커널에서 분리된 별도의 프로그램이기 때문에 새로운 종류의
shell들이 지속적으로 개발되고 있다.
<리눅스의 기본 명령어>
쉘에 내장되어 있는 명령어로 쉘이 명령어를 이해한다.
/bin 안에 파일의 형태로 존재하며 사용하는 명령
◎ shell
종류
예전 유닉스의 shell에는 스티븐
본이 개발한 bourne shell과 버클리 대학의 빌 조이가 개발한 c shell뿐이었지만, 지금은 이러한 shell을 기반으로 해서 bash,ksh,tcsh,zsh 같은
shell이 개발되었다.linux에서는 sh을 기본으로 ksh과csh 계열의 장점을 결합한 bash를 표준으로 하고
있다.
* bash shell의 특징
- 명령어 history 기능
- alias(별명) 기능
- 산술 연산 기능
- 작업 제어 기능
- tab키를 이용한 파일 이름 완성 기능 - prompt 제어 기능
- 명령문 편집 기능
- 확장된 내부 명령어
* shell 명령문의 일반적
형태
- $ command(명령어)
[options(옵션)] [aguments(인수)]
* shell의 명령문
처리
shell 명령문의 일반적 형태는 단순히 명령어만 입력하거나, 명령어 뒤에 각종 옵션과 인자를 함께 입력하여 사용할 수 있다. 또한, 여러 명령어를 함께 사용할 수도 있다.
리눅스 디렉토리 구조
/boot : 커널 이미지가 있는 디렉토리 /bin : 일반 사용자의 명령어가 있는 디렉토리
/dev : 장치들에 대한 파일이 있는 디렉토리 /etc : 리눅스에 필요한 각종 설정파일이 있는 디렉토리
/home : 사용자 홈 디렉토리 /lib : 프로그램 실행에 필요한 라이브러리가 있는 디렉토리
/mnt : 마운트를 위한 디렉토리 /proc : 프로세스의 정보가 있는 디렉토리
/sbin : root의 명령어가 있는 디렉토리 /tmp : 임시 파일 디렉토리
/usr : 리눅스에서 사용되는 프로그램이 있는 디렉토리
/var : 프린터 스풀, DNS정보, log, mail 등 지속적으로 변하는 내용이 저장되는 디렉토리
실습1
chsh - shell 종류 변경
/etc/passwd 파일을 살펴보고 사용자들이 어떤 쉘을 사용하고 있는지
살펴보라
]$cat /etc/passwd : more 페이지 나눠서
보기
예) #pwd (현재 작업중인 디렉토리를
표시)
#wc -l
bash_scripts (bash_script 파일의 라인 수를 표시)
#find / -name bash -print (파일명 bash를 루트(/) 디렉토리
아래에서 찾아 화면에 표시
#ls -l > a.txt
(a.txt에 저장)
#touch a.txt (a.txt 만들기)
#vi a.txt (텍스트 수정하기 편집기)
:q! (무조건 저장하지 않고 종료)
:wq (저장하고 종료)
#top (cpu와 메모리 점유율 확인, 5초간격으로 실시간
전송)
* shell의 명령문
처리과정
- 사용자 터미널 파일 또는 명령행 옵션으로부터
입력을 받아들인다.
- 입력문을 인용법칙에 따라 단어와 연산자로
분리한다.
alias가 있을 경우 이때
변환한다.
- 위에서 분리한 단어들을 단순 또는 복합명령어를
변환한다.
- shell 확장법에 따라 token을 확장한 후,
명령어, 파일명, 인자 등으로 구분한다.
- i/o 재지정을 한 후,
인자로부터 i/o 재지정 연산자를 제거한다.
- 명령을
수행한다.
- 명령의 종료를 기다린 후, 종료 상태를
검사한다.
쉘에는 특수한 용도로 쓰이는 문자가 있다. 그 중 중요한 특수문자와 그 의미를 알아보고, 구체적인 사용 예는 뒤에서 자세히 살펴보도록 한다.
~ 홈 디렉터리로 이동 예) cd ~ | | 파이프 |
' 명령 대체(command substitution) | [] 문자 집합 wildcard |
# 주석 (comment) | {} 명령집합 |
$ shell 변수 | ; shell 명령 분리자 |
& 후면작업 (background job) | < 입력 재지정 |
* 문자열 wildcard | > 출력 재지정 |
() 부속shell (subshell) | / 경로명 디렉터리 분리자 |
/(역슬래쉬) excape 문자 | ? 한 문자 |
\ 문자출력 | ! 명령문 history |
* quoting(1) -
인용법칙
인용 : 문자나 단어의 특별한 의미를 제거하고자
할 때 사용
- Single Quotes('')
사용
모든 특수문자의 의미를 제거
- Double Quotes(" ")사용
대부분의 특수문자들을 보호
- Backslash(/역슬래쉬) 사용
다음에 나오는 문자의 특별한 의미를 제거
- Back Quotes( ' ' ) 사용
' ' 안에 명령어 실행
shell 특수문자를 문자 그대로 사용하고자 할 때에는 인용을 사용
한다.
shell의 특수문자의
의미
인용의 사용 예)
echo $PATH -> 경로를 나타내는 변수
echo '$PATH'
echo "$PATH" -> " "안의 $path에 들어갈 내용으로 바꾸어
표기한다.
echo \$PATH -> \뒤에 오는 Shell 변수에
사용되는 $의 특수한 기능을 없애고, 단순한 문자열로
인식한다.
- Back Quotes( ' ' )
echo "Current directory is
'pwd'"
name=edu0
echo
$name
파일명, 경로명 확장 (filename generation)
- 특수문자를 이용하여 한번에 여러 개의 파일이나 경로명을 명시할 수
있다.
* wildcard : 임의의 문자를 대체할 때 사용
? : 한 문자 대체
* : 임의의 길이의 문자 대체
[set] : set 문자 중의 하나로 대체
[!set] 또는 [^set] : set에 없는 문자 중의 하나로
대체
괄호 확장 : 제시된 문자열로 대체
[](bracket)은 [과] 사이에 선택할 수 있는 문자를 나열하여 '~중의 하나'라고 표현할 수
있다. 범위를
지정할 때는 -를 사용한다.
다음은
사용예이다.
[abc] a, b 또는
c
[.,;] period, comma, 또는
세미콜론
[-_] dash 또는
underscore
[a-c] a,b 또는
c
[a-z] a에z까지 알파벳 소문자
[!0-9] 숫자가 아닌 문자
[a-zA-Z] 모든 알파벳
문자
wildcard의 사용 예
- 해당 디렉토리 안에 a.c, a.txt, a.o, b.txt, c.txt d.o 라는 파일을
생성한다.
touch a.c
ls a.?
ls
a.*
ls
[a-c].*
괄호 확장은 {}안에 제시된 문자열 중 하나로 대치되는 것을 말한다.
- b{ed,olt,ar}s beds,bolts 또는
bars
- b{ar{d,n,k},ed}s bards,
borns, barks, 또는 beds
* 계정 추가 및 삭제
x-윈도우로 돌아갈려면 Ctrl + Alt + F7 계속 누르고 있으면 된다.
계정 추가와 삭제는 root 에서 한다.
kim 계정을 추가 해보겠다.
* 계정 추가 명령어 : adduser 계정명
passwd 계정명 (kim 계정에 패스워드를
주겠다는 뜻)
new password : 암호 입력하면
눈으로는 안보인다.
retype new password : 한번 더
입력 한다.
* 계정 삭제 : userdel -r 계정명
/etc/passwd에 계정등록 되며 /home/testuser의 홈디렉토리의
생성된다.
* FTP 접속방법
■ permission (소유권)
각 파일 및 디렉터리에 대한 접근을 위한
권한설정, 파일과 디렉터리 permission의 의미
- rwx rw- r--
디렉터리 user group
other
r:read , w:write , x:execution, d:direstory
※ chmod [-R] new-mode
filename - 파일의 permission변경, 절대적 방법
문자 |
허가권 |
값 |
--- |
허가권 없음 |
0 |
r-- |
읽기만 가능 |
4 |
rw- |
읽기/쓰기만 가능 |
6 |
rwx |
읽기/쓰기/실행 가능 |
7 |
r-x |
읽기/실행만 가능 |
5 |
--x |
실행만 가능 |
1 |
/etc/passwd 파일 설명