Fasd: μƒˆλ‘œ μ„€μΉ˜ν–ˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2017λ…„ 12μ›” 01일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: clvv/fasd

이 λͺ…령을 μ‚¬μš©ν•˜μ—¬ μš°λΆ„νˆ¬ 14.04λ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.
$ sudo add-apt-repository ppa:aacebedo/fasd
$ sudo apt-get μ—…λ°μ΄νŠΈ
$ sudo apt-get μ„€μΉ˜ fasd

그런 λ‹€μŒ 예제λ₯Ό μ‹€ν–‰ν•˜λ €κ³  ν–ˆμ§€λ§Œ κ²°κ³Όκ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
$ ν„°μΉ˜ example.txt
$ μœ ν–‰ 예
$

μ œκ°€ 잘λͺ» μ„€μΉ˜ν•œκ±΄κ°€μš”? μ•„λ‹ˆλ©΄ λ‚΄κ°€ μ‹€ν–‰ν•œ λͺ…령이 μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

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

관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ https://github.com/jimhester/per-directory-history κ°€ fasd와 μΆ©λŒν•œλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. fasdκ°€ νŒŒμΌμ΄λ‚˜ 디렉토리λ₯Ό μΆ”μ ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 디렉토리별 기둝 ν”ŒλŸ¬κ·ΈμΈμ„ λΉ„ν™œμ„±ν™”ν•˜λ©΄ fasdκ°€ μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

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

λ‚΄ λ¬Έμ œλŠ” λ™μΌν•œ λ¬Έμ œκ°€ 있으며 μž μ‹œ λ™μ•ˆ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ‰˜μ˜ rc(예: .bashrc λ˜λŠ” .zshrc )에 μ΄ˆκΈ°ν™” μ½”λ“œ( eval "$(fasd --init auto)" )λ₯Ό ν¬ν•¨ν•˜κ³  μ‰˜μ˜ μƒˆ μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰ν–ˆμŠ΅λ‹ˆκΉŒ?

예, ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ zsh μ„Έμ…˜μ„ μ‹œμž‘ν•˜κ±°λ‚˜ iterm을 λ‹€μ‹œ μ‹œμž‘ν•˜κ³  fasd/ fasd -a/λ₯Ό μž…λ ₯ν•œ ν›„ 좜λ ₯ 둜그λ₯Ό μž¬λ°°μΉ˜ν•  수 μžˆμ—ˆμ§€λ§Œ 일반 μ΄ˆκΈ°ν™” μ½”λ“œ eval "$(fasd --init auto)"을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. 아무것도 보여주지 μ•ŠμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ λ‘œκ·Έκ°€ 무엇인지에 λŒ€ν•œ μŠ€λ‹ˆνŽ«μž…λ‹ˆλ‹€.

(eval):2: λͺ…령을 찾을 수 μ—†μŒ: fasd
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
fasd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1,- e], s[-] n[1, e]' -c - 'c[-1,-A][-1,-D ]' -ffasd_cd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1,- e], s[-] n[1,e]' -c - 'c[-1,-A][-1,-D ]' -f
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째

λ‚˜λŠ” "/usr/local/bin/fasd -a"λ₯Ό μ‹œλ„ν–ˆμ§€λ§Œ 아무 것도 λ‚˜νƒ€λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ $PATH λ³€μˆ˜μ— /usr/local/bin이 있기 λ•Œλ¬Έμ— λͺ…령을 찾을 수 μ—†λŠ” 이유λ₯Ό λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

2017λ…„ 12μ›” 18일 08:15에 Euan Kemp < [email protected] [email protected] >이(κ°€) λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

μ‰˜μ˜ rc(예: .bashrc λ˜λŠ” .zshrc)에 μ΄ˆκΈ°ν™” μ½”λ“œ(eval "$(fasd --init auto)")λ₯Ό ν¬ν•¨ν•˜κ³  μ‰˜μ˜ μƒˆ μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰ν–ˆμŠ΅λ‹ˆκΉŒ?

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub https://github.com/clvv/fasd/issues/117#issuecomment-352297827 μ—μ„œ ν™•μΈν•˜κ±°λ‚˜ https://github.com/notifications/unsubscribe-auth/ADKNgnXANOaoBoWsmKj82G3Cfuiln8yrks5t μŠ€λ ˆλ“œλ₯Ό μŒμ†Œκ±°ν•˜μ‹­μ‹œμ˜€.

그건 κ·Έλ ‡κ³ , μœ μΌν•˜κ²Œ μž‘λ™ν•˜λŠ” "fasd -h"λŠ” 적어도 zshκ°€ λͺ…λ Ήμ˜ μœ„μΉ˜λ₯Ό ​​찾을 수 μžˆμŒμ„ ν™•μΈν•˜λ―€λ‘œ locaκ°€ λͺ…령을 찾을 수 μ—†λŠ” 이유λ₯Ό λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

2017λ…„ 12μ›” 18일 09:18에 Xiao-Meng Wang < [email protected] [email protected] >이(κ°€) λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

예, ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ zsh μ„Έμ…˜μ„ μ‹œμž‘ν•˜κ±°λ‚˜ iterm을 λ‹€μ‹œ μ‹œμž‘ν•˜κ³  fasd/ fasd -a/λ₯Ό μž…λ ₯ν•œ ν›„ 좜λ ₯ 둜그λ₯Ό μž¬λ°°μΉ˜ν•  수 μžˆμ—ˆμ§€λ§Œ 일반 μ΄ˆκΈ°ν™” μ½”λ“œ eval "$(fasd --init auto)"을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. 아무것도 보여주지 μ•ŠμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ λ‘œκ·Έκ°€ 무엇인지에 λŒ€ν•œ μŠ€λ‹ˆνŽ«μž…λ‹ˆλ‹€.

(eval):2: λͺ…령을 찾을 수 μ—†μŒ: fasd
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
fasd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1,- e], s[-] n[1, e]' -c - 'c[-1,-A][-1,-D ]' -ffasd_cd -U -V fasd -K _fasd_zsh_cmd_complete -x 'C[-1,- e], s[-] n[1,e]' -c - 'c[-1,-A][-1,-D ]' -f
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째

λ‚˜λŠ” "/usr/local/bin/fasd -a"λ₯Ό μ‹œλ„ν–ˆμ§€λ§Œ 아무 것도 λ‚˜νƒ€λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ $PATH λ³€μˆ˜μ— /usr/local/bin이 있기 λ•Œλ¬Έμ— λͺ…령을 찾을 수 μ—†λŠ” 이유λ₯Ό λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

2017λ…„ 12μ›” 18일 08:15에 Euan Kemp < [email protected] [email protected] >이(κ°€) λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

