2012-06-21 2 views
3

우선, 어휘 교정을하고 싶습니다. 나는 터미널이 쉘의 유형/버전 인 bash 환경을 제공한다고 가정한다. 이 올바른지?bash 함수 저장

저는 개발을 가속화하기 위해 개발 과정에서 bash와 shell을 더 많이 사용하려고합니다. 그러나 나는 자라면서 배웠던 명령을 벗어나는 기초를 이해하기 시작했다.

필자는 반복적 인 작업을 자동화하기 위해 터미널에서 기능을 만들기 시작했습니다. 내가 터미널을 빠져 나올 때까지 이것은 모두 발견과 멋쟁이 다.

쉘을 인스턴스에서 실행한다고 가정하므로 터미널을 종료하면 인스턴스가 손실됩니다. 나는 shell이 ​​.bash_history를 남기고 또한 'history'를 사용하여 접근 할 수 있음을 발견했다. 여기서 나는 오래된 세션에서 나의 옛 기능을 볼 수있다. 그러나 물론 그들은 더 이상 실행되지 않습니다.

쉘 스크립트를 만들 수 있다는 것을 알고 있지만 컴파일 문제는 물론 스크립트 저장 위치에 더 많은주의를 기울여야합니다.

질문 : command() {}를 사용하여 bash 스크립트를 만들 때 터미널을 닫은 후에도 계속 유지되지 않습니다. 쉘 스크립트를 사용하지 않고도 기존 기능에 액세스 할 수있는 새로운 터미널 세션에서 그렇게 할 수 있습니까?


편집 : 나는 또한 내가이 사용하는 전통적인 수단에 문제를 발견하기 위해 광범위하게 시도 언급하지만, 종종 쉘의 다른 측면에 직접 것 "저장"을 검색어에 "종료"싶었다.

+0

아닙니다. "터미널"은 쉘이 화면에 출력하는 텍스트를 화면의 픽셀로 바꾸고 키보드로 누른 텍스트를 쉘로 보내는 텍스트로 바꾸는 프로그램입니다. 이 질문은 모두 터미널에 관한 것이 아니라 셸에 관한 것입니다. 나는 그것을 적절히 재 점검 할 것이다. – LeoNerd

답변

1

첫 번째 진술이 정확합니다. 터미널 인스턴스는 쉘 유형 (bash, sh, csh)을 실행합니다.

~/.bashrc 파일에 추가하거나 저장된 스크립트 경로 (컴파일 필요 없음)를 PATH 변수에 추가 할 수 있습니다.

언제든지 빠른 액세스를 위해/usr/local/bin에 스크립트를 복사 할 수도 있습니다. 상대방의 위치를 ​​추적 할 필요가 없습니다. 이것은 매우 편리하며 다른 사용자가 스크립트를 사용할 수있게합니다 (또는 권한이 올바르게 설정되지 않은 경우)

2

기록에서 명령을 실행할 수있는 방법은 배시 참조 설명서의 Using History Interactively 섹션을 참조하십시오.

예를 들어, !?foo을 입력하고 을 입력하면을 입력하면 "foo"가 포함 된 가장 최근 명령이 실행됩니다. 나는 내 ~/.bashrcshopt -s histverify histreedit을 가지고 있기 때문에 명령을 편집하고 즉시 실행할 필요없이 명령을 확인할 수 있습니다.

키 입력에 대한 Commands For Manipulating The History 섹션을 참조하십시오. 리콜 및 실행을 위해 기록 항목을 검색하는 데 사용할 수 있습니다. R와 "foo는"이 포함 된 가장 최근의 명령을 기억합니다 foo를 입력 - Ctrl 키을 눌러 예를 들어

. Ctrl - 을 추가로 눌러 계속 일치하는 추가 명령을 찾을 수 있습니다. Press 현재 표시된 것을 실행할 준비가 되었으면을 입력하거나 검색을 중단하려면 Ctrl - g을 입력하십시오.당신이 뒤로 검색을 시작했습니다 후 역사를 통해 앞으로 검색 - 당신이 당신의 ~/.bashrcstty -ixon를 추가하는 경우

는, 당신은 Ctrl 키를 사용할 수 있습니다.

물론 ~/.bashrc을 편집하여 기능을 저장하고 추가 할 수 있습니다. 필자는 내가 만든 파일에 내 기능을 유지하고 ~/bin/functions이라고 말한 다음 ~/.bashrc에 줄을 추가하여 해당 파일을 원본으로 사용하는 것을 선호합니다. 이 줄은 . ~/bin/functions과 같습니다.

더 큰 스크립트는 /usr/local/bin 또는 ~/bin에 저장합니다. 전자는 이미 귀하의 경로에 있어야하며 ~/.bashrc을 편집하여 경로에 후자를 추가 할 수 있습니다.

1

명령 줄에서 함수를 입력 한 후 @Dennis Williamson이 언급 한대로 명령 줄 편집을 사용하여 함수를 호출 할 수 있지만 더 쉬운 방법이 있습니다 (declare -f). 이 명령은 현재의 모든 기능을, 당신은 파일로 리디렉션 할 수 있습니다 배쉬는 Bourne 쉘에 쉘 콘에서 함수 구문을 변경하는 방법

home/user1> function myfunc { 
> echo "Hollow world!" 
> } 

/home/user1> declare -f > myfuncs 
/home/user1> more myfuncs 
myfunc() 
{ 
    echo "Hollow world" 
} 

주의! 다행스럽게도 Bash의 두 버전에는 차이점이 없습니다 (ksh93과 다름).

이 기능을로드해야하는 경우가 간단한 문제입니다 :

/home/user1> source myfuncs 
/home/user1> myfunc 
Hollow world! 

당신은 읽기 전용, 그런데 실행 권한이 필요하지 않습니다. .bashrc과 같이 시작 파일 중 하나에이를 추가 할 수 있습니다 (다른 사람들이 말한 것처럼).