

shell (쉘, 셸)이란?
쉘(shell): 운영체제에서 제공하는 명령을 실행하는 프로그램, 운영체제의 관리하에 있는 파일, 프린팅, 하드웨어 장치, 애플리케이션과의 인터페이스를 제공한다.
즉, 운영체제와 대화하는 프로그램이다. 운영체제에서 제공하는 각종 명령들을 쉘 인터페이스에서 실행하면 그 일을 운영체제가 수행하는 것.
쉘 스크립트(shell script): 인터프리터로서 리눅스 시스템에서 지원하는 명령어들의 집합을 묶어 프로그램화 한 것이다.
Bash : 리눅스에 기본 탑재된 일반적인 쉘로 sh 본 쉘과 호환되기 때문에 대부분 sh와 bash에서 모두 작동
-쉘 스크립트는 유저 또는 파일로부터 입력을 받아 모니터에 데이터를 출력
&& 를 명령어 사이에 붙일 경우, 정상 종료했을 경우에만 두번째 명령어를 수행|| 를 붙이면 각각 모든 명령을 수행; 는 한 라인에서 여러개의 명령을 실행 할 때 하나의 명령어 다음 추가해서 끝을 의미해주면 됨명령 히스토리
history: 최근 실행한 명령들이 저장되어 있음
- 최근 실행한 명령을 다시 실행하기 위해 !을 사용. 다음에 매칭되는 문자를 최근 명령에서 찾아서 실행
- -1같이 마이너스 숫자를 지정할 경우 최근 명령부터 숫자만큼의 명령을 실행
-!!을 사용하면 가장 최근 명령어를 다시 실행
pwd : 현재 디렉터리 위치 보기
ls : 파일과 디렉터리 목록 보기
- ls -l로 출력된 컬럼의 의미는 아래와 같음
- [파일/디렉터리 퍼미션][하드 링크파일 수][소유자][그룹][파일 크기][수정 시간][파일명]
cd : 현재 쉘의 디렉터리 변경, 이동
mv: 파일 이동
rm: 파일 삭제
less, more, cat : 텍스트 파일 보기
- less 파일명 -> 긴 파일의 내용을 끊어서 표시
file : 파일 타입 보기
tree : 디렉터리의 트리 구조 print
- -d : 디렉터리만 / -a : 모든 것 / -f : 파일만 / -L : 디렉터리 깊이 지정
- tree -L1 / : 최상위 root(/) 부터 깊이가 1인 디렉터리와 파일 출력
-find 디렉토리 -name "파일이름" :지정한 디렉토리와 그 하위디렉토리에서 해당 파일을 검색한다.
-touch 파일이름 : 0바이트 파일 생성
쉘 스크립트의 환경변수 (Environment Variables): 환경 변수란 리눅스 사용자가 로그인할 때 자동으로 쉘이 실행되면서 사용환경을 구축한다. 이때 shell을 환경변수라고 한다. 예를들어 스마트한 집에 사용자가 들어오면 사용자를 인식하여 기본적으로 에어컨으로 온도조절하고, 커튼 열고, 공기 청정기를 켜는 시스템에 있다고 가정해보자. 이때 각 사용자마다 설정해놓은 기능이 다를 것이다. 이때 에어컨, 커튼, 공기청정기와 같은 장치를 shel, 집을 리눅스 시스템이라고 생각하자.
리눅스를 시작하면 대부분 공통적으로 실행되는 환경 변수들이 있는 해당 환경 변수는 아래와 같다.
등등이 있다.
변수명 앞에 달러 표시 $를 해주면 된다.
-echo : 환경변수 값 확인하는 법, 뒤이어 입력되는 문자열을 모니터로 출력 (print)
-리눅스의 모든 환경 변수는 대문자로 구성되어 있음
-env : 환경 변수 출력
/ : 루트 디렉터리/boot : 리눅스 커널과 부트로더가 위치하는 디렉터리/etc : 시스템 환경 설정 파일이 위치한 디렉터리/bin, /usr/bin : 실행 프로그램들./bin엔 기본적인 실행 프로그램/usr/bin엔 사용자들이 사용할 실행 프로그램/usr : 사용자 애플리케이션을 지원하기 위한 다양한 파일이 위치/var : 운영 중인 시스템의 변화를 체크할 수 있는 로그 파일들이 위치/var/log : 로그 파일이 위치하는 디렉터리/home : 유저별 홈디렉터리가 존재하는 개인 홈디렉터리useradd(adduser) 명령을 사용해 유저를 생성하면 "/home/유저아이디 형식으로 유저 홈디렉터리가 생성. #!/bin/sh, 배시 쉘인 경우 #!/bin/bash, 파이썬일 경우 #!/bin/python 와 같이 실행할 언어를 지정해야 한다.
chmod : 파일, 디렉터리에 대한 접근 권한 변경표준 출력
> 문자를 사용해 표준 출력을 파일로 리다이렉션해 저장할 수 있음ls > ls.txt>> : 파일에 추가(append)할 경우 사용cat test1.txt >> ls.txt표준 입력 - 키보드 : 파일 디스크립터 숫자로 0
표준 출력 - 모니터 : 파일 디스크립터 숫자로 1
표준 에러 - 모니터 : 파일 디스크립터 숫자로 2
2>&1 : 표준 출력이 전달되는 곳으로 표준 에러를 전달하는데, 마지막에 &를 사용해 현재 명령을 백그라운드로 실행
표준 입력
파이프