터미널 명령 반복

터미널 명령 반복

이라는 터미널 명령이 있다고 가정합니다. foo(실제로 이것은 비슷 cd하거나 ls더 복잡할 것입니다. 스크립트를 사용하지 않고 이 명령을 여러 번 수행할 수 있는 방법이 있습니까?

예를 들어, 다음과 같은 작업을 수행하고 싶습니다.

foo && foo && foo && foo && foo

내가 뭔가를 할 수 있는 방법이 있나요?

foo * 5 

아니면 아마도

5:foo

저는 리눅스 머신을 사용하고 있습니다.

답변1

블로거의 답변에 세미쉼표를 추가하여 한 줄로 만드세요.

for variables in {1 2 3 4 5};  do ls; done

답변2

블로거 말이 맞아요. 그러나 구문을 정확하게 기록하는 것이 중요합니다. 대화형 셸(예: 터미널)을 사용하는 경우

echo -n; for i in {1..5}; do if [[ $? ]]; then foo; fi; done

"$?" 이전 함수 호출의 상태를 반환합니다. "echo"를 먼저 호출하기 때문에 루프의 첫 번째 반복은 "true"(bash에서는 0)가 됩니다. "fi"는 "if" 문을 닫고 세미콜론이 필요합니다.

bash 스크립트를 작성하는 경우에도 마찬가지입니다.

#!/bin/bash
echo -n
for i in {1..5}; 만약
[[ $? ]]; 그럼
foo
fi
끝났어

foo 뒤에는 세미콜론이 없다는 것을 알 수 있습니다. 줄 바꿈을 사용할 수 있는 환경(예: 즐겨 사용하는 텍스트 편집기)에서 본격적인 bash 스크립트를 작성할 때 줄 바꿈은 세미콜론과 동일한 작업을 수행합니다. :)

또한 대신 사용할 수도 있습니다.

[[ $? ]] && foo

if 문 대신; &&는 이전 foo에 오류가 없는 경우에만 foo가 실행된다는 것을 의미합니다. 즉, 함수 호출에서

thing1 && thing2

thing2는 foo가 작동하는지 여부를 무시하기 위해 thing1이 제대로 실행되는 경우(기술적으로 0 값을 반환하는 경우)에만 실행됩니다. && 대신 세미콜론을 사용합니다.

답변3

다음과 같이 시도해 볼 수 있습니다.

for i in {1..10}; do YourCommand; done

예:

for i in {1..5}; do ls -l; done

답변4

좋은 방법을 찾았어요여기.

나는 그것이 여전히 "일종의 스크립트"라는 것을 알고 있지만 명령과 함께 전체 명령줄을 입력하지 않고도 얻을 수 있는 가장 가까운 것이라고 생각합니다.

repeat이 작업을 수행할 수 있는 명령을 만들 수 있습니다 .

 repeat 5 ./foo

~/.bashrcbash를 사용하는 경우 끝에 다음 줄을 추가합니다 .

repeat() {
    n=$1
    shift
    while [ $(( n -= 1 )) -ge 0 ]
    do
        "$@"
    done
}

다음에 로그인(또는 bash 시작)할 때 repeat 5 ./foo.

그런데. repeat은 이미 csh, tcsh 및 zsh의 키워드(완전히 동일함)이므로 이 추가를 통해 이를 추가하면 bash정확히 동일하게 작동합니다.

관련 정보