安装Linux的时候选择了中文版,桌面的目录就在 $HOME目录下的"桌面"目录;在gnome terminal要进这个目录,从RedHat、FC,到RHEL,Ubuntu,没少烦过我:每次敲cd命令后还要把输入法切换到中文,再输入" 桌面";后来找到一下办法:在.bashrc中export d=~/桌面/,要进“桌面"目录也就输入: "cd $d"这时,问题又来了:要把桌面的某个文件移到别的地方,敲mv $d/之后按TAB,bash竟然帮我补全成: "mv $d/"....无语....
- www.linuxidc.com@linuxidc:~$ complete |grep mv
- complete -o default -F _longopt mv
- www.linuxidc.com@linuxidc:~$
刚开始以为是,default行为或_longopt函数搞的鬼,跟踪了一下发现_longopt调用了_filedir()函数,_filedir()处理完了还没有把"$"号变成“$",结论:bash后面又处理了一下 解决的办法:在_filedir()函数中把 "$d"替换掉,因此在_filedir()函数最后增加代码:
- local cnt=0
- while [ $cnt -lt ${#COMPREPLY[@]} ];
- do
- local v=${COMPREPLY[$cnt]}
- if [[ ${v:0:1} == "{1}quot; ]]; then
- COMPREPLY[$cnt]=$(eval echo "$v")
- fi
- ((cnt++))
- done
最后_filedir()函数变成:
- _filedir()
- {
- local i IFS=$"
" xspec
-
- _tilde "$cur" || return 0
-
- local -a toks
- local quoted tmp
-
- _quote_readline_by_ref "$cur" quoted
- toks=( ${toks[@]-} $(
- compgen -d -- "$quoted" | {
- while read -r tmp; do
- # TODO: I have removed a "[ -n $tmp ] &&" before "printf ..",
- # and everything works again. If this bug suddenly
- # appears again (i.e. "cd /b<TAB>" becomes "cd /"),
- # remember to check for other similar conditionals (here
- # and _filedir_xspec()). --David
- printf "%s
" $tmp
- done
- }
- ))
-
- if [[ "$1" != -d ]]; then
- # Munge xspec to contain uppercase version too
- [[ ${BASH_VERSINFO[0]} -ge 4 ]] &&
- xspec=${1:+"!*.@($1|${1^^})"} ||
- xspec=${1:+"!*.@($1|$(printf %s $1 | tr "[:lower:]" "[:upper:]"))"}
- toks=( ${toks[@]-} $( compgen -f -X "$xspec" -- $quoted) )
- fi
- [ ${#toks[@]} -ne 0 ] && _compopt_o_filenames
-
- # If the filter failed to produce anything, try w/o it (LP: #533985)
- if [[ -n "$1" ]] && [[ "$1" != -d ]] && [[ ${#toks[@]} -lt 1 ]] ; then
- toks=( ${toks[@]-} $( compgen -f -X -- $quoted) )
- fi
-
- COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" )
-
- local cnt=0
- while [ $cnt -lt ${#COMPREPLY[@]} ];
- do
- local v=${COMPREPLY[$cnt]}
- if [[ ${v:0:1} == "{1}quot; ]]; then
- COMPREPLY[$cnt]=$(eval echo "$v")
- fi
- ((cnt++))
- done
- }
Linux P2P音视频聊天系统实现步骤[简]VirtualBox 下使用招商银行网银专业版(U盾)相关资讯 Linux教程
- Linux教程:如何在命令行中查看目 (07/28/2014 12:22:23)
- Linux 修改root密码 (11/03/2012 07:53:38)
- su - root 与su root的区别 (06/06/2012 00:39:40)
| - Linux进程间通信:消息队列 (01/28/2013 09:43:00)
- U盘安装Linux开机无法启动解决方法 (10/07/2012 08:55:52)
- Windows 7/Linux 同步时间 (05/15/2012 06:17:55)
|
本文评论 查看全部评论 (0)