μ‰˜μ˜ rc(예: .bashrc λ˜λŠ” .zshrc)에 μ΄ˆκΈ°ν™” μ½”λ“œ(eval "$(fasd --init auto)")λ₯Ό ν¬ν•¨ν•˜κ³  μ‰˜μ˜ μƒˆ μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰ν–ˆμŠ΅λ‹ˆκΉŒ?

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub https://github.com/clvv/fasd/issues/117#issuecomment-352297827 μ—μ„œ ν™•μΈν•˜κ±°λ‚˜ https://github.com/notifications/unsubscribe-auth/ADKNgnXANOaoBoWsmKj82G3Cfuiln8yrks5t μŠ€λ ˆλ“œλ₯Ό μŒμ†Œκ±°ν•˜μ‹­μ‹œμ˜€.

같은 문제, λ‚΄ ν™˜κ²½μ€ Windows 10의 Ubuntu ν•˜μœ„ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

μ΅œμ†Œν•œμ˜ μž¬μƒμ‚°μ„ μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

디버깅을 μœ„ν•΄ fasd μ΄ˆκΈ°ν™” μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•˜λŠ” 것이 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

set -x
eval "$(fasd --init auto)"
set +x

λ˜λŠ” 였λ₯˜κ°€ λ°œμƒν•˜λŠ” λͺ…λ Ή μ•žμ— set -x λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 문제λ₯Ό μž¬ν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ bashμ—μ„œ fasd μ„€μΉ˜κ°€ μž‘λ™ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ μ‹€ν–‰ν•  수 μžˆλŠ” λ‹¨κ³„μž…λ‹ˆλ‹€(μ‹œμŠ€ν…œμ—μ„œ μž‘μ—…μ„ ν™•μΈν•˜λ €λŠ” 경우 λ¬Έμ œκ°€ bashrc ꡬ성 λ˜λŠ” λ‹€λ₯Έ 곳에 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό 쒁힐 수 있음).

$ testhome=$(mktemp -d)
$ mkdir -p ${testhome}/bin
$ curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd
$ chmod +x ${testhome}/bin/fasd

$ cat > "${testhome}/.bashrc" <<EOF
export PATH=$PATH:${testhome}/bin                                    
# Ensure history is not blank; fasd grabs commands to process from history
# (https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130)
# and, if history is empty, will error out
echo "echo hello world" >> ~/.bash_history
eval "\$(fasd --init auto)" 
EOF

$ env -i HOME=${testhome} bash
$ cd ~/bin
$ cd ~/bin
$ cd ~

$ z bin && pwd

$ touch example.txt
$ fasd example

μ°Έκ³  : μœ„μ˜ λ‚΄μš©μ€ bash μŠ€ν¬λ¦½νŠΈκ°€ μ•„λ‹ˆλΌ fasdκ°€ μž‘λ™ν•˜λ„λ‘ λŒ€ν™”μ‹ μ‰˜μ—μ„œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ•½κ°„λ§Œ μˆ˜μ •ν•˜λ©΄('bash'λ₯Ό 'zsh'둜 λŒ€μ²΄) μœ„μ˜ λ‚΄μš©μ΄ zshμ—μ„œλ„ μž‘λ™ν•©λ‹ˆλ‹€.

μœ„μ˜ λ‚΄μš©μ€ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€( /tmp/tmp.zKxt6nvlxj/bin 및 6 /tmp/tmp.zKxt6nvlxj/bin/example.txt 좜λ ₯).

κ°€λŠ₯ν•œ 경우 λ‹€μŒ 쀑 ν•˜λ‚˜λ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

  1. 무엇이 μ€‘λ‹¨λ˜μ—ˆλŠ”μ§€μ— λŒ€ν•œ μžμ„Έν•œ 정보(예: set -x λ₯Ό μ‰˜μ— μ μš©ν•œ ν›„ fasd example λ˜λŠ” fasd --init 의 좜λ ₯)
  2. μœ„μ™€ 같은 μ΅œμ†Œν•œμ˜ ν™˜κ²½μ—μ„œ μž¬ν˜„ν•  수 μžˆλŠ”μ§€ μ—¬λΆ€.
  3. "λ‚΄ μ»΄ν“¨ν„°μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"만이 μ•„λ‹Œ μ‹€μ œ μ΅œμ†Œ μž¬μƒμ‚°

μ•ˆλ…•ν•˜μ„Έμš” Euanμž…λ‹ˆλ‹€. 여기에 μ œκ°€ 얻은 λͺ‡ 가지 κ²°κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.

첫 번째 λΆ€λΆ„, λ‚˜λŠ” 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ μ „ν˜€ λͺ¨λ¦…λ‹ˆλ‹€:
이것은 zsh에 μžˆμŠ΅λ‹ˆλ‹€

~ ➀ set -x git:master *
ν‰κ°€νŒ "$(fasd --init auto)"
μ„€μ • +x

