Unix에서 문자열을 연결하는 데 사용되는 쉼표 ',' 연산자의 의미

Unix에서 문자열을 연결하는 데 사용되는 쉼표 ',' 연산자의 의미
$ ls -ltr  /{,usr/}bin/l*|tail -4
-r-xr-xr-x   1 root     bin        31544 Dec 20  2017 /usr/bin/login
-r-xr-xr-x   1 root     bin        31544 Dec 20  2017 /bin/login
lrwxrwxrwx   1 root     root          15 Aug 28  2018 /usr/bin/libpng-config -> libpng12-config
lrwxrwxrwx   1 root     root          15 Aug 28  2018 /bin/libpng-config -> libpng12-config

l이는 in /usr/bin및 디렉토리 문자로 /bin시작하는 모든 실행 파일의 이름을 제공합니다.

위치를 바꿔 플레이하면 ,이해할 수 없는 결과가 나옵니다. 예를 들어 아래 스크린샷을 참조하세요.

$ ls -ltr  /{,usr,/}bin/l*|tail -4
/usrbin/l*: No such file or directory
-r-xr-xr-x   1 root     bin        31544 Dec 20  2017 /bin/login
-r-xr-xr-x   1 root     bin        31544 Dec 20  2017 //bin/login
lrwxrwxrwx   1 root     root          15 Aug 28  2018 /bin/libpng-config -> libpng12-config
lrwxrwxrwx   1 root     root          15 Aug 28  2018 //bin/libpng-config -> libpng12-config

위와 동일하지만(목록 순서가 변경됨) usr누락되었습니다.

$ ls -ltr  /{usr,/}bin/l*|tail -4
/usrbin/l*: No such file or directory
-rwxr-xr-x   1 root     other       2286 Jun 15  2017 //bin/libpng14-config
-r-xr-xr-x   1 root     bin        28608 Oct 20  2017 //bin/ldaplist
-r-xr-xr-x   1 root     bin        31544 Dec 20  2017 //bin/login
lrwxrwxrwx   1 root     root          15 Aug 28  2018 //bin/libpng-config -> libpng12-config

이는 /bin에만 존재하는 파일이며 /각 항목에는 추가 접두사가 있습니다.

어떤 매력을 발산하고 있는지 설명해주세요 ,.

답변1

중괄호는 쉼표 사이의 모든 문자열로 대체되므로 예상한 것과는 다르게 your 가 X{,a,b}Y로 확장됩니다 .XY XaY XbY/{usr,/}bin/l/usrbin/l* /bin/l*/usr/bin/l*

/{,usr/}bin/l*  #-> /[]bin/l* /[usr/]bin/l*
/{,usr,/}bin/l* #-> /[]bin/l* /[usr]bin/l* /[/]bin/l*
/{usr,/}bin/l*  #-> /[usr]bin/l* /[/]bin/l*

관련 정보