在我的 c shell 上,我使用来alias p ls -lt; pwd
加快切换目录和获取其列表的速度。
如果我能以某种方式将控制台上的空间分成两部分,使得提示符位于下部,而上部始终显示当前目录的列表(我在第二部分中使用的目录),事情就会变得容易得多。
上部需要是动态的,因为每当我使用下部的提示切换目录时,它都应该在上半部分给出当前目录的列表。
有什么方法(脚本?)可以让我做这样的事情吗?
答案1
午夜指挥官会做你想做的事。它在顶部提供双窗格文件导航器,在底部提供类似 shell 的提示符。我建议设置选项 > 配置 > 运行后暂停 > 始终,这样当你输入命令时,结果会在文件导航器屏幕重新显示之前显示。不幸的是,它没有你想要的下半部分更大的 shell 窗口。
答案2
如果你希望上部始终显示,你可以使用屏幕或者tmux。虽然这不是它们最常用的功能,但这两个程序都支持将窗口一分为二。因此,您可以在下部窗口中运行交互式 shell,并为其使用别名,cd
然后在上部窗口中显示内容。完成最后一点的简单方法是创建一个命名管道(其中或进程的进程 ID 是mkfifo ~/.window-pipe-$PPID
)并在上部窗口中运行如下脚本(sh 语法,如果需要,请适应 csh):$PPID
screen
tmux
while read -r dir; do
printf '\033[?9l%s' "$dir"
cd "$dir"
ls -lt
done <~/.window-pipe-$PPID
您可能需要截断输出以ls
适合窗口,因为如果不适合,保留前几行可能比保留后几行更有用。在底部窗口中,替换cd
将是一个类似函数(再次,我使用 sh 语法):
cd () {
builtin cd "$@" && pwd >~/.window-pipe-$PPID
}
答案3
改用命令行文件管理器可能比自己设计一个自定义的程序更简单、更干净,因为这个想法已经实现了。市面上有无数种命令行文件管理器,它们都是高度可配置的,例如克莱克斯: