linux下命令行tab的时候,变量前自动多了个反斜杠

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下命令行tab的时候,变量前自动多了个反斜杠相关的知识,希望对你有一定的参考价值。

在ubuntu的命令行下输入一个命令,命令里有个变量,像 ls $HOME/,这时一按tab来提示的时候,我的命令就自动变成了ls \$HOME/。有没有人遇到过啊?我在其他一些linux系统也遇到过,不止时ubuntu,不知到怎么回事。用的时bash。
bash --version
GNU bash, 版本 4.2.25(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
许可证 GPLv3+: GNU GPL 许可证版本3或者更高 <http://gnu.org/licenses/gpl.html>

求高人指点。谢谢!!

参考技术A 不是所有linux版本都这样。RHEL5,6没这个问题。
你的意思是多了一个"\"吗? 你是在输完ls $HOME再按tab键?追问

是输玩ls $HOME/再tab。
输入ls $HOME时tab,它还没有多那个反斜杠。

参考技术B

先把下面这条命令的执行结果给我看看:

env | grep HOME

 

我这里是会展开为环境变量 HOME 对应的值。

追问

命令的结果就是我的家目录啊,这个不用自己设也会有的啊

HOME=/home/xqw

我就是希望他能自动展开,可是它给我在$前加了个反斜杠。

追答

我这里是会自动展开为环境变量所指示的家目录。
Ubuntu默认是dash,你改为bash啦?

追问

我的Ubuntu12.04默认是bash

追答

我装的也是Ubuntu 12.04,

ls -l /bin/sh

可以看到默认链接到的是dash。我是手动修改为默认bash的:

运行sudo dpkg-reconfigure dash指令,然后选择NO。

参考技术C shopt -s direxpand

或者

shopt -s cdable_vars

祝好运
参考技术D 楼主解决了么?我也遇到了同样的问题,会自动加一个反斜杠到后面。 第5个回答  2013-08-23 这是因为bash以为你要输入$符号(即以为你真的要输入一个名字中包含$字符的名字),需要转义导致的。追问

我的问题是怎么解决这个问题呢,某些其它linux系统的bash是不会这样子的,这问题真的跟bash有关吗?还是跟环境变量有关?

Win10(PowerShell)下Python命令行tab自动补全

用Python,直接通过命令行的方式进行调试简单的程序。 

win10(PowerShell)奈何没有Tab补全,操作实在麻烦。

网上搜一下学会了,记录一下,复习用,哈哈哈

环境:win10  64位  python2,python3

一:安装pyreadline模块

pip install pyreadline # python2
pip3 install pyreadline # python3

二、编写tab.py

文件保存在..\\Python2\\Lib\\tab.py

例如:D:\\Program Files\\Python2\\Lib\\tab.py
python2 python3要使用TAb自动补全都要在对应的lib中建立tab.py文件
#python Tab
import sys   
import readline   
import rlcompleter   
import atexit   
import os    
readline.parse_and_bind(\'tab: complete\')   
# windows
histfile = os.path.join(os.environ[\'HOMEPATH\'], \'.pythonhistory\')   
# linux
# histfile = os.path.join(os.environ[\'HOME\'], \'.pythonhistory\')   
try:   
    readline.read_history_file(histfile)   
except IOError:   
    pass   
atexit.register(readline.write_history_file, histfile)   

del os, histfile, readline, rlcompleter  

三、效果测试

使用import tab引入tab补全

# python2

 

# python3

 

 

# 经测试发现,python2 需要import tab 才支持自动补全,然后python3不需要导入tab就可以支持自动补全,不知道是不是我的比较特殊

以上是关于linux下命令行tab的时候,变量前自动多了个反斜杠的主要内容,如果未能解决你的问题,请参考以下文章

linux “命令行自动补全”功能用命令行怎么写

在linux命令行模式下,打字打多了,如何一次删除一行刚刚输入的命令?backspace太慢了

在linux命令行模式下,打字打多了,如何一次删除一行刚刚输入的命令?

C语言或驱动程序函数调用前有下划线,调用的时候就没有下划线,问下为啥,还有前面多了个P

简述Linux中的命令行自动补齐功能

Linux命令行自动补全功能详解(实例演示)