다른 매개 변수를 사용하여 동일한 명령을 실행 다음 명령을 실행할

다음 명령을 실행할 수 있음을 알고 있습니다

ls Some{File,Folder}

그리고 이것을 실행하는 것과 같습니다.

ls SomeFile SomeFolder

(나는 또한 같은 것들에 많이 사용합니다 mv place_{a,b})

그러나 다음과 같이 할 수있는 다른 바로 가기가 있는지 궁금합니다.

run-command --a --whole --lot --of --flags parameter a; \
     run-command --a --whole --lot --of --flags parameter b

그리고 나는 타이핑 run-command --a --whole --lot --of --flags parameter {a,b}하거나 비슷한 것을 해야했습니다 .



답변

GNU bash또는 이와 유사한 것을 사용한다고 가정합니다 .

아마도 for루프?

for x in a b
do
    run-command --a --whole --lot --of --flags parameter $x
done

한 줄에 다음과 같이 쓸 수도 있습니다. for x in a b; do run-command --a --whole --lot --of --flags parameter $x ; done


답변

이 스크립트를 스크립팅하지 않고 명령 줄에서 쉽게 실행하려면 xargs명령이 원하는 것일 수 있습니다.

xargs는 표준 입력에서 많은 내용을 가져 와서 명령의 인수로 사용하여 필요한 경우 해당 명령을 여러 번 실행합니다.

다음을 시도하십시오 :

echo parameter a,parameter b | xargs -n 1 -d , run-command --a --whole --lot --of --flags

이 예제에서는 단순히 xargs에 원하는 순열을 제공합니다.

“-n 1″플래그는 xargs에게 실행 당 하나의 인수 만 사용하도록 지시합니다.

“-d,”플래그는 xargs에게 입력에서 “,”를 찾아 인수 사이의 deliminator로 찾도록 지시합니다. 인수에 “,”가 있으면이를 다른 것으로 변경해야합니다. 인수에 공백이 없으면이 플래그를 모두 생략 할 수 있습니다.

자세한 내용 man xargs은 참조하십시오 .


답변

함수를 사용할 수도 있습니다.이 함수는 마지막에 변경 인수를 갖는 것으로 제한하지 않습니다.

runcom() { run-command --a --whole --lot --of --flags parameter "$1" ; }

runcom a
runcom b

답변

이전 명령에서 대체를 수행 할 수 있습니다. ‘a’의 모든 인스턴스가 ‘b’로 바뀌므로 {a, b} 예에서는 작동하지 않습니다. 그러나 다음 명령을 실행한다고 가정하십시오.

run-command --a --whole --lot --of --parameter --format xml
run-command --a --whole --lot --of --parameter --format son

당신은 그것을 할 수 있습니다

run-command --a --whole --lot --of --parameter --format xml
!!:s/xml/json/

Bash는 대체를 수행하고 실행합니다.

run-command --a --whole --lot --of --parameter --format json

gs (전역 대체)를 사용하여 하나만이 아니라 여러 개의 대체를 수행하십시오.


답변

aliasbash 에는 다음과 같은 명령 이 있습니다 .

$ alias shotcommand='run-command --a --whole --lot --of --flags parameter'

사용법은 다음과 같습니다. $ shotcommand a