학습목표
- 셸의 기능과 종류를 설명할 수 있다.
- 셸 특수문자의 종류를 이해하고 필요에 따라 적절하게 사용할 수 있다.
- 표준 입출력 장치를 이해하고 입출력 방향을 설정할 수 있다,
- 새로운 앨리어스를 만들거나 필요없는 앨리어스를 삭제할 수 있다.
- 이스케이프 문자를 이해하고 프롬프트를 원하는 형태로 바꿀 수 있다.
- 시스템과 사용자 환성 설정 파일을 구분하고 사용자 환경을 직접 설정할 수 있다.
1) 본셸 (sh) : 최초의 셸, 유닉스 v7에서 처음 등장, 현재는 배시셸 등 다른 셀로 대체
4) 배시셸(bash) : 1988년 브레인스 폭스가 개발
1) 사용자의 기본 셸은 /etc/passwd 파일에 저장
grep user1 /etc/passwd
#user1:x:1000:1000:user1,,,:/home/user1:/bin/bash
2) chsh : 기본 셀 변경하기
chsh [옵션] [사용자명]-s shell : 바꾸려는 셸의 절대 경로를 지정해 로그인 셸을 바꾼다.-l : /etc/shells 파일에 지정된 셸을 출력한다.chsh -lchsh -s /bin/sh user1 #-s 절댁경로 chshctrl + d 또는 exit 으로 서브 셸 종료
file /usr/bin/pwdecho [-n] [문자열]echoecho textecho -n textprintf [형식] [인수]printf textprintf "text\n"printf "%d\n" 100| 사용 예 | 의미 |
|---|---|
ls * | 현재 디렉토리의 모든 파일과 서브 디렉토리를 나열한다. 서브 디렉토리의 내용도 출력한다. |
cp * /tmp | 현재 디렉토리의 모든 파일을 \tmp 디렉토리 아래로 복사한다. |
ls -F t* | t, tmp, temp 와 같이 파일 명이 t로 시작하는 모든 파일의 이름과 파일 종류를 출력한다. t 도 해당한다는데 주의 |
cp *.txt ../ch3 | 확장자가 txt 인 모든 파일을 상위 디렉토리 아래의 ch3 디렉토리로 복사한다. |
ls -l h*d | 파일명이 h로 시작하고 d로 끝나는 모든 파일의 상세 정보를 출력한다. hd, had, hard, h1234d 등 이 조건에 맞는 모든 파일의 정보를 볼 수 있다. |
| 사용 예 | 의미 |
|---|---|
| ls t?.txt | t 다음에 임의의 한 문자가 오고 파일의 확장자가 txt 인 모든 파일의 이름을 출력한다. t1.txt, t2.txt, ta.txt |
| ls -l tmp[135].txt | tmp 다음에 1,3,5 중 하나가 오고 파일의 확장자가 txt 인 모든 파일의 이름을 출력한다. tmp1.txt, tmp3.txt, tmp5.txt 파일이 있으면 해당 파일의 상세 정보를 출력한다. 단 tmp.txt 는 제외한다. |
| ls -l tmp[1-5].txt | [1-3]은 1부터 3까지의 범위를 의미한다. 따라서 ls -l tmp[123].txt 과 결과가 같다. 즉, tmp1.txt, tmp2.txt, tmp3.txt 파일이 있으면 해당 파일의 상세 정보를 출력한다. |
ls [0-9]* | 파일명이 숫자로 시작하는 모든 파일의 목록을 출력한다. |
ls [A-Za-z]*[0-9] | 파일명이 영문자로 시작하고 숫자로 끝나는 모든 파일의 목록을 출력한다. |
~ : 홈 디렉토리- : 이전 디렉토리| 사용 예 | 의미 |
|---|---|
cp *.txt ~ /ch3 | 확장자가 txt 인 모든 파일을 현재 작업중인 사용자의 홈 디렉토리 아래 tmp 디렉토리로 복사한다. |
| cp ~user2/linux.txt . | user2 라는 사요아의 홈 디렉토리 아래에서 linux.txt 파일을 찾아 현재 디렉토리로 복사한다. |
| cd - | 이전 작업 디렉토리로 이동한다. |
| 사용 예 | 의미 |
|---|---|
| date; ls; pwd | 왼쪽부터 차례대로 명령을 실행한다. 즉, 날짜를 출력한 후 현재 디렉토리의 파일 목록을 출력하고, 마지막으로 현재 작업 디렉토리의 절대 경로를 보여준다. |
| ls -al / more | 루트 디렉토리(/)에 있는 모든 파일의 상세 정보를 한 화면씩 출력한다. ls -al / 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력되는 것이다. |
| 사용 예 | 의미 |
|---|---|
| echo '$SHELL' | $SHELL 문자열이 화면에 출력된다(그대로 출력) |
| ech "$SHELL" | 셸 환경 변수인 SHELL 에 저장된 값인 현재 셸의 종류가 화면에 출력된다. /bin/bash를 예로 들 수 있다( 변수 내용 출력). |
| 사용 예 | 의미 |
|---|---|
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 파일에 저장한다. |
| ls -l >> res | ls -l 명령의 결과를 res 파일의 끝부분에 추가한다. |
| cat < text | cat 명령의 입력을 text 파일에서 받는다. |



