«shell-script» 태그된 질문

쉘 스크립트, 쉘로 해석되는 실행 파일 (bash, zsh 등)에 대한 질문.

9
"#! / path / to / NAME"대신 "#! / usr / bin / env NAME"을 내 방아쇠로 사용하는 것이 더 좋은 이유는 무엇입니까?
나는 다른 사람들로부터 얻은 일부 스크립트는 shebang #!/path/to/NAME을 가지고 있고 다른 스크립트 는 같은 도구를 사용하여 shebang 을 가지고 있음을 알았습니다 #!/usr/bin/env NAME. 둘 다 제대로 작동하는 것 같습니다. 자습서 (예 : Python)에서는 후자의 shebang이 더 낫다는 제안이있는 것 같습니다. 그러나 이것이 왜 그런지 잘 모르겠습니다. 나는 후자의 shebang을 사용하려면 …

3
스크립트에서 변수 할당에 "$ {a : -b}"사용
다른 사람들이 작성한 몇 가지 스크립트 (특히 Red Hat)를 살펴 봤으며 많은 변수가 다음 표기법을 사용하여 할당 VARIABLE1="${VARIABLE1:-some_val}" 되거나 다른 변수가 확장되었습니다. VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" 값을 직접 선언하는 대신이 표기법을 사용하는 요점은 무엇입니까 (예 :) VARIABLE1=some_val? 이 표기법 또는 가능한 오류로 인한 이점이 있습니까? 는 않습니다 :-이러한 맥락에서 특별한 의미를 가지고?

14
Bash에서 별칭 지정시기, 스크립트 작성 시점 및 함수 작성시기는?
이 질문을하는 데 거의 10 년의 Linux 사용 시간이 걸렸습니다. 모든 시행 착오와 무작위 심야 인터넷 서핑이었다. 그러나 사람들은 이것을 위해 10 년이 필요하지 않아야합니다. Linux로 시작한 경우 별칭을 언제 지정하고 언제 스크립트를 작성하고 언제 함수를 작성 해야하는지 알고 싶습니다 . 별칭과 관련하여 인수를 사용하지 않는 매우 간단한 작업에 별칭을 …

5
쉘 스크립트가 공백이나 다른 특수 문자에서 질식하는 이유는 무엇입니까?
또는 강력한 파일 이름 처리 및 셸 스크립트에서 전달되는 다른 문자열에 대한 소개 안내서입니다. 나는 대부분의 시간 동안 잘 작동하는 쉘 스크립트를 작성했다. 그러나 일부 입력 (예 : 일부 파일 이름)에서 질식합니다. 다음과 같은 문제가 발생했습니다. 나는 공간을 포함하는 파일 이름을 가지고 hello world, 그것은 두 개의 별도의 파일로 처리 …


3
sh 스크립트에서 sed를 사용할 때 어떤 문자를 이스케이프해야합니까?
다음 스크립트를 보자. #!/bin/sh sed 's/(127\.0\.1\.1)\s/\1/' [some file] sh( dashhere)에서 이것을 실행하려고 하면 괄호로 인해 실패해야하며 탈출해야합니다. 그러나 백 슬래시 자체를 피할 필요 는 없습니다 (옥텟 사이 \s또는 또는 \1). 여기서 규칙은 무엇입니까? {...}또는 [...]언제 사용해야 합니까? 내가하고 도망 칠 필요가없는 목록이 있습니까?


8
변수가 비어 있거나 공백 만 포함되어 있는지 테스트하려면 어떻게해야합니까?
다음 bash 구문 param은 비어 있지 않은지 확인합니다 . [[ ! -z $param ]] 예를 들면 다음과 같습니다. param="" [[ ! -z $param ]] && echo "I am not zero" 출력이없고 괜찮습니다. 그러나 param하나 이상의 공백 문자를 제외하고 비어있는 경우는 다릅니다. param=" " # one space [[ ! -z $param …

3
파일 내용 비우기
파일에서 모든 항목을 삭제하는 세 가지 방법을 알고 있습니다. 그들은 >filename touch filename filename < /dev/null 이 세 가지 중에서 >filename가장 적은 수의 키 입력이 필요하므로 가장 많이 남용 합니다. 그러나 큰 로그 파일과 작은 파일과 관련하여 세 가지 중 더 효율적인 방법 (더 효율적인 방법이있는 경우)을 알고 싶습니다. 또한 …

3
bash / POSIX 쉘에서 변수를 인용하는 것을 잊어 버린 보안 영향
unix.stackexchange.com을 오랫동안 따라왔다면 echo $varBourne / POSIX 쉘 (예 : zsh 예외)의 목록 컨텍스트에서 (와 같이 ) 인용되지 않은 변수를 남겨두면 매우 특별한 의미가 있음을 알고 있어야합니다. 그럴만한 이유가 없다면하지 말아야합니다. 여기에 여러 가지 Q & A가 자세히 설명되어 있습니다 (예 : 왜 쉘 스크립트가 공백이나 다른 특수 문자에서 질식합니까? …


12
여러 파일의 확장자를 어떻게 변경합니까?
파일 확장자를에서 (으) *.txt로 변경하고 싶습니다 *.text. basename명령을 사용하려고 시도했지만 둘 이상의 파일을 변경하는 데 문제가 있습니다. 내 코드는 다음과 같습니다. files=`ls -1 *.txt` for x in $files do mv $x "`basename $files .txt`.text" done 이 오류가 발생합니다. basename: too many arguments Try basename --help' for more information




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