* 쉘(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 |
댓글