반응형

Bash 14

xargs로 여러 명령 실행

xargs로 여러 명령 실행 cat a.txt | xargs -I % echo % 에서, 위의예에서,,xargsecho %명령 인수와 같이.그러나 경우에 따라 인수를 처리하기 위해 하나의 명령 대신 여러 개의 명령이 필요합니다.예: cat a.txt | xargs -I % {command1; command2; ... } 그렇지만xargs이 양식을 수락하지 않습니다.제가 알고 있는 한 가지 해결책은 명령을 감쌀 수 있는 함수를 정의할 수 있다는 것입니다. 하지만 복잡하기 때문입니다.더 좋은 해결책이 있습니까?cat a.txt | xargs -d $'\n' sh -c 'for arg do command1 "$arg"; command2 "$arg"; ...; done' _ ...또는 고양이를 쓸모없이 사용하지..

sourcecode 2023.05.28

bash에서 변수의 줄 수를 계산하려면 어떻게 해야 합니까?

bash에서 변수의 줄 수를 계산하려면 어떻게 해야 합니까? 문자열이 저장된 변수가 있는데 변수에 줄이 있는지 확인해야 합니다. var=`ls "$sdir" | grep "$input"` 유사 코드: while [ ! $var's number of lines -eq 1 ] do something 그것이 그것을 확인하는 방법에 대한 제 생각입니다. echo $var | wc -l작동하지 않습니다 - 항상 말합니다.1있음에도 불구하고3. echo -e역시 작동하지 않습니다.인용문이 중요합니다. echo "$var" | wc -l 허용된 답변 및 여기에 게시된 다른 답변은 빈 변수(정의되지 않았거나 빈 문자열)의 경우 작동하지 않습니다. 효과: echo -n "$VARIABLE" | grep -c '^' 예:..

sourcecode 2023.05.23

sed를 사용하여 문자열에서 텍스트를 추출하는 방법은 무엇입니까?

sed를 사용하여 문자열에서 텍스트를 추출하는 방법은 무엇입니까? 예제 문자열은 다음과 같습니다. This is 02G05 a test string 20-Jul-2012 이제 위의 문자열에서 추출하고자 합니다.02G05그것을 위해 저는 sed와 함께 다음 정규식을 시도했습니다. $ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p' 그러나 위의 명령어는 아무것도 출력하지 않으며, 제가 sed에게 제공한 패턴과 일치하지 않기 때문이라고 생각합니다. 그래서 저의 질문은 제가 여기서 무엇을 잘못하고 있고 그것을 어떻게 바로잡아야 하는지입니다. 위의 문자열과 패턴을 파이썬으로 시도하면 결과가 나옵니다. >>> re.findall(r'\d+G..

sourcecode 2023.05.13

배시 완료와 관련하여 ${array[*]} 대 ${array[@]}에 대한 혼동

배시 완료와 관련하여 ${array[*]} 대 ${array[@]}에 대한 혼동 저는 처음으로 bash 완료를 작성하는 것을 시도하고 있는데, bash 배열을 참조하지 않는 두 가지 방법에 대해 약간 혼란스럽습니다.${array[@]}그리고.${array[*]}). 다음은 관련 코드 덩어리입니다(작동하지만 더 잘 이해하고 싶습니다). _switch() { local cur perls local ROOT=${PERLBREW_ROOT:-$HOME/perl5/perlbrew} COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} perls=($ROOT/perls/perl-*) # remove all but the final part of the name perls=(${perls[*]#..

sourcecode 2023.05.08

zip 아카이브에서 파일 하나를 업데이트하는 방법

zip 아카이브에서 파일 하나를 업데이트하는 방법 압축을 풀지 않고 zip 파일로 파일을 바꿀 수 있습니까? 업데이트할 파일은 대용량 zip 아카이브에 상주하는 XML 파일입니다.이 XML 파일을 업데이트하려면 보관 파일의 압축을 풀고 이전 XML 파일을 삭제한 다음 새 XML 파일을 추가한 다음 다시 압축해야 합니다.이 작업에는 상당한 시간이 걸립니다.따라서 스크립트를 통해 하나의 XML을 대체할 수 있기를 원합니다.나는 이미 내가 가지고 있는 XML에 대한 업데이트를 확인하는 것을 가지고 있습니다. 명령 사용하기 미안하지만, 나는 그런 일을 할 때 zip 명령어를 사용하고 싶지만, 문제는 스크립트가 실제로 안드로이드 폰용이고 zip은 아쉽게도 사용할 수 있는 명령어가 아니라는 것입니다. 미안하지만 그..

sourcecode 2023.05.03

명령줄을 통해 Git 커밋 메시지에 느낌표 사용

