Ada cara yang lebih baik untuk membuat cap waktu di depan sebuah echo
?
Saat ini saya melakukannya dengan cara ini:
#!/bin/sh
if mount | grep -q /mnt/usb; then
echo `date +%R\ ` "usb device already mounted"
else
echo `date +%R\ ` "mounting usb device..."
mount -t msdosfs /dev/da0s1 /mnt/usb
if mount | grep -q /mnt/usb; then
echo `date +%R\ ` "usb device successfully mounted"
fi
fi
Outputnya akan terlihat seperti itu:
10:36 usb device already mounted
shell
timestamps
echo
TaXXoR
sumber
sumber
echo_time
akan melakukan apa yang Anda harapkan, hingga pesan Anda memiliki%
tanda masuk di dalamnya. Bukan solusi yang sangat kuat.echo_time
bisa saja menggunakan tanggal OP + konstruksi gemaBerikut ini adalah cara yang lebih kuat dan portabel (POSIX) untuk melakukannya, terutama yang memungkinkan untuk
%
tetap tidak diproses sebagai argumen:sumber
Anda dapat membuat variabel untuk
date +%R
:sumber
Dengan
ksh93
dan versi terbaru daribash
:Dengan
zsh
:Atau untuk menghindari ekspansi yang cepat di
"$@"
bagian:Cara hacky untuk versi yang lebih lama dari
bash
:Sebenarnya, jika intinya adalah melakukan:
Anda bisa melakukannya:
Atau untuk menghindari forking sub shell:
Kemudian:
(perhatikan bahwa itu digaungkan di stderr, yang sebenarnya mungkin lebih disukai).
sumber
Ketika saya melakukan hal-hal seperti ini, saya biasanya ingin semua baris (termasuk keluaran program apa pun) dicentang waktu. Jadi, saya menggunakan sesuatu seperti ini:
Seperti yang ditunjukkan Stephane di bawah ini, masing-masing program dapat buffer output mereka ketika dikirim ke pipa. Tentu saja, buffer ini akan memerah ketika program keluar sehingga paling buruk cap waktu akan muncul ketika program keluar (jika buffer hasilnya dan tidak cukup mencetak untuk mengisi buffer). Namun,
echo
cap waktu semuanya akan akurat.Sebagai sampel yang dapat dijalankan untuk pengujian:
Keluaran:
sumber
ts
perintah yang merupakan bagian dari moreutils. Ini skrip perl yang serupa, tetapi dengan berbagai opsi untuk format cap waktu, dll.ts
? Sepertinya itu akan menjadi pilihan terbaik di sini.Membuat cap waktu dengan
ts
instal alat
ts
(bagian dari paketmoreutils)
:Menambahkan cap waktu ke output:
keluaran:
sumber
sumber