우울한 파일 이름에 예상치 못한 따옴표가 있습니다.

우울한 파일 이름에 예상치 못한 따옴표가 있습니다.

grim/slurp를 사용할 때 스크린샷 파일 이름을 생성하려고 할 때 왜 이상한 동작이 나타나는지 잘 모르겠습니다.

내가 이렇게 하면:

grim -g "$(slurp)" "$HOME/screenshot-$(date).png"

나는 얻다:

screenshot-Sat 27 Jun 2020 06:02:36 PM EDT

시간이 내 폴더에 정렬되어 있지 않다는 점을 제외하면 잘 작동합니다. 그래서 나는 이것을 시도했습니다 :

grim -g "$(slurp)" "$HOME/screenshot-$(date +\"%y%m%d_%T\").png"

하지만 이 경우 나는 다음과 같은 결과를 얻습니다.

screenshot-"200627_19:35:39.png"

전체 날짜 문자열 주위에 따옴표가 있는 이유(표현식에 따옴표가 없음)와 이를 제거하는 방법을 설명할 수 있는 사람이 있습니까?

답변1

$()따옴표를 이스케이프 처리할 필요가 없도록 새 인용 컨텍스트를 만듭니다. 이것이 $()선호되는 이유 중 하나 입니다 ``. 중첩과 따옴표를 혼합하면 악몽이 생길 수 있습니다.

비교하려고:

$ echo "screenshot-$(date +\"%y%m%d_%T\").png"
screenshot-"200701_14:56:19".png
$ echo "screenshot-`date +\"%y%m%d_%T\"`.png"
screenshot-200701_14:56:27.png

백슬래시를 생략하고 그냥 사용할 수도 있습니다 "screenshot-$(date +"%y%m%d_%T").png". 또는 %나머지는 특별하지 않으므로 내부 따옴표를 완전히 생략하면 됩니다.

$ echo "screenshot-$(date +%y%m%d_%T).png"
screenshot-200701_14:57:23.png

답변2

백슬래시만 제거하세요. 그게 아니야 :

grim -g "$(slurp)" "$HOME/screenshot-$(date +\"%y%m%d_%T\").png"

하지만 이것은:

grim -g "$(slurp)" "$HOME/screenshot-$(date +"%y%m%d_%T").png"

하지만 귀하의 의견에 관해서는:내 폴더의 시간이 정렬되지 않았습니다.

다음을 사용하는 것이 좋습니다: FullYear - Moth - Day 또는 %Y%m%d_%T또는 그냥%F_%T

텍스트 정렬은 이 형식을 사용하는 날짜에 적합합니다.

관련 정보