앞에 "$"기호가 있는 복사된 CLI 명령을 실행하는 방법

4160 단어 webdevdevelopmentbash
자신의 책임하에 사용하십시오. 🤓 복사된 코드를 더 쉽게 실행할 수 있는 기능을 구현하기 전에 인터넷이 나쁜 곳이라는 점을 인식하십시오. 명령에 악의적인 의도가 있거나 even includes hidden commands 그럴 가능성이 항상 있습니다.


방금 봤어요 an npm package that makes copying and pasting of shell commands easier . 문서화된 셸 명령에는 코드 블록이 셸 명령임을 나타내는 선행 문자(예: $ )가 포함되는 경우가 많습니다. 그리고 당신이 나와 같을 때, 당신은 항상 명령과 함께 $ npm install whatever 기호를 복사하여 붙여넣기 때문에 터미널에서 $ 오류가 발생합니다.



큰 문제는 아니지만 command not found: $ 기호를 포함하지 않도록 명령을 조심스럽게 복사하거나 명령을 터미널에 붙여넣고 수동으로 달러를 제거해야 합니다. 더 좋은 방법이 있을텐데...

... 그리고 그것이 언급된 npm 패키지가 작동하는 곳입니다. 패키지는 명령줄에서 프록시처럼 작동하는 전역$ 명령을 제공합니다. $ 명령은 단순히 전달된 모든 인수를 실행합니다.
$는 실행$ echo "hello world"으로 이어집니다. echo "hello world"는 기본적으로 $ ls와 동일합니다. 당신은 아이디어를 얻습니다. 🙈

이 명령은 터미널을 집처럼 느끼게 하는 작은 조정 중 하나입니다. 하지만 두 줄의 셸 스크립팅을 사용하여 npm 패키지나 Node.js 없이 동일한 기능을 만들 수 있다고 말하면 어떻게 될까요? 읽어!

선행 ls로 명령을 실행하는 두 줄



시스템에 새 셸 명령을 추가하여 시작하겠습니다. $ 구성을 살펴보십시오. $PATH 환경 변수는 UNIX 시스템에서 실행 파일이 있는 위치를 정의합니다.

그것은 내 컴퓨터$PATH의 단축 버전입니다. 👇

$ echo $PATH

/usr/local/bin:/usr/local/sbin:/Users/stefanjudis/bin:/Users/stefanjudis/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

$PATH$PATH로 모든 다른 위치를 구분하는 긴 문자열입니다. 보시다시피 다양한 : 디렉토리가 있습니다. 내 모든 사용자 정의 명령은 내 집의 bin 디렉토리 – .bin 에 있습니다. 시스템 명령과 사용자 지정 명령을 혼합하고 싶지 않기 때문에 이 위치를 선택했습니다( ~/stefanjudis/.bin , ls 등은 cat 에 있음).

새 명령을 배치할 디렉토리를 선택하십시오.

$ pwd
/Users/stefanjudis/.bin

$ ll
.rwxr--r--  14 stefanjudis  8 Dec  2020 -- $
.rwxr-xr-x 413 stefanjudis  2 Aug  2020 -- git-delete-branch
.rwxr-xr-x 183 stefanjudis 19 May 22:03 -- git-pr-select
.rwxr-xr-x 538 stefanjudis 17 Dec  2020 -- git-select


이 디렉터리에 /bin라는 새 파일을 만듭니다. 예, 맞습니다. 이 파일에는 파일 확장자 같은 것이 포함되어 있지 않습니다. 실제로는 1달러에 불과합니다.
$ 를 사용하여 파일이 실행 가능한지 확인하십시오.

이전에 chmod 755 $ 명령을 사용한 적이 없다면 "UNIX 파일 권한"을 읽어 보십시오.

파일 내용은 두 줄입니다.

#!/bin/zsh
exec "$@"


첫 번째 행은 a Shebang이며 이 파일을 독립 실행형 명령으로 실행할 때 이 파일을 해석하는 데 사용해야 하는 프로그램을 정의합니다. 제 경우에는 chmod 바이너리 – zsh 입니다. #!/bin/zsh도 잘 작동합니다.

그런 다음 #!/bin/bash가 전달된 모든 매개변수를 실행하고 확장합니다. 그리고 그것은 이미 모든 마법입니다!
exec "$@" to avoid parameter expansions 주위에 따옴표를 포함해야 합니다.

두 줄을 포함하는 이 하나의 파일을 사용하여 이제 터미널에서 $@ 및 이러한 모든 "달러 명령"을 실행할 수 있습니다. 🎉



행복한 복사 및 붙여넣기!

편집: "okdjnfweonfe" 및 초기 스크립트에 대한 피드백을 제공해 주셔서 감사합니다. 🙇‍♂️

좋은 웹페이지 즐겨찾기