728x90
반응형
셸의 기능
- 셸은 자체적으로 내장 명령을 가지고 있음
- 셸 내장 명령은 별도의 실행 파일이 없고 셸 안에 포함됨
- 실행 파일은 바이너리 파일이므로 cat 명령으로 파일의 내용을 확인할 수 없음
- 화면에 한 줄의 문자열을 출력 명령
- echo
특수문자 사용하기
- 사용자가 더욱 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수문자 제공
- 명령을 입력하면 셸은 먼저 특수문자가 있는지 확인하고 이를 적절한 형태로 변경한 후 명령을 실행
- *
- 임의의 문자열을 나타내는 특수문자로 0개 이상의 문자로 대체
- ls*
- 현재 디렉토리의 모든 파일과 서브 디렉토리를 나열
- 서브 디렉토리의 내용도 출력함
- cp* /tmp
- 현재 디렉터리의 모든 파일을 /tmp 디렉토리 아래로 복사함
- ls -F s*
- s, smt, semt와 같이 파일명이 s로 시작하는 모든 파일의 이름과 파일 종류를 출력함
- cp*.c../ch3
- 확장자가 c인 모든 파일을 상위 디렉토리 아래의 ch3 디렉토리로 복사함
- ls -l p*t
- 파일명이 p로 시작하고 t로 끝나는 모든 파일의 상세 정보를 출력함
- pt, pat, part, p12345t 등 이 조건에 맞는 모든 파일의 정보를 볼 수 있음
- ls*
- ? 와 [ ]
- 하나의 문자를 나타내는데 사용
- ? : 길이가 1인 임의의 한 문자
- [ ] : 괄호 안에 포함된 문자 중 하나
- ls s?.txt
- s 다음에 임의의 한 문자가 오고 파일의 확장자가 txt 인 모든 파일의 이름을 출력
- s1.txt, s2.txt, sa.txt 등이 해당
- ls -l smt[135].txt
- smt 다음에 1, 3, 5 중 하나가 오고 파일의 확장자가 txt 인 모든 파일의 이름을 출력
- smt1.txt, smt3.txt, smt5.txt 파일이 있으면 해당 파일의 상세 정보를 출력
- ls -l smt[1-3].txt
- [1-3]은 1부터 3까지의 범위를 의미
- smt1.txt, smt2.txt, smt3.txt 파일이 있으면 해당 파일의 상세 정보를 출력
- ls [0-9]*
- 파일명이 숫자로 시작하는 모든 파일의 목록을 출력
- ls [A-Za-z]*[0-9]
- 파일명이 영문자로 시작하고 숫자로 끝나는 모든 파일의 목록을 출력
- ~ 와 -
- 디렉토리를 나타내는 특수 문자
- ~: 현재 작업 중인 사용자 홈 디렉토리
- ~사용자 로그인 ID: 해당 사용자의 홈 디렉토리
- -: cd 명령으로 디렉토리 이동 직전의 작업 디렉토리
- cp *.txt ~/ch3
- 확장자가 txt인 모든 파일을 현재 작업 중인 사용자의 홈 디렉터리 아래 ch3 디렉터리로 복사
- cp ~user2/linux.txt .
- User2라는 사용자의 홈 디렉터리 아래에서 linux.txt 파일을 찾아 현재 디렉터리로 복사
- cd -
- 이전 작업 디렉터리로 이동
- ; 과 |
- 명령과 명령을 연결하는데 사용
- ; : 연결된 명령을 왼쪽부터 차례로 실행
- | : 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달
- date; ls; pwd
- 왼쪽부터 차례대로 명령을 실행함
- 날짜를 출력한 후 현재 디렉터리의 파일 목록을 출력하고, 마지막으로 현재 작업 디렉터리의 절대 경로를 보여줌
- ls –al / | more
- 루트 디렉터리에 있는 모든 파일의 상세정보를 한 화면씩 출력함
- ls –al / 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력되는 것임
- ‘ ’와 “ ”
- ‘ ’(작은따옴표)와 “ ”(큰따옴표)는 문자를 감싸서 문자열로 만들어주고, 문자열 안에 사용된 특수 문자의 기능을 없앰
- ‘ ’ : 모든 특수 문자를 일반 문자로 간주하여 처리
- “ ” : $, `, \을 제외한 모든 특수 문자를 일반 문자로 간주하여 처리
- echo ‘$SHELL’
- $SHELL 문자열이 화면에 출력됨
- echo “$SHELL”
- 셸 환경 변수인 SHELL에 저장된 값인 현재 셸의 종류가 화면에 출력됨
- 예: /usr/bin/bash
- ` (백퀴터)
- [Esc] 키보드 상단에 있는 문자를 사용
- 명령 실행 결과를 문자열로 받고자 할 때 사용
- “` `”로 감싸인 문자열을 명령으로 해석하여 명령의 실행 결과로 전환
- echo “Today is `date`”
- `date`가 명령으로 해석되어 date 명령의 실행 결과로 바뀜
- 결과적으로 다음과 같이 출력됨
- ls /usr/bin/`uname –m`
- uname –m 명령의 실행 결과를 문자열로 바꾸어 파일 이름으로 사용함
- \(영문 환경)\(한글 환경)
- 특수문자 바로 앞에 사용
- 해당 특수문자의 효과를 없애고 일반 문자처럼 처리
- ls –l t\*
- t*라는 이름을 가진 파일의 상세 정보를 출력함
- \ 없이 t*를 사용하면 t로 시작하는 모든 파일의 상세 정보를 출력함
- echo \$SHELL
- $SHELL을 화면에 출력함
- echo ‘$SHELL’과 결과가 같음
- 특수문자 >, <, >>
- 입출력의 방향을 바꾸는 특수문자
- ls –l > res
- ls –l 명령의 실행 결과를 화면이 아닌 res 파일에 저장
- 임의의 문자열을 나타내는 특수문자로 0개 이상의 문자로 대체
에일리어스
- 에일리어스
- 에일리어스(alias)는 우리말로 별명을 의미
- 기존의 명령을 대신하여 다른 이름(별명)을 붙일 수 있도록 하는 기능
- 긴 명령 대신 짧은 명령을 만들어 사용 가능
- 여러 명령을 연결하여 하나의 명령으로 만들 수도 있음
- 자주 사용하는 옵션을 포함하여 새로운 이름을 붙여서 사용 가능
- 에일리어스: alias
- 기능
- 에일리어스를 생성함
- 형식
- alias 이름 = 명령
- alias
- 현재 설정된 별칭 목록을 출력함
- alias 이름 = ‘명령’
- 명령을 수정하여 사용하는 경우임
- alias 이름 = ‘명령;명령2;···’
- 여러 명령을 하나의 이름으로 사용하는 경우임
- 에일리어스에 인자 전달하기
- 배시 셸에서는 에일리어스로 인자를 전달할 수 없음
- 배시 셸에서 인자를 전달하려면 프로그래밍 기능에서 함수를 사용
- 에일리어스에 해제하기 : unalias
- 기능: 에일리어스를 삭제함
- 형식: unalias 에일리어스
히스토리
- 사용자가 이전에 입력한 명령을 다시 불러 사용하는 것
- 기능
- 히스토리(명령 입력 기록)를 출력함
- 형식
- history
- 명령 재실행하기: !
- !!
- 바로 직전에 실행한 명령을 재실행함
- !번호
- 히스토리에서 해당 번호의 명령을 재실행함
- !문자열
- 히스토리에서 해당 문자열로 시작하는 마지막 명령을 재실행함
- 화살표 키를 사용하여 오류가 난 명령을 다시 프롬프트로 불러내서 수정한 뒤 재실행 가능
- 프롬프트에서 ↑키를 누르면 방금 실행한 명령이 다시 나타남
- 좌우 화살표로 커서를 이동하여 백스페이스키로 삭제한 후 다시 글자를 입력하고 엔터키를 눌러서 실행
- 히스토리 저장하기
- 로그아웃할 때 홈 디렉터리 아래의 숨김 파일인 .bash_history에 히스토리 저장
프롬프트
- 프롬프트 실행 변수: PS1
- 프롬프트를 바꾸는 것은 환경 변수 PS1에 새로운 형태의 문자열을 지정하는 것
- 명령 편집하기와 재실행하기
- 이스케이프 문자: \으로 시작하는 특별한 문자
- \u와 같이 \으로 시작하는 이스케이프 문자는 두 글자가 아니라 한 글자로 처리
- 이스케이프 문자는 화면에 문자 그대로 출력되지 않고 셸이 문자의 의미를 해석하여 실행
- 프롬프트에서 사용할 수 있는 이스케이프 문자
- \a
- ASCII 종소리 문자(07)
- \b
- ‘요일 월 일’ 형식으로 날짜를 표시함(예: Wed May 1)
- \e
- ASCII의 이스케이프 문자로 터미널에 고급 옵션을 전달함
- \h
- 첫 번째 .(마침표)까지의 호스트 이름(예: server.co.kr에서 server)
- \H
- 전체 호스트 이름
- \n
- 줄 바꾸기
- \s
- 셸 이름
- \t
- 24시간 형식으로 현재 시간을 표시함(HH:MM:SS 형식)
- \T
- 12시간 형식으로 현재 시간을 표시함(HH:MM:SS 형식)
- \@
- 12시간 형식으로 현재 시간을 표시함(오전/오후 형식)
- \u
- 사용자 이름
- \v
- 배시 셸의 버전
- \w
- 현재 작업 디렉터리(절대 경로)
- \W
- 현재 작업 디렉터리의 절대 경로에서 마지막 디렉터리명
- \!
- 현재 명령의 히스토리 번호
- \[
- 출력하지 않을 문자열의 시작 부분을 표시함
- \]
- 출력하지 않을 문자열의 끝부분을 표시함
- \a
유닉스쉘 환경 설정
- 셸의 환경을 설정하기 위한 값을 저장할 수 있도록 셸 변수와 환경 변수를 제공
- 셀 변수
- 현재 셸에서만 사용이 가능하고 서브 쉘로는 전달되지 않음(지역변수)
- 환경 변수
- 현재 쉘뿐만 아니라 서브 쉘로도 전달 (전역변수)
- 변수 출력
- set
- 쉘 변수와 환경 변수 모두 출력
- env
- 환경 변수만 출력
- echo $변수명
- 해당 환경 변수만 출력
- set
- 주요 셸 환경 변수
- HISTSIZE
- 히스토리 저장 크기
- HOME
- 사용자 홈 디렉터리의 절대 경로
- LANG
- 사용하는 언어
- LOGNAME
- 사용자 계정 이름
- PATH
- 명령을 탐색할 경로
- PWD
- 작업 디렉터리의 절대 경로
- SHELL
- 로그인 셸
- HISTSIZE
- 셀 변수 설정하기
- 변수명과 문자열 사이에 공백이 있으면 안됨
- 형식: 변수명=문자열
- 환경 변수 설정하기: export
- 기능
- 지정한 셸 변수를 환경 변수로 바꿈
- 먼저 셸 변수를 정의하고, export 명령을 사용하여 이를 환경 변수로 변경
- 변수를 설정하면서 바로 export 명령을 사용하여 한 번에 환경 변수로 전환도 가능
- 형식: export [옵션] [셸 변수]
- 옵션 -n 환경 변수를 셸 변수로 바꿈
- 기능
- 변수 해제하기
- 기능
- 지정한 변수를 해제함
- 형식
- unset 변수
- 기능
- 환경 설정 파일
- 시스템 환경 설정 파일
- 시스템을 사용하는 전체 사용자의 공통 환경을 설정하는 파일
- <배시 셸의 시스템 환경 설정 파일>
- /etc/profile
- 본 셸이나 본 셸과 호환되는 모든 셸에 공통으로 적용되는 .profile 파일
- 배시 셸의 경우 /etc/bash.bashrc 파일을 실행함
- 배시 셸이 아닌 경우 프롬프트를 #(root 사용자)나 $(일반 사용자)로 설정함
- /etc/profile.d/*.sh 파일을 실행함
- /etc/bash.bashrc
- 시스템 공통으로 적용되는 .bashrc 파일
- 기본 프롬프트를 설정함
- sudo 명령과 관련된 힌트를 설정함
- /etc/profile.d/*.sh
- 언어나 명령별로 각각 필요한 환경을 설정함
- 필요 시 설정 파일을 추가함
- /etc/profile
- 사용자 환경 설정 파일
- 각 사용자의 홈 디렉터리에 숨김 파일로 생성하는 파일
- <사용자가 내용을 수정 및 관리 가능>
- ~/.profile
- 경로 추가 등 사용자가 정의하는 환경을 설정함
- .bashrc 파일이 있으면 실행함
- ~/.bashrc
- 히스토리의 크기를 설정함
- 기본 에일리어스나 함수 등을 설정함
- ~/.bash_aliases
- 사용자가 정의한 에일리어스를 별도 파일로 저장함
- ~/.bash_logout
- 로그아웃 시 실행할 필요가 있는 함수 등을 설정함
728x90
반응형
'TEAM STUDY > LINUX' 카테고리의 다른 글
crontab 설정 기록 (0) | 2021.07.23 |
---|---|
쉘 스크립트와 쉘 변수 다루기 (0) | 2021.01.23 |
유닉스 쉘의 기능과 종류 (0) | 2021.01.16 |
유닉스 쉘의 기능과 종류 (0) | 2021.01.16 |
[ 리눅스 마스터 ] 디렉토리 ? (0) | 2021.01.13 |