다음 명령을 실행할 수 있음을 알고 있습니다
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 (전역 대체)를 사용하여 하나만이 아니라 여러 개의 대체를 수행하십시오.
답변
alias
bash 에는 다음과 같은 명령 이 있습니다 .
$ alias shotcommand='run-command --a --whole --lot --of --flags parameter'
사용법은 다음과 같습니다. $ shotcommand a