์ต์ˆ™ํ•œ ํŒŒ์ผ ์—ฐ๊ฒฐ์„ ์ฆ‰์‹œ ์„ค์ •ํ•˜์„ธ์š”

์ž๋™ ์„ค์ • ํŒŒ์ผ ์—ฐ๊ฒฐ, ์ฆ‰ 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

๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฆ‰์‹œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์ด ํŠน์ • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์–ด๋–ค ์ด์œ ๋กœ ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ๊ด€๋ฆฌ์ž๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  bat ํŒŒ์ผ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ๋ฐฑ๋ถ„์œจ ๊ธฐํ˜ธ(%%1)๋ฅผ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. Windows 7 Ultimate 64๋น„ํŠธ์˜ ๋งˆ๋ฒ•์˜ ์„ธ๊ณ„โ€ฆ

macOS

MacOS์—์„œ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜๋ฌด. ๋ฅผ ํ†ตํ•ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. brew install duti. ์‚ฌ์šฉ ์˜ˆ:

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

๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฆ‰์‹œ ์ ์šฉ๋˜๋ฉฐ sudo๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ "com.apple.TextEdit" ์ธ์ˆ˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์œ„ "๋ฒˆ๋“ค ID"์ž…๋‹ˆ๋‹ค. "editor" ์ธ์ˆ˜๋Š” ์—ฐ๊ด€ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ํŽธ์ง‘์˜ ๊ฒฝ์šฐ "editor", ๋ณด๊ธฐ์˜ ๊ฒฝ์šฐ "viewer", ๋ชจ๋“  ํ•ญ๋ชฉ์˜ ๊ฒฝ์šฐ "all"์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด "๋ฒˆ๋“ค ID"๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์˜ "/Applications/Sublime Text.app"์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฒˆ๋“ค ID๋Š” "com.sublimetext.3" ๋˜๋Š” ๋‹ค๋ฅธ ID๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

> 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

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€