bash:如果导出PROMPT_COMMAND然后删除rm $(ls -t | head -1)不起作用

时间:2016-04-25 10:52:07

标签: bash shell

在函数name下面,将使用函数myfunc将当前工作目录名称设置为选项卡名称,但如果我将参数传递给name,则会将选项卡名称设置为传递参数。<登记/> 例如
名字mytab [----&gt;这会将当前标签名称设置为mytab]

我的bashrc如下:

function myfunc {  
echo -n -e "\033]0;${PWD##*/}\007" 
#--- some other thing ---
} 
function name {  
    if [ "$1" ]  
    then  
        unset PROMPT_COMMAND  
        echo -ne "\033]0;${*}\007"  
    else  
        unset PROMPT_COMMAND  
        export PROMPT_COMMAND="history -n; history -w; history -c; history -r; myfunc;$PROMPT_COMMAND"  
    fi  
}  
name  

所以如果我执行rm $(ls -t | head -1)
    我收到的错误为/bin/rm: cannot lstat `\033[0m\033[0mReadme.txt\033[0m': No such file or directory

1 个答案:

答案 0 :(得分:1)

请使用以下命令

rm $(ls --color=no -t | head -1)

这会输出ls没有颜色的结果,这样就可以显示Readme.txt \033[0m\033[0mReadme.txt\033[0m

或者,您可以通过说ls - &gt;来规避\ls的别名。 \ls -t | head -1。有关Why start a shell command with a backslash?的更多信息。