내 시스템은
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}