1. 기본 셸 확인
- 프롬프트 모양
본 셸, 배시 셸, 콘 셸의 기본 프롬프트 : $
C 셸의 프롬프트 : %
- 나의 환경에서 기본 셸을 확인하기 위해 명령어를 입력하여 확인해본다.
사용자 정보를 확인할 때는 /etc/passwd 파일을 살펴본다.
사용자 정보의 가장 마지막에 나온 /bin/bash 가 기본 셸인 것이다.
-기본 셸 바꾸기
우분투의 기본 셸은 배시 셸이지만 사용자가 바꾸고 싶다면 바꿀 수 있다.(리눅스에 그 셸이 설치되어 있다면)
chsh
기능 : 사용자 로그인 셸을 바꾼다.
형식 : chsh [옵션] [사용자명]
옵션 : -s shell : 지정한 셸로 로그인 셸을 바꾼다.
-l : /etc/shells 파일에 지정된 셸을 출력한다.
바꿀 수 있는 셸의 종류는 /etc/shells 파일에 지정되어있다.
셸을 바꿀 때 그냥 셸의 이름만 지정한다면 적합한 셸이 아니라는 메시지가 출력이 된다.
바꾸려는 셸의 절대 경로를 지정해야 셸이 변경된다.
- 로그인 셸과 서브 셸
사용자는 프롬프트에서 다른 셸을 실행할 수 있다. = > 서브 셸 (새로 생성된 셸)
서브 셸을 종료하는 명령은 ctrl + d , exit 등이 있다. 서브 셸이 종료되면 서브 셸을 실행했던 이전 셸 환경으로 돌아가며, 로그인 셸에서 로그아웃을 하면 접속이 해제된다.
2. 셸 내장 명령
셸은 자체적으로 내장 명령을 가지고 있다. 일반적인 리눅스 명령이 /bin 이나 /usr/bin 디렉터리에 별도의 실행 파일로 있는 것과 달리 셸 내장명령은 별도의 실행파일이 없고 셸 안에 포함되어 있다. (대표적으로 cd 명령)
실행파일은 바이너리 파일이기 때문에 cat 명령으로 파일의 내용을 확인할 수는 없다.
3. 출력하기
배시 셸의 출력 명령: echo, printf 가 있다. 출력 명령은 문자열 출력이나 셸 변숫값 출력, 명령 결과 출력 등에 사용된다.
echo
기능: 화면에 한 줄의 문자열을 출력한다.
형식: echo [-n] [문자열]
옵션: -n 마지막에 줄 바꿈을 하지 않는다.
printf
기능: 자료를 형식화하여 화면에 출력한다.
형식: printf [옵션] [인수]
옵션: %d \n 등 C언어 printf 함수의 형식을 지정한다.
4. 특수 문자 사용하기
명령을 입력하면 셸은 먼저 특수문자가 있는지 확인하고 이를 적절한 형태로 변경한 후 명령을 실행한다.
1) 특수문자 * (별표) : 임의의 문자열을 나타내는 특수문자, 0개 이상의 문자로 대체
여러 파일의 이름을 나열할 때 파일 명을 간단히 표시하는 데 주로 사용된다.
명령을 실행할 때 파일명을 넣어야 하는 자리에 *를 사용하면 모든 파일을 나타낸다.
사용 예 | 의미 |
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, hoood , h12312d 등이 조건에 맞는 모든 파일의 정보를 볼 수 있다. |
2) 특수문자 ? 와 [ ]
? 와 [ ] 는 모두 하나의 문자를 나타내는 데 사용된다. ? 는 길이가 1인 임의의 한 문자를 , [ ] 는 괄호 안에 포함된 문자 중 하나를 나타낸다. [ ] 는 사용할 여러 문자를 나열하거나 범위를 지정할 수 있으며, 다른 특수문자와 혼합하여 사용할 수도 있다.
사용 예 | 의미 |
ls t?.txt | t 다음에 임의의 한 문자가 오고 파일의 확장자가 txt 인 모든 파일의 이름을 출력한다. t1.txt, t2.txt, ta.txt 등이 해당된다. 단, t.txt 는 제외한다. |
ls -l tmp[135].txt | tmp 다음에 1,3,5 중 하나가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력한다. tmp1.txt, tmp3.txt ,tmp5.txt 파일이 있으면 해당 파일의 상세 정보를 출력한다. 단 tmp.txt 는 제외한다. |
ls -l tmp[1-3].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] | 파일명이 영문자로 시작하고 숫자로 끝나는 모든 파일의 목록을 출력한다. |
3) 특수문자 ~ 와 -
~ 과 - 는 디렉터리를 나타내는 특수 문자
~ 만 사용하면 현재 작업 중인 사용자 홈 디렉터리를 표하고 다른 사용자 로그인 id 와 함께 사용하면 해당 사용자의 홈 디렉터리를 표시한다.
- 는 cd 명령으로 디렉터리를 이전하기 직전의 작업 디렉터리를 표시한다.
사용 예 | 의미 |
cp *.txt ~/ch3 | 확장자가 txt인 모든 파일을 현재 작업 중인 사용자의 홈 디렉터리 아래 ch3 디렉터리로 복사한다. |
cp ~user2/linux.txt | user2라는 사용자의 홈 디렉터리 아래에서 linux.txt 파일을 찾아 현재 디렉렉터리로 복사한다. |
cd ~ | 이전 작업 디렉터리로 이동한다. |
4) 특수문자 ; 과 |
; (쌍반점)과 | (파이프)는 명령과 명령을 연결한다.
;는 연결된 명령을 왼쪽부터 차례로 실행하고, |는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달한다.
사용 예 | 의미 |
date;ls;pwd | 왼쪽부터 차례대로 명령을 실행한다. 즉, 날짜 출력 후 현재 디렉터리의 파일 목록 출력 후 마지막으로 현재 작업 디렉터리의 절대 경로를 보여준다. |
ls -al / | more | 루트 디렉터리에 있는 모든 파일의 상세 정보를 한 화면씩 출력한다. ls -al / 명령 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력되는 것이다. |
5) 특수문자 ' ' 와 " "
'' 와 "" 는 문자를를 감싸서 문장열로 만들고, 문자열 안에 사용된 특수 문자의 기능을 없앤다.
사용 예 | 의미 |
echo '$SHELL' | $SHELL 문자열이 화면이 출력된다. |
echo "$SHELL" | 셸 환경 변수인 SHELL 에 저장된 값인 현재 셸의 종류가 화면에 출력된다. /bin/bash 를 예로 들 수 있다. |
' ' => 모든 특수문자
" " => $ `` \ 를 제외한 모든 특수문자
를 일반 문자로 간주하여 처리한다.
echo SHELL => 문자열의미, ehco $SHELL => 변수의 값 의미
6) 특수문자 ` `
셸은 ` ` 로 감싸인 문자열을 명령으로 해석하여 명령의 실행 결과로 바뀌게 된다.
사용 예 | 의미 |
echo "Today is `date` " | `date`가 명령으로 해석되어 date 명령으 실행 결과로 바뀐다. |
ls /usr/bin/`uname -m` | uname -m 명령의 실행 결과를 문자열로 바꾸어 파일명으로 사용한다. |
7) 특수문자 \
특수문자 바로 앞에 사용하며 해당 특수문자의 효과를 없애고 일반 문자처럼 사용한다.
사용 예 | 의미 |
ls -l t\* | t* 이라는 이름을 가진 파일의 상세 정보를 출력한다. \없이 t*을 사용하면 t로 시작하는 모든 파일의 상세 정보를 출력한다. |
echo \$SHELL | $SHELL 을 화면에 출력한다. echo 'SHELL' 과 결과가 같다. |
8) 특수문자 > , < , >>
사용 예 | 의미 |
ls -l > res | ls - l 명령의 실행 결과를 화면이 아닌 res 파일에 저장한다. |
'리눅스프로그래밍' 카테고리의 다른 글
우분투 리눅스 - 배시 셸 환경 설정 (0) | 2020.05.08 |
---|---|
우분투 리눅스 - 입출력 방향 바꾸기 (0) | 2020.05.08 |
우분투 리눅스 - 셸 사용하기 (0) | 2020.05.08 |
우분투 리눅스 - vi 환경 설정 (0) | 2020.04.26 |
vi - 사용법 (복사, 붙이기, 버퍼,검색, 바꾸기, 기타 유용키) (0) | 2020.04.24 |