我希望 ls 在每次使用时显示当前日期和时间作为副作用ls
。我该如何更改命令的功能?
答案1
一种选择是创建一个别名来调用date
,例如alias ls='date;ls'
。这是一个例子:
$ touch a b c
$ ls
a b c
$ alias ls='date;ls'
$ ls
Mon Oct 14 10:37:29 BST 2013
a b c
答案2
为您的 shell 定义 PS1 变量,这是您应该在 shell 中看到您想要的任何内容的地方。
例子:
export PS1="\t [\u@\h \W]\$ "
12:01:58 [user@host ~]$ ls /etc/fstab
/etc/fstab
12:02:00 [user@host ~]$ ls /etc/motd
/etc/motd
答案3
我不明白你为什么要这样做。也许您可以分享您真正想要实现的目标,我们可以帮助您找到更好的解决方案。
我个人所做的就是编辑我的 PS1 线路。我的 PS1 行在提示中显示大量信息,如下所示:
正如您所看到的,除了日期和时间之外,它还显示大量信息。为了在PS1中显示日期和时间,添加\@
用于显示时间和\d
用于显示日期。
明确回答您的问题,您可以在您的.bashrc
.为此,请将以下行添加到您的~/.bashrc
:
alias ls='date && ls'
您说过您不想更改命令的工作方式。虽然这里看起来可能相反,但您必须了解别名的工作原理,才能理解这并没有真正改变命令这一事实ls
。如果您确实从脚本内执行 ls,则会在子 shell 中调用该命令,这将阻止父 shell 在其上强制执行您的别名规则。因此,任何脚本调用ls
都不会因为输出格式更改而中断。
编辑:由于其他人可能对 PS1 系列本身感兴趣,您可以找到相关详细信息这里。请注意,它非常大,如果您的目录包含数千个文件,则 shell 的性能将会出现明显的滞后。