Bash를 사용하여 자신 만의 스크립트 만들기

Linux 배우기

우리가 사용하고있는 리눅스 배포판에 관계없이, ― 내가 가장 좋아하는 것은 우분투라는 것은 의심 할 여지가 없습니다 ― 우리가이 시스템을 사용하자마자, 자동화 요구. 즉 : 자신의 명령 개인화 된 방식으로 특정 명령을 수행합니다. 이러한 요구는 특정 원인으로 인해 발생할 수 있습니다.

  • 구문 단순화 우리가 일반적으로 실행하는 명령의.
  • 모든 것을 포괄하는 조치를 취하십시오. 시스템에서 예측할 수없는 필요 운영.
  • 순서 순서 우리가 열심히 반복합니다.

bash 스크립트는 모든 디렉토리에서 /에서 실행할 수 있지만 일반적으로 이러한 스크립트를 호스팅 할 디렉토리를 만듭니다.. 나의 경우에는:

$ mkdir /home/pedro/.bin

나는 이것을 믿는다 디렉토리 (이름 앞에 마침표가 표시되어 숨겨 짐) 내가 사용하는 모든 스크립트를 보관합니다. 디렉토리 이름이 숨겨져 있다는 것은 명시 적으로 달리 지정하지 않는 한 다른 의미가 없습니다. 그래픽 모드에서 파일 뷰어에서 / home / pedro를 볼 때 나타나지 않습니다..

이제 당신은 Linux에도 거기에 표시되어야한다고 알립니다. (/home/pedro/.bin) 터미널에서 실행되는 주문.

$ PATH=$PATH;/home/pedro/.bin

이런 식으로 시스템은 그곳에서 주문을 찾습니다. 세션이 끝날 때까지. 이 연결을 영구적으로 만들려면:

$ sudo nano /etc/environment

그리고 우리는 추가합니다

:/home/pedro/.bin

PATH 줄 끝에서 포함하는 디렉토리 주소 앞의 콜론을 잊지 않는 것이 매우 중요합니다. 이것이 추가 메커니즘입니다..

첫 번째 단계별 스크립트

제 경우에는 다음과 같이 파일을 생성합니다.

$ touch ~/.bin/donde

편집하려면 선호하는 편집기를 사용하거나 다음 표시를 따를 수 있습니다.

$ gedit ~/.bin/donde &

그리고 다음 내용을 추가합니다.

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

스크립트 분석

첫 번째 전화선 «오두막»(#! / Usr / bin / env bash) Linux에보고하도록 요청 bash 쉘이있는 위치 다음은 bash의 요구 사항에 따라 실행됩니다. 이 예방책 확인하는 것이 편리합니다 스크립트는 모든 설치에서 작동합니다.. 또 다른 가능한 오두막 그가 웃었다:

#!/bin/bash

그들 사이의 차이점은 매우 이상 할 수 있으며 설명하겠습니다. 이 마지막에 나는 우리 시스템에서 bash 쉘은 / bin / bash 주소에 있습니다.. 그러나 내가 스크립트에서 제안하는 곳 어디 있는지 모르겠어요 bash 인터프리터. 시스템에 해당 주소를 제공하도록 요청합니다..

세 번째 줄 : 보시다시피 두 번째 줄은 if입니다. bash의 경우 문자«$#« 명령 줄에서 전달하는 매개 변수의 수를 포함합니다.. 따라서»if [$ # -lt 1];» 문자 그대로 "매개 변수 수가 1 미만인 경우"를 의미합니다..

네 번째 줄 : 그때 (문자 그대로 영어에서 번역), 여기에 다음에 오는 것이 표시됩니다. 조건 평가시 실행됩니다. if 진실하다: 즉, 매개 변수의 수가 1 미만, 즉 XNUMX입니다.

다섯 번째 줄 : 매개 변수없이 스크립트를 실행하면 터미널에«매개 변수를 전달해야합니다»가 표시됩니다.

여섯 번째 줄: 다음 작업이 실행됨을 나타냅니다. 우리가 선언 한 조건이 참이 아닐 때.

일곱 번째 줄 : Se 명령 실행«어디에« 우리가 전달한 내용과 함께 첫 번째 매개 변수.

여덟 번째 줄 :«포함fi»블록이 끝남을 나타냅니다. if.

스크립트 테스트

그것은 중요하다 쓰기 권한 추가 스크립트에 :

$ chmod -x ~/.bin/donde

이것이 없으면 "권한 거부"오류가 나타납니다.. 그 후에 스크립트를 실행할 수 있습니다.

$ donde php

PHP 바이너리, 소스 파일, 매뉴얼 페이지의 위치를 ​​보여줄 것입니다. 그런 것 :

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

다시 캡핑

  • 우리는 스크립트를 저장할 ".bin"디렉토리.
  • 우리가 제공하다 명령 검색에이 디렉토리를 포함하도록 Linux에 정보 제공.
  • 스크립트를 만듭니다.
  • 차이점 다른 오두막.
  • 사용 $ #로 전달 된 매개 변수의 수.
  • 사용 첫 번째 매개 변수 $1.

이 스크립트가 도움이되기를 바랍니다.


코멘트를 남겨주세요

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

*

*

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

  1.   미겔

    매우 훌륭하고 잘 설명되어 있지만 매개 변수는 무엇을 의미합니까?

    1.    Pedro Ruiz Hidalgo 자리 표시 자 이미지

      감사합니다 Miguel!

      프로그램, 기능 또는 시스템에 제공되는 모든 보완 정보를 매개 변수로 이해합니다. 번거로울 수 있으므로 몇 가지 예를 들어 답변 드리겠습니다.

      a.txt 파일을 b.txt 파일에 복사하는 linux 명령에서 다음을 작성합니다.

      $ CP a.txt b.txt

      여기서 cp 프로그램은 두 파일의 이름 인 두 개의 매개 변수를받습니다. 첫 번째 (반드시 존재해야 함) a.txt와 두 번째 b.txt입니다.

      또 다른 예 : 다음 명령을 사용하여 콘솔에서 인쇄하도록 보내는 경우

      $ lp file.pdf

      이 경우 "file.pdf"는 lp 프로그램의 매개 변수입니다.

      나는 당신의 의심을 만족 시켰기를 바랍니다.

      안부

  2.   미겔

    내 의견이 나오지 않고 존중이 부족합니다.이 포럼으로 돌아 가지 않습니다.

    1.    Pedro Ruiz Hidalgo 자리 표시 자 이미지

      나는 무슨 일이 있었는지 모르겠다. 어쨌든 이것이 출판되었다.

      인사말.