루프를 문자열로 실행해야 합니다. 이것:
bash -c "for l in $(/bin/ls /dir1); do /bin/ln -sf $l /dir2/; done"
오류가 발생합니다.
/bin/bash: -c: line 1: syntax error near unexpected token `file1'
/bin/bash: -c: line 1: `file1'
file1은 심볼릭 링크로 변환하려는 첫 번째 디렉터리의 파일 중 하나입니다.
답변1
ls 출력을 구문 분석하지 않고:http://mywiki.wooledge.org/ParsingLs.
또한 이 예에서는 루프가 필요하지 않으며 ln
루프가 인수를 반복하도록 합니다. cd
현재 디렉토리에서 상대 경로를 사용하여 상대 심볼릭 링크를 생성할 때 상대 심볼릭 링크 대상이 작동하도록 하려면 심볼릭 링크를 생성하려는 디렉토리로 이동합니다.
(cd /dir1 && ln -sf -- * /dir2) # make broken symlinks in dir2
(cd /dir2 && ln -sf -- ../dir1/* .) # make relative symlinks
ln -sf /dir1/* /dir2/ # make absolute symlinks
(subshell)
현재 쉘에서 디렉토리가 변경되는 것을 방지합니다.
를 사용할 수도 있는데 , 이는 명령줄 끝에만 목록을 넣을 수 있기 때문에 ln -sf -t /dir2 -- *
유용합니다 .find -exec ln -t /dir {} +
find -exec {} +
GNU에는 cp
하드/심볼릭 링크를 생성하는 옵션도 있습니다 -l
.-s