Skip to main content

Linux - Perintah Unix: exec

Perintah cat di Terminal Ubuntu (Juni 2026)

Perintah cat di Terminal Ubuntu (Juni 2026)
Anonim

exec - Meminta subprocess (es)

Ringkasan

exec? switch ? arg ? arg … ?

Deskripsi

Perintah ini memperlakukan argumennya sebagai spesifikasi satu atau lebih subproses untuk dijalankan. Argumennya mengambil bentuk pipeline shell standar di mana masing-masing arg menjadi satu kata perintah, dan setiap perintah yang berbeda menjadi subproses.

Jika argumen awal untukexec dimulai dari- kemudian mereka diperlakukan sebagai switch baris perintah dan bukan bagian dari spesifikasi saluran pipa. Saklar berikut saat ini didukung:

-tetapnewline

Mempertahankan baris baru di belakang dalam output saluran pipa. Biasanya baris baru di belakang akan dihapus.

--

Menandai akhir dari switch. Argumen yang mengikuti ini akan diperlakukan sebagai yang pertama arg bahkan jika itu dimulai dengan-.

Jika arg (atau sepasang arg 's) memiliki salah satu bentuk yang dijelaskan di bawah ini maka digunakan olehexec untuk mengontrol aliran input dan output di antara subproses (es). Argumen semacam itu tidak akan diteruskan ke subproses (es). Dalam bentuk seperti `` < nama file '' nama file dapat berupa argumen terpisah dari `` <'' atau dalam argumen yang sama tanpa spasi (yaitu. `` < nama file '').

|

Pisahkan perintah yang berbeda di dalam pipa. Output standar dari perintah sebelumnya akan disalurkan ke input standar dari perintah selanjutnya.

|&

Pisahkan perintah yang berbeda di dalam pipa. Kedua output standar dan kesalahan standar dari perintah sebelumnya akan disalurkan ke input standar dari perintah berikutnya. Bentuk pengalihan ini mengesampingkan bentuk seperti 2> dan> &.

< nama file

File dinamai oleh nama file dibuka dan digunakan sebagai input standar untuk perintah pertama di dalam pipa.

<@ fileId

FileId harus identifier untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya keBuka. Ini digunakan sebagai input standar untuk perintah pertama dalam pipa. FileId pasti sudah dibuka untuk membaca.

<< nilai

Nilai diteruskan ke perintah pertama sebagai input standarnya.

> nama file

Output standar dari perintah terakhir dialihkan ke file bernama nama file , Menimpa konten sebelumnya.

2> nama file

Kesalahan standar dari semua perintah di pipeline dialihkan ke file bernama nama file , Menimpa konten sebelumnya.

>& nama file

Kedua keluaran standar dari perintah terakhir dan kesalahan standar dari semua perintah dialihkan ke file bernama nama file , Menimpa konten sebelumnya.

>> nama file

Output standar dari perintah terakhir dialihkan ke file bernama nama file , menambahkannya daripada menimpanya.

2>> nama file

Kesalahan standar dari semua perintah di pipeline dialihkan ke file bernama nama file , menambahkannya daripada menimpanya.

>>& nama file

Kedua keluaran standar dari perintah terakhir dan kesalahan standar dari semua perintah dialihkan ke file bernama nama file , menambahkannya daripada menimpanya.

>@ fileId

FileId harus identifier untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya keBuka. Output standar dari perintah terakhir dialihkan ke fileId File yang harus dibuka untuk menulis.

2>@ fileId

FileId harus identifier untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya keBuka. Kesalahan standar dari semua perintah di pipeline dialihkan ke fileId file. File harus dibuka untuk ditulis.

>&@ fileId

FileId harus identifier untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya keBuka. Kedua keluaran standar dari perintah terakhir dan kesalahan standar dari semua perintah dialihkan ke fileId file. File harus dibuka untuk ditulis.

Jika keluaran standar belum dialihkan, makaexec perintah mengembalikan keluaran standar dari perintah terakhir di dalam pipa. Jika ada perintah di saluran keluar secara tidak normal atau dibunuh atau ditangguhkan, laluexec akan mengembalikan kesalahan dan pesan kesalahan akan menyertakan output saluran pipa diikuti oleh pesan kesalahan yang menjelaskan penghentian abnormal; ituerrorCode variabel akan berisi informasi tambahan tentang penghentian abnormal terakhir yang dihadapi. Jika ada perintah yang menulis ke file galat standarnya dan kesalahan standar tersebut tidak dialihkan, laluexec akan mengembalikan kesalahan; pesan kesalahan akan menyertakan output standar pipa, diikuti oleh pesan tentang penghentian abnormal (jika ada), diikuti oleh output kesalahan standar.

Jika karakter terakhir dari hasil atau pesan kesalahan adalah baris baru maka karakter tersebut biasanya dihapus dari hasil atau pesan kesalahan. Ini konsisten dengan nilai pengembalian Tcl lainnya, yang biasanya tidak diakhiri dengan baris baru. Namun, jika-tetapnewline dispesifikasikan kemudian trailing newline dipertahankan.

Jika input standar tidak dialihkan dengan `` <'' atau `` << '' atau `` <@ '' maka input standar untuk perintah pertama dalam pipa diambil dari input standar aplikasi saat ini.

Jika yang terakhir arg adalah `` & '' maka pipeline akan dieksekusi di latar belakang. Dalam hal iniexecperintah akan mengembalikan daftar yang elemen-elemennya merupakan pengidentifikasi proses untuk semua subproses dalam pipa.Output standar dari perintah terakhir dalam pipa akan pergi ke output standar aplikasi jika belum diarahkan, dan output kesalahan dari semua perintah dalam pipa akan masuk ke file kesalahan standar aplikasi kecuali dialihkan.

Kata pertama di setiap perintah diambil sebagai nama perintah; tilde-substitusi dilakukan di atasnya, dan jika hasilnya tidak berisi garis miring maka direktori dalam variabel lingkungan PATH dicari untuk dieksekusi dengan nama yang diberikan. Jika nama berisi garis miring maka itu harus merujuk ke file yang dapat dieksekusi yang dapat dijangkau dari direktori saat ini. Ekspansi tanpa `` glob '' atau substitusi mirip-shell lainnya dilakukan pada argumen ke perintah.

Masalah Portabilitas

Windows (semua versi)

Membaca dari atau menulis ke soket, menggunakan ``@ fileId '' notasi, tidak berfungsi. Ketika membaca dari soket, aplikasi DOS 16-bit akan hang dan aplikasi 32-bit akan segera kembali dengan akhir-file. Ketika salah satu jenis aplikasi menulis ke soket, informasi tersebut malah dikirim ke konsol, jika ada, atau dibuang.

Widget teks konsol Tk tidak memberikan kemampuan IO standar nyata. Di bawah Tk, ketika mengalihkan dari input standar, semua aplikasi akan melihat akhir-file langsung; informasi yang diarahkan ke output standar atau kesalahan standar akan dibuang.

Entah garis miring ke depan atau ke belakang diterima sebagai pemisah jalur untuk argumen ke perintah Tcl. Saat menjalankan aplikasi, nama jalur yang ditentukan untuk aplikasi juga dapat berisi garis miring ke depan atau belakang sebagai pemisah jalur. Ingatlah, bagaimanapun, bahwa sebagian besar aplikasi Windows menerima argumen dengan garis miring ke depan hanya sebagai pembatas opsi dan backslash hanya di jalur. Argumen apa pun ke aplikasi yang menentukan nama jalur dengan garis miring ke depan tidak akan secara otomatis dikonversi untuk menggunakan karakter backslash. Jika argumen berisi garis miring ke depan sebagai pemisah jalur, itu mungkin atau mungkin tidak diakui sebagai nama jalan, tergantung pada program.

Selain itu, ketika memanggil aplikasi 16-bit DOS atau Windows 3.X, semua nama jalur harus menggunakan format jalan singkat, samar, (misalnya, menggunakan `` applba ~ 1.def '' daripada `` applbakery.default '' ).

Dua atau lebih garis miring ke depan atau belakang berturut-turut dalam jalur mengacu pada jalur jaringan. Sebagai contoh, rangkaian sederhana dari direktori rootc: / dengan subdirektori/ windows / system akan menghasilkanc: // windows / system (dua garis miring bersama), yang mengacu pada titik mount yang disebutsistem pada mesin yang disebutwindows (danc: / diabaikan), dan tidak setara denganc: / windows / system, yang menggambarkan direktori di komputer saat ini. Itufile gabung perintah harus digunakan untuk menggabungkan komponen jalur.

Windows NT

Saat mencoba menjalankan aplikasi,exec pencarian pertama untuk nama seperti yang ditentukan. Kemudian, secara berurutan,.com, .exe, dan.kelelawar ditambahkan ke akhir nama yang ditentukan dan mencari nama yang lebih panjang. Jika nama direktori tidak ditentukan sebagai bagian dari nama aplikasi, direktori berikut secara otomatis dicari ketika mencoba untuk mencari aplikasi:

Direktori tempat Tcl dieksekusi dimuat.Direktori saat ini.Direktori sistem 32-bit Windows NT.Direktori sistem Windows NT 16-bit.Direktori home Windows NT.Direktori yang terdaftar di jalur.

Untuk menjalankan perintah shell builtin sepertidir dansalinan, pemanggil harus menambahkan ``cmd.exe / c'' ke perintah yang diinginkan.

Windows 95

Saat mencoba menjalankan aplikasi,exec pencarian pertama untuk nama seperti yang ditentukan. Kemudian, secara berurutan,.com, .exe, dan.kelelawar ditambahkan ke akhir nama yang ditentukan dan mencari nama yang lebih panjang. Jika nama direktori tidak ditentukan sebagai bagian dari nama aplikasi, direktori berikut secara otomatis dicari ketika mencoba untuk mencari aplikasi:

Direktori tempat Tcl dieksekusi dimuat.Direktori saat ini.Direktori sistem Windows 95.Direktori home Windows 95.Direktori yang terdaftar di jalur.

Untuk menjalankan perintah shell builtin sepertidir dansalinan, pemanggil harus menambahkan ``command.com / c'' ke perintah yang diinginkan.

Setelah aplikasi DOS 16-bit telah membaca input standar dari konsol dan kemudian berhenti, semua kemudian menjalankan aplikasi 16-bit DOS akan melihat input standar seperti yang sudah ditutup. Aplikasi 32-bit tidak memiliki masalah ini dan akan berjalan dengan benar, bahkan setelah aplikasi DOS 16-bit berpikir bahwa input standar ditutup. Tidak ada solusi yang diketahui untuk bug ini saat ini.

Pengalihan antaraNUL: perangkat dan aplikasi 16-bit tidak selalu berfungsi. Saat mengalihkan dariNUL:, beberapa aplikasi mungkin hang, yang lain akan mendapatkan aliran tak terbatas `` 0x01 '' byte, dan beberapa akan benar-benar mendapatkan end-of-file segera; perilaku tampaknya bergantung pada sesuatu yang dikompilasi ke dalam aplikasi itu sendiri. Saat mengarahkan lebih dari 4K atau lebih keNUL:, beberapa aplikasi akan hang. Masalah di atas tidak terjadi dengan aplikasi 32-bit.

Semua aplikasi 16-bit DOS dijalankan secara bersamaan. Semua input standar dari sebuah pipa ke aplikasi DOS 16-bit dikumpulkan ke dalam file sementara; ujung lain dari pipa harus ditutup sebelum aplikasi 16-bit DOS mulai dieksekusi.Semua output standar atau kesalahan dari aplikasi DOS 16-bit ke pipa dikumpulkan ke file sementara; aplikasi harus berhenti sebelum file sementara dialihkan ke tahap berikutnya dari pipeline. Hal ini disebabkan solusi untuk bug Windows 95 dalam penerapan pipa, dan bagaimana shell Windows 95 DOS standar menangani pipa itu sendiri.

Aplikasi tertentu, seperticommand.com, tidak boleh dilaksanakan secara interaktif. Aplikasi yang secara langsung mengakses jendela konsol, daripada membaca dari input standar dan menulis ke output standar mereka mungkin gagal, hang Tcl, atau bahkan menggantung sistem jika jendela konsol pribadi mereka tidak tersedia untuk mereka.

Jas hujan

Ituexec perintah tidak diimplementasikan dan tidak ada di bawah Macintosh.

Unix

Ituexec perintah berfungsi penuh dan berfungsi seperti yang dijelaskan.

Lihat juga

kesalahan (n), buka (n)

Kata kunci

mengeksekusi, pipeline, redirection, subprocess

Penting: Menggunakan pria perintah ( % pria ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.