Linux 리눅스 쉘의 여러가지 기능
https://linux.die.net/man/1/bash
특수문자
메타문자
이스케이프문자
1.리다이렉션
2.파이프
3.기능
4.변수
5.메타캐릭터
6.히스토리
7.환경파일
8.글로빙
9.패턴
# 표준 입력/표준출력/표준에러
bash는 세가지 기본적인 입출력이 존재한다
1. stdin 표준 입력 - 0 <
2. stdout 표준 출력 - 1 1 > (생략가능)
3. stderr 표준 에러 - 2 2 > (꼭표기!)
> 덮어쓰기
>> 이어쓰기
-- stdin -------> bash ------stdout 1-->
------stderr 2-->
w -> 어떤 사용자가 어떤 작업을 하는지 보여준다
리다이렉션 -방향재지정
출력되는 어떤 데이터에 대해서 좀 더 편하게 사용하기 위해서
표준 입력 <
# wall
cat > file1 << STOP
# cat
표준 출력 > >>
표준 에러 2> 2>>
표준 출력으로 받아 파일 저장
# | PIPE
표준 출력으로 파이프를 통하여 표준 입력으로 넣는것
2>&1 표준 에러를 표준 출력으로 넘긴다
표준출력 버퍼를 넘어간 애들만 넘어감
2>&1 표준 에러를 표준 출력으로 넘긴다
기본적으로 표준 출력만 넘어가는데 에러까지 넘어가길 바란다면 표준 에러를 출력으로 만들어 줘야 한다
CMD > file1 2>&1 도 자주 사용한다
PIPE는 몇번을 타고 넘어가더라도 표준출력에서 표준입력만 처리하기 때문에
에러를 파이프로 넘길때는 에러를출력으로 넘겨주세요 하는 2>&1 구문을 사용한다
here document
cat > file << STOP
hhhh 여기서 멈춰주세요
<<<는 리드라인을 받아쓸때 사용
^d
EOF
쉘을 빠져나가는 기능
# set -o ignoreeof
실수로 나가는것을 방지하기 위해 설정
# set -o noclobber
덮어쓰기 방지
> file1 파일 내부의 내용을 지울 때 사용한다
# 절대경로/ 상대경로
절대경로
시작위치가 항상 / 로 부터 시작한다. 나머지 경로를 작성
상대경로
시작위치가 현재 작업 디렉토리 (pwd)이다. 현재 위치에서 나머지 경로를 작성
쓸수있는 문자열이 . .. 실제 디렉토리들
. 현재 디렉토리
.. 상위 디렉토리
작업 디렉토에 내부에 존재하는 디렉토리
# 쉘 확장
쉘은 각 명령어를 토큰 단위로 분류한다
빈칸이 몇개가 있어도 압축한다(쉘은 white space가 두개이상 있는경우 하나로 압축한다)
근데 나는 띄어쓰는게 필요하다 -> 특수문자 사용
'' 일반 문자열로 인식
"" 일반 물자열로 인식 (인지하는 특수문자가 몇개 존재 \ < 특정 옵션이 필요 ` $ )
명령어가 내장 명령어인지 외장 명령어인지??
명령어 사용 순서
1. alias
2. type
3.내장
4. PATH 변수 확인
5. PATH 변수에서 처음 나온 명령어를 실행 한다
# alias
일반적인 명령어 줄이는 목적보다는 변형한것을 등록하여 사용하자
/etc/bashrc 에 등록하여 사용한다.
# 특수문자
&&
CMD1 && CMD2
CMD1이 참일 경우에 CMD2를 사용한다
CMD1 || CMD2
CMD1이 거짓일 경우에 CMD2가 동작
CMD1 && CMD2 || CMD3 -> 가능
CMD1 || CMD2 && CMD3 -> 불가능
# 주석처리
\뒤는 문자열로 인식
# 변수
현재 쉘의 pid
앞의 작업이 정상인지 아닌지
아래거는 서브쉘을 실행 할 수 있다 (?)
touch {a..z}file
ls [a-z]file