Satu masalah dengan perintah pertama Anda adalah Anda mengarahkan stderr ke tempat stdout adalah (jika Anda mengubah $ ke a & seperti yang disarankan dalam komentar) dan kemudian, Anda mengarahkan stdout ke beberapa file log, tetapi itu tidak menarik sepanjang stderr yang diarahkan . Anda harus melakukannya dengan urutan lain, pertama kirim stdout ke tempat yang Anda inginkan, dan kemudian kirim stderr ke alamat stdout di
some_cmd > some_file 2>&1 &
dan kemudian Anda bisa melempar & ke untuk mengirimnya ke latar belakang. Pekerjaan dapat diakses dengan jobs
perintah. jobs
akan menunjukkan kepada Anda pekerjaan yang sedang berjalan, dan beri nomor. Anda kemudian dapat berbicara tentang pekerjaan menggunakan% diikuti dengan angka seperti kill %1
atau lebih.
Juga, tanpa & di akhir Anda dapat menangguhkan perintah dengan Ctrlz, gunakan bg
perintah untuk meletakkannya di latar belakang dan fg
membawanya kembali ke latar depan. Dalam kombinasi dengan jobs
perintah, ini sangat kuat.
untuk memperjelas bagian di atas tentang urutan Anda menulis perintah. Misalkan stderr adalah alamat 1002, stdout adalah alamat 1001, dan file tersebut 1008. Perintah membaca dari kiri ke kanan, jadi hal pertama yang dilihatnya adalah milik Anda 2>&1
yang memindahkan stderr ke alamat 1001, ia kemudian melihat > file
yang bergerak stdout ke 1008, tetapi tetap stderr di 1001. Itu tidak menarik semuanya menunjuk ke 1001 dan memindahkannya ke 1008, tetapi hanya referensi stdout dan memindahkannya ke file.
Sebaliknya, ia bergerak stdout ke 1008, dan kemudian bergerak stderr ke titik yang mengarah ke stdout, 1008 juga. Dengan cara ini keduanya dapat mengarah ke satu file.
2>$1
mungkin seharusnya2>&1
.