Bash 프로그래밍-1 부

일반적으로 관리 또는 파일 관리 작업에 사용하지만 위로 de Linux 그 목적을 훨씬 뛰어 넘어 기능을 확장하여 스크립트 이 가이드는 Bash 프로그래밍에 대한 완전한 참조가 아니라 기본 명령과 구조에 대한 소개로, GNU / Linux 시스템의 성능을 확장 할 수 있습니다.

"스크립트"란 무엇입니까?

기본적으로 시스템이 특정 작업에 사용하는 특정 프로그래밍 언어로 작성된 코드가 포함 된 파일이라고 말합니다. 외부 입력 또는 그래픽 인터페이스가 필요하지 않지만 처리 된 데이터를 출력해야합니다 (사용자가 보지 않더라도).

Bash에서 사용하는 언어는 자체 인터프리터에 의해 정의되며 Korn Shell (ksh) 또는 C Shell (csh)과 같은 다른 Shell의 구문을 결합합니다. 콘솔에서 일반적으로 사용되는 많은 명령은 특정 배포에 엄격하게 관련된 명령을 제외하고 스크립트에서도 사용할 수 있습니다.

스크립트의 구조

시작하려면 텍스트 편집기가 있어야하며 프로그래밍을 원해야합니다. .sh 확장자로 저장 한 파일은 첫 번째 줄이 다음과 같은 한 콘솔에서 실행 (또는 해석) 할 수 있습니다.

#! / bin / bash

이것은 파일을 실행하기 위해 콘솔을 사용하도록 시스템에 지시합니다. 또한 # 문자를 사용하여 주석을 작성할 수 있습니다. 가장 간단한 예를 만들기 위해 다음 이미지와 같이 한 줄을 더 추가합니다.

echo 명령은 화면에 메시지를 표시합니다.이 경우 일반적인 "Hello world!" 저장하고 콘솔로 실행하면 결과를 볼 수 있습니다.

기본 명령

다음 명령은 일반적이며 모든 유형의 프로그램에 매우 유용합니다. 더 많은 것이 있음을 명확히하지만 지금은 다음을 다룰 것입니다.

별칭 : 단어 문자열을 더 짧은 단어로 대체하여 코드를 줄일 수 있습니다.

## Downloads 폴더 별칭 per = '/ home / user / Downloads'의 주소로 per라는 별칭을 생성합니다. unalias unalias per

break : for, while, until 또는 select 루프를 즉시 종료 할 수 있습니다 (루프에 대해서는 나중에 자세히 살펴 보겠습니다).

# 1에서 5까지의 숫자를 할당 할 루프를 만듭니다. # 1 2 3 4 5의 카운터에 대한 각 "루프의 회전"에 대해 # 문자 $로 분석되는 변수 #counter의 현재 값을 인쇄합니다. echo "$ counter"# 카운터 값이 3이면 [$ counter –eq 3] then # break는 break fi done에 대한 루프를 종료합니다.

계속-현재 루프를 무시하고 다음 루프로 이동한다는 점을 제외하면 break와 유사합니다.

# 1부터 5까지의 숫자를 할당 할 루프를 만듭니다. # 1 2 3 4 5의 카운터에 대한 "루프의 회전"마다 # 카운터 값이 3이면 [$ counter –eq 3] then # 계속은 다음 라운드로 건너 뛰어 나머지 #current주기가 분석되는 것을 방지합니다. 즉, #value 3이 인쇄되지 않습니다. 계속 fi echo "$ counter"완료

선언 : 조판처럼 변수를 선언하고 값을 할당합니다 (동일한 방식으로 작동 함). 몇 가지 옵션과 결합 할 수 있습니다. -i는 정수를 선언합니다. -r 값을 변경할 수없는 읽기 전용 변수의 경우; –A는 어레이 또는 "어레이"입니다. -f 기능; -x는 스크립트 자체의 환경 외부에서 "내보낼"수있는 변수의 경우입니다.

선언 –i num = 12 선언 –x pi = 3.14

help : 특정 명령에 대한 도움말을 표시합니다.

작업 : 실행중인 프로세스를 표시합니다.

# –c를 사용하면 명령 이름이 표시되고 –p # 각 프로세스의 pid (프로세스 ID)가 표시됩니다. 작업 -cp

let : 산술 식 평가

let a = 11 let a = a + 5 # 마지막으로 우리는 16의 값을 출력합니다. echo "11 + 5 = $ a"

local : 오류를 방지하기 위해 스크립트 자체의 기능에서 사용하는 것이 좋습니다. 선언 명령과 동일한 기능을 사용할 수 있습니다.

local v1 = "이것은 지역 변수입니다"

logout : 셸에서 완전히 로그 아웃 할 수 있습니다. 둘 이상의 셸 창으로 작업하는 경우에 유용합니다. 여기서 exit 명령은 한 번에 하나의 창만 종료 할 수 있도록합니다.

printf : 데이터를 인쇄하고 포맷 할 수 있습니다. 많은 옵션이 있으므로 몇 가지를 언급하겠습니다.

# % f는 부동 숫자로 인쇄하고, n은 새 행에 대해 인쇄합니다. printf "% fn"5 5.000000 # & d는 20 진수를 인수로 전달할 수 있습니다. printf "% d 개의 주문이 % d 달러로 평가됩니다 .n"500 20 달러 상당의 주문 500 건.

