linux - symlink是什麼 - symlink用法




如何在Linux中符號鏈接文件? (12)

我想在Linux中做一個符號鏈接。 我寫了這個bash命令,其中第一個路徑是我想鏈接到的文件夾,第二個路徑是編譯後的源文件。

ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal 

它是否正確?


在Linux上創建符號鏈接或軟鏈接:

打開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)

例:

ls -lrt

lrwxrwxrwx 1 user user 24 Aug 6 23:40 new-file -> /home/user/file

Note: Where, A -> B Means, A is symbolically linked to B


(因為一張ASCII圖片勝過一千個字符。)

箭頭可能是一個有用的助記符,尤其是因為這幾乎就是它在Emacs'dired中的樣子。

和大的圖片,所以你不會把它與Windows的版本混淆

Linux的:

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)

創建新的符號鏈接(如果符號鏈接已經存在,將會失敗):

ln -s /path/to/file /path/to/symlink

要創建或更新符號鏈接:

ln -sf /path/to/file /path/to/symlink

如何在流浪漢中創建符號鏈接。 腳步:

  1. 在流浪文件中創建一個同步文件夾。 例如config.vm.synced_folder“F:/ Sunburst / source / sunburst / lms”,“/ source”F:/ Sunburst / source / sunburst / lms: - 其中源代碼,/ source: - 目錄路徑
  2. 緩慢起來,輸入vagrant ssh並轉到源目錄,例如cd源
  3. 驗證您的源代碼文件夾結構在源目錄中是否可用。 例如/ source / local
  4. 然後轉到與瀏覽器關聯的文件的訪客機器目錄。 獲得文件的備份後。 例如sudo mv local local_bk
  5. 然後創建符號鏈接,例如sudo ln -s / source / local local。 本地平均鏈接名稱(您要鏈接的客戶機中的文件夾名稱)如果您需要刪除符號鏈接: - 鍵入sudo rm local

對於原來的問題:

'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

以下幾種方法可以幫助您記住:

首先, http://linux.die.net/man/1/lnhttp://linux.die.net/man/1/ln 。 您可以通過在google中搜索“man ln”來訪問它,或者只需打開一個終端窗口並鍵入man ln即可獲得相同的信息。 該手冊頁明確指出:

ln [選項] ... [-T] TARGET LINK_NAME(第1表格)

如果每次搜索或閱讀手冊頁都不適合您,也許您會更容易記住所有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將當前存在的文件(第一個參數)移動到新的位置(第二個參數)
同樣, http://linux.die.net/man/1/ln將當前存在的文件(第一個參數)鏈接到新鏈接(第二個參數) *

我想建議的最後一個選項是,您可以創建自己的手冊頁,這些頁面易於閱讀並且易於查找/記憶。 只需製作一個簡單的shell腳本,即可為您提供所需的提示。 例如

在您的.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 shell的例子


我想介紹已經提供的描述的英語版本。

 ln -s  /path-text/of-symbolic-link  /path/to/file-to-hold-that-text

“ln”命令創建鏈接FILE,“-s”指定鏈接的類型為符號。 一個符號鏈接文件的例子可以在WINE安裝中找到(使用“ls -la”顯示目錄內容的一行):

 lrwxrwxrwx 1 me power 11 Jan  1 00:01 a: -> /mnt/floppy

標準的文件信息的東西是在左邊(雖然注意第一個字符是一個“l”的“鏈接”); 文件名是“a:”,“ - >”也表示文件是鏈接。 它基本上告訴WINE Windows“Drive A:”如何與Linux中的軟盤驅動器相關聯。 要實際創建一個符號鏈接(在當前目錄中,實際為WINE執行此操作更為複雜;請使用“winecfg”實用程序):

 ln -s  /mnt/floppy  a:   //will not work if file a: already exists

有兩種類型的鏈接:

符號鏈接:引用指示另一個文件的抽象位置的符號路徑

硬鏈接:參考物理數據的具體位置。

在你的情況符號鏈接:

ln -s source target

你可以參考http://man7.org/linux/man-pages/man7/symlink.7.html

你可以創建太硬鏈接

到文件的硬鏈接與原始目錄條目無法區分; 文件的任何更改都與用於引用文件的名稱有效無關。 硬鏈接通常不會引用目錄,也可能不跨文件系統。

ln source link

要創建符號鏈接/軟鏈接,請使用:

ln -s {source-filename} {symbolic-filename}

例如:

ln -s file1 link1

ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

ln -s TARGET LINK_NAME

-s使它具有像-s意義。



ln [-Ffhinsv] source_file [target_file]

    link, ln -- make links

        -s    Create a symbolic link.

    A symbolic link contains the name of the file to which it is linked. 

    An ln command appeared in Version 1 AT&T UNIX.




symlink