Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何防止端子线覆盖自身?_Linux_Bash - Fatal编程技术网

Linux 如何防止端子线覆盖自身?

Linux 如何防止端子线覆盖自身?,linux,bash,Linux,Bash,当我在终端中键入一个长命令时,它开始覆盖我所在的当前行。 此外,当终端显示一条长线时,它要么被覆盖,要么干脆被切断 下面是发生了什么的例子 这就是当我键入一个太长的单词时,它开始覆盖的情况 bbbbbbbbbbbbbbbbbb ~ $ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 这就是我键入ps aux时发生的情况。应该说“Application”的部分被截断为“applicata” 经过一些研究,我发现不可打印的字符必

当我在终端中键入一个长命令时,它开始覆盖我所在的当前行。 此外,当终端显示一条长线时,它要么被覆盖,要么干脆被切断

下面是发生了什么的例子

这就是当我键入一个太长的单词时,它开始覆盖的情况

bbbbbbbbbbbbbbbbbb ~ $ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 
这就是我键入ps aux时发生的情况。应该说“Application”的部分被截断为“applicata”

经过一些研究,我发现不可打印的字符必须由[and]转义,所以这就是我在.bashrc文件中所做的

//Before
LANG=ja_JP.UTF-8
PS1='[\u@\h] \w \$ '
export LESS='--no-init'

set -o ignoreeof

shopt -s histappend
HISTSIZE=1000000
HISTFILESIZE=1000000

alias ls='ls -F'
alias la='ls -a'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias mkdir='mkdir -p'
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

//之后
LANG=ja_JP.UTF-8

PS1='\[\u@\h\w\]\$'您确定这是您的终端的一般问题,而不是某些特定命令的问题吗?我可以在这里看到两个不同的问题:

下面是我键入“ps aux”时发生的情况的示例之一。应该说“Application”的部分被截断为“applicata”

当在终端上以交互方式运行时,
ps
等一些命令将使其输出适应可用的屏幕大小,例如,通过考虑
环境变量或通过获取可用的大小

根据命令的不同,您可以使用相应的标志强制命令进行完整输出,例如,使用,或者您可以通过另一个命令进行管道输出,例如:

ps aux|cat
由于此处的
ps
不会(直接)输出到屏幕,但不会截断长线,因此
cat
将输出未经修改的线

经过一些研究,我发现,不可打印的字符必须由[and]转义

这与控制字符使用颜色有关,例如,
bash
可以在其提示符中计算可打印字符的正确长度。但是找你的零钱


PS1='\[\u@\h\w\]\$”请检查您的文件中是否有dos行尾和无法打印的字符。如果您按
ctrl+Q
/
ctrl+L
或键入
reset
/
clear
是否有任何改进?我没有试过你的代码,但我怀疑有什么东西在不知不觉中改变了它。谢谢你的评论。我尝试了所有的命令,但仍然没有任何改进。非常感谢您的评论!正如您所说,我恢复了PS1的行,并删除了=250列的行。然而,我仍然得到了一个意想不到的结果。下面是一个例子,当我键入一个太长的单词时,它开始覆盖我所在的行bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb。但是,当我尝试
ps aux
时,终端大小被设置为max size,并且我没有设置任何columns环境变量,因此我不确定它为什么会被截断。
//Before
LANG=ja_JP.UTF-8
PS1='[\u@\h] \w \$ '
export LESS='--no-init'

set -o ignoreeof

shopt -s histappend
HISTSIZE=1000000
HISTFILESIZE=1000000

alias ls='ls -F'
alias la='ls -a'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias mkdir='mkdir -p'
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

//After
LANG=ja_JP.UTF-8
PS1='\[\u@\h \w\] \$'     <----- Changed
export LESS='--no-init'

set -o ignoreeof

shopt -s histappend
shopt -s checkwinsize     <----- Changed
HISTSIZE=1000000
HISTFILESIZE=1000000
COLUMNS=250               <----- Changed

alias ls='ls -F'
alias la='ls -a'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias mkdir='mkdir -p'
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"