
ls を使用するたびに、副作用として現在の日付と時刻が表示されるようにしたいと思いますls
。コマンドの動作を変更するにはどうすればよいでしょうか?
答え1
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
シェルの PS1 変数を定義します。これは、シェルで必要なものがすべて表示される場所です。
例:
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 を実行すると、コマンドはサブシェルで呼び出され、親シェルがエイリアス ルールを強制できなくなります。したがって、ls
出力形式が変更されたためにスクリプト呼び出しが中断されることはありません。
編集:PS1シリーズ自体に興味がある人もいるかもしれないので、関連する詳細をご覧ください。ここ注意してください。これはかなり大きいため、何千ものファイルを含むディレクトリがある場合は、シェルのパフォーマンスに顕著な遅延が発生します。