명령의 결과를 화면 출력이 아닌 파일에 파일에 저장
파일 덮어쓰기 :>
명령 1> 파일명명령 > 파일명ls out1ls -alls -al > out1, 이후 파일 내용 확인 : cat out1date > out1 , 이후 파일 내용 확인 : cat out1
>>명령 >> 파일명cat out1date >> out1
오류는 기본적으로 화면으로 출력
lsls: cannot access '/abc': No such file or directory
ls > ls.outls /abc > ls.errcat ls.errcat ls.out
오류를 파일에 저장하기 : 2>
예시
- 1) 표준 오류를 리다이렉션한다, 파일에 저장된 메세지 출력




< 명령 0< 파일명명령 < 파일명< 생략).
< 사용)
0< 사용)
따라해보기 : vi 로 입력, 수정, 삭제, 복구하기
① 현재 디렉토리에서 l(소문자 L)로 시작하는 모든 파일의 상세 정보를 확인 :
ls -l l*
② 임시로 사용한 temp 디렉토리 생성 :mkdir temp
③ l 로 시작하는 모든 파일을 temp 디렉토리로 이동 :mv l* temp
④ uname 명령은 운영체제의 이름을 출력 :
echo "This is `uname` System."
⑤ 출력 방향 바꾸기를 통해 4번 명령의 실행 결과를u.out파일에 저장 :echo "This is `uname` System." > u.out
⑥ date 명령의 실행 결과를u.out에 저장 :date > u.out
⑦u.out파일에는 어떤 내용이 있을까
셸 변수 : 현재 셸에서만 사용할 수 있고 서브 셸로 전달되지 않는 변수
환경 변수 : 현재 셸뿐만 아니라 서브 셸로도 전달되는 변수
셸/환경 변수는 대문자로 사용함 (NAME = 'tmskim')
주요 셸 환경 변수
| 환경변수 | 의미 |
|---|---|
| HISTSIZE | 히스토리 저장 크기 |
| HOME | 사용자 홈 디렉토리의 절대 경로 |
| LANG | 사용하는 단어 |
| LOGNAME | 사용자 계정 이름 |
| PATH | 명령을 탐색할 경로 |
| PWD | 작업 디렉토리의 절대 경로 |
| SHELL | 로그인 셸 |
set, envset : 셸 변수와 환경 변수 모두 출력env : 환경 변수만 출력echo
SOME = test
env 명령으로 셸 변수인 SOME 검색 안됨
export환경 변수 정의
export [옵션] [셸 변수]-n : 환경 변수를 셀 변수로 변경한다.SOME 을 export 하여 환경 변수로 바꾼다. 
export 를 한번에 가능env 명령으로 SOME1 변수 검색됨
export -n
- 변수 정의
- 셸 변 수 절정: 변수=값
NAME='tmskim'- 환경 변수 설정 (export)
- 변수=값; export 변수
NAME='tmskim'; export NAME- Export 변수=값
export NAME='tmskim'- export -n 변수
export -n NAME
- 변수 값 확인
- set, env 명령으로 확인
set; env- echo
$변수명echo $NAME
- 변수 정의 해제
- unset 변수명
unset NAME
unsetunset [변수]unset SOME
alias: 기존 명령을 대신해서 다른 이름(별칭)을 붙일 수 있도록 하는 기능
alias 이름 = '명령'alias # 현재 설정된 별칭 목록을 출력한다.
alias 이름='명령' # 명령을 수정해 사용하는 경우다.
alias 이름='명령;명령2;...' # 여러 명령을 하나의 이름으로 사용하는 경우다.alias 입력하면 앨리어스들 출력'앨리어스 이름=명령'

