Saya mencoba mengalihkan output dari perintah waktu, tetapi saya tidak bisa:
$time ls > filename
real 0m0.000s
user 0m0.000s
sys 0m0.000s
Dalam file tersebut saya dapat melihat output dari ls
perintah, bukan dari time
. Tolong jelaskan, mengapa saya tidak bisa dan bagaimana melakukan ini.
shell
unix
time
io-redirection
abubacker
sumber
sumber
Jawaban:
Anda dapat mengarahkan keluaran waktu menggunakan,
Karena Anda perlu menggunakan (waktu ls) sebagai satu perintah sehingga Anda dapat menggunakan tanda kurung.
sumber
&>
tolong, di mana saya bisa belajar tentang ini?&>file
dapat dianalogikan dengan>file 2>&1
. Ini mengarahkan stdout dan stderr.tidak perlu meluncurkan sub shell. Gunakan blok kode juga akan berhasil.
atau
sumber
2>
tolong. Di mana saya dapat mempelajari tentang ini?Waktu perintah mengirimkan outputnya ke STDERR (bukan STDOUT). Itu karena perintah dieksekusi dengan waktu normal (dalam hal ini ls) dikeluarkan ke STDOUT.
Jika Anda ingin menangkap keluaran waktu, ketik:
Itu hanya menangkap keluaran waktu, tetapi keluaran ls berjalan normal ke konsol. Jika Anda ingin menangkap keduanya dalam satu file, ketik:
2> mengalihkan STDERR, &> mengalihkan keduanya.
sumber
waktu adalah shell builtin dan saya tidak yakin apakah ada cara untuk mengalihkannya. Namun Anda dapat menggunakan
/usr/bin/time
sebagai gantinya, yang pasti menerima pengalihan keluaran apa pun.sumber
bash time mycmd 2>file
. Atau panggil saja/usr/bin/time
seperti yang disebutkan.Jika Anda tidak ingin mencampur output dari
time
dan perintah. Dengan waktu GNU, Anda dapat menggunakan-o file
seperti:while
tim
adalah keluaran waktu,out
danerr
stdout dan stderr darigrep
.sumber
Alasan mengapa pengalihan tampaknya tidak berhasil
time
adalah karena kata tersebut merupakan kata cadangan bash (bukan bawaan!) Saat digunakan di depan pipeline. pesta (1):Jadi, untuk mengalihkan keluaran
time
, gunakan tanda kurung kurawal:Atau hubungi
/usr/bin/time
:sumber
Saya menggunakan pengalihan metode stdout dan stderr dengan kawat gigi untuk pengujian.
Ini
&>>rpt
mewakili ini>>rpt 2>&1
tetapi lebih pendek.Tanda kurung akan menjalankan perintah di shell saat ini. Lihat: pesta pria
sumber