Bash
Bash:文件中一行的路徑或連結?
/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行打開。