쉘 관련 명령어

조준형·2022년 12월 29일
0

Linux

목록 보기
3/7

명령의 종류

  • 빌트인 명령: 쉘이 자체적으로 해석하는 명령
  • 외부 명령: /bin또는 /sbin과 은 파일 시스템에 존재하는 바이너리 파일에 해당하는 명령
    • 환경변수 PATH에 등록된 순서에 따라 외부 명령을 찾는다.

type 명령을 통해 명령의 종류를 확인할 수 있음

  • $type cd
  • $type cat

$type -a echo # echo 명령의 종류를 모두 나열

  • 이름이 동일한 명령의 경우에는 내부 명령이 외부 명령에 우선하여 실행
  • 외부 명령 사용하고 싶을 때는 /bin/echo Hello

which 명령: 외부명령에 해당하는 바이너리 파일의 위치를 알려줌

alias(↔unalias)

기존의 명령을 다른 이름으로 사용할 수 있게 함

  • alias show = cat
  • alias # alias확인
  • unalias # alias 삭제

쉘 확장 과정 보기

#set -x

작업 제어 연산자

다수의 명령으로 이루어진 작업을 제어하는 연산자

  • semicolon(;)
    • 왼편 → 오른편 순서로 명령을 차례로 수행
    • $echo Hello ; echo world
  • ampersand(&)
    • 쉘은 주어진 명령을 background로 실행하고 그것이 종료할 때까지 기다리지 않음
    • $sleep 20 &
  • dollar question mark($?)
    • 이전 명령의 종료 코드를 반환한다. Linux 명령은 성공적으로 종료하면 0을 반환하고(TRUE로 간주) 그렇지 않으면 0이 아닌 값을 반환한다.(FALSE로 간주)
    • $touch file1
    • $echo $?
  • double ampersand(&&)
    • 논리곱(logical AND)로 해석. &&의 왼편 명령이 성공적으로 종료하면(0을 반환하면 TRUE로 취급) 오른편 명령을 계속해서 실행한다.
    • $echo first && echo second
  • double vertical bar(||)
    • 논리합(logical OR)로 해석. ||의 왼편 명령이 실패할 때만(0이 아닌 값을 반환하는 경우이며 FALSE로 취급) 오른편 명령을 실행한다.
    • $echo first || echo second; echo third
    • $rm file1 && echo It worked! || echo It failed!
  • pound sign(#)
    • 쉘 주석
  • escape character()
    • Escape 문자
    • $echo Hello \; world
  • 명령행 끝의 back slash()
    • 라인의 끝에 위치한 \는 명령행이 다음 행으로 계속 이어짐을 나타낸다.
    • $echo This command line \
      /> is split in three \
      /> parts

쉘 변수

쉘에서 사용하는 변수

  • $문자를 이용하여 그 값을 사용함
  • 쉘 변수는 대소문자 구분
  • 쉘에서 쌍따옴표를 사용하면 그 안의 스트링을 쉘이 해석함 (단, 따옴표는 내부 해석x)
  • 모든 변수들의 값을 확인하려면 set 명령을 사용
  • 변수를 삭제하려면 unset 명령을 사용

주요 변수들

  • HOSTNAME
    • 호스트 컴퓨터의 이름
  • USER
    • 현재 사용자의 이름
  • UID
    • 현재 사용자의 사용자 식별변호(User Identifier)
  • SHELL
    • 현재 사용중인 쉘
  • HOME
    • 현재 사용자의 홈 디렉토리
  • PS1
    • 쉘 프롬프트 형태를 지정
    • $echo $PS1
    • $PS1 =’next command>’
  • PATH
    • 쉘 명령에 해당하는 프로그램을 찾는 디렉토리의 순서
    • $echo $PATH
    • /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:.

변수 사용

export

  • 주어진 변수를 자식 쉘에 전달되도록 설정한다.
    • export var4
    • bash
    • echo $var4

env

  • 인자가 없으면 export된 변수들을 보여준다
  • 명령을 인자로 주면 주어진 환경으로 실행
  • env -i는 export된 것들을 모두 취소함
    • $env -i bash

변수를 명확하게 구분해서 나타내려면 ${변수명} 형식으로 나타냄

  • $echo Hello ${prefix}man and ${prefix}girl

이 때, 에러 메시지를 발생시키려면, set -u를 사용

  • 에러메시지 발생 취소 set +u

쉘 임베딩

명령행에서 새로운 쉘을 실행시킬 수 있음

  • $()를 사용하는 방법
    • $echo $var1
    • $echo $(var1=5;echo $var1)
    • $echo $var1
  • 백틱을 사용하는 방법
    • $echo cd/etc;ls -d * | grep pass

이전 쉘 명령

!!: 직전 명령을 다시 실행

!pattern: patter에 매칭되는 이전 명령을 다시 실행

  • !echo

history: 현재까지 사용한 명령들을 표시함

  • 공백을 먼저 입력하고 명령을 사용하면 history에 저장되지 않는다.

!번호: 이전 명령들 중에서 번호에 해당하는 명령을 다시 실행

파일 이름 확장(file globbing)

asterisk(’*)는 글자가 없거나 하나 이상의 임의의 글자를 나타냄

물음표(?)는 임의의 한 글자를 나타냄

  • $ls
  • file1 file2 file3 File4 File55 FileA fileab Fileab FileAB fileabc
  • $ls File* # File이라는 글자로 시작하는 파일
  • $ls *dat # dat라는 글자로 끝나는 파일
  • $ls File*dat # File로 시작하고 dat으로 끝나는 파일
  • $ls File? # File로 시작하고 한글자로 끝나는 파일
  • $ls File?4 # File로 시작하고 임의의 한글자 다음 4로 끝나는 파일
  • $ls File?? # File로 시작하고 임의의 두글자로 끝나는 파일

문자 패턴

[]는 대괄호 사이에 있는 임의의 문자에 해당하는 것을 의미함

  • ls File[5A] ⇒ FileA
  • [a-z], [0-9]
    • 여러개의 문자 또는 숫자를 간략히 표시
  • [!문자]
    • 문자가 들어있지 않음을 의미

$ls file[a5][!Z]

  • fileab

echo *하면 파일이 다 나오므로 파일 이름 확장을 막으려면 echo /**

profile
코린이

0개의 댓글