파일을 열 때 앞에 사용자 정의 텍스트를 추가하는 방법은 무엇입니까 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