2016-12-18 5 views
0

와 기능을 받아들이는 bash는 별칭을 만들려하고 난

내가 이런 식으로 할 경우
ssf host 

에 있습니다 내 자동 완성 (zsh, iterm)이 작동하지 않습니다. 인수를 허용하는 별칭에서 함수를 호출하는 것을 생각하고있었습니다. 어떤 도움이 필요합니까?

+0

나는 우리에게 기능을 제안한다. – Cyrus

+0

자동 완성 기능이 작동하지 않습니다. 나는 그것이 ssh로서 첫번째 단어를 본 다음 모든 호스트를 나열하는 것으로 생각한다. –

+0

@shaileshgupta : 귀하의 요구 사항은 무엇입니까? – Inian

답변

0

인수가이 의사 코드 비슷한 것 받아들이는 별칭을 생성하기위한 빠르고 간단한 방법 :

#!/bin/bash 

declare -r -a n=('$1' '$2' '$3' '$4' '$5') 

function main() { 

    command -i ${n[0]} -f ${n[1]} --another-arg ${n[2]} 
} 

main 

나는 모든 사용자가 사용할 수있는 스크립트, 나는 보통 sudo su로 로그인하는 것을 원하는 경우 루트라면 파일을 실행 가능하게 만들고 스크립트 파일을 /usr/bin/ 디렉토리에 저장합니다. 이렇게하면 스크립트의 이름을 터미널 명령으로 사용할 수 있습니다. 루트 사용자 만 액세스 할 수있게하려면 루트 중에 스크립트에 적절한 사용 권한을 적용하십시오 (chown root script.sh). 사용자 정의 명령 이름으로 스크립트를 호출하려면 스크립트의 이름을 사용할 별명으로 지정하십시오.

의사 코드

declare -r -a 설명하면은 읽기 전용 배열을 생성하는 구문이다. n=은 도구에서 사용하는 각 인수의 값을 보유 할 배열 변수입니다. ('$1''$2''$3''$4''$5')은 최대 5 인수의 인수 변수입니다. $1이 첫 번째 인수가되고 $2은 다음이되고 마지막은이됩니다. 이러한 각 인수 변수는 스크립트 별칭을 사용할 때 명령 줄에 입력하는 값을 보유합니다.

다음은 실행할 명령을 저장할 main() 함수입니다. 이 main() 함수 안에 n 변수 (예 : ${n[0]})가있는 대괄호를 볼 수 있습니다. 이게 뭐야, 너의 n 배열의 가치를 부르고있다. bash의 배열 값은 1으로 시작하는 대신 0으로 시작하는 숫자로 호출됩니다. 따라서 0이 첫 번째 값이거나 $1이고 1이 두 번째 값이거나 $2입니다.

같은 방법으로 별칭을 만들기위한 또 다른 방법은 당신이 아래에 로그인 한 사용자에 대한 당신의 .bashrc 파일을 편집하고 .bashrc에 방법. 따라서 사용자에 따르면 :

cd 명령을 입력하고 현재 사용자에 대한 .bashrc가있는 홈 디렉토리로 이동하려면 enter를 누르십시오.

cd 

그런 다음 nano를 사용하여 .bashrc를 엽니 다. 파일의 맨 아래에

nano .bashrc 

스크롤은 다음을 추가 : 별칭을 설정

alias your_alias="bash path/to/your/bash/script.sh' 

되면, ctrl+x 입력 파일을 저장 할 수 있습니다. 나노가 확인하라는 메시지를 표시합니다. y을 입력하여 저장을 확인하십시오.다음 번에 .bashrc을 다시로드하여 즉시 명령을 사용하거나 다음 부팅 할 때 다시 부팅 할 수 있도록 다시 부팅 할 수 있습니다. .bashrc을 다시로드하려면 다음을 수행하십시오.

source ~/.bashrc 

그리고 thats it! 별칭이 준비되었습니다. 이제 별칭을 일반 CLI 도구 명령으로 사용하고, 필요에 따라 인수를 추가하고 Enter 키를 누르면 스크립트가 제대로 작동합니다.

고지

이 방법이 가장 효과적이나 가장 자신의 별칭을 사용하여 확보되지 않을 수 있습니다. 그러나 그들은 당신을 시작하게 충분해야합니다. 더 정확하고 유익한 정보를 제공하기 위해이 답변을 추가하거나 수정하려면 (부정확 한 경우) 기꺼이 그렇게하십시오. 희망이 도움이됩니다.