본문 바로가기

TEAM STUDY/LINUX

유닉스 쉘 익히기

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 등 이 조건에 맞는 모든 파일의 정보를 볼 수 있음
    • ? 와  [ ]
      • 하나의 문자를 나타내는데 사용
      • ? : 길이가 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 파일에 저장

에일리어스

  • 에일리어스
    • 에일리어스(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
      • 현재 작업 디렉터리의 절대 경로에서 마지막 디렉터리명
    • \!
      • 현재 명령의 히스토리 번호
    • \[
      • 출력하지 않을 문자열의 시작 부분을 표시함
    • \]
      • 출력하지 않을 문자열의 끝부분을 표시함

 

 

유닉스쉘 환경 설정

  • 셸의 환경을 설정하기 위한 값을 저장할 수 있도록 셸 변수와 환경 변수를 제공
  • 셀 변수
    • 현재 셸에서만 사용이 가능하고 서브 쉘로는 전달되지 않음(지역변수)
  • 환경 변수
    • 현재 쉘뿐만 아니라 서브 쉘로도 전달 (전역변수)
    •  

  • 변수 출력
    • set
      • 쉘 변수와 환경 변수 모두 출력
    • env
      • 환경 변수만 출력
    • echo $변수명
      • 해당 환경 변수만 출력
  • 주요 셸 환경 변수
    • HISTSIZE
      • 히스토리 저장 크기
    • HOME
      • 사용자 홈 디렉터리의 절대 경로
    • LANG
      • 사용하는 언어
    • LOGNAME
      • 사용자 계정 이름
    • PATH
      • 명령을 탐색할 경로
    • PWD
      • 작업 디렉터리의 절대 경로
    • SHELL
      • 로그인 셸
  • 셀 변수 설정하기
    • 변수명과 문자열 사이에 공백이 있으면 안됨
    • 형식: 변수명=문자열
  • 환경 변수 설정하기: 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 
        • 언어나 명령별로 각각 필요한 환경을 설정함 
        • 필요 시 설정 파일을 추가함
    • 사용자 환경 설정 파일 
      • 각 사용자의 홈 디렉터리에 숨김 파일로 생성하는 파일
      • <사용자가 내용을 수정 및 관리 가능>
      • ~/.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