unaliasunalias 앨리어스
history기능 : 히스토리(사용자가 이전에 입력한 명령)를 다시 불러내서 사용
형식 : history

명령 재실행 하기 : !
! 를 사용한 명령 재실행 방법
| 사용법 | 기능 |
|---|---|
!! | 바로 직전에 실행한 명령을 재실행한다. |
!번호 | 히스토리에서 해당 번호의 명령을 재실행한다. |
!문자열 | 히스토리에서 해당 문자열로 시작하는 마지막 명령을 재실행한다. |
바로 직전의 명령을 재실행한다.

히스토리 번호로 재실행, 명령의 앞 글자로 재실행

명령 편집 및 재실행하기 : 로 이전 명령 불러온 다음 로 수정
히스토리 저장하기 : 홈 디렉토리 아래의 숨긴 파일인 .bash_history 에 저장

따라해보기 : 환경변수, 앨리어스, 히스토리
- 셸 변수 TESTA 를 설정하고 출력
- 본셸(sh)을 실행하여 서브 셸로 이동
- 셸 변수 TESTA 가 출력되는지 확인한다. 출력되지 않는 이유는?
- 부모 셸에서 정의한 셸 변수를 서브셸에서 사용하려면, export 명령어를 사용하여 해당 변수를 환경 변수로 정의해야 한다.
- 서브 셸에서 로그인 셸로 복귀
- pwd 명령과 ls 명령을 묶어서 앨리어스 pls 만들기
- clear 명령에 대한 앨리어스 c 만들기