명령줄을 통해 Git 커밋 메시지에 느낌표 사용 명령줄에서 Git commit 메시지에 느낌표를 입력하려면 어떻게 해야 합니까? 백슬래시로 느낌표를 이스케이프할 수 있지만 백슬래시는 커밋 메시지에도 포함됩니다. 저는 다음과 같은 것을 원합니다. git commit -am "Nailed it!" 큰따옴표 대신 작은따옴표 사용 git commit -am 'Nailed it!' 또는 어떤 이유로든 큰따옴표를 사용해야 하지만 리터럴을 원하는 경우!그런 다음 스크립트의 맨 위에 있는 기록 확장 기능을 해제합니다.set +H이를 해결하는 또 다른 방법은 다음과 같이 ! 뒤에 공백을 추가하는 것입니다. git commit -am "Nailed it! " !와 마지막 " 사이의 공백을 메모합니다. (공백은 커밋 메시지..

sourcecode 2023.04.28

Bash의 경로 문자열에서 파일 접미사와 경로 부분을 제거하려면 어떻게 해야 합니까?

Bash의 경로 문자열에서 파일 접미사와 경로 부분을 제거하려면 어떻게 해야 합니까? 다음과 같은 문자열 파일 경로가 지정됩니다./foo/fizzbuzz.bar어떻게 bash를 사용하여 단지 그것을 추출할 수 있습니까?fizzbuzz그 끈의 일부?다음은 Bash의 # 및 % 연산자로 수행하는 방법입니다. $ x="/foo/fizzbuzz.bar" $ y=${x%.bar} $ echo ${y##*/} fizzbuzz ${x%.bar}또한 그럴 수도 있습니다.${x%.*}점이나 점 뒤에 있는 모든 것을 제거하는 것.${x%%.*}첫 번째 점 뒤에 있는 모든 것을 제거합니다. 예: $ x="/foo/fizzbuzz.bar.quux" $ y=${x%.*} $ echo $y /foo/fizzbuzz.bar $ y..

sourcecode 2023.04.28

Bash 배열에 대한 명령어 출력 읽기

Bash 배열에 대한 명령어 출력 읽기 스크립트의 명령 출력을 어레이로 읽어야 합니다.명령어는 다음과 같습니다. ps aux | grep | grep | x 출력은 다음과 같이 행별로 표시됩니다. 10 20 30 명령어 출력의 값을 어레이로 읽고 어레이 크기가 3 미만일 경우 작업을 수행합니다.공백이 되어 있는 경우(빈도가 높은 ), 또는 (예: 공백이 포함되어 있는 ), 또는 공백이 포함되어 있는 경우, .*,?,[...]. 요소별로 1행씩 배열에서 명령어의 출력을 얻으려면 기본적으로 다음 3가지 방법이 있습니다. 4에서는 Bash 44 를 사용합니다.mapfile 효율적입니다 -가장 효율적입니다. mapfile -t my_array <

sourcecode 2023.04.23

bash: mkvirtualenv: 명령을 찾을 수 없습니다.

bash: mkvirtualenv: 명령을 찾을 수 없습니다. Doug Hellman의 게시물에 대한 지침을 따랐지만, 저는 여전히 테스트 환경을 가동할 수 없었습니다. [mpenning@tsunami ~]$ mkvirtualenv test -bash: mkvirtualenv: command not found [mpenning@tsunami ~]$ 은 제가 사용하고 있다는 WORKON_HOME은 내 것 my에 $HOME★★★★★★를 /usr/local/bin/virtualenvwrapper.sh설치 문서에 나타나 있지만 존재하지 않습니다. 나는 Cent를 운영하고 있다.OS 6 및 python 2.6.6(중요한 경우) # File: ~/.bash_profile # ... export WORKON_HOME..

sourcecode 2023.04.23

실행 파일 또는 스크립트 이름 앞에 ./ (닷슬래시)가 필요한 이유는 무엇입니까?

실행 파일 또는 스크립트 이름 앞에 ./ (닷슬래시)가 필요한 이유는 무엇입니까? bash에서 스크립트를 실행할 때 작성해야 합니다../처음에: $ ./manage.py syncdb 그렇지 않으면 다음 오류 메시지가 나타납니다. $ manage.py syncdb -bash: manage.py: command not found 그 이유는 무엇입니까?내 생각에는 말이지….는 현재 폴더의 에일리어스이므로 이들2개의 콜은 동등합니다. 나도 왜 내가 필요없는지 모르겠어./다음과 같은 응용 프로그램을 실행하는 경우: user:/home/user$ cd /usr/bin user:/usr/bin$ git (이러한 동작은 필요 없습니다)../)Unix 에서는, 통상은, 현재의 디렉토리가 다음의 장소에 없기 때문입니다.$..

sourcecode 2023.04.18
반응형