Mih*_*aru 40 bash command-line
每当某些命令生成长行作为输出时(例如,当ls -l文件夹包含具有长名称的文件时),长行会换行到下一行,从而弄乱列结构。
有没有办法避免这种情况?类似于'nowrap' vim 选项的东西?
更新
我注意到接受的答案有一个问题:
如果我创建一个别名,例如:alias ll="tput rmam; ls -l; tput smam"
然后尝试 grep 它的输出:ll | grep foo
它仍然会打印所有文件,就像没有 grep 一样。
我找到的解决方案是在整个别名周围加上括号:
alias ll="(tput rmam; ls -l; tput smam)"
Gil*_*il' 30
请注意,这与 bash 无关(一旦您启动了命令,bash 就会等待它完成)以及与终端有关的一切。
默认情况下,大多数终端模拟器在右边距处换行。但是如果终端仿真器支持它,可以使用适当的控制序列来关闭它;然后长行被简单地截断:
printf '\033[?7l'
ls -l /a/folder/that/contains/files/with/long/names
printf '\033[?7h'
Run Code Online (Sandbox Code Playgroud)
你可以使用这样的函数:
nowrap()
{
cut -c-$(tput cols);
}
Run Code Online (Sandbox Code Playgroud)
请记住,尽管您必须为命令加上前缀nowrap或您命名函数的任何名称。
您可以覆盖函数,以便它tput rmam在 grep 之前和tput smam之后自动运行:
function grep () {
tput rmam;
command grep "$@";
tput smam;
}
Run Code Online (Sandbox Code Playgroud)
将其放入您的中.bash_profile,每当您运行时grep,它都会 grep 而不换行。
此内容已被大量编辑,向评论员致歉。
小智 5
使用 -S 开关将其传输到 less 命令:
ls -l | less -S
Run Code Online (Sandbox Code Playgroud)
然后您可以使用上/下/左/右箭头滚动并输入 q 退出。
| 归档时间: |
|
| 查看次数: |
27407 次 |
| 最近记录: |