예 : \u
셸이 문자의 의미를 해석하여 실행
| 이스케이프 문자 | 기능 |
|---|---|
| \a | ASCII 종소리 문자(0 7) |
| \d | '요일 월 일'형식으로 날짜를 표시한다. (예. 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 | 현재 작업 디렉토리의 절대 경로에서 마지막 디렉토리명 |
| ! | 현재 명령의 히스토리 번호 |
| [ | 출력하지 않을 문자열의 시작 부분을 표시한다. |
| ] | 출력하지 않을 문자열의 끝 부분을 표시한다. |
프롬프트 변경 예

형식 : PS1='\[\e[x;y;nm\] 프롬프트 \[\e[x;y;0m\]'

컬러 프롬프트 설정 예
프롬프트를 파란색으로 변경

프롬프트를 파란색 볼드로 변경 & 빨간색, 밑줄로 변경

프롬프트를 흰색 배경, 파란색 글자색으로 변경
출력하지 않을 문자열 설정 추가하기
\[ \] 없을 경우 터미널의 화면 끝에 가기 전에 커서가 앞으로 돌아오고 같은 행을 겹쳐서 기록
\[ \] 넣기 PS1='\[\e[34;47m\]\u@\h $\[\e[0;0m\] '
| 파일 | 기능 |
|---|---|
| /etc/profile | - 본셸이나 본셸과 호환되는 모든 셀에 공통으로 적용되는 환경 설정 파일이다. - 배시셸의 경우 /etc/bash.bashrc 파일을 실행한다. 배시셸이 아닌 경우 프롬프트를 # (root 사용자) 나 $ (일반 사용자) 로 설정한다. - /etc/profile.d/*.sh 파일을 실행한다. |
| /etc/bash.bashrc | - 시스템의 공통으로 적용되는 .bashrc 파일이다. - 기본 프롬프트를 설정한다. - sudo 명령과 관련한 힌트를 설정한다. |
| /etc/profile.d/*.sh | - 언어나 명령별로 각각 필요한 환경을 설정한다. - 필요시 설정 파일을 추가한다. |
more /etc/profile 입력 | 파일 | 기능 |
|---|---|
| ~/.profile | - .bashrc 파일이 있으면 실행한다. - 경로 추가 등 사용자가 정의하는 환경 설정 파일이다. |
| ~/.bashrc | -히스토리의 크기를 설정한다. - 기본 앨리어스나 함수 등을 설정한다. |
| ~/.bash_logout | - 로그아웃 시 실행할 필요가 있는 함수 등을 설정한다. |
| ~/.bash_aliases | - 사용자가 정의한 앨리어스를 별도 파일로 저장한다. |


$ chsh –s dash user1
정답 : 4
정답 : 1
정답 : ls -la [0-9]*

정답 : /etc/passwd
위 명령어에서 [0-9]는 현재 디렉터리에서 숫자로 시작하는 파일을 찾는데 사용됩니다. [0-9]는 첫 글자가 숫자인 파일을 의미하고, 는 그 뒤에 오는 모든 문자열을 의미합니다.
ls -la는 검색된 파일들의 상세 정보를 출력합니다. 이 명령어는 파일의 이름, 소유자, 그룹, 크기, 수정 시간 등의 정보를 포함합니다.
따라서 위 명령어를 실행하면 숫자로 시작하는 파일들의 상세 정보가 모두 출력됩니다.
$ ls /tmp >> a.txt
정답 : 4
정답 : PS1
정답 : ls -la > ls.out 2> ls.err
정답 : env | grep SHELL
$SHELL은 셸 변수(SHELL)의 값을 출력하는데 사용됩니다. 이 명령어를 실행하면 현재 로그인한 사용자의 셸 경로가 출력됩니다.
만약 env 명령어의 출력에서 SHELL 환경 변수만 출력하고 싶다면, grep 명령어를 사용하여 SHELL 문자열을 필터링하는 것이 가능합니다.
위 명령어는 env 명령어로 전체 환경 변수를 출력한 후 grep 명령어로 SHELL 문자열을 필터링합니다. 이렇게 하면 SHELL 환경 변수와 관련된 줄만 출력됩니다.
정답 : !cp
cp 명령어를 재실행하려면 명령어 히스토리에서 가장 최근에 사용한 cp 명령어를 찾아야 합니다.
쉘에서 명령어 히스토리를 확인하려면 history 명령어를 사용할 수 있습니다. history 명령어를 실행하면 사용자가 실행한 명령어 목록을 출력합니다.
가장 최근에 실행한 cp 명령어는 history 명령어로 확인할 수 있습니다. 예를 들어, history | grep cp 명령어를 실행하면 이전에 실행한 cp 명령어를 모두 찾을 수 있습니다.
찾은 cp 명령어를 다시 실행하려면 해당 명령어 앞에 !번호를 입력하면 됩니다. 여기서 번호는 해당 명령어가 히스토리에서 나타난 번호입니다. 예를 들어, !123은 히스토리에서 123번째로 실행한 명령어를 다시 실행하는 것입니다.
따라서 가장 최근에 실행한 cp 명령어를 재실행하려면 history | grep cp 명령어를 사용하여 해당 명령어를 찾고, 그 명령어 앞에 !번호를 입력하면 됩니다.
정답 : alias s='ls -la'
ls 명령어에는 -a 옵션이 있어 숨김 파일도 출력할 수 있습니다. 이 옵션을 사용하여 ls 명령어를 실행하는 s 앨리어스를 다음과 같이 설정할 수 있습니다.
위와 같이 alias 명령어를 사용하여 s라는 앨리어스를 정의하고, ls -la를 할당합니다. 이제 s를 실행하면 현재 디렉터리에 있는 모든 파일과 디렉터리, 그리고 숨김 파일도 포함하여 상세 정보를 출력하게 됩니다.
앨리어스는 일시적인 것이기 때문에, 다음번 로그인 때에도 s 앨리어스를 사용하려면, 해당 앨리어스를 사용할 셸 설정 파일(예를 들어, ~/.bashrc)에 추가해야 합니다> <.,ㅡ앨리어스는 일시적인 것이기 때문에, 다음번 로그인 때에도 s 앨리어스를 사용하려면, 해당 앨리어스를 사용할 셸 설정 파일(예를 들어, ~/.bashrc)에 추가해야 합니다..>
http://sandrasbackfabrik.de/sysdata/keep-it-warm-the-safe-way-to-heat-your-mini-sex-doll-for-maximum-comfort/
https://plumelibre.fr/sysdata/mini-sex-dolls-done-right-how-skeleton-design-makes-all-the-difference/
https://www.papierdarmenie.fr/wp-content/backups/en/mini-sex-doll-storage-made-simple-keep-it-clean-safe-and-out-of-sight/