bash 스크립트의 별칭 대 기능


11

bash 쉘의 별칭과 함수의 차이점과 사용시기를 알고 싶습니다.

함수가 인수를 취할 수 있기 때문에 더 강력하다는 것이 명백합니다. 넷북이있는 도로에서 주로 일하고 에너지와 처리 능력을 절약하고 싶기 때문에 특히 성능 차이에 대해 조금 더 알고 싶습니다. bash 기능을 확장하는 두 가지 방법 중 하나입니다.


1
자존심이 없어도됩니다. 질문이 원하지 않으면 다운 보트가됩니다. 그리고 누군가가 당신이 당신의 질문을 명확히하기를 원한다면, 그는 논평에서 그렇게 말할 것입니다. 사람들이 게시물을 편집하지 못하게하는 것은 요점을 놓치고 있습니다. 이 사이트는 모든 사람이 편집 할 수 있도록 설계되었습니다.
k0pernikus

나는 금지하려고하지 않았지만, 그들이 필요하다고 생각되면 명확하게 설명 할 기회를 주도록 부탁했다. 나는 내가 거의 알지 못하는 주제에 대해 매우 간단한 질문을 한 경험이 있었으며 사람들이 더 복잡한 것에 대해 물어보고 내가 원하는 것을 요구하는 방법을 모르는 방법에 대해 나에게 정정하는 것이 명백하다고 생각하게했습니다. . 물론이 플랫폼의 가장 큰 장점 중 하나는 동료가 편집 할 수 있다는 사실입니다. 저는 그것을 훼손하지 않았습니다. 의견을 보내 주셔서 감사합니다. 제 생각에 :)
MaxAxeHax

답변:


10

별명별명 으로 생각하십시오 . 많이 수행하지만 단축하려는 명령이있을 수 있습니다.

예를 들어, 명령 줄에서 데스크톱으로 바로 이동하려는 경우가 종종 있습니다.

alias desktop="cd ~/Desktop"

그때부터 당신은 입력

desktop

터미널 cd ~/Desktop에서 당신을 위해 수행합니다 .

함수 는 논리를 포함합니다. 함수에서 여러 다른 프로그램을 호출 할 수 있습니다. 간단한 에코 함수가 있습니다.

function e {
                echo $1 
                echo $1 $1
                echo $1 $1 $1                 
           }  

별명을 부르면 별명과 비슷하게 보일 수 있지만

e Hello

귀하의 e ()는 많은 다른 일이 일어날 수 있습니다. 위의 간단한 예입니다.

간단한 사용 사례를 위해 별칭 을 예약해야합니다. 개인적인 예-나는 이렇게 rm명령 을 바꿨다.

alias rm='trash-put'

내가 rm을 할 때마다 디스크에서 삭제하는 대신 휴지통으로 보냅니다. 이것은 실수로 중요한 파일을 실수로 삭제할 수있는 터미널에서 내 서투른 느낌을줍니다.

기억해야 할 함수 는 논리의 조각입니다. 일반적으로 독립형 함수를 사용하지 않습니다. 더 큰 스크립트의 일부일 것입니다. 모든 파일을 가져 와서 파일을 돼지 라틴 버전으로 바꾸는 스크립트를 상상해보십시오. 다른 방법으로 수행하는 것을 무시하십시오.

그러나 할 수있는 일은 디렉토리의 모든 파일을 반복하고 파일 경로를 RenameAsPigLatin 함수에 전달하는 것입니다. RenameAsPigLatin 함수에는 숫자와 관련된 추가 논리가있을 수 있으며, 숫자로 끝나는 파일의 이름을 바꾸지 않기로 결정합니다.

즉시 기능으로 갖는 이점을 볼 수 있습니다. 이 기능은 이상한 규칙으로 이름을 바꾸는 데 집중할 수 있으며 나머지 스크립트는 필요에 따라 다양한 디렉토리를 탐색 할 수 있습니다.


2
제 생각에는 함수를 독립형으로 사용하는 데는 여러 가지 이유가 있습니다. 사실, 나는 별명과 함께 여러 함수가 정의되어 있습니다. 예를 들어, cd를 동일한 이름의 함수로 교체했기 때문에 기능을 희생하지 않고 각 cd 후에 ls를 자동으로 수행 할 수 있습니다. 약간의 논리가 필요하기 때문에 별칭으로 수행 할 수 없습니다.
Scott Severance

3

별칭은 긴 명령을 입력하거나 항상 같은 옵션을 반복하지 않도록 콘솔에서 사용되는 간단한 바로 가기입니다.

전형적인 예는 다음과 같습니다.

alias ll='ls -l'

별명은 대화식 콘솔에서만 작동하며 스크립트에는 사용되지 않습니다.

스크립트 나 콘솔에서 기능을 사용할 수 있지만 스크립트에서 더 자주 사용됩니다.

값으로 대체 된 별명과 달리 함수는 bash 쉘에서 해석됩니다.

함수는 별칭보다 훨씬 강력하며 매우 복잡한 프로그램을 빌드하는 데 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.