특수 논리를 파일 확장자와 어떻게 연관시킬 수 있습니까?

특수 논리를 파일 확장자와 어떻게 연관시킬 수 있습니까?

파일 확장자를 기반으로 텍스트 편집기에서 특수 논리를 호출하도록 하는 쉬운 방법이 있습니까?

예를 들어, 파일 모음이 포함된 zip 파일이 있다고 가정해 보겠습니다.

text.txt
image.jpg
othercrap.crap

vi myarchive.zip파일 확장자 기반 수단을 통해 파일을 열 때 텍스트 편집기에서 자동으로 명령을 실행하도록 하는 방법이 있습니까 ?

답변1

"위에서 vi를 사용할 수 있고 텍스트 부분이 자동으로 형식을 지정하는 방법을 알 수 있다면 좋을 것입니다."라는 것 외에는 귀하의 설명을 많이 이해하지 못합니다. 그러나 그것이 아마도 귀하가 원하는 것일 것입니다(테스트되지 않음).

#!/usr/bin/env bash

tmp=$(mktemp) || exit 1
trap 'rm -f "$tmp"; exit' 0

edit_zip() {
    unzip "$1" > "$tmp" &&
    vi "$tmp" &&
    zip "$tmp" > "$1"
}

edit_pdf() {
    pdf2text "$1" > "$tmp" &&
    vi "$tmp" &&
    text2pdf "$tmp" > "$1"
}

act_ext="${1}_${2##*.}"
if declare -F "$act_ext" > /dev/null; then
    "$act_ext" "$3"
else
    printf 'Operation "%s" not supported.\n' "$*"
fi

myprogmyprog edit myfile.zip위의 내용은 귀하의 질문에 표시된 것처럼 귀하가 전화하고 싶은 것입니다 .

unzip위의 내용은 zip정확히 매개변수 또는 zip 파일에서 실행하려는 명령이 아닐 수 있으며 실제로 존재하지 않거나 실제로 PDF를 편집하기 위해 수행하려는 작업을 수행할 pdf2text수 없습니다. 위의 내용은 단지 아이디어를 제공하기 위한 것입니다. 등 text2pdf지원하려는 각 작업(작업 + 확장)을 수행하는 별도의 함수를 작성한 다음 스크립트에 전달된 인수에 따라 적절한 함수를 자동으로 호출합니다.edit.zip

답변2

사용행복하다(이전 Perl_6)

Proc답변: 외부 명령 호출을 표현하는 고유한 클래스 개체를 디자인/실행할 수 있습니다 . 다음을 스크립트로 저장하고 실행합니다.

my $proc = run 'echo', 'Hallo world', :out;
my $captured-output = $proc.out.slurp: :close;
say "Output was $captured-output.raku()";# OUTPUT: «Output was "Hallo world\n"␤» 

B. 쉘이 포함되는 것을 원하지 않을 수도 있으므로 자신만의 Raku 퀴프를 작성하고 dir()특정 디렉토리의 파일을 가리킬 수 있습니다. 다음은 파일과 파일 생성 날짜를 .jpeg파일당 한 줄씩 반환합니다..jpeg

~$ raku -e 'for dir( test => /:i '.' jpe?g $/ ) -> $file {
            say join "\t", $file, $file.IO.created.DateTime;
            }

https://docs.raku.org/type/Proc
https://docs.raku.org/routine/dir


C. Raku에는 작업 설계/실행에 유용한 Ake 모듈/스크립트가 있습니다.

~/Ake_Morning$ cat Akefile
task 'buy-food', {
    say 'Bought a salad.'
}

task 'shower', {
    say 'Showered.'
}

task 'morning' => <shower buy-food>;

task 'dinner' => <buy-food>, {
    say 'Yummy!'
}

그런 다음 다음 ake에서 바이너리를 실행하십시오 Akefile.

~/Ake_Morning$ ake
Task “default” does not exist

Did you mean one of these?
    buy-food
    dinner
    help
    morning
    shower
~/Ake_Morning$ ake morning
Showered.
Bought a salad.

https://github.com/Raku/ake


D. Raku에는 Sparrow6(DSL) 및 Tomtit(작업 실행기) 생태계도 있으며 둘 다 yamlD. Sparrow는 1. Raku, 2. Perl, 3. Bash, 4. Python, 5. Ruby 및 6. Powershell의 6가지 언어로 작업을 실행할 수 있습니다.

https://github.com/melezhik/Tomtit
https://github.com/melezhik/Sparrow6/blob/master/documentation/dsl.md
https://raku.org

관련 정보