터미널 명령 반복


1

터미널 명령이 있다고 가정 해 보겠습니다. foo (실제로 이것은 뭔가 같을 것이다. cd 또는 ls 또는 더 복잡한 무엇인가. 스크립트를 사용하지 않고이 명령을 여러 번 수행 할 수있는 방법이 있습니까?

예를 들어 다음과 같은 작업을 수행하려고합니다.

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

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

foo * 5 

어쩌면

5:foo

나는 리눅스 머신을 사용하고있다.


이외에 for, 당신은 사용할 수 있습니다. watch,이 StackOverflow 질문
ernie

답변:


1

원 - 라이너로 만들기 위해 블로거의 답변에 세미 쉼표를 추가하십시오.

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

1

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

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

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

만약 당신이 bash 스크립트를 작성했다면 똑같은 것이있다.

#! / bin / bash
에코 -n
나는 {1..5}에 속해있다. 해야 할 것
[[$? ]]; 그때

fi
끝난

당신은 foo가 세미콜론을 가지고 있지 않다는 것을 알게 될 것이다; 줄 바꿈이 가능한 환경 (예 : 자주 사용하는 텍스트 편집기)에서 bash 스크립트를 작성할 때 줄 바꿈은 세미콜론과 동일한 작업을 수행합니다. :)

또한, 대신에

[[ $? ]] && foo

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

thing1 && thing2

thing2가 잘 실행되면 thing2 만 실행됩니다 (기술적으로 0 값을 반환하는 경우) foo가 작동하는지 여부를 무시하려면 & amp; & amp; amp; 대신에 세미콜론을 사용하십시오.


1

다음과 같이해볼 수 있습니다 :

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

예:

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


0

"for"루프를 사용해 보셨습니까?

for VARIABLE in 1 2 3 4 5 .. N
do
    command1
    command2
    commandN
done

내가 그렇게하려고 할 때, 그것은 단지 새로운 라인을 가져온다. for>
Nosrettap

0

나는 훌륭한 방법을 발견했다. 이리 .

나는 그것이 여전히 "스크립트의 종류"라는 것을 알고 있지만 명령으로 전체 커맨드 라인을 타이핑하지 않고 얻을 수있는 가장 가까운 것이라고 생각한다.

명령을 작성할 수 있습니다. repeat 이 작업을 통해 다음 작업을 수행 할 수 있습니다.

 repeat 5 ./foo

끝 부분에 다음 줄을 추가하십시오. ~/.bashrc (bash를 사용하는 경우) :

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

다음에 로그인 할 때 (또는 bash를 시작할 때) 사용할 수 있습니다. repeat 5 ./foo.

Btw. repeat csh, tcsh 및 zsh에서 이미 키워드 (정확히 동일 함)이므로이 값을 추가하면 bash 그것은 똑같이 작동 할 것입니다.

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