리눅스에서 심볼릭 링크를 만들고 싶습니다. 첫 번째 경로는 링크하려는 폴더이고 두 번째 경로는 컴파일 된 소스 인이 Bash 명령을 작성했습니다.
ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
이 올바른지?
리눅스에서 심볼릭 링크를 만들고 싶습니다. 첫 번째 경로는 링크하려는 폴더이고 두 번째 경로는 컴파일 된 소스 인이 Bash 명령을 작성했습니다.
ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
이 올바른지?
답변:
새 심볼릭 링크를 만들려면 (심볼릭 링크가 이미 존재하지 않으면 실패) :
ln -s /path/to/file /path/to/symlink
심볼릭 링크를 만들거나 업데이트하려면
ln -sf /path/to/file /path/to/symlink
ln
구문은 구문과 유사 cp
합니다 (예 : source destination) .
cp
이다 CoPy
, ln
입니다 LiNk
. 첫 번째와 세 번째 글자.
ln -s TARGET LINK_NAME
어디는 -s
그것을 상징한다.
unlink LINK_NAME
ln -s where-the-symlink-should-point where-to-place-the-symlink-itself
.
rm
있지만 대부분의 사람들은 후행을 제거하는 것을 모릅니다 /
.
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
(ASCII 그림은 천 자의 가치가 있기 때문에.)
화살표는 유용한 니모닉 일 수 있습니다. 특히 Emacs에서 거의 정확하게 보이는 방식이기 때문입니다.
큰 그림이므로 Windows 버전과 혼동되지 않습니다.
리눅스 :
ln -s target <- linkName
윈도우 :
mklink linkName -> target
이것들을 다음과 같이 볼 수도 있습니다.
ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"
는 from-here
(가) 동안, 생성 될 아직 존재하지 않아야 to-here
이미 (IIRC)이 존재한다.
(나는 항상 다양한 명령과 인수가 기존 위치 또는 만들어야 할 위치와 관련이 있는지에 대해 혼란스러워합니다.)
편집 : 그것은 여전히 나를 위해 천천히 침몰하고 있습니다. 노트에 쓴 다른 방법이 있습니다.
ln -s (target exists) (link is made)
mklink (link is made) (target exists)
dired
대상 위에 커서를 놓고을 누른 S
다음 링크를 만들 디렉토리를 입력하면 매우 쉽습니다 . 원하는 결과를 상상하고 타이핑하는 간격을 줄입니다. gnu.org/software/emacs/manual/html_node/emacs/…를 참조하십시오 .
원래 질문에 :
'ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal'
파일 / 디렉토리에서 심볼릭 링크 ( -s
)가 생성됩니다 .
<basebuild>/IpDome-kernel/kernel
새 링크로
/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
기억하는 데 도움이되는 몇 가지 방법이 있습니다.
먼저에 대한 맨 페이지가ln
있습니다. Google에서 "man ln"을 검색하여 액세스하거나 터미널 창을 열고 입력 man ln
하면 동일한 정보를 얻을 수 있습니다. 매뉴얼 페이지에는 다음과 같이 명확하게 설명되어 있습니다.
[OPTION] ... [-T] TARGET LINK_NAME (첫 번째 형식)
매번 맨 페이지를 검색하거나 읽을 필요가 없다면 모든 nix 명령이 동일한 방식으로 작동 한다는 것을 기억하는 것이 더 쉬울 것입니다:
cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link
cp
현재 존재하는 파일 (첫 번째 인수)을 새 파일 (두 번째 인수)에 복사합니다.
mv
현재 존재하는 파일 (첫 번째 인수)을 새 위치 (두 번째 인수)로 이동
마찬가지로 ln
현재 존재하는 파일 (첫 번째 인수)을 새 링크 (두 번째 인수)에 연결합니다. *
마지막으로 제안하고 싶은 옵션은 읽기 쉽고 기억하기 쉬운 사용자 매뉴얼 페이지를 만들 수 있다는 것입니다. 필요한 힌트를 제공하는 간단한 쉘 스크립트를 작성하십시오. 예를 들어 ♦ :
.bash_aliases 파일에서 다음과 같은 것을 배치 할 수 있습니다 :
commandsfx() {
echo "Symlink: ln -s /path/to/file /path/to/symlink"
echo "Copy: cp /file/to/copy /destination/to/send/copy"
}
alias 'cmds'=commandsfx
그런 다음 필요할 때 명령 줄에서 입력 cmds
하면 빠르게 읽고 이해할 수있는 방식으로 올바른 구문을 다시 얻을 수 있습니다. 필요한 정보를 얻고 자하는대로 이러한 기능을 고급으로 만들 수 있습니다. 대화식으로 만들 수도 있으므로 프롬프트를 따라야합니다.
makesymlink() {
echo "Symlink name:"
read sym
echo "File to link to:"
read fil
ln -s $fil $sym
}
alias 'symlink'=makesymlink
*-분명히 그들은 모두 서로 다른 매개 변수를 취하고 다른 일을 할 수 있으며 파일뿐만 아니라 디렉토리에서도 작동 할 수 있지만 전제는 동일
합니다.-bash 쉘을 사용한 예제
Bash 프롬프트를 열고 아래에 언급 된 명령을 입력하여 파일에 심볼릭 링크를 만듭니다.
A) 소프트 링크를 만들 폴더로 이동하여 아래에 언급 된대로 명령을 입력하십시오 .
$ ln -s (path-to-file) (symbolic-link-to-file)
$ ln -s /home/user/file new-file
B) 새 파일 이름 경로로 이동하여 다음을 입력하십시오 .
$ ls -lrt (To see if the new-file is linked to the file or not)
예:
user@user-DT:[~/Desktop/soft]# ln -s /home/user/Desktop/soft/File_B /home/user/Desktop/soft/File_C
user@user-DT:[~/Desktop/soft]# ls -lrt
total 0
-rw-rw-r-- 1 user user 0 Dec 27 16:51 File_B
-rw-rw-r-- 1 user user 0 Dec 27 16:51 File_A
lrwxrwxrwx 1 user user 31 Dec 27 16:53 File_C -> /home/user/Desktop/soft/File_B
Note: Where, File_C -> /home/user/Desktop/soft/File_B Means, File_C is symbolically linked to File_B
이것은 스택 오버플로이므로 코드를 원한다고 가정합니다.
모든 다음 코드라는 이름의 심볼릭 링크 생성 할 것으로 가정 /tmp/link
링크에 있음을 /tmp/realfile
.
주의 :이 코드는 오류를 검사하지만 /tmp/realfile
실제로 존재 하는지 검사하지는 않습니다 ! 데드 링크는 여전히 유효하고 코드에 따라 실제 파일 전에 링크를 거의 생성하지 않을 수 있기 때문입니다.
#!/bin/sh
ln -s /tmp/realfile /tmp/link
명령 줄 (쉘)에서하는 것처럼 간단합니다. 모든 오류 처리는 쉘 인터프리터에 의해 수행됩니다. 이 코드는에 작업중인 쉘 인터프리터가 있다고 가정합니다 /bin/sh
.
필요한 $?
경우 링크가 성공적으로 생성 된 경우에만 0으로 설정되는 변수를 사용하여 자체 오류 처리를 구현할 수 있습니다 .
#include <unistd.h>
#include <stdio.h>
int main () {
if( symlink("/tmp/realfile", "/tmp/link") != 0 )
perror("Can't create the symlink");
}
symlink
링크를 만들 수있는 경우에만 0을 반환합니다. 다른 경우 perror
에는 문제에 대해 더 많이 알리기 위해 사용 하고 있습니다.
#!/usr/bin/perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
print STDERR "Can't create the symlink: $!\n"
}
이 코드는에 perl 5 인터프리터가 있다고 가정합니다 /usr/bin/perl
. symlink
링크를 만들 수있는 경우 1 만 반환합니다. 다른 경우에는 실패 이유를 표준 오류 출력에 인쇄하고 있습니다.
이미 제시된 설명의 평범한 영어 버전을 제시하고 싶습니다.
ln -s /path-text/of-symbolic-link /path/to/file-to-hold-that-text
"ln"명령은 link-FILE을 작성하고 "-s"는 링크 유형이 기호가되도록 지정합니다. 심볼릭 링크 파일의 예는 WINE 설치에서 찾을 수 있습니다 ( "ls -la"를 사용하여 한 줄의 디렉토리 내용 표시).
lrwxrwxrwx 1 me power 11 Jan 1 00:01 a: -> /mnt/floppy
표준 파일 정보 항목은 왼쪽에 있습니다 (첫 번째 문자는 "링크"의 경우 "l"임). 파일 이름은 "a :"이고 "->"는 파일이 링크임을 나타냅니다. 기본적으로 WINE에 Linux에서 Windows "Drive A :"가 플로피 드라이브와 연결되는 방법을 알려줍니다. 실제로 이와 유사한 심볼릭 링크를 작성하려면 (현재 디렉토리에서 WINE에 대해 실제로 수행하는 것이 더 복잡합니다. "winecfg"유틸리티 사용) :
ln -s /mnt/floppy a: //will not work if file a: already exists
두 가지 유형의 링크가 있습니다.
심볼릭 링크 : 다른 파일의 추상 위치를 나타내는 심볼릭 경로를 참조하십시오.
하드 링크 : 실제 데이터의 특정 위치를 참조하십시오.
귀하의 경우 symlinks :
ln -s source target
http://man7.org/linux/man-pages/man7/symlink.7.html을 참조 할 수 있습니다
너무 단단한 링크를 만들 수 있습니다
파일에 대한 하드 링크는 원래 디렉토리 항목과 구별 할 수 없습니다. 파일에 대한 모든 변경 사항은 파일을 참조하는 데 사용 된 이름과 사실상 무관합니다. 하드 링크는 일반적으로 디렉토리를 참조하지 않을 수 있으며 파일 시스템에 걸쳐 있지 않을 수 있습니다.
ln source link
링크는 기본적으로 두 가지 유형입니다.
기호 링크 (소프트) : 다른 파일의 추상 위치를 나타내는 기호 경로에 대한 링크
하드 링크 : 실제 데이터의 특정 위치에 링크합니다.
예 1 :
ln /root/file1 /root/file2
위는 실제 데이터의 사본을 보유 할 수있는 하드 링크의 예입니다.
예 2 :
ln -s /path/to/file1.txt /path/to/file2.txt
위의 명령은 file1.txt에 대한 심볼릭 링크를 만듭니다.
이 경우 삭제 소스 파일을 당신은 부드러운 목적지까지 아무것도하지 않습니다.
할 때 :
ls -lai
심볼릭 링크에 다른 inode 번호가 있음을 알 수 있습니다.
자세한 내용은 Linux OS에서 ln의 매뉴얼 페이지를 읽을 수 있습니다.
hard link where you can have a copy of your physical data
- 실제 데이터 사본 을 만들지 않는 것 같습니다 . 동일한 물리적 데이터에 대한 또 다른 이름입니다.
man 정보에서 "target"과 "directory"라는 용어를 혼동하는 것을 발견했습니다.
누군가가 같은 혼란을 겪고 있다면, 목표는 우리가 링크하고있는 폴더와 실제 심볼릭 링크 (디렉토리가 아닌 디렉토리)입니다.
이것은 Linux에서 Symlink를 만드는 것에 대한 나의 해석입니다.
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
심볼릭 링크를 만들 폴더로 이동하여 명령을 실행하거나 NAME-OF-YOUR-SYMLINK 대신 심볼릭 링크의 전체 경로를 지정할 수 있습니다.
cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
또는
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK
나는 이것이 여전히 혼란스러워하는 사람들에게 도움이되기를 바랍니다.
방랑자에서 심볼릭 링크를 만드는 방법. 단계 :