WAF*_*WAF 6 bash path hard-link files
/path/to/fname#line1242
Run Code Online (Sandbox Code Playgroud)
有没有办法将文件中的特定行号作为路径名的一部分引用,或者以某种方式将链接打包到看起来/行为像路径名的行号?例如,将上面的字符串提供给同一文件系统的另一个用户,以便他们可以轻松打开我的文件“fname”并立即位于其中的第 1242 行。
我正在考虑类似于 HTML 锚点的行为,它可以包含在页面的 URI 中,然后表现得就像链接一样。也就是说,它们可以提供给同一文件系统的其他用户,并向这些用户指示文件中的给定行,默认情况下打开文件到该行。我意识到在 UNIX 中,唯一真正可以成为路径名一部分的东西可能是目录、文件和伪文件。但是,还有 glob、字符串扩展等,它们严格来说并不是路径名的一部分,但可以“舒适地”插入其中,而文件名可以被传递和引用,而不需要任何额外的命令。是否有一种内联方法可以模拟 UNIX 文件的锚点/链接行为?
我可以在我的“路径名”中包含命令替换和sed "1242p"
某种自引用,但随后我不再处理路径名,而只是处理文件上的命令。想一想,那么我就不会链接,只是提取一行。我根本想不出链接到特定行的方法(不忽略文件的其余部分)。
GNU bash,版本 3.2.51
您可以创建一个名为+view +1242 fname
. 然后在该文件上调用vi
or :view
view '+view +1242 fname'
Run Code Online (Sandbox Code Playgroud)
将打开fname
in并将光标放在第 1242行view
的开头(这里假设实现/ )。vim
vi
view
或者做:
ln -s / '+view +1242 '
Run Code Online (Sandbox Code Playgroud)
所以你也是:
view '+view +1242 /etc/passwd'
Run Code Online (Sandbox Code Playgroud)
查看/etc/passwd
第 1242 行。
或者:
touch '+exe "view +1242 \57etc\57passwd"'
Run Code Online (Sandbox Code Playgroud)
那view
是:
view '+exe "view +1242 \57etc\57passwd"'
Run Code Online (Sandbox Code Playgroud)
您还可以制作目标文件的顶行:
#! /usr/bin/less +1242
Run Code Online (Sandbox Code Playgroud)
并使其可执行 ( ) 并执行它,以便在第1242行处chmod +x fname
打开它。less