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>
求高人指点。谢谢!!
你的意思是多了一个"\"吗? 你是在输完ls $HOME再按tab键?追问
是输玩ls $HOME/再tab。
输入ls $HOME时tab,它还没有多那个反斜杠。
先把下面这条命令的执行结果给我看看:
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命令行模式下,打字打多了,如何一次删除一行刚刚输入的命令?backspace太慢了
在linux命令行模式下,打字打多了,如何一次删除一行刚刚输入的命令?