문제: 하나의 kate 프로세스에서 여러 파일을 편집합니다.
FILE_LIST는 경로 목록을 포함하는 변수입니다.
FILE_LIST="$MAIN_PATH1 $MAIN_PATH2 ... $MAIN_PATH3"
/tmp
DST_DIR은 편집할 파일에 대한 심볼릭 링크의 대상 폴더입니다.for 루프는 검색 요청을 제공합니다.
print0/-0
일부 파일 이름에 공백이 포함되어 있기 때문에 찾기 요청은 xargs를 사용하여 연결된 파일을 만듭니다.for A_DIR in $LIST_PATH ; do find "$A_DIR" -type f ! -name "*.*~" ! -path "*000_ERRORS*" ! -path "*KEEP*" -print0 | xargs -0 -I@ bash -c " ln -s \"@\" \"$DST_DIR/${@##*/}\"" done
지금까지는 모든 것이 괜찮습니다. 모든 심볼릭 링크는 하나의 폴더에 있습니다.
그런 다음 다른 사람이 즉시 Kate에게 먹이를 달라는 요청을 발견했습니다.
"$WORK_PATH" 찾기 -type l -print0 | xargs -0 -I{} xdg-su -c "Kate{} "
예상대로 작동하지 않습니다. 파일은 하나씩만 액세스할 수 있습니다. 그것은 목표가 아닙니다.
그러나 다른 터미널에서 두 번째 찾기 요청 명령을 수동으로 실행하면 다음과 같습니다.
find /tmp/000_PGM_001 -type l -print0 | xargs -L 1 -0 -I{} bash -c "kate '{}'"
동일한 인스턴스에서 모든 파일을 가져올 수 있습니다. kate 설치의 모든 파일을 한 번 얻을 때까지 명령을 수동으로 반복할 수 있습니다.
답변1
필요한 것 같네요(GNU 시스템을 가정)
dirs=(
"$MAIN_PATH1"
"$MAIN_PATH2"
"$MAIN_PATH3"
)
LC_ALL=C find "${dirs[@]}" -name '*000_ERRORS*' -prune -o \
'*KEEP*' -prune -o ! -name '*~' -type f -exec ln -st "$DST_DIR" {} +
당신의 케이트에 관해서는:
find "$WORK_PATH" -type l -exec env LINK='{}' xdg-su -c 'kate "$LINK"' ';'
여기서 파일 경로는 환경 변수로 전달되며 xdg-su
데스크탑 환경에서 스크립트가 실행되는 명령은 이를 삭제하지 않는 것으로 가정됩니다.
xdg-su
어쨌든 스크립트의 내용을 보면 이렇게 실행하려면 고정된 명령만 전달하면 됩니다 kate "$LINK"
. 임의의 데이터를 전달하는 것은 신뢰할 수 없고 위험합니다.