23.10.26 최초 작성
23.10.27 내용 추가
명령어 해석
($) : 쉘이 사용자의 명령을 기다리고 있음 나타내는 표시프로그래밍
사용자 환경 설정 기능
chsh [옵션] [사용자 명]
///
사용자 로그인 쉘을 교체
-s : 지정한 쉘로 로그인 쉘 교체
-l : /etc/shells에서 지정된 쉘 출력
echo [-n] [문자열]
///
화면에 한 줄의 문자열 출력
-n : 마지막에 줄바꿈 하지 않음
printf [옵션] [인수]
///
%d, \n 등 C 언어 printf의 형식을 지정
* : 임의의 문자열을 나타내며 0개 이상의 문자로 대체| 용례 | 의미 |
|---|---|
| ls * | 현재 디렉토리의 모든 서브 디렉토리를 나열 |
| cp * /tmp | 현재 디렉토리의 모든 파일을 /tmp 아래로 복사 |
| ls -F t* | 파일명이 t로 시작하는 모든 파일의 이름과 형식을 출력 |
| cp *.txt ../ch3 | .txt파일을 ch3 디렉토리로 복사 |
| ls -l h*d | h로 시작하고 d로 끝나는 모든 파일 출력 |
?, [] : 하나의 문자를 나타내는 데 사용?은 한 문자, []은 괄호 안의 문자 중 하나)| 용례 | 의미 |
|---|---|
| ls t?.txt | t 다음에 임의의 한 문자가 오고 확장자가 txt인 모든 파일의 이름 출력(t.txt 제외) |
| ls -t tmp[135].txt | tmp 다음 1, 3, 5 중 하나가 오고 확장자가 txt인 모든 파일 출력 (tmp1.txt 등 일치할경우 상세정보 출력) |
| ls -t tmp[1-3].txt | tmp 다음 1~3이 오고 확장자가 txt인 모든 파일 출력 (tmp1.txt 등 일치할경우 상세정보 출력) |
| ls [0-9]* | 숫자로 시작하는 파일명 모두 출력 |
| ls [A-Za-z]*[0-9] | 영문으로 시작하고 숫자로 끝나는 파일명 모두 출력 |
~, - : 디렉토리를 나타내는 특수문자~ : 현재 작업중인 작업자의 홈 디렉토리)- : cd 명령으로 이전하기 직전의 작업 디렉토리 표시)| 용례 | 의미 |
|---|---|
| cp *.txt ~/ch3 | txt형식의 모든 파일을 홈 디렉토리 아래 ch3에 복사 |
| cp ~/user2/linux.txt | user2라는 사용자의 홈 디렉토리 아래 txt파일을 찾아 현재 디렉토리로 복사 |
| cd - | 이전 디렉토리로 이동 |
;, | : 명령과 명령을 연결; : 연결된 명령을 왼쪽부터 차례로 실행)| : 왼쪽 명령의 실행 결과를 오른쪽 명령으로 전달)| 용례 | 의미 |
|---|---|
date; ls; pwd | 차례대로 명령 실행 |
| ls -al | more | 루트 디렉토리의 정보를 한 화면씩 출력 |
'', "" : 문자를 감싸 문자열로 만듦'' : 모든 문자를 문자열로)"" : $, '', \을 제외한 모든 문자를 문자열로)| 용례 | 의미 |
|---|---|
| echo '$SHELL' | $SHELL 출력 |
| echo "$SHELL" | 쉘 환경변수에 저장된 현재 쉘의 종류 출력 |
| 용례 | 의미 |
|---|---|
| echo "Today is `date`" | date가 명령으로 해석되어 날짜를 출력 |
| ls /usr/bin/`uname -m` | uname -m 실행 결과를 문자열로 바꾸어 파일명으로 사용 |
\ : 특수문자 바로 앞에 위치하면 일반 문자처럼 처리| 용례 | 의미 |
|---|---|
| echo $SHELL | $SHELL 출력 |
>, <, >> : 입출력 방향 바꿈| 용례 | 의미 |
|---|---|
| ls -l > res | ls -l 명령의 실행 결과를 res 파일에 저장 |
파일 디스크립터
redirection이라 함| 표준 입출력 장치의 파일 디스크립터 | 파일 디스크립터 대신 사용하는 이름 | 정의 |
|---|---|---|
| 0 | stdin | 명령의 표준 입력 |
| 1 | stdout | 명령의 표준 출력 |
| 2 | stderr | 명령의 표준 오류 |
> : 파일 리다이렉션(덮어쓰기)를 수행set -o noclober // 예상치 않게 파일 내용 겹쳐 쓰이는 것 방지
set +o noclober // 해제
ls -al > out1 // 명령의 결과를 파일에 저장
date > out1 // 명령의 결과를 파일에 덮어씀
cat >> out1 // 표준 입력(키보드 입력)을 받아 파일에 기록
>> : 기존 파일의 내용 뒤에 결과 추가cat out1
date >> out1 // 날짜 정보를 파일에 추가함
2> : 표준 오류 메시지를 파일에 저장함ls \abc 2> ls.err //표준 오류 리다이렉션
ls \abc 2> \dev\null //오류 메시지 버리기
ls . \abc > ls.out 2> ls.err //표준 출력과 표준 오류 한번에 리다이렉션
ls . \abc > ls.out 2>&1 //표준 출력과 표준 오류 한 파일로 리다이렉션
//(오류 메시지를 1번 파일(&1)로 리다이렉션)
> : 표준 입력을 바꿈cat < out1 //표준 입력을 리다이렉션 (out1의 내용을 cat에 입력)
//(= cat out1) (= cat 0< out1)
set // 전체 변수 출력
env // 환경 변수만 출력
| HISTSIZE | 히스토리 저장 크기 |
| PATH | 명령 탐색 경로 |
| HOME | 사용자 홈 디렉토리의 절대 경로 |
| PWD | 작업 디렉토리의 절대 경로 |
| LANG | 사용하는 언어 |
| SHELL | 로그인 쉘 |
| LOGNAME | 사용자 계정 이름 |
echo $SHELL //환경 변수 출력
SOME = test //환경 변수 설정
export [옵션] [쉘 변수] //먼저 쉘 변수를 정의하고 이를 환경 변수로 변경
unset <변수> // 지정한 옵션 해제
///
-n : 환경 변수를 쉘 변수로 바꾼다
export SOME
export SOME = test
기존의 명령을 대신해 다른 이름을 붙일 수 있는 기능
긴 명령 대신 짧은 명령으로 바꾸고 여러 명령을 연결할 수 있음
자주 사용하는 옵션 포함해 새로운 이름 만들 수 있음
alias 이름 = 명령 //에일리어스 생성
unalias 이름 //에일리어스 해제
///
alias //현재 설정되어 있는 에일리어스 출력
fucntion cdpwd{
> cd $1; pwd //내용을 입력
} //입력 종료
cdpwd \tmp //$1에 전달되는 인자 \tmp
alias ls='ls -aF --color=auto' //ls 기능 설정
alias ll='ls -aFl --time-style=long-iso' //ls를 길게 볼 때 & time 표시 형식 설정
alias l='ls -aFlh --time-style=long-iso' //파일 크기를 GB단위로 표시
alias ps='ps -ef' //ps 기능 설정
alias gr='grep -rni --color=auto' //grep 설정
alias psg='ps | grep' //ps 실행할 때 grep도 같이 실행
alias psgt='ps=efT | grep' //ps 실행 시 스레드 구분해서 보여 줌
alias nsg='netstat -nap | grep' //지금 열려있는 네트워크 소켓 보여 줌
PATH=.:$PATH; export PATH //현재 디렉토리를 환경 변수에 추가
사용자가 입력한 명령을 다시 사용하는 것
로그아웃할 때 홈 디렉토리의 숨김 파일 .bash_history에 저장 됨
| 사용법 | 기능 |
|---|---|
| !! | 바로 직전에 실행한 명령 수행 |
| !(번호) | 히스토리에서 해당 번호에 명령 수행 |
| !(문자열) | 히스토리에서 해당 문자열로 시작하는 마지막 명령 수행 |
history //사용했던 명령 출력
| 이스케이프 문자 | 기능 |
|---|---|
| \a | ASCII 종소리 문자(07) |
| \d | '요일 월 일' 형식으로 날짜를 표시(ex:'Thu May 1') |
| \e | ASCII의 이스케이프 문자로 터미널에 고급 옵션을 전달 |
| \h | 첫 번째 .(마침표)까지의 호스트 이름(ex:host.co.kr에서 host까지) |
| \H | 전체 호스트 이름 |
| \n | 줄 바꾸기 |
| \s | 쉘 이름 |
| \t | 24시간 형식으로 현재 시각을 표시(HH:MM:SS 형식) |
| \T | 12시간 형식으로 현재 시각을 표시(HH:MM:SS 형식) |
| \@ | 12시간 형식으로 현재 시각을 표시(오전/오후 형식) |
| \u | 사용자 이름 |
| \v | bash 쉘의 버전 |
| \w | 현재 작업 디렉터리(절대 경로) |
| \W | 현재 작업 디렉터리의 절대 경로에서 마지막 디렉터리명 |
| ! | 현재 명령의 히스토리 번호 |
| [ | 출력하지 않을 문자열의 시작 부분을 표시 |
| ] | 출력하지 않을 문자열의 끝 부분을 표시 |
PS1 = LINUX ] //프롬프트를 LINUX로 변경 & 프롬프트의 끝을 표시하기 위해 마지막에 ']' 표시하고 공백 문자를 둠
PS1 = '[$PWD]' //프롬프트에 현재 작업 디렉토리 출력
PS1 = '`uname -n` $ ' $ //명령의 실행 결과를 사용 (특수문자 ``사용, 호스트 이름 출력하도록 함)
PS1 = '[\u \T] \!$ ' //사용자 이름, 시간 출력
PS1='\[\e[x;y;nm\] 프롬프트 \[\e[x;y;0m\]'
///
'\[' 을 사용하지 않으면 이스케이프 문자까지 모두 카운트되어 자동 줄 바꿈이 이상하게 동작.
'\e는 터미널 제어를 알리는 이스케이프 문자
' x;y; ' 는 컬러 번호를, n은 밑줄이나 역상 표시 등 특수 기능을 나타냄
프롬프트 앞은 지정한 색상과 기능은 프롬프트의 색상과 특수 효과를
프롬프트 뒤의 색상은 원래 색상으로 돌아가기 위한 것.
프롬프트 뒤의 색상을 지정하지 않으면 이후 쉘의 모든 출력이 프롬프트의 색상과 같아짐
| 프롬프트 컬러 | 글자색 번호 | 배경색 번호 |
|---|---|---|
| 검은색 | 30 | 40 |
| 빨간색 | 31 | 41 |
| 초록색 | 32 | 42 |
| 갈색 | 33 | 43 |
| 파란색 | 34 | 44 |
| 보라색 | 35 | 45 |
| 청록색 | 36 | 46 |
| 하얀색 | 37 | 47 |
| 프롬프트 특수 기능 번호 | 기능 |
|---|---|
| 0 | 기본 색상 |
| 1 | 볼드 |
| 4 | 밑줄 |
| 5 | 반짝임 |
| 7 | 역상 |
| 10 | 기본 폰트 |
| 38 | 밑줄 사용 가능 |
| 39 | 밑줄 사용 불가 |
PS1='\[\e[x;y;nm\] 프롬프트 \[\e[x;y;0m\]'
PS1='\e[34mLinux $\e[0;0m' //파란색으로 설정
PS1='\e[34;1mLinux $\e[0;0m' //파란색, 볼드로 설정
PS1='\e[31;4mLinux $\e[0;0m' //빨간색, 밑줄로 설정
PS1='\e[35;43m\u@\h $\e[0;0m' //갈색 배경, 보라색 글자, '사용자 이름@호스트 이름 $'으로 프롬프트 설정
사용자가 로그인할 때마다 자동적으로 실행되는 명령을 저장한 파일
쉘마다 다른 이름의 파일을 사용하며 시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음
| 파일 | 기능 |
|---|---|
| /etc/profile | - 본 쉘이나 호환되는 모든 쉘에 공통으로 적용되는 파일 - bash 쉘의 경우 /etc/bash.bashrc 파일을 실행 - bash 쉘이 아닌 경우 프롬프트를 #이나 $로 설정 - /etx/profiled.d/*.sh 파일 실행 |
| /etc/bash.bashrc | - 시스템 공통으로 적용되는 .bash파일 - 기본 프롬프트를 설정 - sudo 명령과 관련된 힌트 설정 |
| /etx/profiled.d/*.sh | - 언어나 명령별로 각각 필요한 환경 설정 - 필요시 설정 파일 추가 |
각 사용자의 홈 디렉토리에 숨김파일로 생성
사용자가 내용을 수정하고 관리 가능
| 파일 | 기능 |
|---|---|
| ~/.profile | - 경로 추가 등 사용자가 정의하는 환경 지정 - .bashrc 파일이 있으면 실행 |
| ~/.bashrc | - 히스토리의 크기 설정 - 기본 에일리어스나 함수 설정 |
| ~/.bash_aliases | - 사용자가 정의한 에일리어스를 별도 파일로 저장 |
| ~/.bash_logout | - 로그아웃 시 실행할 필요가 있는 함수 설정 |
source .bash_aliases //환경 설정 파일 적용
. .bash_aliases //환경 설정 파일 적용
| 쉘 | 시스템 초기화 파일 | 사용자 초기화 파일 | 실행 조건 | 실행 시기 |
|---|---|---|---|---|
| 본 쉘 | /etc/profile | $HOME/.profile | 로그인 | |
| 콘 쉘 | /etc/profile | $HOME/.profile $HOME/.kshrc | ENV 변수 설정 | 로그인 로그인, 서브 쉘 |
| $HOME/.login | 로그인 | |||
| C 쉘 | /etc/profile | $HOME/.cshrc | 로그인, 서브 쉘 | |
| $HOME/.login | 로그 아웃 |