Python 如何覆盖xonsh中的内置命令?
我正在尝试重写“ls”命令以在“dotfiles”目录中显示dotfiles 这是我的密码Python 如何覆盖xonsh中的内置命令?,python,shell,xonsh,Python,Shell,Xonsh,我正在尝试重写“ls”命令以在“dotfiles”目录中显示dotfiles 这是我的密码 def_ls(): 如果$(pwd).rstrip(os.linesep)==$DOTFILES: ls-Ga 其他: ls-G 别名['ls']=\u ls 由于\u ls函数调用ls命令并调用\u ls函数,因此该代码进入了一个无休止的循环 有什么想法吗?无限别名调用不应该发生——您介意在github.com/xonsh/xonsh/issues上打开一个问题吗 在此期间,以下是一种构造别名的方法,
def_ls():
如果$(pwd).rstrip(os.linesep)==$DOTFILES:
ls-Ga
其他:
ls-G
别名['ls']=\u ls
由于\u ls
函数调用ls
命令并调用\u ls
函数,因此该代码进入了一个无休止的循环
有什么想法吗?无限别名调用不应该发生——您介意在github.com/xonsh/xonsh/issues上打开一个问题吗 在此期间,以下是一种构造别名的方法,无需任何修复即可使用:
def _ls(args):
args = args[0].replace('-', '') if args else ''
if $(pwd).rstrip(os.linesep) == $DOTFILES:
$(which -s ls) @(f"-{''.join(set(args + 'aG'))}")
else:
$(which -s ls) @(f"-{''.join(set(args + 'G'))}")
aliases['ls'] = _ls
的-s
参数跳过别名解析,从而返回实际的ls
可执行文件的路径。然后,设置
逻辑是确保参数不重复(尽管我不确定这是严格必要的)。无限别名调用不应该发生——您介意在github.com/xonsh/xonsh/issues上打开一个问题吗
在此期间,以下是一种构造别名的方法,无需任何修复即可使用:
def _ls(args):
args = args[0].replace('-', '') if args else ''
if $(pwd).rstrip(os.linesep) == $DOTFILES:
$(which -s ls) @(f"-{''.join(set(args + 'aG'))}")
else:
$(which -s ls) @(f"-{''.join(set(args + 'G'))}")
aliases['ls'] = _ls
的-s
参数跳过别名解析,从而返回实际的ls
可执行文件的路径。然后,设置
逻辑是确保参数不重复(尽管我不确定这是否严格必要)。谢谢你的回答,我不介意公开问题。谢谢你的回答,我不介意公开问题。