본문 바로가기
Major Review (학부)/Linux OS

02. 리눅스 이해(2)

by 삼준 2023. 10. 25.
반응형

* 쉘(Shell)

- 기능

명령어 해석, 프로그래밍, 사용자 환경 설정

 

- 종류

본쉘(sh) : 최초의 쉘. 유닉스 v7에서 처음 등장, 현재는 잘 안쓰임.

C쉘(csh) : 앨리어스, 히스토리 기능 포함. 쉘 스크립트 구문 형식이 C언어와 동일.

콘쉘(ksh) : 80년대 중반 벨연구소 개발. 본쉘과 호환성 유지, 앨리어스, 히스토리 기능 제공.

배시쉘(bash) : 88년. 본쉘과 호환성 유지. C쉘, 콘쉘의 편리한 기능 모두 포함. 리눅스의 기본 쉘.

대시쉘(dash) : 97년. 본쉘 기반. POSIX 표준 준수하며 작은 크기. 우분투는 v.6.10 부터 대시쉘 사용.

 

- 로그인 쉘과 서브 쉘

로그인 쉘 : 로그인 하면 가장 처음 실행되는 쉘.

서브 쉘 : 사용자가 프롬프트에서 다른 쉘을 실행해 생성된 쉘.

여러개의 서브쉘을 사슬처럼 연결 가능함. ctrl+d 또는 exit로 서브 쉘 종료.

 

- 기본 사용법

ㄴ 쉘 내장 명령

대표적인 내장 명령 = cd

일반적인 리눅스 명령들은 /bin 이나 /usr/bin 등 다른 디렉토리에 실행 파일이 있음.

echo [-n] [문자열]

화면에 문자열을 출력함.

+ 옵션 : -n (마지막에 줄바꿈 안함)

 

printf [형식] [인수]

자료를 형식화하여 화면에 출력함.

+ 형식 : C언어 printf 함수 형식과 동일. (%d, \n 등)

 

ㄴ 특수문자 *

정확한 정의는 없지만, "모든(every)"을 생각하면 쉬움.

ex)

ls -l h*d : h로 시작하고 d로 끝나는 모든 파일의 상세정보를 출력함.

ls * : 현재 디렉토리의 모든 파일과 서브 디렉토리를 나열함.

cp * /tmp : 현재 디렉토리의 모든 파일을 /tmp 디렉토리에 복사함.

 

ㄴ 특수문자 ?[ ]

?는 "어떤 것 한 개"를, []는 "범위"를 생각하면 쉬움.

ex)

ls t?.txt : t 다음 문자 한개가 오고 확장자가 txt인 모든 파일의 이름을 출력함.

ls -l tmp[1-3].txt : tmp 뒤에 1~3중 한 글자가 오는 txt 확장자 파일을 출력함.

ㄴ 특수문자 ~-

~는 디렉토리 앞에 붙어서 홈디렉토리를 의미함.

-는 이전 작업 디렉토리를 의미함.

ex)

cp ~user2/linux.txt . : user2 라는 홈 디렉토리에서 linux.txt 를 찾아 현 디렉토리로 복사함.

cd - : 이전 작업 디렉토리로 이동함.

 

ㄴ 특수문자 ; |

;은 문장 끝을 의미하고, 뒤의 명령어를 이어서 진행함.

|는 앞 명령어으 결과를 다음 명령어에게 전달함.

ex)

date; ls; pwd : 날짜 출력 후 현 디렉토리 파일 목록 출력 후 현 작업 디렉토리의 절대 경로를 출력함.

ls -al / | more : 루트 디렉토리에 있는 모든 파일의 정보를 한 화면씩 출력함.

 

ㄴ 특수문자 ' '" "

ex)

echo '$SHELL ' : $SHELL 문자열 그대로 출력

echo "$SHELL" : 쉘 환경변수인 SHELL의 내용을 화면에 출력

ㄴ 특수문자 ` `

ex)

