shell 쉘

2023. 10. 14. 21:07리눅스/unix_linux시스템

728x90
반응형

명령어 해석기 또는 명령 행 인터페이스

사용자와 커널 사이에서 명령어를 해석하여 처리

shell 명령을 사용하면  gui로 하기 힘든 다양한 기능 수행가능

 

셀 명령을 프로그램으로 작성하여 처리할 수도 있음

쉘 스크립트는 텍스트 파일로 프로그래밍을 통한 쉘 명령의 조합

반복적으로 수행되는 작업을 쉘 스크립트로 작성

쉘이 쉘 스크립트 파일을 읽어 처리 가능

 

텍스트 모드로 로그인 하면 기본 쉘이 주어짐

 

shell 사용하기

텍스트 모드에서 로그인하면 자동으로 로그인 쉘이 실행됨

한개의 명령어를 입력하고 엔터를 눌러 명령 수행

세미콜론을 사용하여 한라인에 여러 명령어 사용 가능

 

shell 종류

많은 리눅스 배포판에서 bash를 기본 쉘로 사용

명령 프롬프트로 일반 사용자는 $  root사용자는 #을 사용

쉘을 종류에 따라 에일리어스 설정, 초기화 파일, 쉘 스크립트 작성법, 명령 행 완성 기능, 명령 행 편집 기능 등에 차이가 있음

 

bash shell

-Bourne Agin Shell로 Bourne쉘의 개선된 버전

 많은 쉘 스크립트 문법이 bourne쉘에 기반을 둠

-C쉘과 Korn쉘의 유용한 기능을 가져옴

-실행 명령은 /bin/bash

 /etc/passwd 파일에 다음과 같은 라인이 있음 -> lee:x:1000:1000:leesunsin:home/lee:/bin/bash

 

shell 선택

-기본쉘 변경 가능

chsh -s /bin/sh

-터미널 창을 대화형 쉘이라고 함

-로그인 쉘과 비로그인 쉘을 구변해야함

 

쉘명령의 형식

-$명령어 옵션 인수

ex) usermod -L lee

옵션과 인수는 여럿일 수 있으며 선택적 또는 필수적

 

대개 명령어는 프로그램의 이름

관리자 명령 또는 일반 사용자 명령이 있음

가장 간단한 형태의 실행은 명령의 이름만 사용하는 것

ex)who, date, is, pwd

 

chsh 명령

-기본 쉘을 바꾸는 명령

chsh [options] [username]

대괄호는 생략가능, 이탤릭체는 적당한 내용으로 대체해야 함을 의미

복수는 어려가가 가능하다는 의미

 

옵션과 인수

-짧은 옵션(-)

ls -l

ls -lat와 ls -l -a -t는 같은 명령

-긴옵션(--)

ls --all

-인수는 명령의 수행 대상을 지정 하는 것

cat -n /ebc/passwd

grep "lee" /etc/passwd

-옵션도 인수를 가질수 있음

chsh -s /bin/sh lee

chsh --shell=/bin/bash lee

 

명령어의 종류   

유형 설명
에일리어스 alias명령을 사용하여 만든 명령의 별칭
쉘 예약어 예약된 단어로 do while case 등
함수  쉘에서 수행되는 함수의 정의
내장 명령 쉘 내부에 존재하는 명령으로 cd, echo, pwd 등
일반 명령 실행 파일이 존재는 명령

 

-환경변수 path에 설정된 경로 중에 실행 파일이 존재하면 명령의 이름만으로 실행이 가능

아니면 해당 실행 파일의 전대 경로로 사용해야함

현재 디렉토리(.) 보통 path에 포함되어 있지 않음

echo $PATH로 저장된 경로를 확인 할 수 있음

 

-alias 명령

자주 사용되는 명령의 단축 명령을 만드는 명령

alias

alias la='ls -A'

alias rm='rm -i'

계속 유지하려면 쉘의 환경설정 파일에 기록 해 두어야한다

unalias la 삭제

 

type 명령

명령이 어떻게 해석되는지 알려주는 명령

type cd

type -a ls

 

which 명령

-실행 프로그램을 환경변수 PATH를 기초로 찾아 경로를 출력함

which rm

 

man 명령

매뉴얼 페이지를 보여주는 명령

명령어 사용법이나 설정파일 등에 관한 온라인 도움말을 제공

man passwrd 또는 man 5 passwd

명령어의 간단한 도움말을 보려면 명령 --help를 사용

 

history 명령

-이전에 수행했던 명령 행의 목록을 불러옴 

history 

history 10 -열줄만 불러옴

 

히스토리 기능을 이용하여 명령을 실행 하는 방법

이전에 수행했던 명령을 이용하여 명령을 수행 할수 있음

다음을 입력하고 실행함

!! => 직전 명령 실행

!n => history목록에서 해당 명령을 실행

!String => 지정된 문자열로 시작하는 최근 명령을 실행

↑ or ↓ 직전 또는 직후 명령 불러온다

 

명령 행 완성 기능

- 일부만 입력하고 나머지를 자동으로 완성하는 기능

- 처음 몇자만 입력한 후, tab키를 누르면 실행

-정보가 충분하지 않은 경우 tab키를 한번더 누르면 모든 가능한 경우를 보여주고 원래의 명령 행이 유지

 

명령의 연결과 확장

특수문자(1)

