Bash

Bash:文件中一行的路徑或連結?

  • December 30, 2016
/path/to/fname#line1242

有沒有辦法將文件中的特定行號作為路徑名的一部分引用,或者以某種方式將連結打包到看起來/行為類似於路徑名的行號?例如,將上面的字元串提供給同一文件系統的另一個使用者,以便他們可以輕鬆打開我的文件“fname”並立即在其中的第 1242 行。

我正在考慮類似於 HTML 錨點的行為,它可以包含在頁面的 URI 中,然後就像連結一樣。也就是說,可以將它們提供給同一文件系統的其他使用者,並將文件中的給定行指示給這些使用者,預設情況下打開該行的文件。我意識到在 UNIX 中,唯一可以真正成為路徑名一部分的可能是目錄、文件和偽文件。但是還有 glob、字元串擴展等,它們不是嚴格意義上的路徑名的一部分,但可以“舒適地”插入其中,而文件名被傳遞和引用,而不需要任何額外的命令。是否有一種內聯方式來模擬 UNIX 文件的錨/連結行為?

我可以在我的“路徑名”中包含命令替換sed "1242p"和某種自我引用,但是我不再處理路徑名,只是對文件進行操作的命令。想一想,那我就不會連結了,只是提取一行。我根本想不對外連結接到特定行的方法(不忽略文件的其餘部分)。

GNU bash,版本 3.2.51

您可以創建一個名為+view +1242 fname. 然後在該文件上呼叫vi或:view

view '+view +1242 fname'

將打開並將游標放在第 1242 行的開頭fname(這裡假設實現/ )。view``vim``vi``view

或者做:

ln -s / '+view +1242 '

所以你也是:

view '+view +1242 /etc/passwd'

在第 1242 行查看/etc/passwd

或者:

touch '+exe "view +1242 \57etc\57passwd"'

view與:

view '+exe "view +1242 \57etc\57passwd"'

您還可以製作目標文件的第一行:

#! /usr/bin/less +1242

並使其可執行(chmod +x fname)並執行它以使其less在第 1242行打開。

引用自:https://unix.stackexchange.com/questions/333358