bash 30

두 문자열을 연결하여 전체 경로를 만드는 방법

두 문자열을 연결하여 전체 경로를 만드는 방법 저는 bash 스크립트를 작성하려고 합니다.이 스크립트에서 사용자가 디렉토리의 경로를 입력하도록 합니다.그런 다음 이 문자열 끝에 일부 문자열을 추가하고 일부 하위 디렉터리에 대한 경로를 구성합니다.예를 들어 사용자가 다음과 같은 문자열을 입력한다고 가정합니다. /home/user1/MyFolder 이제 이 디렉터리에 2개의 하위 디렉터리를 만들고 일부 파일을 복사합니다. /home/user1/MyFolder/subFold1 /home/user1/MyFolder/subFold2 어떻게 해야 하나요?은 복수의 POSIX를 ./의 글로취됨으로 /파일명으로따라서//dir///subdir////file는 와동합다니와 ./dir/subdir/file. 따라서 두 문자..

programing 2023.06.01

getopts를 사용하여 긴 명령줄 및 짧은 명령줄 옵션 처리

getopts를 사용하여 긴 명령줄 및 짧은 명령줄 옵션 처리 셸 스크립트를 사용하여 길고 짧은 형태의 명령줄 옵션을 호출하고 싶습니다. 나는 그것을 알고 있습니다.getopts사용할 수 있지만 Perl에서와 마찬가지로 셸에서 동일한 작업을 수행할 수 없습니다. 다음과 같은 옵션을 사용할 수 있도록 이 작업을 수행하는 방법에 대한 모든 아이디어: ./shell.sh --copyfile abc.pl /tmp/ ./shell.sh -c abc.pl /tmp/ 셸에 이지만, 위서두명는내셸에동일의한가미다다사지니용합음을 합니다.getopts제가 이것들을 실행할 수 없습니까?getopt그리고.getopts다른 짐승들이고, 사람들은 그들이 하는 일에 대해 약간의 오해를 가지고 있는 것 같습니다. getopts는 에대..

programing 2023.05.27

명령이 0이 아닌 값을 반환하는 경우 셸 스크립트 중단

명령이 0이 아닌 값을 반환하는 경우 셸 스크립트 중단 여러 명령을 호출하는 Bash 셸 스크립트가 있습니다. 명령 중 하나가 0이 아닌 값을 반환하는 경우 반환 값이 1인 셸 스크립트가 자동으로 종료되도록 하고 싶습니다. 각 명령의 결과를 명시적으로 확인하지 않고도 가능합니까? 예를들면, dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi 스크립트의 시작 부분에 추가합니다. set -e 이렇게 하면 종료 값이 0이 아닌 단순 명령이 종료되면 셸이 즉시 종료됩니다.단순 명령은 명령의 일부가 아닌 모든 명령입니다.if,while또는until테스트 또는 일부&&또는||목록. 자세한 내용은 "s..

programing 2023.05.27

문자열이 유효한 정수인지 테스트

문자열이 유효한 정수인지 테스트 셸 스크립트에서 사용자 입력을 구문 분석하는 등 충분히 일반적인 작업을 수행하려고 합니다.사용자가 올바른 정수를 제공한 경우 스크립트는 한 가지 작업을 수행하고, 올바르지 않은 경우 다른 작업을 수행합니다.문제는, 저는 이것을 하는 쉬운 (그리고 상당히 우아한) 방법을 찾지 못했다는 것입니다. 저는 그것을 차로 구별하고 싶지 않습니다. 이게 쉬울 거라는 건 알지만 어떻게 해야 할지 모르겠어요.저는 12개 국어로 할 수 있지만, BASH는 할 수 없습니다! 제가 조사한 바로는 다음과 같습니다. 문자열이 기본 10의 유효한 실수로 구성되어 있는지 여부를 테스트하는 정규식 그리고 정규식에 대해 이야기하는 답이 있지만, 제가 아는 한, 그것은 (다른 것들 중에서) C에서 사용할 ..

programing 2023.05.22

셸의 가변 보간

셸의 가변 보간 다음과 같은 변수가 있습니다.filepath=/tmp/name. 변수에 액세스하기 위해 다음 작업을 수행할 수 있습니다.$filepath 내 셸 스크립트에서 나는 다음과 같은 작업을 시도했습니다(배경은 의도된 것입니다). `tail -1 $filepath_newstap.sh` 이 행은 실패합니다. duuuh! 변수가 호출되지 않기 때문입니다.$filepath_newstap.sh 추가 방법_newstap.sh변수 이름으로? 백스틱은 식 평가를 위한 것입니다.사용하다 "$filepath"_newstap.sh 또는 ${filepath}_newstap.sh 또는 $filepath\_newstap.sh _식별자에 유효한 문자입니다.도트는 그렇지 않습니다. 그래서 쉘은 보간을 시도했습니다.$file..

programing 2023.05.22

Windows용 Git Credential Manager를 비활성화하려면 어떻게 해야 합니까?

