特殊ロジックをファイル拡張子とどのように関連付けることができますか?

特殊ロジックをファイル拡張子とどのように関連付けることができますか?

ファイル拡張子に基づいてテキストエディタで特別なロジックを呼び出す簡単な方法はありますか?

たとえば、ファイルコレクションを含む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ファイルで実行したいコマンドではない可能性がありますpdf2text。上記は単にアイデアを提供するためのものです。サポートtext2pdfする各タスク(タスク+拡張)を実行する別の関数を作成し、スクリプトに渡された引数に従って適切な関数を自動的に呼び出します。edit.zip

答え2

使用幸せ(以前のPerl_6)

ProcA:外部コマンド呼び出しを表す独自のクラスオブジェクトを設計/実行できます。以下をスクリプトとして保存して実行します。

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ファイルごとに1行ずつ返します。.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

関連情報