Linux Shell 按Tab键不能补全

Linux Shell 按Tab键不能补全,第1张

在Linux的终端中输入tab键时,有时会出现命令不能补全的情况,此时有一种原因是bash错误。

使用 ls -l /bin/sh 命令发现

/bin/sh ->/bin/dash

dash是一个不同于bash的Shell,它主要为了执行脚本而出现,而不是交互,它速度更快,但功能比bash要少的多。语法严格遵守POSIX标准。

通过命令 ln -sf bash /bin/sh 可以将dash改成bash。此时问题可以解决。

Ubuntu系统在某些情况下,apt-get 不能补全相关命令,可以通过修改/etc/bash.bashrc文件的相关行,把默认的#号去掉即可。

if [ -f /etc/bash_completion ]then

/etc/bash_completion

fi

重新登录Shell即可。

此处参考: http://freddy.cc/article/185.

本文出自 “ 低调的前进 ” 博客,请务必保留此出处 http://tdppro.blog.51cto.com/749956/1248285

如何像使用Ubuntu一样方便使用tab键自动补全命令,bash-completion增强bash的自动补全功能

最早接触的linux发行版本是ubuntu,后来学习工作等原因转向了RedHat系的发行版本,使用中发现同样使用的是bash但是redhat系中bash的补全功能却比ubuntu中bash的补全功能弱了不少,后来查资料发现是ubuntu中预装了bash-completion这个软件。安装上这个软件后你的bash补全功能就和ubuntu中的一样强大了

在这里下推荐一个YUM源很不错的,软件很齐全

vim /etc/yum.repos.d/bash.repo

[DAG]

name=DAG repo

baseurl=$releasever/en/$basearch/dag/

gpgcheck=0

enabled=1

#yum search bash-completion

#yum install bash-completion

上面这段加入你的yum源中然后就可以很爽的使用tab键了;

在Python模式交互下,tab自动补全会提高代码效率,通过以下步骤可以很方便的实现自动补全。

1.获取 *** 作目录

[root@liu site-packages]# pythonPython 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.>>>import sys>>>sys.path

['', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib64/python2.6/site-packages/gtk-2.0', '/usr/lib/python2.6/site-packages']>>>123456789

可以看出,我的工作目录是/usr/lib/python2.6/site-packages/。

2.进入工作目录,编写tab.py补全文件

[root@liu site-packages]# cd /usr/lib/python2.6/site-packages/[root@liu site-packages]# vim tab.py 123

tab.py内容如下,建议粘贴的时候保证格式正确性

1 #!/usr/bin/python

2 # python tab file

3 import sys 4 import readline 5 import rlcompleter 6 import atexit 7 import os 8 # tab completion

9 readline.parse_and_bind('tab: complete') 10 # history file

11 histfile = os.path.join(os.environ['HOME'], '.pythonhistory') 12 try: 13 readline.read_history_file(histfile) 14 except IOError: 15 pass

16 atexit.register(readline.write_history_file, histfile) 17

18 del os, histfile, readline, rlcompleter123456789101112131415161718

3.添加环境变量,使其生效

[root@liu site-packages]# cd [root@liu ~]# vim .bashrc123

在末尾添加一行

export PYTHONSTARTUP=/usr/lib/python2.6/site-packages/tab.py1

4.重读.bashrc文件

source .bashrc1

或者

. .bashrc1

5.测试效果

[root@liu ~]# python

Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>import math>>>math.math.__class__( math.acos( math.fsum(math.__delattr__( math.acosh( math.hypot(math.__dict__ math.asin( math.isinf(math.__doc__math.asinh( math.isnan(math.__file__ math.atan( math.ldexp(math.__format__(math.atan2( math.log(math.__getattribute__( math.atanh( math.log10(math.__hash__( math.ceil( math.log1p(math.__init__( math.copysign( math.modf(math.__name__ math.cos( math.pimath.__new__( math.cosh( math.pow(math.__package__math.degrees( math.radians(math.__reduce__(math.e math.sin(math.__reduce_ex__( math.exp( math.sinh(math.__repr__( math.fabs( math.sqrt(math.__setattr__( math.factorial( math.tan(math.__sizeof__(math.floor( math.tanh(math.__str__( math.fmod( math.trunc(math.__subclasshook__( math.frexp(

>>>math.123456789101112131415161718192021222324252627

完成。我一开始一直报错,然后通过排查就是因为tab.py格式不正确。注意其格式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8407769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存