bash 8

셸 스크립트의 설계 패턴 또는 베스트 프랙티스

셸 스크립트의 설계 패턴 또는 베스트 프랙티스 현재 이 질문은 Q&A 형식에 적합하지 않습니다.우리는 답변이 사실, 참고 자료 또는 전문지식에 의해 뒷받침되기를 기대하지만, 이 질문은 토론, 논쟁, 여론 조사 또는 연장된 토론을 요구할 것이다.이 질문이 개선되고 다시 열릴 수 있다고 생각되면헬프센터를 방문하여 안내를 받으십시오. 닫힘10년 전에요. 셸 스크립트(sh, bash 등)의 베스트 프랙티스나 설계 패턴에 대해 설명하는 리소스를 알고 있는 사람이 있습니까?저는 꽤 복잡한 셸 스크립트를 썼는데, 첫 번째 제안은 "하지 마세요"입니다.그 이유는 그것은 당신의 대본을 방해하거나 심지어 그것을 위험하게 만드는 작은 실수를 하기 쉽기 때문이다. 그렇다고는 해도, 당신에게 건네줄 수 있는 것은 제 개인적인 ..

programing 2023.04.15

출력에서 색상 제거

출력에서 색상 제거 색상으로 출력하는 스크립트가 있어서 ANSI 코드를 삭제해야 합니다. #!/bin/bash exec > >(tee log) # redirect the output to a file but keep it on stdout exec 2>&1 ./somescript 출력은 (로그 파일에) 다음과 같습니다. java (pid 12321) is running...@[60G[@[0;32m OK @[0;39m] ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★@그 자리에. 스크립트를 다음과 같이 변경했습니다. #!/bin/bash exec > >(tee log) # redirect the output to a ..

programing 2023.04.15

디렉토리내의 파일의 경우, 에코 파일명(경로 없음)만을 사용합니다.

디렉토리내의 파일의 경우, 에코 파일명(경로 없음)만을 사용합니다. for 루프가 있는 디렉토리를 반복하는 경우, 파일의 파일명만을 에코 하려면 어떻게 해야 합니까? for filename in /home/user/* do echo $filename done; 파일명으로 풀패스를 가져옵니다.파일 이름만 알려줘네이티브를 원하신다면bash해결 방법 for file in /home/user/*; do echo "${file##*/}" done 위에서는 셸 네이티브의 파라미터 확장을 사용하여 다음과 같은 외부 바이너리 호출을 필요로 하지 않습니다.basename 다만, 이 기능을 사용하는 것을 제안해도 될까요?find find /home/user -type f -printf "%f\n" 그냥 사용하다basena..

programing 2023.04.15

#!/usr/bin/env bash가 #!/bin/bash보다 우월한 이유는 무엇입니까?

#!/usr/bin/env bash가 #!/bin/bash보다 우월한 이유는 무엇입니까? 이 사이트에서 사용하는 권장 사항(Bash shebang은 무엇입니까?)을 포함한 많은 장소에서 보았습니다.#!/usr/bin/env bash에에보다 #!/bin/bash한 진취적인 개인이 사용하는 것이 잘못되어 bash 기능이 상실될 수 있다고 제안하는 것을 본 적도 있습니다. 이 모든 것은 유통되는 모든 드라이브가 기본적으로 단일 마스터 드라이브의 복제품인 엄격히 통제된 테스트 환경에서 bash를 사용합니다.휴대성에 더 선호하는 요?#!/usr/bin/env bash휴대성에 문제가 있다고 가정했을 때, 이 기능을 손상시킬 수 있는 이유가 있습니까?#!/usr/bin/env 기능PATH★★★★★★에bash , , ..

programing 2023.04.15

표준 입력에서 sed를 읽으려면 어떻게 해야 합니까?

표준 입력에서 sed를 읽으려면 어떻게 해야 합니까? 이 질문에는 이미 답변이 있습니다. bash 스크립트에서 알 수 없는 옵션을 's'로 설정합니다. (4개의 답변) 닫힘2년 전에요. 난 노력하고 있다. grep searchterm myfile.csv | sed 's/replaceme/withthis/g' 그리고 얻는 것 unknown option to `s' 내가 뭘 잘못하고 있지? 편집: 코멘트에 의하면, 코드는 실제로 올바른 것입니다.내 전체 코드는 다음과 같았다. grep searchterm myfile.csv | sed 's/replaceme/withthis/g' # my comment 그리고 어떤 이유에서인지 제 코멘트가 sed에 입력된 것 같습니다.정말 이상하다.--information 옵..

programing 2023.04.15

이전 bash 명령어 인수를 호출하려면 어떻게 해야 합니까?

이전 bash 명령어 인수를 호출하려면 어떻게 해야 합니까? Bash에서 이전 명령어의 인수를 불러올 수 있는 방법이 있습니까? 난 보통 한다.vi file.c이어서gcc file.c. Bash에서 이전 명령어의 인수를 불러올 수 있는 방법이 있습니까?사용할 수 있습니다.$_또는!$이전 명령어의 마지막 인수를 호출합니다. 또한 +를 사용하여 이전 명령어의 마지막 인수를 호출할 수 있습니다.이전 명령어에 다음과 같은2개의 인수가 있는 경우 ls a.txt b.txt 첫 번째 걸 원하시면 타이핑해서 !:1 부여 a.txt 아니면 둘 다 원하신다면 !:1-2 부여 a.txt b.txt 이것은 임의의 수의 인수로 확장할 수 있습니다.예를 들어 다음과 같습니다. !:10-12 !!:n어디에n는 원하는 인수의 0 ..

programing 2023.04.10

bash 스크립트에서 파일의 첫 줄을 가져오려면 어떻게 해야 합니까?

bash 스크립트에서 파일의 첫 줄을 가져오려면 어떻게 해야 합니까? 파일의 첫 번째 줄에 bash 변수를 넣어야 합니다.grep 명령어라고 생각합니다만, 회선수를 제한하는 방법은 없습니까?head파일에서 첫 번째 행을 가져와-n파라미터를 사용하여 추출할 행 수를 지정할 수 있습니다. line=$(head -n 1 filename) bash를 사용하여 첫 줄을 읽으려면,read진술.예 read -r firstline/dev/null # VERY slow: sed -n '1p' $bigfile >/dev/null 파일의 첫 번째 줄만 읽고 변수에 저장합니다. read var < file echo $var # print only the first line of 'file' 언급URL : https://sta..

programing 2023.04.10

Bash 스크립트의 스크립트파일명은 어떻게 알 수 있나요?

Bash 스크립트의 스크립트파일명은 어떻게 알 수 있나요? 스크립트 자체의 Bash 스크립트파일 이름을 확인하려면 어떻게 해야 하나요? 를 내 runme.sh"You are running the runme.sh" 은 "You are running runme.sh" 을 참조하십시오.me=`basename "$0"` 일반적으로 사용자가 원하는 것이 아닌 심볼1 링크를 읽는 경우(일반적으로 사용자에게 혼란을 주고 싶지 않음) 다음과 같이 시도해 보십시오. me="$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")" IMO, 그러면 혼란스러운 결과가 나올 거야.foo.sh을 실행했는데 bar.sh을 실행한다고 뜨네요!?벌레가 틀림없어!또, 다른 이름의 심볼..

programing 2023.04.10