+zsh:2> fasd --μžλ™ μ΄ˆκΈ°ν™”
+zsh:2> 평가 $'{ if [ "$ZSH_VERSION" ] && compctl; then # zsh\n eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \n zsh-wcomp zsh-wcomp-install)"\n elif [ "$BASH_VERSION" ] && μ™„λ£Œ ; then # bash\n eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"\n else # posix μ…Έ\n eval "$(fasd --init posix-alias posix- 후크)"\n fi\n} >> "/Users/Administrator/.config/fasd/fasd.log" 2>&1'
+(평가):1> [ 5.3 ']'
+(평가):1> μ••μΆ•
+(평가):2> fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install
+(eval):2> 평가 $'alias a=\'fasd -a\'\nalias s=\'fasd -si\'\nalias sd=\'fasd -sid\'\nalias sf=\'fasd - sif\'\nalias d=\'fasd -d\'\nalias f=\'fasd -f\'\n# λ‚΄μž₯ cd\nfasd_cd()λ₯Ό μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜ {\n if [ $# -le 1 ] ; then\n fasd "$@"\n else\n local _fasd_ret="$(fasd -e \'printf %s\' "$@")"\n [ -z "$_fasd_ret" ] && return\n [ -d "$_fasd_ret" ] && cd "$_fasd_ret" || printf %s\n "$_fasd_ret"\n fi\n}\nalias z=\'fasd_cd -d\'\nalias zz=\'fasd_cd -d -i\'\n\n# zsh 후크 μΆ”κ°€\n_fasd_preexec( ) {\n { 평가 "fasd --proc $(fasd --sanitize $1)"; } >> "/Users/Administrator/.config/fasd/fasd.log" 2>&1\n}\nautoload -Uz add-zsh-hook\nadd-zsh-hook preexec _fasd_preexec\n\n# zsh λͺ…λ Ή λͺ¨λ“œ μ™„λ£Œ \n_fasd_zsh_cmd_complete() {\n local compl\n read -c compl\n (( $+compstate )) && compstate[insert]=menu # compsysκ°€ λ‘œλ“œλœ 경우 ν™•μž₯ν•˜μ§€ μ•ŠμŒ\n reply=(${(f)"$( fasd --complete "$compl")"})\n}\n\n# enbale λͺ…λ Ή λͺ¨λ“œ μ™„λ£Œ\ncompctl -U -K _fasd_zsh_cmd_complete -V fasd -x \'C[-1,- e],s[- ]n[1,e]\' -c - \n \'c[-1,-A][-1,-D]\' -f -- fasd fasd_cd\n\n(( $+functions[compdef ] )) && {\n # zsh 단어 λͺ¨λ“œ μ™„μ„±\n _fasd_zsh_word_complete() {\n [ "$2" ] && 둜컬 _fasd_cur="$2"\n [ -z "$_fasd_cur" ] && 둜컬 _fasd_cur="${words [ν˜„μž¬]}"\n 둜컬 fnd="${_fasd_cur//,/ }"\n 둜컬 μœ ν˜•=${1:-e}\n fasd --query $typ "$fnd" 2>> "/μ‚¬μš©μž /κ΄€λ¦¬μž/.config/fasd/fasd.log" | sed \'s/^[^ ] [ ] //\' | do\n compadd -U -V fasd "$line"\n μ™„λ£Œ\n compstate[insert]=menu # ν™•μž₯ μ—†μŒ\n }\n _fasd_zsh_word_complete_f() { _fasd_zsh_word_complete f ; }\n _fasd_zsh_word_complete_trigger() {\n local _fasd_cur="${words[CURRENT]}"\n eval $(fasd --word-complete-trigger _fasd_zsh_word_complete $_fasd_cur)\n }\n # zle μœ„μ ― μ •μ˜\n z -C fasd-complete μ™„λ£Œ 단어 _generic\n zstyle \':completion:fasd-complete: \' completer _fasd_zsh_word_complete\n zstyle \':completion:fasd-complete: \' 메뉴 선택\n\n zle -C fasd -complete-f μ™„μ „ν•œ 단어 _generic\n zstyle \':completion:fasd-complete-f: \' completer _fasd_zsh_word_complete_f\n zstyle \':completion:fasd-complete-f: \' 메뉴 선택\n\n zle -C fasd-complete-d complete-word _generic\n zstyle \':completion:fasd-complete-d: \' completer _fasd_zsh_word_complete_d\n zstyle \':completion:fasd-complete-d: \' 메뉴 선택\n }\n\n(( $+functions[compdef] )) && {\n # 단어 λͺ¨λ“œ μ™„μ„± ν™œμ„±ν™”\n orig_comp="$(zstyle -L \':completion:*\' completer 2>> "/Users/ κ΄€λ¦¬μž/.config/fasd/fasd.log")"\n if [ "$orig_comp" ]; ) eval "$orig_comp _fasd_zsh_word_complete_trigger";;\n esac\n else\n zstyle \':completion: \' setword_\n figger_complete _fasd_zsh_ orig_comp\n}'
+(평가):1> 별칭 'a=fasd -a'
+(평가):2> 별칭 '=fasd -si'
+(평가):3> 별칭 'sd=fasd -sid'
+(평가):4> 별칭 'sf=fasd -sif'
+(평가):5> 별칭 'd=fasd -d'
+(평가):6> 별칭 'f=fasd -f'
+(평가):17> 별칭 'z=fasd_cd -d'
+(평가):18> 별칭 'zz=fasd_cd -d -i'
+(평가):24> μžλ™ λ‘œλ“œ -Uz add-zsh-hook
+(평가):25> zsh-hook preexec μΆ”κ°€ _fasd_preexec
+zsh:3> +x μ„€μ •

두 번째 뢀뢄은 예제 νŒŒμΌμ„ μž‘μ„±ν•  수 μ—†μ–΄μ„œ 루트둜 λ³€κ²½ν–ˆκ³  이 μ΅œμ†Œ ν™˜κ²½μ—μ„œ fasdκ°€ μž‘λ™ν•©λ‹ˆλ‹€. 아직 .bashrc νŒŒμΌμ„ λ§Œλ“€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

bash-3.2$ sudo su
λΉ„λ°€λ²ˆν˜Έ:
sh-3.2# testhome=$(mktemp -d)
sh-3.2# mkdir -p ${ν…ŒμŠ€νŠΈν™ˆ}/bin
sh-3.2# cd ${ν…ŒμŠ€νŠΈν™ˆ}/bin
sh-3.2# ls
sh-3.2# μ•”ν˜Έ
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/bin
sh-3.2# 컬 -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd;chmod https://raw.githubusercontent.com/clvv/ fasd/master/fasd;chmod +x ${testhome}/bin/fasd;
sh-3.2# ls -al
총 40
drwxr-xr-x 3 루트 휠 96 12μ›” 28일 16:51 .
drwx------ 3 루트 휠 96 Dec 28 16:50 ..
-rwxr-xr-x 1 루트 휠 20195 12μ›” 28일 16:51 fasd
bash-3.2# ν‰κ°€νŒ "$(./bin/fasd --init auto)"
bash-3.2# μœ ν–‰
bash-3.2# ls
.viminfo bin example.txt
bash-3.2# echo "μ•ˆλ…•ν•˜μ„Έμš” 세계 에코" >> ~/.bash_history
bash-3.2# ls
.bash_history .viminfo 빈 example.txt
bash-3.2# 내보내기 경둜=$PATH:${ν…ŒμŠ€νŠΈν™ˆ}/bin
bash-3.2# ls
.bash_history .fasd .viminfo 빈 example.txt
bash-3.2# v .fasd
bash: v: λͺ…령을 찾을 수 μ—†μŒ
bash-3.2# 고양이 .fasd
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd|1|1514451952
bash-3.2# ./bin/fasd
12 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd
bash-3.2# ./bin/fasd 예제
bash-3.2# rm example.txt
bash-3.2# ν„°μΉ˜ example.txt
bash-3.2# ./bin/fasd 예제
6 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/example.txt

2017λ…„ 12μ›” 28일 02:37에 Euan Kemp < [email protected] [email protected] >이(κ°€) λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

μ΅œμ†Œν•œμ˜ μž¬μƒμ‚°μ„ μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

디버깅을 μœ„ν•΄ fasd μ΄ˆκΈ°ν™” μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•˜λŠ” 것이 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μ • -x
ν‰κ°€νŒ "$(fasd --init auto)"
μ„€μ • +x
λ˜λŠ” 였λ₯˜κ°€ λ°œμƒν•˜λŠ” λͺ…λ Ή μ•žμ— set -xλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 문제λ₯Ό μž¬ν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ bashμ—μ„œ fasd μ„€μΉ˜κ°€ μž‘λ™ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ μ‹€ν–‰ν•  수 μžˆλŠ” λ‹¨κ³„μž…λ‹ˆλ‹€(μ‹œμŠ€ν…œμ—μ„œ μž‘μ—…μ„ ν™•μΈν•˜λ €λŠ” 경우 λ¬Έμ œκ°€ bashrc ꡬ성 λ˜λŠ” λ‹€λ₯Έ 곳에 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό 쒁힐 수 있음).

$ testhome=$(mktemp -d)
$ mkdir -p ${ν…ŒμŠ€νŠΈν™ˆ}/bin
$ curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd
$ chmod +x ${ν…ŒμŠ€νŠΈν™ˆ}/bin/fasd

$ 고양이 > "${testhome}/.bashrc" < 내보내기 경둜=$PATH:${ν…ŒμŠ€νŠΈν™ˆ}/bin

기둝이 λΉ„μ–΄ μžˆμ§€ μ•Šμ€μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. fasdλŠ” κΈ°λ‘μ—μ„œ μ²˜λ¦¬ν•  λͺ…령을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

(https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd7952c127-L130 https://github.com/clvv/fasd/blob/90b531a5

νžˆμŠ€ν† λ¦¬κ°€ λΉ„μ–΄ 있으면 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

echo "μ•ˆλ…•ν•˜μ„Έμš” 세계 에코" >> ~/.bash_history
ν‰κ°€νŒ "$(fasd --init auto)"
EOF

$ env -i HOME=${testhome} bash
$ cd ~/bin
$ cd ~/bin
$cd ~

$ z bin && pwd

$ ν„°μΉ˜ example.txt
$ μœ ν–‰ 예
μ°Έκ³ : μœ„μ˜ λ‚΄μš©μ€ bash μŠ€ν¬λ¦½νŠΈκ°€ μ•„λ‹ˆλΌ fasdκ°€ μž‘λ™ν•˜λ„λ‘ λŒ€ν™”μ‹ μ‰˜μ—μ„œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ•½κ°„λ§Œ μˆ˜μ •ν•˜λ©΄ μœ„μ˜ λ‚΄μš©μ΄ zshμ—μ„œλ„ μž‘λ™ν•©λ‹ˆλ‹€.

μœ„μ˜ λ‚΄μš©μ€ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€(/tmp/tmp.zKxt6nvlxj/bin 및 6 /tmp/tmp.zKxt6nvlxj/bin/example.txt 인쇄).

κ°€λŠ₯ν•œ 경우 λ‹€μŒ 쀑 ν•˜λ‚˜λ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

무엇이 μ€‘λ‹¨λ˜μ—ˆλŠ”μ§€μ— λŒ€ν•œ μžμ„Έν•œ 정보(예: set -xλ₯Ό μ‰˜μ— μ μš©ν•œ ν›„ fasd example λ˜λŠ” fasd --init의 좜λ ₯)
μœ„μ™€ 같은 μ΅œμ†Œν•œμ˜ ν™˜κ²½μ—μ„œ μž¬ν˜„ν•  수 μžˆλŠ”μ§€ μ—¬λΆ€.
"λ‚΄ μ»΄ν“¨ν„°μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"만이 μ•„λ‹Œ μ‹€μ œ μ΅œμ†Œ μž¬μƒμ‚°
β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub https://github.com/clvv/fasd/issues/117#issuecomment-354156542 μ—μ„œ ν™•μΈν•˜κ±°λ‚˜ https://github.com/notifications/unsubscribe-auth/ADKNgl5x1H3BscF4Pa3- μŠ€λ ˆλ“œλ₯Ό μŒμ†Œκ±°ν•˜μ‹­μ‹œμ˜€.

https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png https://cloud.githubusercontent.com/assets/143418/15842166/7 -b52498112777.png https://github.com/clvv/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd/r/n$ https://github.com/clvv/fasd/blob /90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127-L130 https://github.com/clvv/fasd/issues/117#issuecomment-354156542

λ‚΄ zsh μ΄ˆκΈ°ν™” μ½”λ“œλŠ” λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ©λ‹ˆλ‹€.

fasd_cache = "$ ν™ˆ / .config / fasd / fasd-init-zsh"
if ["$ (λͺ…λ Ή -v fasd)" -nt "$ fasd_cache" -o! -s "$ fasd_cache"]; κ·Έ λ‹€μŒμ—
fasd --init posix-alias posix-hook zsh-hook zsh-ccomp zsh-ccomp-install zsh-ccomp zsh-ccomp-install> | "$ fasd_cache"
파이
μ†ŒμŠ€ "$ fasd_cache"
μ„€μ • ν•΄μ œλœ fasd_cache

fasd-init-zshλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

fasd ➀ 고양이 fasd-init-zsh μžμ‹: λ§ˆμŠ€ν„° *
별칭 a = 'fasd -a'
별칭 s = 'fasd -si'
별칭 sd = 'fasd -sid'
별칭 sf = 'fasd -sif'
별칭 d = 'fasd -d'
별칭 f = 'fasd -f'

λ‚΄μž₯ cd μ‹€ν–‰ ν•¨μˆ˜

fasd_cd () {
if [$ # -le 1]; κ·Έ λ‹€μŒμ—
μœ ν–‰ "$ @"
또 λ‹€λ₯Έ
지역 _fasd_ret = "$ (fasd -e 'printf% s'" $ @ ")"
[-z "$ _fasd_ret"] && 리턴
[-d "$ _fasd_ret"] && cd "$ _fasd_ret" || printf% s \n "$ _fasd_ret"
파이
}
별칭 z = 'fasd_cd -d'
별칭 zz = 'fasd_cd -d -i'

_fasd_prompt_func () {
eval "fasd --proc $ (fasd --sanitize $ (기둝 1 | \
sed "s / ^ [] [0-9] [] * //")) "" >> "/Users/Administrator/.config/fasd/fasd.log" 2> & 1
}

배쉬 후크 μΆ”κ°€

μΌ€μ΄μŠ€ $ PROMPT_COMMAND
_fasd_prompt_func ) ;;
*) PROMPT_COMMAND = "_ fasd_prompt_func; $ PROMPT_COMMAND" ;;
이삭

bash λͺ…λ Ή λͺ¨λ“œ μ™„λ£Œ

_fasd_bash_cmd_complete () {
# "-e" λ‹€μŒμ— μ™„μ „ν•œ λͺ…λ Ή
ν˜„μ§€ 톡화 = $ {COMP_WORDS [COMP_CWORD]}
[[$ {COMP_WORDS [COMP_CWORD-1]} == - e]] && \COMPREPLY = ($ (compgen -A λͺ…λ Ή $ cur)) && λ°˜ν™˜# "-A" λ˜λŠ” "-D" 뒀에 μ™„λ£Œλ˜λŠ” κΈ°λ³Έ readline을 μ‚¬μš©ν•˜μ—¬ μ™„λ£ŒμΌ€μ΄μŠ€ $ {COMP_WORDS [COMP_CWORD-1]}-A | -D) COMPREPLY = ($ (compgen -o κΈ°λ³Έ $ cur)) && 리턴 ;;이삭# ν™•μž₯된 별칭을 μ‚¬μš©ν•˜μ—¬ μ™„λ£Œ κ²°κ³Όλ₯Ό μ–»μŠ΅λ‹ˆλ‹€.둜컬 κ²°κ³Ό = $ (fasd --complete "$ (별칭 -p $ COMP_WORDS \2 >> "/μ‚¬μš©μž/κ΄€λ¦¬μž/.config/fasd/fasd.log" | \)' / \ 1 / p")$ {COMP_LINE # } "| μ½λŠ” λ™μ•ˆ -r ν–‰; μˆ˜ν–‰
quote_readline "$ 라인" 2> / dev / null || \
printf% q "$ 라인" 2> / dev / null && \
printf\n
μ™„λ£Œ)
둜컬 IFS = $ '\ n'; μ™„λ£Œ = ($ κ²°κ³Ό)
}
_fasd_bash_hook_cmd_complete () {
cmd의 경우 $ *; ~ν•˜λ‹€
μ™„λ£Œ -F _fasd_bash_cmd_complete $ cmd
μ™„λ£Œ
}

