touch: 파일 피연산자가 누락되었습니다. 파일 이름에 해시가 포함되어 있습니다#

touch: 파일 피연산자가 누락되었습니다. 파일 이름에 해시가 포함되어 있습니다#

내 시스템은

Kernel: 5.3.0-26-generic x86_64 bits: 64 Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia 

터치 버전은touch (GNU coreutils) 8.28

다음 명령이 주어지면 -

$ touch #a{1..10}

그것은 말한다 -

touch: missing file operand
Try 'touch --help' for more information.

여기서 문제가 무엇입니까?

답변1

( 실제 명령 실행을 보려면 set -x( )를 사용하십시오.)xtrace

$ set -x
$ touch #a{1..10}
+ touch
touch: missing file operand
Try 'touch --help' for more information.
$ touch a{1..10}
+ touch a1 a2 a3 a4 a5 a6 a7 a8 a9 a10

#단어 시작 부분의 파운드 기호는 줄의 나머지 부분을 주석으로 만듭니다. 당신은 그것을 인용해야합니다 :

$ touch "#"a{1..10}
+ touch '#a1' '#a2' '#a3' '#a4' '#a5' '#a6' '#a7' '#a8' '#a9' '#a10'

shopt -u interactive_comments또는 Bash에서는 주석 처리를 완전히 비활성화하는 데 사용할 수 있습니다 .

답변2

여기서 문제는 #쉘의 경우 파일 이름에 "주석" 표시기를 포함시키려는 것입니다. 따라서 다음에 나오는 모든 텍스트는탈출하지 않은 #무시되고 명령이 피연산자 누락에 대해 불평합니다.

한 가지 가능한 해결책은 아래와 같이 파일 이름의 해당 부분을 따옴표로 묶는 것입니다.

~$ touch "#a"{1..10}

관련 정보