이름을 입력하여 터미널에서만 파일 열기


15

xdg-open터미널에서 다음과 같이 사용자가 선호하는 응용 프로그램의 파일을 열 것이라는 것을 알고 있습니다 .

xdg-open filename

그러나 다음을 입력하여 기본 응용 프로그램의 현재 디렉토리에서 파일을 어떻게 열 수 있는지 궁금합니다.

filename

다음에 Enter물론. 더 이상 없습니다.


1
아마도 같은 디렉토리에서 파일을 확인하고 xdg- 열기 위해 command_not_found_handle()함수를 수정할 수 /etc/bash.bashrc있습니까?
chronitis

1
별칭을 사용하면 위험을 줄일 수 있습니다. alias open = "xdg-open"open은 변수입니다. 원하는만큼 짧게 만들 수 있습니다.
rɑːdʒɑ

답변:


20

Command Not Found Magic에command-not-found 지정된대로 우분투의 후크를 사용하십시오 . 현재 설치할 패키지를 제안하는 데 사용됩니다. 시스템에 설치해야하는 것을 참조하십시오 ./usr/share/doc/command-not-found/README

더 나은 방법은 command-not-found패키지에 의존하지 않기 때문에 기존 파일 인 if 파일 command_not_found_handle을 수행하고 다른 모든 경우를 이전 구현에 위임 하기 위해 Bash 내장 을 다시 구현합니다 .xdg-open$1

# Save the existing code for the handler as prev_command_not_found_handle.
# Bit of a hack, as we need to work around bash's lack of lexical closure,
# and cover the case when it is not defined at all.
eval "prev_$(declare -f command_not_found_handle)" >& /dev/null \
     || prev_command_not_found_handle () { 
            echo "$1: command not found" 1>&2
            return 127
        }

# Define the new implementation, delegating to prev_handler.
command_not_found_handle () {
    if [ -f "$1" ]; then
        xdg-open "$1"
    else
        prev_command_not_found_handle "$@"
    fi
}

좋은 질문, 멋진 기능입니다.


좀 더 생각하면 : bash_completion핸들러를 확장하지 않으면 생각만큼 기능을 좋아하지 않을 수 있습니다 . 을 열고 file-with-a-long-name.txt설정 하고 싶다고 상상해보십시오.

alias o='xdg-open'  

네 번의 키 누름으로 충분합니다.

o f<Tab><Enter>

전체 파일 이름을 입력하는 데 지루한 26 번이 걸리지 만 피할 수없는 오타에 대한 백 스페이스는 제외됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.