Танил файлын холбоог шууд тохируулаарай

Файлын холбоог автоматаар тохируулах, өөрөөр хэлбэл Explorer/Finder-аас файл нээх програмыг сонгох. Тэгээд би хуваалцаж байна.

Эхлээд асуудал. Шаардлагатай өргөтгөлүүдтэй файлуудыг анхдагч байдлаар юу ч нээдэггүй бөгөөд хэрэв нээсэн бол зарим iTunes-ээр нээгддэг. Windows үйлдлийн систем дээр заримдаа програм суулгах (эсвэл бүр устгах) үед шаардлагатай холбоог бүрэн алддаг: заримдаа та GIMP-ийг устгаж, ico файлуудыг ердийн файл үзүүлэгчээс стандарт зургийн цомог руу шилжүүлдэг. Яагаад? Юуны төлөө? Тодорхойгүй... Хэрэв би шинэ редактор эсвэл янз бүрийн шалтгааны улмаас шинэ суулгац олсон бол яах вэ? Нэгээс олон компьютер байвал яах вэ? Ерөнхийдөө харилцан яриан дээр хулгана дээр дарах нь ийм зугаа цэнгэл юм.

Үүний оронд би Dropbox дээр хоёр файл хадгалсан бөгөөд одоо би компьютерийн ертөнцийг бараг тэр дор нь хэвийн байдалд оруулж чадна. Мөн та олон жил юу хүлээж байсан бэ... Дараа нь Windows болон macOS үйлдлийн системд зориулсан жор.

Windows

Windows консол дээр cmd.exe Энэ нь хоёр үе шаттайгаар хийгддэг:

ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt

Өөрчлөлтүүд нэн даруй хүчин төгөлдөр болно. Холбоо нь тодорхой хэрэглэгчдэд бүртгэлтэй байдаг ч зарим шалтгааны улмаас эдгээр тушаалуудыг администратороор ажиллуулах шаардлагатай болдог. Бат файлаас ажиллахдаа хувийн тэмдэгтийг (%%1) хоёр дахин нэмэхээ бүү мартаарай. Windows 7 Ultimate 64 битийн ид шидийн ертөнц...

MacOS

MacOS дээр уг хэрэгслийг ашиглан холбоо тогтооход тохиромжтой үүрэг. Энэ нь дамжуулан суулгасан байна brew install duti. Хэрэглээний жишээ:

duti -s com.apple.TextEdit .txt "editor"

Өөрчлөлтүүд шууд хүчин төгөлдөр болно, sudo шаардлагагүй. Энд "com.apple.TextEdit" аргумент нь бидэнд хэрэгтэй програмын "багцын id" гэж нэрлэгддэг зүйл юм. "Засварлагч" аргумент нь холболтын төрөл юм: засварлах "редактор", үзэх "үзэгч", бүх зүйлд "бүгд".

Та "багцын id"-ийг дараах байдлаар олж болно: хэрэв гуравдахь хувилбарын "/Applications/Sublime Text.app" байгаа бол түүний багц ID нь "com.sublimetext.3" эсвэл өөр нэг байх болно:

> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3

MacOS Sierra дээр туршиж үзсэн.

Windows-д зориулсан эцсийн скрипт (.bat)

@echo off

set XNVIEW=C:Program Files (x86)XnViewxnview.exe
set SUBLIME=C:Program FilesSublime Text 3sublime_text.exe
set FOOBAR=C:Program Files (x86)foobar2000foobar2000.exe

call :assoc_ext "%SUBLIME%" txt md js json css java sh yaml
call :assoc_ext "%XNVIEW%" png gif jpg jpeg tiff bmp ico
call :assoc_ext "%FOOBAR%" flac fla ape wav mp3 wma m4a ogg ac3

goto :eof

:assoc_ext
  set EXE=%1
  shift
  :loop
  if "%1" neq "" (
    ftype my_file_%1=%EXE% "%%1"
    assoc .%1=my_file_%1
    shift
    goto :loop
  )
goto :eof

macOS (.sh)-д зориулсан эцсийн скрипт

#!/bin/bash

# this allows us terminate the whole process from within a function
trap "exit 1" TERM
export TERM_PID=$$

# check `duti` installed
command -v duti >/dev/null 2>&1 || 
  { echo >&2 "duti required: brew install duti"; exit 1; }

get_bundle_id() {
    osascript -e "id of app """ || kill -s TERM $TERM_PID;
}

assoc() {
    bundle_id=$1; shift
    role=$1; shift
    while [ -n "$1" ]; do
        echo "setting file assoc: $bundle_id .$1 $role"
        duti -s "$bundle_id" "." "$role"
        shift
    done
}

SUBLIME=$(get_bundle_id "Sublime Text")
TEXT_EDIT=$(get_bundle_id "TextEdit")
MPLAYERX=$(get_bundle_id "MPlayerX")

assoc "$SUBLIME" "editor" txt md js jse json reg bat ps1 cfg sh bash yaml
assoc "$MPLAYERX" "viewer" mkv mp4 avi mov webm
assoc "$MPLAYERX" "viewer" flac fla ape wav mp3 wma m4a ogg ac3

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх