ksh의 printf에서 명령 출력 사용

ksh의 printf에서 명령 출력 사용

나는 다음을 수행하려고합니다 :

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB) " "$0"

잘 작동하지만 다음을 수행하여 파일의 실제 크기를 표시하고 싶습니다.

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$0" "ls -l $0 | awk {'print $5'}"

그러나 나는 그렇게 하지 못했습니다. 나는 이것이 올바른 접근 방식이 아니라고 생각합니다.

답변1

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB: %lu) " "$0" \
  "$(wc -c < "$0")"

구문 분석된 출력은 ls신뢰할 수 없습니다(그리고 그 주변에 무엇이 있는지 잊어버렸습니다 $(...)).

답변2

나는 이것이 bash 또는 ksh와 같은 일종의 쉘 형태라고 가정합니다. X는 파일입니다. (이름에 공백이 있는 것 같아요)

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$x" \
   $(ls -ld -- "$x" | awk {'print $5'})

해야 할 것.

구문에 주의하세요.$( some code )

답변3

GNU 시스템에서는 다음을 stat사용하는 것이 좋습니다.

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$0" \
    "$(exec stat -Lc '%s' -- "$0")"
  • -Lstat다음과 같은 심볼릭 링크를 만듭니다 .

관련 정보