~/Pictures
폴더에서 파일 이름을 가져와 명령에 대한 인수로 제공하려고 합니다 nomacs
. 파일 이름에 공백이 포함되어 있으므로 Bash 바꾸기를 사용하여 공백을 이스케이프 처리합니다(폴더의 마지막 파일도 가져오고 싶습니다).
암호:
names=$(\ls ~/Pictures * | tac)
SAVEIFS=$IFS
IFS=$'\n'
names=($names)
IFS=$SAVEIFS
screenshot=~/Pictures/${names[0]}
screenshot=${screenshot// /\\ }
nomacs $screenshot
파일 이름 예:Screenshot from 2017-09-13 18-05-42.png
문제는 이것이 nomacs $screenshot
작동하지 않는다는 것인데, 실행해 보면 nomacs Screenshot\ from\ 2017-09-13 18-05-42.png
예상대로 작동합니다.
공간을 탈출하려면 특별한 Bash 기술을 사용해야 합니까?
답변1
귀하의 스크립트에서 수집한 내용에 따르면 첫 번째 항목의 출력을 반전시키고 ls
첫 번째 항목을 선택합니다. Bash를 사용하여 이를 수행하는 또 다른 방법은 다음과 같습니다.
files=(~/Pictures/*)
nomacs "${files[-1]}"
그러면 전역 확장으로 배열이 채워지고 ~/Pictures/*
마지막 요소가 nomacs
프로그램에 전달됩니다.