Windows용 Git Credential Manager를 비활성화하려면 어떻게 해야 합니까? Git의 최신 버전에서는 Bash 프롬프트에서 매번 암호를 묻는 대신 "Git Credential Manager for Windows" 대화 상자가 팝업됩니다. 저는 이런 행동이 정말 싫어요.어떻게 하면 매번 Bash 셸에서 암호를 입력할 수 있습니까? 참고로 Windows 자격 증명을 사용하든 내부 데몬을 사용하든 Git가 내 자격 증명을 캐시하는 것을 원하지 않습니다.모든 자격 증명 캐싱을 사용하지 않도록 설정합니다.좋습니다. Git for 윈도우즈 설치 관리자 중에 "Git Credential Manager" 확인란을 선택하지 않거나 (설치 후) Bash 셸을 관리자로 실행하여 사용해야 합니다.git co..

programing 2023.05.17

bash에서 스크립트에 선언된 변수를 나열하는 방법은 무엇입니까?

bash에서 스크립트에 선언된 변수를 나열하는 방법은 무엇입니까? bash에 있는 제 스크립트에는 변수가 너무 많아서 파일에 저장할 수 있는 것을 만들어야 합니다.내 질문은 스크립트에 선언된 모든 변수를 나열하고 다음과 같은 목록을 가져오는 방법입니다. VARIABLE1=abc VARIABLE2=def VARIABLE3=ghi set변수를 출력하지만 안타깝게도 정의된 함수도 출력합니다. 다행히 POSIX 모드는 다음 변수만 출력합니다. ( set -o posix ; set ) | less 과 결대상 연결less또는 옵션을 원하는 위치로 리디렉션합니다. 변수를 스크립트로만 선언하려면 다음과 같이 하십시오. ( set -o posix ; set ) >/tmp/variables.before source scr..

programing 2023.05.17

bash/sed 스크립트를 사용하여 텍스트 파일의 첫 줄을 제거하려면 어떻게 해야 합니까?

bash/sed 스크립트를 사용하여 텍스트 파일의 첫 줄을 제거하려면 어떻게 해야 합니까? bash 스크립트를 사용하여 큰 텍스트 파일에서 첫 번째 줄을 반복적으로 제거해야 합니다. 는 지금 지은사중입다니용금다중을 사용하고 .sed -i -e "1d" $FILE삭제하는 데 1분 정도 걸립니다. 이를 위해 더 효율적인 방법이 있습니까?Try tail: tail -n +2 "$FILE" -n x마지막을 인쇄하기만 하면 됩니다.x 줄들.tail -n 5입력의 마지막 5줄을 제공합니다. 그+주장을 뒤집는 것과 같은 서명을 하고 만듭니다.tail 번째 판이외의것인쇄다니합을초▁the▁anything▁first▁but다▁print초니합을 제외한 모든 것을 인쇄합니다.x-1 줄들.tail -n +1할 수 .tail -..

programing 2023.05.17

각 디렉터리로 이동하여 명령을 실행하는 방법은 무엇입니까?

각 디렉터리로 이동하여 명령을 실행하는 방법은 무엇입니까? parent_directory 내의 각 디렉토리를 통과하고 각 디렉토리에서 명령을 실행하는 bash 스크립트를 작성하려면 어떻게 해야 합니까? 디렉토리 구조는 다음과 같습니다. parent_directory(이름은 무엇이든 될 수 있음 - 패턴을 따르지 않음) 001(디렉토리 이름은 이 패턴을 따릅니다) 0001.txt(파일 이름은 이 패턴을 따릅니다) 0002.txt 0003.txt 002 0001.txt 0002.txt 0003.txt 0004.txt 003 0001.txt 디렉터리 수를 알 수 없습니다. 토드가 올린 이 답변이 저에게 도움이 되었습니다. find . -maxdepth 1 -type d \( ! -name . \) -exec ..

programing 2023.05.12

스크립트 파일의 시작 부분에 #!/bin/bash를 입력해야 하는 이유는 무엇입니까?

스크립트 파일의 시작 부분에 #!/bin/bash를 입력해야 하는 이유는 무엇입니까? 이전에 Bash 스크립트를 만든 적이 있는데, 이 스크립트들은 모두 정상적으로 실행되었습니다.#!/bin/bash처음에 그걸 넣으면 뭐해요?상황이 달라질까요? 또한, 어게발까니합음 어떻게 합니까?#는 그것을 .!"빵"이라고 발음됩니다. 어떻게 있다.#!발음이 됩니까?*nix 셸은 실행할 인터프리터의 종류를 알 수 있도록 하는 규약입니다. 예를 들어, 이전 버전의 ATT는 sh(본 셸)로 기본 설정된 반면, 이전 버전의 BSD는 csh(C 셸)로 기본 설정되었습니다. 오늘날에도 스크립트는 bash, python, perl, ruby, PHP 등으로 실행될 수 있습니다.예를 들어, 다음과 같이 볼 수 있습니다.#!/bin/..

programing 2023.05.07