더 짧은 시간에 맞춤 헤더를 만드는 방법은 무엇입니까? 아니면 더 짧은 시간에 두 개의 파일을 동시에 여는 방법은 무엇입니까?

더 짧은 시간에 맞춤 헤더를 만드는 방법은 무엇입니까? 아니면 더 짧은 시간에 두 개의 파일을 동시에 여는 방법은 무엇입니까?

파일을 열 때 앞에 사용자 정의 텍스트를 추가하는 방법은 무엇입니까 less? 예를 들어 다음과 같은 내용을 보고 싶습니다.

My custom title

Content of the opened file goes here...

나는 다음과 같은 명령을 원합니다 :

echo 'My custom title' | less file

less그런 기능은 없습니다. 그러나 몇 가지 해결 방법을 통해 가능해야 합니다. 기본적으로 두 개의 파일을 순차적으로 하나로 병합한 후 열어야 합니다. 새 파일을 열 수 있는 RAM에 임시 가상 파일을 만드는 방법은 무엇입니까 less?

유제:

답변1

왜 안 돼

( echo 'My custom title'; cat file ) | less

대화형으로 사용하려면 함수에 넣으세요. 이 버전에서는 파일 이름( less제공할 수 있는 모든 옵션 포함)만 사용합니다.

# bash
myless() {
    local x=("$@")
    local f="${x[-1]}"
    unset x[-1]
    { echo 'My custom title'; cat "$f"; } | less "${x[@]}"
}

보다 구체적인 시나리오의 경우 이 기능을 적절하게 수정할 수 있습니다. 예를 들어 첫 번째 인수가 헤더이고 두 번째 인수가 항상 파일인 경우 다음과 같이 크게 단순화할 수 있습니다.

myless() {
    { printf '%s\n' "$1"; cat -- "$2"; } | less
}

less헤더를 파일 이름으로 사용하려면 이미 가지고 있는 옵션을 사용하여 프롬프트 줄에 이 옵션을 제공하는 것이 더 현명한 것 같습니다. 그러나 다른 일면에서는,

myless() {
    while [ "$#" -gt 0 ]
    do
        printf '\n\n%s\n' "$1"
        cat -- "$1"
        shift
    done |
        less
}

답변2

일반적인 서브셸 기반 접근 방식:

(echo "custom title"; cat file) | less

일하다.

나는 내 것(또는 네오빔)을 좋아해서 vim다음과 같은 일을 했습니다.

#!/bin/ksh
# or /bin/bash or /usr/bin/zsh, really
open_with_title() {
  title="$1"
  shift
  ${EDITOR:-vim} \
       --clean \
       -R \
       --cmd ':set showtablines=2' \
       --cmd ":set tabline='${title}'" \
       -- \
       $@
}

vim의 "뷰어" 모드를 사용하고 뷰 제목을 설정하세요. (혼란을 방지하기 위해 ed또는 또는 파생어를 사용한 적이 없는 경우 vi: 종료를 입력합니다 :q.)

답변3

여기에 설명된 대로 RAM 파티션을 설정합니다. 쉘 스크립트 - RAM에 임시 파일을 만드는 방법은 무엇입니까? - Unix 및 Linux 스택 교환

제목이 .bashrc적거나 다음을 여는 기능을 추가하세요 .bash_funcs.sh.

open_less_with_title() { 
    local title="$1"
    local file="$2"
    local tmp_dir=""
    local virtual_tmp_dir="/mnt/tmpfs"
    if [ -d "$virtual_tmp_dir" ]; then
        tmp_dir="$virtual_tmp_dir"
    else
        tmp_dir="/tmp"
    fi
    tmp_less_file=$(mktemp "$tmp_dir/tmp_less_file.XXXXXXXXXX")
    echo -e "$title\n\n" > "$tmp_less_file"
    cat "$file" >> "$tmp_less_file"
    less "$tmp_less_file"
    rm "$tmp_less_file"
}

사용 예:

open_less_with_title "My custom title" /path/to/file

관련 정보