우리가 사용하고있는 리눅스 배포판에 관계없이, ― 내가 가장 좋아하는 것은 우분투라는 것은 의심 할 여지가 없습니다 ― 우리가이 시스템을 사용하자마자, 자동화 요구. 즉 : 자신의 명령 개인화 된 방식으로 특정 명령을 수행합니다. 이러한 요구는 특정 원인으로 인해 발생할 수 있습니다.
- 구문 단순화 우리가 일반적으로 실행하는 명령의.
- 모든 것을 포괄하는 조치를 취하십시오. 시스템에서 예측할 수없는 필요 운영.
- 순서 순서 우리가 열심히 반복합니다.
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.
이 스크립트가 도움이되기를 바랍니다.
매우 훌륭하고 잘 설명되어 있지만 매개 변수는 무엇을 의미합니까?
감사합니다 Miguel!
프로그램, 기능 또는 시스템에 제공되는 모든 보완 정보를 매개 변수로 이해합니다. 번거로울 수 있으므로 몇 가지 예를 들어 답변 드리겠습니다.
a.txt 파일을 b.txt 파일에 복사하는 linux 명령에서 다음을 작성합니다.
$ CP a.txt b.txt
여기서 cp 프로그램은 두 파일의 이름 인 두 개의 매개 변수를받습니다. 첫 번째 (반드시 존재해야 함) a.txt와 두 번째 b.txt입니다.
또 다른 예 : 다음 명령을 사용하여 콘솔에서 인쇄하도록 보내는 경우
$ lp file.pdf
이 경우 "file.pdf"는 lp 프로그램의 매개 변수입니다.
나는 당신의 의심을 만족 시켰기를 바랍니다.
안부
내 의견이 나오지 않고 존중이 부족합니다.이 포럼으로 돌아 가지 않습니다.
나는 무슨 일이 있었는지 모르겠다. 어쨌든 이것이 출판되었다.
인사말.