bash λͺ…λ Ή λͺ¨λ“œ μ™„λ£Œ ν™œμ„±ν™”

_fasd_bash_hook_cmd_complete fasd asdf sd sf z zz

fasd.logμ—μ„œλŠ” 주둜 λ‹€μŒμ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•©λ‹ˆλ‹€.

(eval):2: λͺ…령을 찾을 수 μ—†μŒ: fasd
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
(eval):2: λͺ…령을 찾을 수 μ—†μŒ: fasd
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
(eval):2: λͺ…령을 찾을 수 μ—†μŒ: fasd
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
(eval):2: λͺ…령을 찾을 수 μ—†μŒ: fasd
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn
κΈ°λ³Έκ°’ -f -tn
첫 번째
λͺ…λ Ή -c -tn

κ·ΈλŸ¬λ‚˜ λ‚΄κ°€ fasd -hλ₯Ό μž…λ ₯ν•˜λ©΄ μž‘λ™ν•©λ‹ˆλ‹€.

~ ➀ fasd -h git:master*
fasd [μ˜΅μ…˜] [쿼리 ...]
[f|a|s|d|z] [opions] [쿼리 ...]
μ˜΅μ…˜:
-s μ μˆ˜κ°€ μžˆλŠ” 경둜 λ‚˜μ—΄
-l μ μˆ˜κ°€ μ—†λŠ” 경둜 λ‚˜μ—΄
-i λŒ€ν™”μ‹ λͺ¨λ“œ
-μ΄μžν˜•κ²°κ³Ό νŒŒμΌμ—μ„œ μ‹€ν–‰ν•  set λͺ…λ Ή
-λΉ„λ§Œ μ‚¬μš©λ°±μ—”λ“œ
-λΉ„μΆ”κ°€ λ°±μ—”λ“œ μΆ”κ°€
-a 일치 파일 및 디렉토리
-d λ””λ ‰ν† λ¦¬λ§Œ 일치
-f 일치 파일만
-r μˆœμœ„λ‘œλ§Œ 일치
-t 졜근 μ•‘μ„ΈμŠ€λ‘œλ§Œ 일치
-R μ—­ λ‚˜μ—΄ μˆœμ„œ
-h κ°„λ‹¨ν•œ 도움말 λ©”μ‹œμ§€ ν‘œμ‹œ
-[0-9] n번째 ν•­λͺ© 선택

