Clipit: 전체 ν΄λ¦½λ³΄λ“œ 볡사

에 λ§Œλ“  2012λ…„ 02μ›” 16일  Β·  8μ½”λ©˜νŠΈ  Β·  좜처: CristianHenzel/ClipIt

λ†“μΉœ 쒋은 κΈ°λŠ₯은 전체 ν΄λ¦½λ³΄λ“œ, λͺ¨λ“  쀄을 λ³΅μ‚¬ν•˜λŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€. νžˆμŠ€ν† λ¦¬ νŒŒμΌμ„ ꡬ문 λΆ„μ„ν•˜λŠ” ν”„λ‘œκ·Έλž¨ μ—†μ΄λŠ” 그닀지 μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€(μΆ”κ°€ 문자λ₯Ό μ œκ±°ν•˜κ³  νŒŒμΌμ„ ꡬ문 λΆ„μ„ν•˜λŠ” μŠ€ν¬λ¦½νŠΈκ°€ μžˆμ„ 수 있음)
λ‚˜λŠ” λͺ¨λ“  쀄을 μƒˆ μ€„λ‘œ λ³΅μ‚¬ν•˜λŠ” μƒˆλ‘œμš΄ ctrl alt + ν‚€λ₯Ό 잘 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. νžˆμŠ€ν† λ¦¬ 파일의 μ‚¬μš©μ„ λ°©μ§€ν•©λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

νžˆμŠ€ν† λ¦¬μ— μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆμ–΄ 맀우 μœ μš©ν•©λ‹ˆλ‹€. λ‹€μŒμ€ Python으둜 μž‘μ„±ν•œ μœ ν‹Έλ¦¬ν‹°μž…λ‹ˆλ‹€. 이것은 μš°λΆ„νˆ¬μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ‹œμŠ€ν…œμ—μ„œλŠ” νžˆμŠ€ν† λ¦¬ 파일의 μœ„μΉ˜κ°€ λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

#!/usr/bin/env python
"""cliphist.py: utility to print clipit history file.
If an argument is passed on the command line, it will
be used as a separator, otherwise history items are
separated by a blank line. """

import struct, os, sys

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'
if len(sys.argv) > 1:
    sep = sys.argv[1]
else:
    sep = ''


with open(histfile,'rb') as f:
    f.read(68)
    size,_ = struct.unpack('2i',f.read(8))
    while (size > 0):
        item = f.read(size)
        print item
        _,_,_,size,_ = struct.unpack('5i',f.read(20))
        if size > 0: 
            print sep

λͺ¨λ“  8 λŒ“κΈ€

μ•ˆλ…•ν•˜μ‹­λ‹ˆκΉŒ,

아이디어λ₯Ό μžμ„Ένžˆ μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? 무슨 말인지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. _μ •ν™•νžˆ_ μ›ν•˜λŠ”/ν•„μš”ν•œ μž‘μ—…μ— λŒ€ν•œ 예λ₯Ό μ œκ³΅ν•˜μ—¬ μ‚¬μš© 사둀λ₯Ό 더 잘 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ‹­λ‹ˆκΉŒ ,
λͺ¨λ“  기둝 νŒŒμΌμ„ λ³΅μ‚¬ν•˜λŠ” μ˜΅μ…˜μ„ κ°–κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. clipit에 볡사할 λ§Žμ€ ν…μŠ€νŠΈ 블둝을 μ„ νƒν•˜κ³  κ·Έ 후에 볡사본을 μ²˜λ¦¬ν•˜λ €λŠ” 경우 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
그리고 νžˆμŠ€ν† λ¦¬ νŒŒμΌμ€ μ‚¬μš©ν•˜κΈ° 쉽지 μ•ŠμŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ λ‚˜λŠ” λͺ¨λ“  기둝 파일(그리고 λͺ¨λ“  쀄)을 μƒˆ μ€„λ‘œ λ³΅μ‚¬ν•˜λŠ” μ˜΅μ…˜μ„ 잘 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이 쀄(μƒˆ 볡사본)을 λΆ™μ—¬λ„£κ³  λͺ¨λ“  기둝 파일(그리고 λͺ¨λ“  이전 볡사본)을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. 이것에 λŒ€ν•œ λ‹¨μΆ•ν‚€λŠ” 훨씬 더 쒋을 κ²ƒμž…λ‹ˆλ‹€.

이 생각은 제 생각에도 λ§žμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 닀쀑 μ·¨ν–₯이라고 λΆ€λ₯΄λŠ” 이 κΈ°λŠ₯을 많이 κ³ λ§™κ²Œ μƒκ°ν•©λ‹ˆλ‹€. λ‘˜ μ΄μƒμ˜ μž…λ ₯을 볡사할 수 있으면 μ’‹κ² κ³  λ§ˆμ§€λ§‰μœΌλ‘œ 좜λ ₯ κ²°κ³Όκ°€ λ‹€μŒ ν˜•μ‹μ΄ λ˜λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€.

λΆ™μ—¬λ„£κΈ° 1
빈 쀄
λΆ™μ—¬λ„£κΈ° 2
빈 쀄
λ“±.

책을 읽을 λ•Œ μ€‘μš”ν•œ λ¬Έμž₯을 μž‘μ•„λ³΄λ €κ³  ν•  λ•Œ 정말 μœ μš©ν•΄μš”! ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

저도 자주 λ†“μΉ˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

νžˆμŠ€ν† λ¦¬μ— μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆμ–΄ 맀우 μœ μš©ν•©λ‹ˆλ‹€. λ‹€μŒμ€ Python으둜 μž‘μ„±ν•œ μœ ν‹Έλ¦¬ν‹°μž…λ‹ˆλ‹€. 이것은 μš°λΆ„νˆ¬μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ‹œμŠ€ν…œμ—μ„œλŠ” νžˆμŠ€ν† λ¦¬ 파일의 μœ„μΉ˜κ°€ λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

#!/usr/bin/env python
"""cliphist.py: utility to print clipit history file.
If an argument is passed on the command line, it will
be used as a separator, otherwise history items are
separated by a blank line. """

import struct, os, sys

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'
if len(sys.argv) > 1:
    sep = sys.argv[1]
else:
    sep = ''


with open(histfile,'rb') as f:
    f.read(68)
    size,_ = struct.unpack('2i',f.read(8))
    while (size > 0):
        item = f.read(size)
        print item
        _,_,_,size,_ = struct.unpack('5i',f.read(20))
        if size > 0: 
            print sep

μ’‹μ•„, λ‚˜λŠ” 이것을 λͺ…λ Ήμ€„μ—μ„œ μž‘λ™μ‹œμΌ°λ‹€. μ–΄λ–»κ²Œ 이것을 μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ— 직접 뢙여넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚΄κ°€ μ˜¬λ°”λ₯΄κ²Œ μ΄ν•΄ν–ˆλ‹€λ©΄ cliphist.py의 좜λ ₯을 clipit λͺ…λ ΉμœΌλ‘œ νŒŒμ΄ν”„ν•œ λ‹€μŒ(단일 기둝 ν•­λͺ©μœΌλ‘œ λ§Œλ“€κΈ° μœ„ν•΄) λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ—μ„œ ν‰μ†Œμ™€ 같이 뢙여넣을 수 μžˆμŠ΅λ‹ˆλ‹€.

$ cliphist.py | clipit

@davidsand 멋진 슀크립트

λ‚΄ bashrc에 μΆ”κ°€ν•©λ‹ˆλ‹€.
별칭 clipit.history='python2 /home/emmanuelux/scripts/cliphist.py'
별칭 clipit.history.copy='clipit.history | 클리핏'

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