Linux中自动在cd进入文件夹时列出所有文件的Shell选项

3
我很烦于一直打“ls”命令。在shell中,有没有一种命令或选项可以在你进入一个文件夹后自动显示所有的文件而不用打“ls”命令呢?谢谢!
folder>cd subfolder
subfolder>ls
yu fi sd

What I'm expecting:

folder>cd subfolder
yu fj sd
subfolder>

请注意,我知道可以使用cd subfolder;ls,但我真的不想输入ls,因为这很无聊。
基本上,我正在寻找一个嵌入在shell中的命令,以便我可以根据自己的意愿打开或关闭此功能。

3
你可以创建一个别名 alias hello="ls"。这样,你就不必再输入 ls,而是可以键入 hello :P - fedorqui
3
你可以创建一个小函数来实现一切:cdls --> f () { cd "$1"; ls } - fedorqui
不,我不想输入“ls”,我希望所有文件都可以默认列出。 - cdnszip
在 shell 中是否已经有嵌入式选项了? - cdnszip
@sjsam 请参阅手册:"除非设置了expand_aliases shell选项,否则别名在shell不是交互式的情况下不会被扩展。" - Benjamin W.
显示剩余4条评论
3个回答

10
  1. 如果你想在执行cd命令后仅使用ls

    实际上,你需要在.bashrc文件中定义一个函数来替代cd命令,例如:

cd() {
    builtin cd $@
    ls
}
如果你想在每个shell命令后执行ls
那么在.bashrc中设置如下内容:
prompt_func() {
    export PS1="$(ls)\n$ "
}
export PROMPT_COMMAND=prompt_func

第二个解决方案会为每个命令重新设置提示符,并且会删除我可能拥有的任何提示符。为什么不只使用 PROMPT_COMMAND=ls 呢? - Benjamin W.
这也可以。然而,我通常使用一个函数,因为在函数中你需要做很多其他的事情来设置PS1。我的意思是对我来说更方便。 - user184968
如果您希望只在目录更改时(无论原因是什么)才使用 ls 命令,请参考以下链接:https://askubuntu.com/a/97766/356625 - M Imam Pratama

2

虽然它不是一个脚本解决方案,但您可以安装Midnight Commander。运行mc,您会看到每次进入目录时的文件列表。您可以在mc界面中使用shell。您还可以使用Ctrl-1Ctrl-2切换窗格。

我认为在您的情况下脚本解决方案不适合。


1
您可以创建一个名为cdls的函数:
cdls () { cd "$1" && ls ;} 

运行方式:

cdls /directory

For example:

$ cdls () { cd "$1" && ls ;} 

$ cdls foo
bar

$ pwd
/home/foobar/foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接