fasd [-A|-D] [경둜 ...]
-A 경둜 μΆ”κ°€
-D μ‚­μ œ 경둜
~ ➀ μžμ‹:λ§ˆμŠ€ν„°*

2017λ…„ 12μ›” 28일, 17:15, Xiao-Meng Wang[email protected]>은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” Euanμž…λ‹ˆλ‹€. 여기에 μ œκ°€ 얻은 λͺ‡ 가지 κ²°κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.

첫 번째 λΆ€λΆ„, λ‚˜λŠ” 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ μ „ν˜€ λͺ¨λ¦…λ‹ˆλ‹€:
이것은 zsh에 μžˆμŠ΅λ‹ˆλ‹€

~ ➀ set -x git:master*
ν‰κ°€νŒ "$(fasd --init auto)"
μ„€μ • +x

+zsh:2> fasd --μžλ™ μ΄ˆκΈ°ν™”
+zsh:2> 평가 $'{ if [ "$ZSH_VERSION" ] && compctl; then # zsh\n eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \n zsh-wcomp zsh-wcomp-install)"\n elif [ "$BASH_VERSION" ] && μ™„λ£Œ ; then # bash\n eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"\n else # posix μ…Έ\n eval "$(fasd --init posix-alias posix- 후크)"\n fi\n} >> "/Users/Administrator/.config/fasd/fasd.log" 2>&1'
+(평가):1> [ 5.3 ']'
+(평가):1> μ••μΆ•
+(평가):2> fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install
+(eval):2> 평가 $'alias a=\'fasd -a\'\nalias s=\'fasd -si\'\nalias sd=\'fasd -sid\'\nalias sf=\'fasd - sif\'\nalias d=\'fasd -d\'\nalias f=\'fasd -f\'\n# λ‚΄μž₯ cd\nfasd_cd()λ₯Ό μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜ {\n if [ $# -le 1 ] ; then\n fasd "$@"\n else\n local _fasd_ret="$(fasd -e \'printf %s\' "$@")"\n [ -z "$_fasd_ret" ] && return\n [ -d "$_fasd_ret" ] && cd "$_fasd_ret" || printf %s\n "$_fasd_ret"\n fi\n}\nalias z=\'fasd_cd -d\'\nalias zz=\'fasd_cd -d -i\'\n\n# zsh 후크 μΆ”κ°€\n_fasd_preexec( ) {\n { 평가 "fasd --proc $(fasd --sanitize $1)"; } >> "/Users/Administrator/.config/fasd/fasd.log" 2>&1\n}\nautoload -Uz add-zsh-hook\nadd-zsh-hook preexec _fasd_preexec\n\n# zsh λͺ…λ Ή λͺ¨λ“œ μ™„λ£Œ \n_fasd_zsh_cmd_complete() {\n local compl\n read -c compl\n (( $+compstate )) && compstate[insert]=menu # compsysκ°€ λ‘œλ“œλœ 경우 ν™•μž₯ν•˜μ§€ μ•ŠμŒ\n reply=(${(f)"$( fasd --complete "$compl")"})\n}\n\n# enbale λͺ…λ Ή λͺ¨λ“œ μ™„λ£Œ\ncompctl -U -K _fasd_zsh_cmd_complete -V fasd -x \'C[-1,- e],s[- ]n[1,e]\' -c - \n \'c[-1,-A][-1,-D]\' -f -- fasd fasd_cd\n\n(( $+functions[compdef ] )) && {\n # zsh 단어 λͺ¨λ“œ μ™„μ„±\n _fasd_zsh_word_complete() {\n [ "$2" ] && 둜컬 _fasd_cur="$2"\n [ -z "$_fasd_cur" ] && 둜컬 _fasd_cur="${words [ν˜„μž¬]}"\n 둜컬 fnd="${_fasd_cur//,/ }"\n 둜컬 μœ ν˜•=${1:-e}\n fasd --query $typ "$fnd" 2>> "/μ‚¬μš©μž /κ΄€λ¦¬μž/.config/fasd/fasd.log" | sed \'s/^[^ ] [ ] //\' | do\n compadd -U -V fasd "$line"\n μ™„λ£Œ\n compstate[insert]=menu # ν™•μž₯ μ—†μŒ\n }\n _fasd_zsh_word_complete_f() { _fasd_zsh_word_complete f ; }\n _fasd_zsh_word_complete_trigger() {\n local _fasd_cur="${words[CURRENT]}"\n eval $(fasd --word-complete-trigger _fasd_zsh_word_complete $_fasd_cur)\n }\n # zle μœ„μ ― μ •μ˜\n z -C fasd-complete μ™„λ£Œ 단어 _generic\n zstyle \':completion:fasd-complete: \' completer _fasd_zsh_word_complete\n zstyle \':completion:fasd-complete: \' 메뉴 선택\n\n zle -C fasd -complete-f μ™„μ „ν•œ 단어 _generic\n zstyle \':completion:fasd-complete-f: \' completer _fasd_zsh_word_complete_f\n zstyle \':completion:fasd-complete-f: \' 메뉴 선택\n\n zle -C fasd-complete-d complete-word _generic\n zstyle \':completion:fasd-complete-d: \' completer _fasd_zsh_word_complete_d\n zstyle \':completion:fasd-complete-d: \' 메뉴 선택\n }\n\n(( $+functions[compdef] )) && {\n # 단어 λͺ¨λ“œ μ™„μ„± ν™œμ„±ν™”\n orig_comp="$(zstyle -L \':completion:*\' completer 2>> "/Users/ κ΄€λ¦¬μž/.config/fasd/fasd.log")"\n if [ "$orig_comp" ]; ) eval "$orig_comp _fasd_zsh_word_complete_trigger";;\n esac\n else\n zstyle \':completion: \' setword_\n figger_complete _fasd_zsh_ orig_comp\n}'
+(평가):1> 별칭 'a=fasd -a'
+(평가):2> 별칭 '=fasd -si'
+(평가):3> 별칭 'sd=fasd -sid'
+(평가):4> 별칭 'sf=fasd -sif'
+(평가):5> 별칭 'd=fasd -d'
+(평가):6> 별칭 'f=fasd -f'
+(평가):17> 별칭 'z=fasd_cd -d'
+(평가):18> 별칭 'zz=fasd_cd -d -i'
+(평가):24> μžλ™ λ‘œλ“œ -Uz add-zsh-hook
+(평가):25> zsh-hook preexec μΆ”κ°€ _fasd_preexec
+zsh:3> +x μ„€μ •

두 번째 뢀뢄은 예제 νŒŒμΌμ„ μž‘μ„±ν•  수 μ—†μ–΄μ„œ 루트둜 λ³€κ²½ν–ˆκ³  이 μ΅œμ†Œ ν™˜κ²½μ—μ„œ fasdκ°€ μž‘λ™ν•©λ‹ˆλ‹€. 아직 .bashrc νŒŒμΌμ„ λ§Œλ“€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

bash-3.2$ sudo su
λΉ„λ°€λ²ˆν˜Έ:
sh-3.2# testhome=$(mktemp -d)
sh-3.2# mkdir -p ${ν…ŒμŠ€νŠΈν™ˆ}/bin
sh-3.2# cd ${ν…ŒμŠ€νŠΈν™ˆ}/bin
sh-3.2# ls
sh-3.2# μ•”ν˜Έ
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/bin
sh-3.2# 컬 -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd;chmod https://raw.githubusercontent.com/clvv/ fasd/master/fasd;chmod +x ${testhome}/bin/fasd;
sh-3.2# ls -al
총 40
drwxr-xr-x 3 루트 휠 96 12μ›” 28일 16:51 .
drwx------ 3 루트 휠 96 Dec 28 16:50 ..
-rwxr-xr-x 1 루트 휠 20195 12μ›” 28일 16:51 fasd
bash-3.2# ν‰κ°€νŒ "$(./bin/fasd --init auto)"
bash-3.2# μœ ν–‰
bash-3.2# ls
.viminfo bin example.txt
bash-3.2# echo "μ•ˆλ…•ν•˜μ„Έμš” 세계 에코" >> ~/.bash_history
bash-3.2# ls
.bash_history .viminfo 빈 example.txt
bash-3.2# 내보내기 경둜=$PATH:${ν…ŒμŠ€νŠΈν™ˆ}/bin
bash-3.2# ls
.bash_history .fasd .viminfo 빈 example.txt
bash-3.2# v .fasd
bash: v: λͺ…령을 찾을 수 μ—†μŒ
bash-3.2# 고양이 .fasd
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd|1|1514451952
bash-3.2# ./bin/fasd
12 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/.fasd
bash-3.2# ./bin/fasd 예제
bash-3.2# rm example.txt
bash-3.2# ν„°μΉ˜ example.txt
bash-3.2# ./bin/fasd 예제
6 /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.SFwFn0r6/example.txt

2017λ…„ 12μ›” 28일, 02:37, Euan Kemp[email protected]>은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

μ΅œμ†Œν•œμ˜ μž¬μƒμ‚°μ„ μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

디버깅을 μœ„ν•΄ fasd μ΄ˆκΈ°ν™” μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•˜λŠ” 것이 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μ • -x
ν‰κ°€νŒ "$(fasd --init auto)"
μ„€μ • +x
λ˜λŠ” 였λ₯˜κ°€ λ°œμƒν•˜λŠ” λͺ…λ Ή μ•žμ— set -xλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 문제λ₯Ό μž¬ν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ bashμ—μ„œ fasd μ„€μΉ˜κ°€ μž‘λ™ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ μ‹€ν–‰ν•  수 μžˆλŠ” λ‹¨κ³„μž…λ‹ˆλ‹€(μ‹œμŠ€ν…œμ—μ„œ μž‘μ—…μ„ ν™•μΈν•˜λ €λŠ” 경우 λ¬Έμ œκ°€ bashrc ꡬ성 λ˜λŠ” λ‹€λ₯Έ 곳에 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό 쒁힐 수 있음).

$ testhome=$(mktemp -d)
$ mkdir -p ${ν…ŒμŠ€νŠΈν™ˆ}/bin
$ curl -sSL -o "${testhome}/bin/fasd" https://raw.githubusercontent.com/clvv/fasd/master/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd
$ chmod +x ${ν…ŒμŠ€νŠΈν™ˆ}/bin/fasd

$ 고양이 > "${testhome}/.bashrc" < 내보내기 경둜=$PATH:${ν…ŒμŠ€νŠΈν™ˆ}/bin

기둝이 λΉ„μ–΄ μžˆμ§€ μ•Šμ€μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. fasdλŠ” κΈ°λ‘μ—μ„œ μ²˜λ¦¬ν•  λͺ…령을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

(https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd7952c127-L130 https://github.com/clvv/fasd/blob/90b531a5

νžˆμŠ€ν† λ¦¬κ°€ λΉ„μ–΄ 있으면 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

echo "μ•ˆλ…•ν•˜μ„Έμš” 세계 에코" >> ~/.bash_history
ν‰κ°€νŒ "\$(fasd --init auto)"
EOF

$ env -i HOME=${testhome} bash
$ cd ~/bin
$ cd ~/bin
$cd ~

$ z bin && pwd

$ ν„°μΉ˜ example.txt
$ μœ ν–‰ 예
μ°Έκ³ : μœ„μ˜ λ‚΄μš©μ€ bash μŠ€ν¬λ¦½νŠΈκ°€ μ•„λ‹ˆλΌ fasdκ°€ μž‘λ™ν•˜λ„λ‘ λŒ€ν™”μ‹ μ‰˜μ—μ„œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ•½κ°„λ§Œ μˆ˜μ •ν•˜λ©΄ μœ„μ˜ λ‚΄μš©μ΄ zshμ—μ„œλ„ μž‘λ™ν•©λ‹ˆλ‹€.

μœ„μ˜ λ‚΄μš©μ€ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€(/tmp/tmp.zKxt6nvlxj/bin 및 6 /tmp/tmp.zKxt6nvlxj/bin/example.txt 인쇄).

κ°€λŠ₯ν•œ 경우 λ‹€μŒ 쀑 ν•˜λ‚˜λ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

무엇이 μ€‘λ‹¨λ˜μ—ˆλŠ”μ§€μ— λŒ€ν•œ μžμ„Έν•œ 정보(예: set -xλ₯Ό μ‰˜μ— μ μš©ν•œ ν›„ fasd example λ˜λŠ” fasd --init의 좜λ ₯)
μœ„μ™€ 같은 μ΅œμ†Œν•œμ˜ ν™˜κ²½μ—μ„œ μž¬ν˜„ν•  수 μžˆλŠ”μ§€ μ—¬λΆ€.
"λ‚΄ μ»΄ν“¨ν„°μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"만이 μ•„λ‹Œ μ‹€μ œ μ΅œμ†Œ μž¬μƒμ‚°
β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub https://github.com/clvv/fasd/issues/117#issuecomment-354156542 μ—μ„œ ν™•μΈν•˜κ±°λ‚˜ https://github.com/notifications/unsubscribe-auth/ADKNgl5x1H3BscF4Pa3- μŠ€λ ˆλ“œλ₯Ό μŒμ†Œκ±°ν•˜μ‹­μ‹œμ˜€.

https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png https://cloud.githubusercontent.com/assets/143418/17495839/afc5 -7290892c7bb5.png https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png https://cloud.githubusercontent.com/assets/1 -11e6-9aed-b52498112777.png https://github.com/clvv/fasd https://github.com/clvv/fasd https://raw.githubusercontent.com/clvv/fasd/master/fasd/r/ n $ https://raw.githubusercontent.com/clvv/fasd/master/fasd/r/n$ https://github.com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasdhub#L127- .com/clvv/fasd/blob/90b531a5daaa545c74c7d98974b54cbdb92659fc/fasd#L127- L130 https://github.com/clvv1s/clvv/fasd/issues/117#issuecomment-35415 #issuecomment-354156542

관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ https://github.com/jimhester/per-directory-history κ°€ fasd와 μΆ©λŒν•œλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. fasdκ°€ νŒŒμΌμ΄λ‚˜ 디렉토리λ₯Ό μΆ”μ ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 디렉토리별 기둝 ν”ŒλŸ¬κ·ΈμΈμ„ λΉ„ν™œμ„±ν™”ν•˜λ©΄ fasdκ°€ μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

λ˜ν•œ bash 및 zsh λͺ¨λ‘μ™€ ν•¨κ»˜ Windows용 ν•˜μœ„ μ‹œμŠ€ν…œμ—μ„œ 이것을 μ–»μ—ˆμŠ΅λ‹ˆλ‹€(μ—¬κΈ°μ„œ 문제일 수 있음).
rc νŒŒμΌμ—μ„œ λ‹€λ₯Έ λͺ¨λ“  것을 λΉ„ν™œμ„±ν™”ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ fasd λͺ©λ‘μ€ 항상 λΉ„μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ repoμ—μ„œ fasd λ₯Ό μ‚¬μš©ν•˜κ³  νŒ¨ν‚€μ§€ κ΄€λ¦¬μžλ‘œ μ„€μΉ˜ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ κ²°κ³Όκ°€ λ³€κ²½λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

set -x
eval "$(fasd --init auto)"
set +x
+-zsh:2> fasd --init auto
+-zsh:2> eval $'{ if [ "$ZSH_VERSION" ] && compctl; then # zsh\n    eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \\\n      zsh-wcomp zsh-wcomp-install)"\n  elif [ "$BASH_VERSION" ] && complete; then # bash\n    eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"\n  else # posix shell\n    eval "$(fasd --init posix-alias posix-hook)"\n  fi\n} >> "/dev/null" 2>&1'
+(eval):1> [ 5.5.1 ']'
+(eval):1> compctl
+(eval):2> fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install
+(eval):2> eval $'alias a=\'fasd -a\'\nalias s=\'fasd -si\'\nalias sd=\'fasd -sid\'\nalias sf=\'fasd -sif\'\nalias d=\'fasd -d\'\nalias f=\'fasd -f\'\n# function to execute built-in cd\nfasd_cd() {\n  if [ $# -le 1 ]; then\n    fasd "$@"\n  else\n    local _fasd_ret="$(fasd -e \'printf %s\' "$@")"\n    [ -z "$_fasd_ret" ] && return\n    [ -d "$_fasd_ret" ] && cd "$_fasd_ret" || printf %s\\n "$_fasd_ret"\n  fi\n}\nalias z=\'fasd_cd -d\'\nalias zz=\'fasd_cd -d -i\'\n\n# add zsh hook\n_fasd_preexec() {\n  { eval "fasd --proc $(fasd --sanitize $1)"; } >> "/dev/null" 2>&1\n}\nautoload -Uz add-zsh-hook\nadd-zsh-hook preexec _fasd_preexec\n\n# zsh command mode completion\n_fasd_zsh_cmd_complete() {\n  local compl\n  read -c compl\n  (( $+compstate )) && compstate[insert]=menu # no expand if compsys loaded\n  reply=(${(f)"$(fasd --complete "$compl")"})\n}\n\n# enbale command mode completion\ncompctl -U -K _fasd_zsh_cmd_complete -V fasd -x \'C[-1,-*e],s[-]n[1,e]\' -c - \\\n  \'c[-1,-A][-1,-D]\' -f -- fasd fasd_cd\n\n(( $+functions[compdef] )) && {\n  # zsh word mode completion\n  _fasd_zsh_word_complete() {\n    [ "$2" ] && local _fasd_cur="$2"\n    [ -z "$_fasd_cur" ] && local _fasd_cur="${words[CURRENT]}"\n    local fnd="${_fasd_cur//,/ }"\n    local typ=${1:-e}\n    fasd --query $typ "$fnd" 2>> "/dev/null" | \\\n      sort -nr | sed \'s/^[^ ]*[ ]*//\' | while read -r line; do\n        compadd -U -V fasd "$line"\n      done\n    compstate[insert]=menu # no expand\n  }\n  _fasd_zsh_word_complete_f() { _fasd_zsh_word_complete f ; }\n  _fasd_zsh_word_complete_d() { _fasd_zsh_word_complete d ; }\n  _fasd_zsh_word_complete_trigger() {\n    local _fasd_cur="${words[CURRENT]}"\n    eval $(fasd --word-complete-trigger _fasd_zsh_word_complete $_fasd_cur)\n  }\n  # define zle widgets\n  zle -C fasd-complete complete-word _generic\n  zstyle \':completion:fasd-complete:*\' completer _fasd_zsh_word_complete\n  zstyle \':completion:fasd-complete:*\' menu-select\n\n  zle -C fasd-complete-f complete-word _generic\n  zstyle \':completion:fasd-complete-f:*\' completer _fasd_zsh_word_complete_f\n  zstyle \':completion:fasd-complete-f:*\' menu-select\n\n  zle -C fasd-complete-d complete-word _generic\n  zstyle \':completion:fasd-complete-d:*\' completer _fasd_zsh_word_complete_d\n  zstyle \':completion:fasd-complete-d:*\' menu-select\n}\n\n(( $+functions[compdef] )) && {\n  # enable word mode completion\n  orig_comp="$(zstyle -L \':completion:\\*\' completer 2>> "/dev/null")"\n  if [ "$orig_comp" ]; then\n    case $orig_comp in\n      *_fasd_zsh_word_complete_trigger*);;\n      *) eval "$orig_comp _fasd_zsh_word_complete_trigger";;\n    esac\n  else\n    zstyle \':completion:*\' completer _complete _fasd_zsh_word_complete_trigger\n  fi\n  unset orig_comp\n}'
+(eval):1> alias 'a=fasd -a'
+(eval):2> alias 's=fasd -si'
+(eval):3> alias 'sd=fasd -sid'
+(eval):4> alias 'sf=fasd -sif'
+(eval):5> alias 'd=fasd -d'
+(eval):6> alias 'f=fasd -f'
+(eval):17> alias 'z=fasd_cd -d'
+(eval):18> alias 'zz=fasd_cd -d -i'
+(eval):24> autoload -Uz add-zsh-hook
+(eval):25> add-zsh-hook preexec _fasd_preexec
+-zsh:3> set +x

μˆœμœ„κ°€ ~/.fasd 인지 ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ νŒŒμΌμ€ 항상 λΉ„μ–΄ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚˜λ₯Ό μœ„ν•΄ 루트둜 μ‹€ν–‰ν•˜λ„λ‘ μˆ˜μ •ν•˜μ—¬ fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install 뢀뢄을 μΆ”μΆœν•˜λŠ” 데 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
fasd --init auto λͺ…령을 μ‚¬μš©ν•˜κ³  eval, eval "$(fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install)"둜 λ¬Άκ³  루트의 /root/.bashrc에 μ μš©ν•˜μ—¬ 압좕을 ν’‰λ‹ˆλ‹€. init λͺ…령은 ν•„μš”ν•˜μ§€ μ•Šμ•˜κ³  루트둜 μ‹€ν–‰ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν–ˆμ§€λ§Œ 확인할 μ‹œκ°„μ΄ 더 μ—†μ—ˆμ§€λ§Œ 루트λ₯Ό ν†΅ν•΄μ„œλ§Œ μž‘λ™ν•˜μ§€ μ•Šμ•˜λ˜ κ²ƒμœΌλ‘œ κΈ°μ–΅ν•©λ‹ˆλ‹€. init λͺ…λ Ήμ˜ bash 뢀뢄도 μΆ”μΆœν•©λ‹ˆλ‹€.

미래의 λ…μžλ₯Ό μœ„ν•΄ λ‚΄ ~/.fasd ν΄λ”μ˜ κΆŒν•œμ΄ 600(루트 μ „μš© rw)μ΄μ—ˆκΈ° λ•Œλ¬Έμ— λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이 폴더λ₯Ό μ œκ±°ν•˜κ³  λ‚΄ ~/.zshrcλ₯Ό μ†Œμ‹±ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

미래의 λ…μžλ₯Ό μœ„ν•΄ λ‚΄ ~/.fasd ν΄λ”μ˜ κΆŒν•œμ΄ 600(루트 μ „μš© rw)μ΄μ—ˆκΈ° λ•Œλ¬Έμ— λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이 폴더λ₯Ό μ œκ±°ν•˜κ³  λ‚΄ ~/.zshrcλ₯Ό μ†Œμ‹±ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이것은 λ‚˜μ—κ²Œλ„ λ¬Έμ œμ˜€λ‹€

μ €μ—κ²ŒλŠ” 100% https://github.com/clvv/fasd/issues/117#issuecomment -357458043μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

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