앞에서 봤던 다음과 같은 복잡한 명령을 기억하는가?

$ paste <(echo {1..10}.jpg | sed 's/ /\n/g') \
        <(echo {0..9}.jpg | sed 's/ /\n/g') \
  | sed 's/^/mv /' \
  | bash

지금부터 마법처럼 한 줄로 모든 일을 해결하는 명령을 작성하는 방법을 알아보자. 먼저 위의 명령을 분해해 각각의 요소가 어떻게 동작하는지를 하나씩 풀어 설명하겠다. 가장 안쪽의 echo 명령은 중괄호 확장을 사용해 일련의 jpg 파일의 이름을 생성한다.

icon_folder chapter08 > introduction

$ echo {1..10}.jpg
1.jpg  2.jpg  3.jpg ... 10.jpg
$ echo {0..9}.jpg
0.jpg  1.jpg  2.jpg ... 9.jpg

이 파일명을 sed로 파이핑해 공백 문자를 개행 문자로 치환한다.

$ echo {1..10}.jpg | sed 's/ /\n/g'
1.jpg
2.jpg
3.jpg
...
10.jpg
$ echo {0..9}.jpg | sed 's/ /\n/g'
0.jpg
1.jpg
2.jpg
...
9.jpg

이후 paste 명령으로 두 개의 파일명 목록을 맞붙인다. 이때 프로세스 치환을 이용해 paste 명령이 두 개의 목록을 마치 파일처럼 다룰 ...

Get 효율적인 리눅스 명령어 사용의 기술 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.