읽기 : 표준 입력에서 한 줄을 읽습니다 (예 : 키보드를 통해 데이터를로드하는 데 사용되는 모듈). 다음과 같은 옵션을 전달할 수 있습니다. -t 읽기 제한 시간을 제공합니다. -a 각 단어가 aname 배열의 위치에 할당되도록합니다. -d 행 끝에 기록되는 구분 기호를 사용합니다. 다른 사람들 중에서.

echo "이름을 입력하고 ENTER를 누르세요"# 변수 이름 읽기 이름 읽기 echo "이름은 $ 이름입니다"

유형 : 명령과 그 동작을 설명합니다. 각 명령에 대한 데이터 정의를 찾는 것이 유용 할 수 있습니다.

type –a '['#type은 [쉘 내장 명령입니다 [쉘 내장 명령입니다. # -a는 이름이 입력 된 실행 파일이 포함 된 디렉토리를 # 찾는 것을 허용합니다. [is / usr / bin / [

ulimit : 특정 시스템 리소스의 액세스 및 사용을 프로세스로 제한하며, 관리 변경을 허용하거나 다른 유형의 사용자를 대상으로하는 프로그램에 이상적입니다. 한계를 설정할 때 한계의 킬로바이트를 나타내는 숫자를 작성합니다.

# 우리는 현재 한계를 볼 수 있습니다. ulimit –a # -f는 사용자가 512000 Kb (500 #Mb)보다 큰 파일을 만들 수 없도록 제한합니다. ulimit –f 512000 # -v는 프로세스의 가상 메모리를 제한합니다. ulimit –v 512000

대기 : 특정 프로세스 또는 작업이 계속 진행될 때까지 기다립니다.

# 스크립트는 pid # 2585 프로세스가 수행되기를 기다립니다.

2585 대기

스크립트에 추가 할 수있는 다른 유용한 명령은 기호로 표시됩니다.

!! : 마지막 명령을 다시 실행하십시오.

wer : "wer"표현식으로 시작된 마지막 명령을 실행합니다.

'==', '! =', '>', '<', '> ='및 '<=': 관계 연산자.

| : 두 개의 정규식을 결합하는 데 일반적으로 사용되는 OR 연산자입니다.

: 표현식의 형식을 지정할 수있는 이스케이프 명령입니다. 예 : a는 소리 경고, n은 줄 바꿈, b는 백 스페이스 등입니다.

Juan Carlos Ortiz에게 감사드립니다!

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   중간 어려움

    큰! 어쨌든, 2 개의 코멘트 : Ubuntu 태그는 일반적인 것을 일반화하기 때문에 절반이 너무 많습니다. 그리고이 튜토리얼이 계속 발전한다면 서로 연결되어 있으면 좋을 것입니다….
    그 외에는이 움직임이 흥미 롭다!

  2.   Linux를 사용합시다

    좋은 공헌! 큰!

  3.   조반니 에스코바르 소사

    문제에 대해 더 자세히 알고 싶은 사람들을위한 참조 만 누락되었습니다. 우리 나라에서 찾기 쉽지는 않지만 좋은 것들은
    -Linux 명령, 편집기 및 쉘 프로그래밍에 대한 실용적인 가이드, Mark Sobell (8 장)
    -Pro Bash Programming, Chris FA Johnson (이는 다른 참고 자료 나 조금 더 많은 지식이있는 사람들을위한 것이지만).

    좋은 기사.

  4.   Linux를 사용합시다

    좋은 데이트! 감사합니다!

  5.   파트 리시오 도란 테스 자 마른

    : @ "다음으로 로그인"기능은 이전 댓글을 삭제 했으므로 더 자세히 요약하겠습니다.
    작업 -cp
    bash : 작업 : -c : 잘못된 옵션
    jobs : 사용법 : jobs [-lnprs] [jobspec…] 또는 jobs -x 명령 [args]

    -eq -gt -lt는 포럼과 포럼 사이에서 소수점 변수를 허용하지 않습니다. bc가 좋은 동맹이라는 것을 발견했습니다.
    if [`echo 9.999> 10 | bc` -eq 1]; 그때
    echo "9.999가 10보다 큽니다. 프로세서가 계속 작동하는지 확인하십시오."
    그렇지 않으면
    echo«9.999는 10보다 크지 않으며 모든 것이 정상적으로 작동합니다.
    fi

  6.   브루클린에서 아님

    이 게시물은 bash 스크립팅의 모든 일반성을 매우 잘 요약합니다.
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    이 사이트에서 bash 특성에 대한 많은 질문과 답변을 찾을 수 있습니다.
    http://unix.stackexchange.com/questions/tagged/bash

    다음은 정말 멋진 스크립트입니다. 다른 사람의 스크립트를 읽고 배울 수 있습니다.
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   브루클린에서 아님

    bash를 제외하고는 당신이 말하는 것에 맞습니다. 내가 본 모든 시스템에는 / bin / bash에 bash가 있습니다.

    그러나 python, perl, ruby ​​등의 경우에는 사용하는 것이 좋습니다. 나는한다

  8.   프로듀서이자 유일한 멤버 인 Guille

    우연히도 대학에서 우리는 bash 스크립팅을 사용하므로 데이터는 10입니다.

  9.   알렉스 VI

    PDF 버전을 다운로드하면 좋을 것입니다! 😀

  10.   마르코 안토니오 데 푸엔테스

    아주 좋은 사이트입니다. 마침내 유용한 것을 찾았습니다. 감사합니다.