-쉘에서 특별한 의미를 가지는 문자

 

\ => 특수문자의 기능을 제거하는 escape 문자 또는 긴 명령 행을 분리할 때 사용

~ => ~ 또는 ~username 은 사용자의 홈디렉터리 를 의미

. => 현자 작업 디렉토리를 표시 또는 명령 행의 맨 앞에서 쉘 스크립트를 실행하는 source명령

.. => 현재 디렉토리의 부모 디렉토리 

# => #문자 뒤에 나타나는 문자를 주석으로 처리

$ => $변수는 변수의 값을 추출

& => 명령& 명령을 백그라운드로 실행 시킴

* => 파일 이름에서 사용할 때 0개 이상의 임의 문자열과 대응됨

? => 파일이름에서 사용할 때 1개 문자와 대응됨

| => 앞 명령의 출력을 다음 명령의 입력으로 연결 시킴

< or > => 입출력 리다이렉션에서, 즉 파일로부터 입력 받을 때 또는 파일로 출력할 때 사용

>> => 표준 출력을 파일의 끝에 덧 붙일 때 사용

! => 명령 히스토리 기능을 이용할때 사용

 

파이프

- 앞명령의 출력 결과를 다음 명령의 입력으로 연결

ex) cat /etc/passwd | sort | more

 

입출력 리다이렉션

명령 수행에 필요한 입력을 표준 입력 대신에 파일로부터 얻음

ex) sort < /etc/passwd

명령 수행에 결과를 표준 출력으로 보내지 않고 파일에 기록함

ex) grep typedef /usr/include/* > typedef.out

명령 수행중 표준 오류 출력을 파일에 덧 붙임

ex) ls 2>> error.txt

 

명령 치환

-명령을 수행할 떄 명령의 인수로서 다른 명령의 결과를 사용 

-${command) 또는 'command'

 

인용부호

-빈칸을 포함하는 문자열을 1개의 인수로 사용할 때 인용 부호가 필요

-작은따옴표 는 특수문자의 의미를 제거

-큰따옴표는 $ ' \ ! 를 해석하여 확장

-\는 $ ' " \ 앞에서 특수 문자의 의미를 제거함

 

수식과 변수의 확장

-명령 수행 전에 수식의 결과를 계산하여 전달

-$[수식] 또는 $((수식))

-명령 수행 전에 변수의 값을 추출하여 전달

-$변수

 

shell 변수

 

shell변수와 환경 변수

-변수는 특정 데이터 또는 환경 설정을 위한 값을 저장

기본적으로 문자열 정보를 저장

 

shell변수(지역변수)

변수가 정의된 shell에서만 사용가능, 서브 shell로 전달 되지 않음

ex) NAME="lee"

     echo $NAME

    lee

 

환경 변수(전역 변수)

현재 shell뿐만 아니라 서브 shell로 전달 

보토 변수 이름으로 대문자를 사용함

터미널 창을 열러 shell을 시작하면 이미 많은 환경 변수가 설정되어 있음

시스템의 모든 환경 변수의 이름과 값을 출력하려면 printenv명령을 사용

export -p는 현재 shell의 모든 환경 변수를 출력

 

shell 변수와 환경변수

-변수 설정과 환경 변수로 만드는 방법

변수=값; export 변수

또는 export 변수=변수

-특정 환경 변수의 값을 확인하는 방법

printenv 변수

echo $변수 는 모든 변수 값을 확인 할 수 있다.

 

로그인과 shell의 환경 설정 파일

-로그인 할 때 또는 shell을 시작할 떄 자동으로 실행되는 명령을 저장한 파일

시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음

shell의 종류에 따라 다른 이름의 설정 파일을 사용함

bash shell의 경우 다음과 같음

/etc/profile => 모든 사용자에게 적용, 로그인할 때 가장 먼저 수행됨 PATH, MAIL, HISTSIZE등 전역의 환경 변수가 설정됨

~/.bash_profile => login할때 수행되며 개별 사용자에게 적용됨 보통 내부에서 ~/.bashrc를 실행

~/.bashrc => shell을 시작할 때마다 수행되며 개별 사용자에게 적용됨 보통 내부에서 /etc/bashrc를 수행

/etc/bashrc => 모든 사용자에거 적용 shell 시작할 때마다 수행, PS1 설정, alias설정, umask를 사용한 접근 권한의 초기값, 함수 등을 설정

~/.bash_logout => logout을 수행 할때 실행되는 스크립트 파일

 

  1. 셸 명령의 종류로 에일리어스, 셸 예약어, 함수, 내장 명령, 일반 명령 등이 있다.
  2. 히스토리 기능을 사용하여 이전 명령을 불러오거나 실행할 수 있다.
  3. 파이프는 왼쪽 명령의 결과를 오른쪽 명령의 입력으로 연결시킨다.
  4. 입출력 리다이렉션은 셸 명령의 표준 입력 또는 표준 출력이 필요할 때 대신 파일을 사용하는 기능이다.
  5. 셸 명령을 수행하기 전에 명령 치환, 변수나 수식의 확장 등이 먼저 처리된다.
728x90

'리눅스 > unix_linux시스템' 카테고리의 다른 글

text editor  (1) 2023.11.06
user management  (0) 2023.11.05
linux start and end  (0) 2023.11.02
file and directory  (1) 2023.10.22
linux 표준 디렉터리  (0) 2023.09.25