[질문] bash 배쉬 자동완성

doodoo의 이미지

최근에 우분투 10.04 버젼으로 옮겨왔습니다.

그런데...파일명 자동완성이 전과 달라졌군요...

doodoo@doodoo:~/tmp$ ll
합계 0
-rw-r--r-- 1 doodoo doodoo 0 2010-08-24 16:11 (kk kk)kk
-rw-r--r-- 1 doodoo doodoo 0 2010-08-24 16:11 aa bb

이런 파일을 가상으로 만들고.....

doodoo@doodoo:~/tmp$ ls aa[여기서 텦키] 
aa bb

이건 되죠...근데...
doodoo@doodoo:~/tmp$ ls '(kk[여기서 텦키]
doodoo@doodoo:~/tmp$ 
> ^C
doodoo@doodoo:~/tmp$ 

이게 안됩니다...전에는 됐었는데.....
doodoo@doodoo:~/tmp$ \ls '(kk[여기서 텦키]
(kk kk)kk

위 처럼 ls 앞에 역슬레쉬를 붙이면 됩니다...

이것이 무슨 조화인지...

ktd2004의 이미지

ls 앞에 역슬레시를 붙이는 건 alias로 알고 있습니다.
즉 그냥 ls는 alias된 ls 명령, \ls는 원래의 ls.

alias를 확인해 보면 어떨까요?

doodoo의 이미지

제 알리아스 입니다...

doodoo@doodoo:~/tmp$ alias
alias cp='cp -i'
alias gt='gthumb'
alias kvms='kvm -m 512 -cdrom /dev/cdrom -hda /files/win2k.raw -boot c'
alias l='ls -CF'
alias la='ls -lrt'
alias ll='ls -l'
alias ls='ls --color=auto'
alias lt='ls -lt | tail -2'
alias mi='mount /mnt/cdrom && cd /mnt/cdrom'
alias mo='cd && eject /dev/cdrom'
alias mp='mplayer -softvol -volstep 1 '
alias mpn='mp -nosound'
alias mv='mv -i'
alias qemus='qemu-system-x86_64 -boot c -hda win2k.raw -cdrom /dev/cdrom -m 512 -localtime -net user -win2k-hack'
alias rm='rm -i'
alias sss='startx -- -logverbose 6'
alias vc='sudo vi /etc/X11/xorg.conf'
alias vd='grep -E "WW|EE|II" /var/log/Xorg.0.log'

기본 ls --color=auto 밖에는 없어요...

* 중요한 것은 전에는 잘 되었다는거죠...우분투 10.04에서만 이럽니다.

lateau의 이미지

$ complete
...

~/.bash_complete 같은 거 만들어서 bash 로그인시에 읽어들이시면 될 것 같네요.

$ echo 'test -f ~/.bash_complete && . ~/.bash_complete || true' >> ~/.bashrc

직접 함수 작성하시거나 좀 더 자세히 알고 싶으시면 http://www.debian-administration.org/articles/316 참고하세요. :)

--
I think to myself...what a emerging world.

--
I think to myself...what a emerging world.

doodoo의 이미지

감사합니다.

일단 기본적으로 ~/.bashrc에 /etc/bash_completion 을 로드 하게끔 되어있군요..
.bashrc 의 일부

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

그리고 complete -p 명령으로 프린트 해보면...상당히 여러 경우에 대해 자동완성 조건이
구성 된것을 볼수도 있구요...
doodoo@doodoo:~$ complete -p
complete -F _update_alternatives alternatives
complete -F _smbpasswd smbpasswd
complete -o filenames -d -X '.[^./]*' -F _ooexp_ ooweb
complete -o filenames -F _stream stream
.....이하 생략...

/etc/ 아래에 관계된 파일들을 보면..

doodoo@doodoo:/etc$ ll |grep -E "bash|profile"
-rw-r--r--  1 root    root      1939 2010-04-19 11:15 bash.bashrc
-rw-r--r--  1 root    root     51761 2010-04-14 22:32 bash_completion
drwxr-xr-x  2 root    root      8192 2010-08-05 18:48 bash_completion.d
-rw-r--r--  1 root    root       497 2010-08-06 11:45 profile
drwxr-xr-x  2 root    root        33 2010-08-02 00:05 profile.d

중에서 profile 에는 그냥 bash.bashrc 를 읽도록 되어 있으며 bash.bashrc 파일은
bash_completion 부분을 읽는것이 막혀 있지만
# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

결과적으로 홈 디렉토리의 .bashrc 파일에서 읽으니 상관없을것 같는데...

제 생각으로는 설정은 되어 있지만 설정 내용 부분에서 파일 이름을 찿는 방식이 바뀌지
않았나 추측만 하게 되는군요
하지만 9.04(전에 쓰던 우분투) 때의 bash_completion 의 내용과 bash_completion.d 안의 내용을
비교해 볼수 없으니....ㅠㅠ

PS 이것은 ls 및 cd 명령 등에서 일어나는 공통 현상입니다...특히 cd 할때 저러니...상당히 불편하네요

auditory의 이미지

( 가 문제가 되는 것 같네요..

'( 대신에 \( 를 쓰면 잘 됩니다..

\ls 와 ls 가 다르게 동작하는것은 신기하네요..

doodoo의 이미지

bash 버젼에 따른것을 확인할려고 제 사무실의 피시에 있는 cygwin 의 bash 버젼을 보니

# bash -v
# base-files version 3.9-3

3.9-3 버젼이군요... 이것은 위의 문제가 없습니다....이상혀~~~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.