스크립트를 작성하여 이보다 적은 코드로 실행 가능하게 만드는 방법이 있습니까? ‘Hello World'”

실행 가능한 스크립트를 작성하는 코드

touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh



답변

전체 touch명령을 생략하고 사용할 필요는 없습니다 sudo. 명령 행을 더 짧게하려면 bash내역 확장 을 사용하여 파일 이름을 두 번째로 저장하고 불필요한 공백을 생략 할 수 있습니다.

echo "echo 'Hello World'" >script.sh&&chmod +x !#:3

히스토리 확장은 !#:3현재 명령 행의 네 번째 단어 (여기서는 filename)로 대체 됩니다 script.sh. 물론 첫 번째 명령을 수정하는 경우 다음과 같이 조정해야합니다.

>script.sh echo "echo 'Hello World'"&&chmod +x !#:1

유효한 스크립트에는 shebang이 필요합니다 .

>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1

이 일련의 명령이 더 자주 필요한 경우 함수 정의를 권장 합니다 . 이렇게하면 함수 이름 만 입력하면됩니다. 더 길지만 비슷하게 적용 할 수있는 방법은 파일 이름을 보유한 변수를 사용하는 것입니다.

f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f

파일 이름에 특수 문자가 포함되어 있으면 올바르게 인용하는 것을 잊지 마십시오 .


답변

install명령 (GNU의 일부와 함께로 coreutils cp, mv, rm또한 소유권과 권한을 설정하고 필요에 따라 부모 디렉토리를 작성하는 동안 파일을 복사 할 수 있습니다, 등). 기본적으로 새 파일을 실행 가능하게 만듭니다. ‘ -‘을 이해하지 못하지만 /dev/stdin대신 사용할 수 있습니다.

install /dev/stdin script.sh <<< "echo Hello World"

위 의 내용은 stdin에 텍스트를 제공하기 위해 ‘ here string ‘을 사용합니다.이 텍스트는 배관하는 것보다 약간 짧습니다. echo특별한 의미를 가진 문자가 포함되어 있지 않으면 인용 할 필요가 없습니다.


답변

다음 cat과 같은 작업 에 사용하는 것을 선호합니다 .

cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'Enter
Ctrl+D


답변

전체 chmod를 생략하고 에코 전에 umask를 대신 사용할 수도 있습니다. 몇 바이트를 절약해야합니다. Shebang은 모든 쉘 (bourne 및 C)에서 이해하는 명령을 사용하는 한 선택 사항입니다.


답변