Thiết lập ngay các liên kết tập tin quen thuộc

Liên kết tệp cài đặt tự động, nghĩa là chọn chương trình sẽ mở tệp từ Explorer/Finder. Và tôi chia sẻ.

Vấn đề đầu tiên. Theo mặc định, các tệp có phần mở rộng được yêu cầu thường không được mở bằng bất kỳ thứ gì và nếu chúng được mở thì bằng một số iTunes. Trong Windows, các liên kết cần thiết đôi khi bị mất hoàn toàn khi cài đặt (hoặc thậm chí gỡ cài đặt) chương trình: đôi khi bạn gỡ cài đặt GIMP và các tệp ico được chuyển từ trình xem tệp thông thường sang Thư viện ảnh tiêu chuẩn. Tại sao? Để làm gì? Không xác định... Điều gì sẽ xảy ra nếu tôi tìm thấy một trình soạn thảo mới hoặc vì nhiều lý do khác nhau, một bản cài đặt mới? Nếu có nhiều hơn một máy tính thì sao? Nói chung việc click chuột trong hội thoại là một trò giải trí như vậy.

Thay vào đó, tôi đã lưu hai tệp trên Dropbox và bây giờ tôi có thể đưa thế giới máy tính trở lại bình thường gần như ngay lập tức. Và điều mà bạn đã chờ đợi bấy nhiêu năm nay... Tiếp theo là công thức dành cho Windows và macOS.

Windows

Trong bảng điều khiển Windows cmd.exe điều này được thực hiện trong hai giai đoạn:

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

Những thay đổi có hiệu lực ngay lập tức. Mặc dù thực tế là liên kết được đăng ký cho một người dùng cụ thể, nhưng vì lý do nào đó, các lệnh này cần được chạy với tư cách quản trị viên. Và đừng quên nhân đôi ký hiệu phần trăm (%%1) khi chạy từ tệp bat. Thế giới kỳ diệu của Windows 7 Ultimate 64-bit…

macOS

Trong MacOS, thật thuận tiện khi thiết lập liên kết bằng tiện ích nhiệm vụ. Nó được cài đặt thông qua brew install duti. Ví dụ sử dụng:

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

Các thay đổi có hiệu lực ngay lập tức, không cần sudo. Ở đây, đối số “com.apple.TextEdit” được gọi là “id gói” của chương trình chúng ta cần. Đối số “editor” là loại liên kết: “editor” để chỉnh sửa, “viewer” để xem, “all” cho mọi thứ.

Bạn có thể tìm “id gói” như thế này: nếu có “/Applications/Sublime Text.app” của phiên bản thứ ba, thì ID gói của nó sẽ là “com.sublimetext.3” hoặc một số khác:

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

Đã thử nghiệm trên macOS Sierra.

Tập lệnh cuối cùng cho 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

Tập lệnh cuối cùng cho 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

Nguồn: www.habr.com

Thêm một lời nhận xét