echo "Today is `date`" : `date`가 명령어로 해석되고 실행됨. 결과적으로  Today is 2023.10.25. (수) 19:44:35 KST 로 출력됨.

ㄴ 특수문자 \

다른 특수문자 앞에 붙으면 일반 문자 취급하게 함.

ex)

ls -l t\* : t* 라는 이름을 가진 파일의 상세 정보를 출력함.

echo \$SHELL : $SHELL을 화면에 출력함.

ㄴ 특수문자 >와 <와 >>

입출력의 방향을 표준 입출력(키보드, 모니터)이 아닌 다른 곳으로 바꾸어줌. (리다이렉션)

ex)

ls -l > res : ls -l 의 실행결과를 모니터가 아닌 res파일에 출력함.

ls -l >> res : 실행결과를 res파일 끝부분에 추가함.

- 입출력 방향 변경

표준 입출력 장치는 키보드와 모니터를 뜻하며, 각각의 파일 디스크립터는 0과 1임. 다른 이름으로 stdin, stdout이 있음.

파일 디스크립터 2는 표준 오류를 뜻하며, stderr라고도 함.

ㄴ 출력 리다이렉션

앞에 나온 특수문자 > 참고.

실수로 중요한 파일에 덮어씀을 방지하려면

set -o noclobber을 사용하면 됨.

해제하려면 set +o noclobber.

>> 를 사용하면 파일 뒤에 추가됨.

ㄴ 오류를 파일에 저장하기

오류는 기본적으로 화면에 출력됨.

2> 를 사용하면 오류 메시지를 파일에 저장가능함.

ex)

ls /abc 2> ls.err

 

ㄴ 입력 리다이렉션

ex)

cat < out1 : out1의 내용이 cat의 입력으로 들어감.

 

- 전체 변수 출력하기

set : 쉘 변수, 환경 변수 모두 출력

env : 환경 변수만 출력

 

- 쉘 변수 정의

변수명=문자열

 

- 변수 해제

unset [변수]

 

- 앨리어스와 히스토리

ㄴ 앨리어스

기존 명령을 대신해서 다른 이름(별칭)을 붙일 수 있도록 하는 기능.

alias 이름='명령'

alias만 사용시 앨리어스들을 출력해줌.

 

ㄴ 앨리어스 삭제

unalias 이름

 

ㄴ 히스토리

이전에 입력한 명령을 불러내 사용하는 것.

history : 이전에 입력한 명령들 출력.

!! : 바로 직전에 실행한 명령을 재실행함.

!번호 : 히스토리에서 해당 번호의 명령을 재실행함.

!문자열 : 해당 문자열로 시작하는 마지막 명령을 재실행함.

화살표 위 아래를 사용해 이전 명령을 불러올 수도 있음.

※히스토리는 홈 디렉토리의 .bash_history에 저장됨.

 

* 환경 설정 파일

- 시스템 환경 설정 파일

ㄴ /etc/profile

본쉘 및 호환 쉘에 공통으로 적용되는 환경설정 파일.

배시쉘의 경우 bash.bashrc 파일을 실행함.

배시쉘이 아닌 경우 프롬프트를 #(root 사용자) 또는 $(일반 사용자)로 설정함.

/etc/profile.d/*.sh 파일을 실행함.

 

ㄴ /etc/bash.bashrc

시스템 공통으로 적용되는 .bashrc 파일임.

기본 프롬프트를 설정함.

sudo 명령과 관련된 힌트를 설정함.

 

ㄴ /etc/profile.d/*sh

언어나 명령별로 각각 필요한 환경을 설정함.

필요시 설정 파일을 추가함.

 

- 사용자 환경 설정 파일

vi 를 통해 만들고, 적용하면 됨.

. "사용자파일" 또는 source "사용자파일" 로 적용 가능함.

반응형

'Major Review (학부) > Linux OS' 카테고리의 다른 글

03. 리눅스 활용  (1) 2023.10.25
02. 리눅스 이해(1)  (0) 2023.10.25
01. 리눅스 기초  (1) 2023.10.25

댓글