IT

셸의 한 줄에 여러 명령어 실행

itgroup 2023. 4. 13. 20:46
반응형

셸의 한 줄에 여러 명령어 실행

파일이 있다고 합니다./templates/apple그리고 저는

  1. 그것을 두 곳에 놓고 나서
  2. 원본을 제거하다

그렇게,/templates/apple에 카피됩니다./templates/used그리고./templates/inuse그 후 원본을 삭제하고 싶습니다.

cp이것을 하는 가장 좋은 방법, 그 다음rm아니면 더 좋은 방법이 있을까요?

모든 것을 한 줄로 하고 싶기 때문에 다음과 같이 보일 수 있습니다.

cp /templates/apple /templates/used | cp /templates/apple /templates/inuse | rm /templates/apple

이것이 올바른 구문입니까?

사용하고 있습니다.|(파이프) 명령어의 출력을 다른 명령어로 유도합니다.당신이 찾고 있는 것은&&operator는 이전 명령어가 성공한 경우에만 다음 명령을 실행합니다.

cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple

또는

cp /templates/apple /templates/used && mv /templates/apple /templates/inuse

bash 명령 연산자/구분자를 (완전하지 않게) 요약하려면:

  • |파이프(표준 출력)stdout)를 다른 명령어의 표준 입력에 추가합니다.주의:stderr어떤 일이 일어나든 기본 수신처로 이동합니다.
  • |&양쪽 파이프stdout그리고.stderr하나의 명령어를 다른 명령어의 표준 입력으로 변환합니다.매우 유용하며 bash 버전 4 이상에서 사용할 수 있습니다.
  • &&오른쪽 명령어를 실행합니다.&&이전 것이 성공했을 경우에만.
  • ||오른쪽 명령어를 실행합니다.||전번에는 실패했어요.
  • ;오른쪽 명령어를 실행합니다.;이전 명령어가 성공했는지 실패했는지 여부에 관계없이 항상 표시됩니다.~하지 않는 한set -e이미 호출된 상태이기 때문에bash실패하다

그거 좋지cp로케이션 1로 이동합니다.mv로케이션 2 로 이동합니다.이렇게 하면 원본이 "삭제"됩니다.

그리고 올바른 구문이 아닙니다. |한 프로그램의 출력을 "파이프"하여 다음 프로그램의 입력으로 변환하는 데 사용됩니다.네가 원하는 건;여러 명령어를 구분합니다.

cp file1 file2 ; cp file1 file3 ; rm file1

개별 명령어가 성공해야 다음 명령어를 시작할 수 있는 경우,&&대신:

cp file1 file2 && cp file1 file3 && rm file1

그런 식으로, 만약 어느 한쪽이cp명령어가 실패하여rm실행되지 않습니다.

주의:cp A B; rm A바로 그렇다mv A B또, 실제로 바이트를 카피할 필요는 없기 때문에(타겟이 같은 파일 시스템상에 있는 경우), 파일명을 변경하는 것만으로 고속이 됩니다.그래서 네가 원하는 건cp A B; mv A C

다른 옵션은 각 명령어 끝에 입력하는 것입니다Ctrl+J.

예(치환)# 포함):

$ echo 1#
echo 2#
echo 3

출력:

1
2
3

그러면 이전 명령이 실패했는지 여부에 관계없이 명령이 실행됩니다.

일::echo 1; echo 2; echo 3

명령어의 하려면 , 「」를 합니다.&&마지막 행을 제외한 각 행의 끝에 있습니다.

치환)# 포함):

$ echo 1 &&#
failed-command &&#
echo 2

출력:

1
failed-command: command not found

»zsh 또는 대신 을 사용할 수도 있습니다.

파이프를 사용하는 게 이상하게 느껴져요.인 것을 .andBash 산 bash :

$ cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apples

경우,cp하여 "" " " " " " "가rm을 사용하다

보다 수도 .for 및 ""cmp.

이거 드셔보세요.

cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple

언급URL : https://stackoverflow.com/questions/5130847/running-multiple-commands-in-one-line-in-shell

반응형