Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

5가지 실제 예제가 포함된 Bash 스크립팅 소개 자습서

5가지 실제 예제가 포함된 Bash 스크립팅 소개 자습서진행 중인 Unix Sed 및 Unix Awk 시리즈와 마찬가지로 Bash 스크립팅에 대한 여러 기사를 게시할 예정입니다. 실용적인 예제와 함께 모든 bash 스크립팅 기술을 다룰 것입니다.

Shell은 사용자 명령을 해석하는 프로그램입니다. 명령은 사용자가 직접 입력하거나 쉘 스크립트라는 파일에서 읽습니다.

쉘은 사용자의 입력을 직접 읽을 때 대화형 쉘이라고 합니다.

쉘은 파일에서 명령을 읽고 실행할 때 비대화형 쉘이라고 합니다. 이 경우 쉘은 스크립트 파일의 각 줄을 위에서 아래로 읽고 사용자가 직접 입력한 것처럼 각 명령을 실행합니다.

쉘이 대화식인지 비대화식인지 알아보기 위해 내장 쉘 변수 $-의 값을 출력합니다.

# echo $-
himBH

참고:$- 변수는 쉘이 대화식일 때 "i"를 포함합니다. .

유닉스에는 다양한 쉘이 있습니다. Bourne 쉘(sh), Bourne 쉘(bash), C 쉘(csh), Korn 쉘(ksh), Tenex C 쉘(tcsh). which 또는 whereis unix 명령을 사용하여 아래와 같이 특정 셸이 있는 위치를 찾습니다.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

쉘 이름을 입력하여 쉘 간에 전환할 수 있습니다. 예를 들어, csh를 입력하여 C 셸로 전환합니다.

<센터>

쉘 스크립트 작성 및 실행

예제 1. Hello World Bash 스크립트

  1. 좋아하는 편집기를 사용하여 파일에 다음 두 줄을 입력하여 스크립트를 만듭니다.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. 파일 이름을 선택할 수 있습니다. 파일 이름은 Unix 내장 명령과 같을 수 없습니다.
  4. 스크립트는 항상 쉬뱅이라고 하는 '#!' 두 글자로 시작합니다. 이는 파일이 스크립트임을 나타내기 위한 것으로 파일의 나머지 첫 번째 줄에서 지정한 인터프리터(/bin/bash)를 사용하여 실행해야 합니다.
  5. 아래와 같이 스크립트를 실행합니다. 셸 스크립트를 실행하는 데 문제가 있는 경우 셸 스크립트 실행 자습서를 참조하세요.
  6. $ bash helloworld.sh
    Hello World
  7. "bash helloworld.sh" 명령을 실행하면 비대화형 쉘을 시작하고 파일 이름을 인수로 전달합니다.
  8. 첫 번째 줄은 스크립트를 실행하기 위해 생성할 셸을 운영 체제에 알려줍니다.
  9. 위의 예에서 스크립트를 해석하고 위에서 아래로 명령을 하나씩 실행하는 bash 인터프리터입니다.
  10. 다음과 같이 "bash"를 시작하지 않고 스크립트를 실행할 수도 있습니다.
    • "chmod u+x helloworld.sh" 명령을 사용하여 스크립트에 대한 권한을 사용자(사용자)가 실행할 수 있도록 변경합니다.
    • 스크립트가 포함된 디렉토리는 PATH 환경 변수에 포함되어야 합니다. 포함되지 않은 경우 스크립트의 절대 경로를 지정하여 스크립트를 실행할 수 있습니다.
  11. echo는 단순히 주어진 인수를 출력하는 명령입니다. 또한 변수의 값을 인쇄하는 데 사용됩니다.

Bash 시작 파일

.bash_profile 및 관련 파일 문서에 대한 실행 시퀀스 앞부분에서 논의한 바와 같이 bash가 대화형 셸로 호출되면 먼저 /etc/profile에서 명령을 읽고 실행합니다. /etc/profile이 존재하지 않으면 ~/.bash_profile, ~/.bash_login, ~/.profile의 명령을 주어진 순서대로 읽고 실행합니다. –noprofile 옵션은 이 동작을 금지하기 위해 쉘이 시작될 때 사용될 수 있습니다.

일반적으로 bash_profile은 ~/.bashrc를 실행합니다. 원하는 경우 환영 메시지를 표시할 수 있습니다. 이것은 처음 로그인할 때만 실행됩니다. 원하는 대로 변수를 내보낼 수 있으며 쉘을 열면 실행되고 사용할 수 있는 별칭을 설정할 수 있습니다. 로그인 셸이 종료되면 Bash는 ~/.bash_logout 파일에서 명령을 읽고 실행합니다.

예 2. 로그인 시 환영 메시지 인쇄

bash_profile 파일에 다음 내용을 입력하십시오. 파일이 없으면 아래 내용으로 파일을 만드세요.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

대화형 셸에 로그인하면 아래와 같이 환영 메시지가 표시됩니다.

login as: root
root@dev-db's password:
Welcome on dev-db

예시 3. 시스템 관련 정보 출력

대화형 셸에 로그인하면 서버에 설치된 커널 이름, bash 버전, 서버의 가동 시간 및 시간을 표시할 수 있습니다.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

대화형 셸을 실행하면 아래와 같은 메시지가 출력됩니다.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information: Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

예 4. 마지막 로그인 세부 정보 인쇄

여러 사용자가 동일한 로그인으로 동일한 시스템을 사용하는 경우 마지막 로그인이 발생한 시스템 및 로그인한 시간과 같은 세부 정보가 가장 유용한 세부 정보가 될 것입니다. 이 예는 대화형 셸을 시작하는 동안 마지막 로그인 세부 정보를 인쇄합니다.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

마지막 로그 | grep "루트" | awk {'print "마지막 로그인:"$3

print "Last Login Date &Time:",$4,$5,$6,$7,$8,$9;}'
시작하는 동안 아래와 같은 메시지가 표시됩니다.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information: Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

마지막 로그인:sasikala-laptop

마지막 로그인 날짜 및 시간:2010년 2월 22일 화요일 11:24:01 +0100

예시 5. 시작 시 변수 내보내기 및 별칭 설정

.bashrc 및 .bash_profile 파일에서 사용할 가장 일반적인 명령은 내보내기 및 별칭 명령입니다.

별칭은 단순히 한 텍스트를 다른 텍스트로 대체하는 것입니다. 별칭을 실행하면 입력한 내용을 별칭과 동일한 것으로 대체합니다. 예를 들어, 파일/폴더를 색상으로 나열하도록 ls 명령에 대한 별칭을 설정하려면 다음을 수행하십시오.

alias ls 'ls --color=tty'

이 명령을 시작 파일 중 하나에 추가하면 ls 명령을 실행할 수 있으며, 여기서 ls –color=tty 명령으로 자동 교체됩니다.

내보내기 명령은 환경 변수를 설정하는 데 사용됩니다. 다양한 환경 변수가 시스템 또는 다른 응용 프로그램에서 사용됩니다. 그들은 단순히 모든 애플리케이션/스크립트가 읽을 수 있는 매개변수를 설정하는 방법입니다. export 명령 없이 변수를 설정하면 해당 변수는 해당 프로세스에만 존재합니다.

아래 예에서는 환경 변수 HISTSIZE를 내보내고 있습니다. #으로 시작하는 줄은 주석 줄입니다.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}