쉘이란?
터미널에 입력한 명령을 해석하고 관리하는 프로그램을 쉘(shell)이라고 한다.
쉘은 사용자-커널 사이에 연결시켜주는 역할을 하며 사용자가 입력한 명령을 해석하여 운영체제가 해당 명령을 알아들을 수 있게 해준다. 쉘은 여러가지 종류가 있으나 가장 많이 사용되는 쉘은 Bash(Born Again Shell)이다.
쉘 메타문자 사용하기
경로이름 메타문자
~ : 현재 로그인 한 사용자의 홈 디렉토리 (cd ~)
cd ~sim : sim 사용자의 홈 디렉토리로 이동
- : 이전 작업 디렉토리 (cd -)
파일 이름 메타문자
* : 하나 이상의 문자를 대체하는 문자, 일반적으로 전체를 의미
특정 디렉토리 내의 모든 파일을 지정할 때 또는 특정 이름으로 시작할 때 등 여러가지로 활용한다.
rm -rf ./*
? : 하나의 문자만 대체 (잘 안씀)
인용부호 메타문자 (중요)
`[문자]` : 안에 있는 문자를 명령어로 인식하여 실행되게 한다.
'[문자]' : 작은 따옴표 안에 있는 메타문자를 일반문자로 취급한다
"[문자]" : 큰 따옴표 안에 있는 $,`,\ 문자를 제외한 나머지 문자만 일반문자로 취급
$는 리눅스 쉘에서 변수를 사용할 때 사용하는 문자이다.
\\하면 뒤에 있는 \가 일반문자처럼 된다.
방항 재지정 메타문자 (매우 중요)
< : 표준 입력 재지정
> : 표준 출력 및 표준 에러를 재지정,
(일반적으로 명령어의 출력을 파일로 저장 또는 네트워크로 전송)
파일에 저장할 때 : echo "test" > ./file
정상적인 결과만 출력할 때 : find / -perm -4000 2> /dev/null
에러 결과만 출력할 때 : find / -perm -4000 1> /dev/null
정상적인 결과는 파일에 저장, 에러는 출력하지 않는 경우 :
find / -perm -4000 1> ./setuid_file 2> /dev/
>을 한번만 사용하면 파일의 내용을 덮어쓰고, >>를 사용하면 기존의 파일 내용에 이어서 쓴다.
| : 파이프 문자이다. 명령어1의 결과를 명령어2의 입력으로 사용한다.
[명령어] | [명령어] 형태로 사용한다.
ls /etc | grep rc : ls 명령어의 결과에서 특정 문자를 포함한 라인만 뽑아 볼 때
ls /etc | grep yum : ls/etc 결과 중에서 yum이 포함된 내용만 출력할 때
ls/etc | more : ls/etc 결과가 너무 길어서 화면에 다 안나와 끌어서 보고 싶을 때
사용자 초기화 파일
/etc/profile : 시스템 전역에 걸쳐 환경을 설정하는 파일, 모든 사용자가 적용되는 파일
~/.profile : 개별 사용자의 홈 디렉토리에 있는 파일, 해당 사용자의 설정을 변경할 때 사용
~/.bashrc : 개별 사용자의 홈 디렉토리에 있는 파일, 해당 사용자의 쉘 관련 설정을 변경할 때 사용
환경 변수, 쉘 프롬프트 모양, 별명 기능 (alias), 쉘 옵션 정의 등 설정 가능
환경 변수란?
시스템 환경에 대한 설정을 저장하고 있는 변수를 말한다.
HOME : 사용자의 홈 디렉토리
PATH : 실행파일을 찾는 경로
LANG : 프로그램 사용 시 기본 지원되는 언어
SHELL : 로그인해서 사용하는 쉘
EDITOR : 기본 편집기의 이름
PS1 : 명령 프롬프트 변수