关于Linux文件名带冒号补全的问题

时间:2021-01-19 19:15:27
在linux系统下:

当文件名中带有冒号时(例如1::1这样的一个文件),我键入“ls 1:”,用“tab”键无法补全。输入“ls 1”补全效果为1\:\:1。请问有没有什么办法(如修改bash相关配置)可以实现“ls 1:”补全。我貌似见过有的linux系统可以达到这种效果

希望不吝赐教。谢谢

8 个解决方案

#1


不知道LZ想干啥

输入“ls 1”补全效果为1\:\:1
>>这个不就可以了?为啥非“ls 1:”补全?
>>因为:是特殊字符,需要用\转义,你ls 1\:就能补全了

#2


[Quote=引用 1 楼  的回复:]

不知道LZ想干啥

输入“ls 1”补全效果为1\:\:1
>>这个不就可以了?为啥非“ls 1:”补全?
>>因为:是特殊字符,需要用\转义,你ls 1\:就能补全了

#3


引用 1 楼  的回复:
不知道LZ想干啥

输入“ls 1”补全效果为1\:\:1
>>这个不就可以了?为啥非“ls 1:”补全?
>>因为:是特殊字符,需要用\转义,你ls 1\:就能补全了


我想验证一个我遇到问题的一个猜想:当输入“ls 1”补全效果为1\:\:1时,COMP_WORDS的值为"1 :: 1",而"ls 1"补全效果为1::1时,COMP_WORDS的值为"1::1"。这个值影响我后续的操作。所以我想看看是不是这个转义影响的?

#4


转义字符  试一试

#5


其实LZ已经知道很多了,就是转义的影响啊,再深入就是自定义tab的补全算法。

#6


开源的vyatta系统(该系统基于debian的)上名为1::1的文件在bash下可以在"ls 1"补全显示为"1::1"。在debian或censtos,甚至vyatta的sh就显示为"1\:\:1"。我试过在自己的文件系统中使用vyatta的bash(拷贝到我的文件系统)也不行。所以问下有没有配置可以把“:”不要当成特殊字符不加转义符。

#7


开源的vyatta系统(该系统基于debian的)上名为1::1的文件在bash下可以在"ls 1"补全显示为"1::1"。在debian或censtos,甚至vyatta的sh就显示为"1\:\:1"。我试过在自己的文件系统中使用vyatta的bash(拷贝到我的文件系统)也不行。所以问下有没有配置可以把“:”不要当成特殊字符不加转义符。

#8


自己顶一次,希望给个回答,有没有通过配置可以达到效果的?先谢谢

#1


不知道LZ想干啥

输入“ls 1”补全效果为1\:\:1
>>这个不就可以了?为啥非“ls 1:”补全?
>>因为:是特殊字符,需要用\转义,你ls 1\:就能补全了

#2


[Quote=引用 1 楼  的回复:]

不知道LZ想干啥

输入“ls 1”补全效果为1\:\:1
>>这个不就可以了?为啥非“ls 1:”补全?
>>因为:是特殊字符,需要用\转义,你ls 1\:就能补全了

#3


引用 1 楼  的回复:
不知道LZ想干啥

输入“ls 1”补全效果为1\:\:1
>>这个不就可以了?为啥非“ls 1:”补全?
>>因为:是特殊字符,需要用\转义,你ls 1\:就能补全了


我想验证一个我遇到问题的一个猜想:当输入“ls 1”补全效果为1\:\:1时,COMP_WORDS的值为"1 :: 1",而"ls 1"补全效果为1::1时,COMP_WORDS的值为"1::1"。这个值影响我后续的操作。所以我想看看是不是这个转义影响的?

#4


转义字符  试一试

#5


其实LZ已经知道很多了,就是转义的影响啊,再深入就是自定义tab的补全算法。

#6


开源的vyatta系统(该系统基于debian的)上名为1::1的文件在bash下可以在"ls 1"补全显示为"1::1"。在debian或censtos,甚至vyatta的sh就显示为"1\:\:1"。我试过在自己的文件系统中使用vyatta的bash(拷贝到我的文件系统)也不行。所以问下有没有配置可以把“:”不要当成特殊字符不加转义符。

#7


开源的vyatta系统(该系统基于debian的)上名为1::1的文件在bash下可以在"ls 1"补全显示为"1::1"。在debian或censtos,甚至vyatta的sh就显示为"1\:\:1"。我试过在自己的文件系统中使用vyatta的bash(拷贝到我的文件系统)也不行。所以问下有没有配置可以把“:”不要当成特殊字符不加转义符。

#8


自己顶一次,希望给个回答,有没有通过配置可以达到效果的?先谢谢