쉘 스크립팅에 대한 초보자 안내서 기본 사항
"쉘 스크립팅"이라는 용어는 Linux 포럼에서 자주 언급되지만, 많은 사용자는 익숙하지 않습니다. 이 쉽고 강력한 프로그래밍 방법을 배우면 시간을 절약하고 명령 줄을 더 잘 배우며 지루한 파일 관리 작업을 없앨 수 있습니다..
쉘 스크립팅이란 무엇입니까??
리눅스 사용자라면 명령 행을 가지고 놀 수 있습니다. 좋든 싫든,이 인터페이스를 통해 가리키고 클릭하는 것보다 훨씬 쉽게 할 수있는 것들이 있습니다. 명령 행을 많이 사용할수록 그 잠재력을 더 많이 볼 수 있습니다. 자, 커맨드 라인 자체는 하나의 프로그램입니다 : 쉘. 오늘날 대부분의 리눅스 배포판은 Bash를 사용합니다. 이것은 여러분이 실제로 명령을 입력하는 것입니다..
자, Linux를 사용하기 전에 Windows를 사용하는 여러분 중 일부는 배치 파일을 기억할 것입니다. 이것들은 당신이 실행할 명령으로 채울 수있는 거의 텍스트 파일이 아니며 Windows는 차례로 명령을 실행합니다. 고등학교 컴퓨터 실에서 게임을 실행하거나 시스템 폴더를 열거 나 단축키를 만들지 못했던 것처럼 일을 끝내는 것이 영리하고 깔끔한 방법이었습니다. Windows에서 배치 파일은 유용하지만 쉘 스크립트를 싼 모방으로 만듭니다..
셸 스크립트를 사용하면 명령을 체인으로 프로그래밍하고 배치 파일과 마찬가지로 시스템에서 스크립트 이벤트로 명령을 실행할 수 있습니다. 또한 명령 대체와 같은 훨씬 더 유용한 기능을 허용합니다. date와 같은 명령을 호출하고 파일 이름 지정 체계의 일부로 출력을 사용할 수 있습니다. 백업을 자동화 할 수 있으며 복사 된 각 파일의 이름 끝에 현재 날짜가 추가 될 수 있습니다. 스크립트는 명령의 호출이 아닙니다. 그것들은 그들 자신의 권리입니다. 스크립팅을 사용하면 'for'루프, if / then / else 문과 같은 프로그래밍 기능을 운영 체제의 인터페이스에서 직접 사용할 수 있습니다. 그리고 이미 알고있는 것을 사용하기 때문에 다른 언어를 배울 필요가 없습니다. 명령 줄.
그것이 스크립팅의 힘입니다. 대부분의 주요 프로그래밍 언어의 스테이플을 배우면서 이미 알고있는 명령으로 프로그래밍 할 수 있습니다. 반복적이고 지루한 일을해야합니까? 그것을 스크립트! 정말로 뒤얽힌 명령에 대한 바로 가기가 필요하십니까? 그것을 스크립트! 정말 사용하기 쉬운 커맨드 라인 인터페이스를 만들고 싶습니까? 스크립트하기!
시작하기 전에
스크립팅 시리즈를 시작하기 전에 몇 가지 기본 정보를 살펴 보겠습니다. 우리는 기본적으로 대부분의 리눅스 배포판에서 사용하는 bash 쉘을 사용할 것입니다. Bash는 Mac OS 사용자와 Windows의 Cygwin에서도 사용할 수 있습니다. 범용이기 때문에 플랫폼에 관계없이 스크립트를 작성할 수 있어야합니다. 또한 참조 된 모든 명령이 존재하는 한 스크립트는 거의 또는 전혀 조정할 필요없이 여러 플랫폼에서 작동 할 수 있습니다.
스크립팅은 "관리자"또는 "수퍼 유저"권한을 쉽게 사용할 수 있으므로 작업하기 전에 스크립트를 테스트하는 것이 가장 좋습니다. 또한 스크립트를 실행하려는 파일의 백업이 있는지 확인하는 것과 같은 상식을 사용하십시오. 또한 rm 명령에 -i와 같은 올바른 옵션을 사용하는 것이 중요하므로 상호 작용이 필요합니다. 이것은 약간의 불쾌한 실수를 막을 수 있습니다. 따라서 다운로드 한 스크립트를 통해 읽고 잘못된 데이터가있을 경우를 대비하여 데이터에주의하십시오..
핵심은 스크립트가 일반 텍스트 파일입니다. 텍스트 편집기를 사용하여 gedit, emacs, vim, nano ...이 목록을 작성할 수 있습니다.이 목록은 계속됩니다. 서식있는 텍스트 또는 Word 문서가 아닌 일반 텍스트로 저장하십시오. 나노가 제공하는 사용의 용이함을 사랑하기 때문에 나는.
스크립트 사용 권한 및 이름
스크립트는 프로그램처럼 실행되며,이를 위해서는 적절한 권한이 있어야합니다. 다음 명령을 실행하여 스크립트를 실행 가능하게 만들 수 있습니다.
chmod + x ~ / somecrazyfolder / script1
이렇게하면 누구나 특정 스크립트를 실행할 수 있습니다. 사용자에게만 사용을 제한하려면 대신 다음을 사용할 수 있습니다.
chmod u + x ~ / somecrazyfolder / script1
이 스크립트를 실행하려면 적절한 디렉토리에 cd하고 다음과 같이 스크립트를 실행해야합니다.
cd ~ / somecrazyfolder
./ script1
더 편리하게 만들려면 홈 디렉토리의 "bin"폴더에 스크립트를 넣을 수 있습니다.
~ / bin
많은 현대의 배포판에서이 폴더는 더 이상 기본적으로 만들어지지 않지만 만들 수 있습니다. 일반적으로 실행 파일은 다른 사용자가 아닌 사용자에게 속한 곳에서 저장됩니다. 스크립트를 여기에 넣으면 cd 명령을 사용하지 않고 다른 명령과 마찬가지로 이름을 입력하여 실행할 수 있습니다. './'접두사.
스크립트 이름을 지정하기 전에 다음 명령을 사용하여 해당 이름을 사용하는 프로그램이 설치되어 있는지 확인해야합니다.
어떤 [명령]
많은 사람들이 초기 스크립트의 이름을 "테스트"로 지정하고 명령 줄에서 실행하려고하면 아무 일도 일어나지 않습니다. 이것은 인수없이 아무것도 수행하지 않는 test 명령과 충돌하기 때문입니다. 스크립트 이름이 명령과 충돌하지 않는지 항상 확인하십시오. 그렇지 않으면 의도하지 않은 작업을 수행 할 수 있습니다.!
스크립팅 지침
앞서 언급 한 것처럼 모든 스크립트 파일은 본질적으로 일반 텍스트입니다. 그렇다고해서 모든 것을 원하는대로 쓸 수는 없습니다. 텍스트 파일을 실행하려고 할 때 쉘은 스크립트인지 아닌지와 모든 것을 올바르게 처리하는 방법에 대한 단서를 파싱합니다. 이 때문에, 당신이 알아야 할 몇 가지 지침이 있습니다..
- 모든 스크립트는 "#! / bin / bash"
- 모든 새로운 줄은 새로운 명령입니다.
- 주석 행은 #
- 명령은 ()로 둘러싸여 있습니다.
해시 뱅 해킹
쉘이 텍스트 파일을 파싱 할 때 파일을 스크립트로 식별하는 가장 직접적인 방법은 첫 번째 줄을 만드는 것입니다.
#! / bin / bash
다른 쉘을 사용하는 경우 여기에서 경로를 대체하십시오. 주석 행은 해쉬 (#)로 시작하지만, 쾅 (!)과 셸 경로를이 주석 규칙을 우회하는 일종의 해킹으로 추가하면이 줄이 가리키는 셸에서 스크립트가 강제로 실행됩니다.
새 줄 = 새 명령
모든 새로운 줄은 새로운 명령 또는 더 큰 시스템의 구성 요소로 간주되어야합니다. 예를 들어 if / then / else 문은 여러 행을 인수하지만 해당 시스템의 각 구성 요소는 새로운 행에 있습니다. 이전 명령을 절단하고 다음 줄에서 오류를 줄 수 있으므로 명령을 다음 줄로 넘겨서는 안됩니다. 텍스트 편집기가이를 수행하는 경우 텍스트 줄 바꿈을 해제하여 안전면에 놓아야합니다. ALT + L을 치는 나노 비트에서 문자 배치를 끌 수 있습니다..
댓글 #s와 자주 사용
#을 사용하여 행을 시작하면 그 행은 무시됩니다. 이렇게하면 주석 행으로 바뀌며, 이전 명령의 출력 또는 다음 명령의 결과를 상기시킬 수 있습니다. 다시 말하지만 텍스트 줄 바꿈을 해제하거나 해시로 시작하는 여러 행에 주석을 달 수 있습니다. 많은 댓글을 사용하는 것이 좋은 습관입니다. 다른 사람들이 스크립트를 더 쉽게 조정할 수 있기 때문입니다. 유일한 예외는 전술 한 Hash-Bang 해킹이므로,! s를 따르지 마십시오. ;-)
명령은 괄호로 묶입니다.
옛날에는 명령 대체가 한 번의 눈금 ( ', ~ ~ 키 공유)으로 수행되었습니다. 우리는 아직이 문제를 다루지 않을 것입니다. 그러나 대부분의 사람들이 기초를 배우고 나면 탐험을 떠나기 때문에 괄호를 대신 사용하는 것이 좋습니다. 주로 다른 명령 안에 명령을 집어 넣을 때 - 괄호가 더 잘 작동하기 때문입니다.
첫 번째 스크립트
파일을 복사하고 파일 이름 끝에 날짜를 추가 할 수있는 간단한 스크립트부터 시작해 보겠습니다. "datecp"라고 부르 자. 먼저, 그 이름이 무엇인가와 충돌하는지 확인해 봅시다 :
which 명령의 출력이 없음을 알 수 있으므로이 이름을 사용하도록 설정되었습니다..
~ / bin 폴더에 빈 파일을 만듭니다.
~ / bin / datecp를 터치합니다.
그리고 잊어 버리기 전에 권한을 변경합시다.
스크립트를 작성해 보겠습니다. 선택한 텍스트 편집기에서 해당 파일을 엽니 다. 내가 말했듯이, 나는 나노의 단순함을 좋아한다..
nano ~ / bin / datecp
그리고 선행 조건의 첫 번째 줄에이 스크립트가 수행하는 작업에 대한 설명을 입력 해 보겠습니다..
다음으로 변수를 선언하겠습니다. 만약 당신이 대수학을 택했다면 아마 그게 무엇인지 알 것입니다. 변수를 사용하면 정보를 저장하고 정보를 저장할 수 있습니다. 변수는 다른 곳에서 참조 될 때 "확장"할 수 있습니다. 즉, 이름을 표시하는 대신 저장된 내용을 표시합니다. 나중에 동일한 변수에 다른 정보를 저장하도록 지시 할 수 있으며 그 이후에 발생하는 모든 명령어는 새로운 정보를 사용합니다. 정말 멋진 자리 표시 자입니다..
변수로 무엇을 넣을 것인가? 자, 날짜와 시간을 저장합시다! 이렇게하기 위해 우리는 date 명령을 호출 할 것입니다..
date 명령의 출력을 빌드하는 방법은 아래 스크린 샷을 참조하십시오.
%로 시작하는 다른 변수를 추가하여 명령의 출력을 원하는 것으로 변경할 수 있음을 알 수 있습니다. 자세한 내용은 date 명령의 매뉴얼 페이지를 참조하십시오..
date 명령의 마지막 반복 "date + % m_ % d_ % y- % H. % M. % S"를 사용하여 스크립트에서 사용하십시오..
우리가이 스크립트를 지금 저장했다면, 우리는 그것을 실행할 수 있었고 기대했던 것처럼 date 명령의 결과를 얻을 수있었습니다 :
하지만 뭔가 다른 것을 해보 죠. 이 명령에 date_formatted와 같은 변수 이름을 지정하겠습니다. 이에 대한 올바른 구문은 다음과 같습니다.
변수 = $ (명령 -options 인수)
그리고 우리를 위해, 우리는 이것을 다음과 같이 구축 할 것입니다.
date_formatted = $ (날짜 + % m_ % d_ % y- % H. % M. % S)
이것이 우리가 명령 대체라고 부르는 것입니다. 우리는 근본적으로 bash에게 변수 "date_formatted"가 나타날 때마다 괄호 안에 명령을 실행한다고 말하고 있습니다. 그런 다음 명령의 결과가 변수 이름 대신 표시되어야합니다. "date_formatted".
다음은 스크립트 예제입니다.
출력에는 두 개의 공백이 있습니다. echo 명령의 따옴표 안에있는 공백과 변수 앞의 공백이 모두 표시됩니다. 공백을 표시하지 않으려면 공백을 사용하지 마십시오. 또한이 추가 된 "echo"라인이 없으면 스크립트는 절대 출력을 제공하지 않습니다..
우리 대본으로 돌아 가자. 다음 명령의 복사 부분에 추가하자..
cp -iv $ 1 $ 2. $ date_formatted
그러면 -i 및 -v 옵션과 함께 copy 명령이 호출됩니다. 전자는 파일을 덮어 쓰기 전에 확인을 요청할 것이고, 후자는 파일에 명령 줄에 무엇이 있는지 표시 할 것입니다.
다음으로, "$ 1"옵션을 추가 한 것을 볼 수 있습니다. 스크립팅 할 때 달러 기호 ($) 뒤에 번호가 붙으면 스크립트가 호출되었을 때 번호 매겨진 인수를 나타냅니다. 예를 들어, 다음 명령에서 :
cp -iv Trogdor2.mp3 ringtone.mp3
첫 번째 인수는 "Trogdor2.mp3"이고 두 번째 인수는 "ringtone.mp3"입니다..
스크립트를 다시 보면, 우리는 두 개의 인수를 참조하고 있음을 알 수 있습니다.
즉, 스크립트를 실행할 때 스크립트를 올바르게 실행하기 위해 두 가지 인수를 제공해야합니다. 첫 번째 인수 $ 1은 복사 될 파일이며 "cp -iv"명령의 첫 번째 인수로 대체됩니다.
두 x 째 인수 인 $ 2는 동일한 명령의 출력 파일로 작동합니다. 그러나, 당신은 또한 그것이 다른 것을 볼 수 있습니다. 우리는 마침표를 추가했으며 위에서 "date_formatted"변수를 참조했습니다. 이것이하는 일에 호기심?
다음은 스크립트가 실행될 때 일어나는 일입니다.
출력 파일은 내가 $ 2에 입력 한 것과 같이 마침표 다음에 date 명령의 출력으로 나열되어 있음을 볼 수 있습니다! 말이 맞아.?
이제 datecp 명령을 실행하면이 스크립트가 실행되어 파일을 새 위치로 복사하고 파일 이름의 끝 부분에 날짜와 시간을 자동으로 추가 할 수 있습니다. 유용한 자료 보관에 유용합니다.!
쉘 스크립팅은 OS를 자신에게 맞게 만드는 핵심입니다. 새로운 프로그래밍 언어를 배울 필요도 없습니다. 집에서 몇 가지 기본 명령을 사용하여 스크립팅을 시도하고이 스크립트를 사용할 수 있는지 생각해보십시오..
당신은 대본니까? 초보자를위한 조언이 있습니까? 의견에 귀하의 의견을 공유하십시오! 이 시리즈에는 더 많은 것이 있습니다.!