Bash: 파일의 줄에 대한 경로 또는 링크?

Bash: 파일의 줄에 대한 경로 또는 링크?
/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커서를 놓습니다 (여기서 / 가 구현되었다고 가정).viewvimviview

또는 다음을 수행하십시오.

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 fnameless

답변2

실제로 파일의 일부를 링크할 수 있는 방법은 없습니다. 링크는 특정 이름의 파일에만 액세스할 수 있도록 허용하고 파일 내용에는 아무 작업도 수행하지 않는 파일 수준 도구입니다.

파일에서 읽고 싶다면 다음을 사용할 수 있습니다.명명된 파이프:

mkfifo fname_line1242
while true; do sed -n '1242 { p; q; }' /path/to/fname >fname_line1242; done

그리고 그것을 읽는 사람은 누구나 볼 수 있을 것입니다...운이 좋다면 fname_line12421242번째 줄을 보세요. /path/to/fname명명된 파이프에는 어떤 형태의 동기화도 없으므로 한 번에 판독기가 하나만 있는 경우에만 안정적으로 작동합니다.

이 기능을 여러 독자에게 적용하려면 다음을 사용하세요.소켓그리고 달리다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을 사용하면 파일의 줄을 참조할 수 있는 것 같습니다.

깃허브 링크

관련 정보