/path/to/fname#line1242
パス名の一部としてファイルの特定の行番号を参照する方法はありますか?パックパス名のように見える、または機能する行番号へのリンク?たとえば、同じファイルシステム上の他のユーザーに上記の文字列を提供すると、そのユーザーは自分のファイル「fname」を簡単に開き、そのファイルの1242行目にすぐにアクセスできます。
私は、ページのURIに含まれる次のリンクのように動作できるHTMLアンカーに似た動作について考えています。つまり、同じファイルシステム上の他のユーザーに提供でき、そのユーザーにファイルがデフォルトで開かれているファイルの特定の行を表示できます。私はUNIXが唯一の方法であることに気づきました。本当にパス名の一部は、ディレクトリ、ファイル、および擬似ファイルです。ただし、パス名の一部ではありませんが、「快適に」挿入でき、追加のコマンドなしでファイル名を渡して参照できるグローブ、文字列拡張などもあります。 UNIXファイルのアンカー/リンク動作をエミュレートするインライン方法はありますか?
「pathname」には、コマンドの置換と一種の独自の参照を含めることができますが、これはsed "1242p"
パス名を扱うことなくファイル内のコマンドのみを処理します。そういえばリンクをしなくてただ行だけ抽出したんですね。ファイルの残りの部分を無視せずに特定の行にリンクする方法を理解することはできません。
GNUバッシュ、バージョン3.2.51
答え1
という名前のファイルを作成し、そのファイル+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
実行可能にして()、1242行目で開くように実行します。chmod +x fname
less
答え2
実際にファイルの一部をリンクする方法はありません。リンクは、特定の名前のファイルにのみアクセスできるようにし、ファイルの内容には何もしないファイルレベルのツールです。
ファイルから読みたい場合は、次のものを使用できます。名前付きパイプ:
mkfifo fname_line1242
while true; do sed -n '1242 { p; q; }' /path/to/fname >fname_line1242; done
そしてそれを読んでいる人は誰でも見ることができます...運が良ければfname_line1242
1242行目を見てください。/path/to/fname
名前付きパイプには同期がないため、一度にリーダーが1つしかない場合にのみ安定して動作します。
この機能を複数の読者に適用するには、以下を使用してください。ソケットそして走るsocat
ソケットを読み込むたびにコンテンツを生成するコマンドを実行します。
socat -U UNIX-LISTEN:fname_line1242,unlink-early,fork EXEC:'sed -n -e 1242{ -e p -e q -e } /path/to/fname'
ファイルに内容を書き込んで行を置き換えたい場合は、/path/to/fname
可能ですが、はるかに難しいです。あなたはそれを使用することができますヒューズファイルを開く、読み取り、書き込みなどで作成したコードが実行されるカスタムファイルシステムを作成します。誰かが必要な作業を実行するファイルシステムをすでに作成していない限り、これには大きな努力が必要です。
答え3
次のようにローカルファイルのURIを作成できます。
file:///home/user/filename
その後、#Part3ガイドを挿入できます。
file:///home/user/filename#Part3
html
ただし、ブラウザを使用してファイルを読み取るには、そのファイルが必要です。
実際の質問は次のようになります。どのプログラム(ツール)がこのファイルを読み取るか表示しますか?
ブラウザが回答を読むことができるようにするには、回答を上記に示します。
(マンページの一般的なリーダー)では、less
次の内容を使用して特定の行に直接移動できます。
less +20 filename
コンソールの20行目から始まるテキストファイルを読みます。
必要な行番号を含むようにファイル名を変更できる場合。
次のようなもの: filename-line-233
、これはうまくいきます:
$ filename=A-text-file-line-233
$ less +"${filename##*-}" "$filename"
このアイデアに対応できる他のツールがあるかもしれません。
答え4
Markdownを使用すると、ファイルの行を参照できるようです。