Saya telah melihat banyak perintah yang menerima "sintaks BSD" serta sintaks standarnya. Ambil ps
perintah untuk satu contoh:
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system using BSD syntax:
ps ax
ps axu
Jadi apa perbedaan antara dua rute ini? Secara umum ketika mereka mengatakan dalam sintaks BSD elemen apa yang harus saya ingat? Apakah sintaks ini hanya untuk perintah-perintah yang ada di BSD juga?
command-line
syntax
Mohammad Reza Rezwani
sumber
sumber
ps
optargs adalah berdiri di tepi jurang yang tidak diketahui manusia.Jawaban:
Apa perbedaan antara MS Office dan LibreOffice? Antara Firefox dan Chrome?
Mereka melakukan hal yang kira-kira sama, tetapi mereka dilakukan oleh orang yang berbeda dengan tujuan yang sedikit berbeda.
Mungkin pertanyaan yang lebih baik adalah mengapa BSD, Linux, OSX dan Unix distribusi berbagi begitu banyak perintah? Ini bermuara pada kepatuhan POSIX . POSIX pada dasarnya adalah seperangkat standar untuk sistem operasi mirip Unix; itu menetapkan API inti, perintah dan bagaimana perintah itu harus bekerja.
Dalam kasus
ps
(perintah POSIX-ditentukan) argumen tertentu diminta. Ini termasuk yang BSD ini. Semua perintah yang diturunkan dari POSIX memiliki halaman manual mereka sendiri tetapi mereka membutuhkan instalasi terpisah. Untukps
:Jadi mengapa BSD tidak menggunakan
ps
(atau sebaliknya) kami?ps
paket (procps
lihat:dpkg -S $(which ps)
) adalah sebuah garpu dari yang lainprocps
paket . Keduanya ini berlisensi GPL. Ini tidak sesuai dengan lisensi BSD sehingga tidak dapat disertakan di sana. ( Kita bisa memasukkan BSD tetapi tidak perlu).ps
cukup spesifik untuk kernel. Saya rasa mereka secara teknis tidak kompatibel.Bagaimana dengan aplikasi lain?
Sebagian besar perintah untuk kepatuhan POSIX berasal dari
coreutils
paket Ubuntu . Paket ini mewakili GNU dalam GNU / Linux dan juga berlisensi GPL. BSD mengirimkan versi BSD-kompatibel-lisensi sendiri yang mematuhi POSIX tetapi tidak sepenuhnya sama dengan rekan-rekan GNU mereka.ps
bukan satu-satunya perintah POSIX yang bukan GNU . Ada banyak dari mereka.Saat saya memimpin, mengapa mereka harus demikian? Mereka oleh orang yang berbeda dalam waktu yang sangat, sangat lama. Itulah jawaban singkatnya di sini.
sumber
Ini berawal dari sejarah Unix yang agak berliku-liku (Wikipedia memiliki diagram yang disederhanakan , yang jauh dari lengkap). Secara khusus, untuk sementara, ada dua arus utama: Sistem V dikembangkan oleh AT&T, dan BSD dikembangkan di University of California, Berkeley. Ini sekitar awal 1980-an, jauh sebelum Linux (1991), apalagi Ubuntu (2004). Seringkali kedua arus ini membuat keputusan yang berbeda, dan bahkan hari ini Anda akan menemukan referensi sesekali untuk varian atau fitur "Sistem V" dan "BSD".
The
ps
tanggal perintah kembali dari salah satu rilis pertama Unix (bukan dalam versi 1, orang halaman awal saya dapat menemukan online adalah dari versi 5 (hal.94) pada tahun 1974). Pada saat itu,ps
hanya memiliki beberapa opsi, misalnyaps a
akan menampilkan semua proses, bukan hanya pengguna, danps x
akan menampilkan proses tanpa terminal terpasang. Anda akan perhatikan bahwa opsinya tidak dimulai dengan-
: pada saat itu, konvensi penggunaan-
opsi tidak mendekati sistematis seperti saat ini, sebagian besar adalah perintah yang menggunakan nama file sebagai argumen normal.Seiring waktu, berbagai helai Unix diperpanjang
ps
dengan lebih banyak opsi. Varian BSD memilih untuk mempertahankan sintaksis aslinya, tanpa pimpinan-
, dana
danx
masih ada sampai sekarang. Varian Sistem V memilih untuk mengadopsi konvensi sintaksis-
untuk opsi, dan menggunakan huruf yang berbeda (misalnyaps -e
untuk menampilkan semua proses). Oracle (sebelumnya Sun) Solaris adalah contoh dari varian System V (Solaris juga mengirimkanps
executable terpisah , dalam direktori yang tidak pada standarnyaPATH
, untuk aplikasi yang ditulis dengan mempertimbangkan BSD).Pada saat Linux muncul, orang-orang yang menggunakannya sering kali memiliki pengalaman satu varian Unix. Linux terkadang melakukan hal-hal dengan cara System V, kadang-kadang dengan cara BSD, kadang-kadang dengan caranya sendiri, baik berdasarkan pertimbangan teknis atau berdasarkan pengalaman dan selera siapa pun yang mengimplementasikan fitur tersebut.
ps
Perintah Linux dimulai dengan opsi seperti BSD, misalnyaps ae
untuk menampilkan semua proses dan memasukkan variabel lingkungan dalam daftar. Seiring waktu (pada akhir 1990-an, saya tidak ingat persis kapan), penulisps
opsi tambahan Linux untuk orang-orang yang terbiasa dengan Sistem V. Jadi hari ini baikps ax
ataups -e
akan daftar semua proses di Linux, dan bahkan ada variabel lingkungan (PS_PERSONALITY
) untuk membuatps
berperilaku lebih seperti berbagai varian Unix lama, demi skrip lama dan orang-orang dengan kebiasaan tertentu.Orang yang menggunakan beberapa varian Unix tidak suka bahwa mereka harus memodifikasi program dan kebiasaan mereka ketika beralih dari satu varian Unix ke varian lain. Jadi ada upaya untuk membakukan subset fungsionalitas. Ini mengarah pada standar POSIX (dipimpin oleh IEEE ), yang pada umumnya diikuti oleh Ubuntu. Edisi pertama yang ruang lingkupnya termasuk
ps
perintah keluar pada tahun 1992; yang ini tidak tersedia online, tetapi edisi 1997 adalah. Untukps
perintah, seperti dalam banyak kasus lain, POSIX mengadopsi cara Sistem V melakukan sesuatu.The
ps
sintaks perintah standar ini adalah salah satu yang kompatibel dengan System V dan POSIX. Selain itu, sintaksis itu dapat dikatakan standar karena digunakan-
untuk memperkenalkan opsi secara default. Beberapa opsi hanya ada di salah satu dari dua sintaksis; untungnya mereka bisa dicampur dalam panggilan yang sama.Secara umum, "BSD" vs "System V" tidak memiliki implikasi teknis. Ini merujuk pada sejarah: "BSD" adalah pilihan apa pun yang dibuat BSD pada 1980-an dan sekitar itu, "Sistem V" adalah pilihan apa pun yang dipilih AT&T dan mitra mereka (terutama Sun). "POSIX" adalah pilihan apa pun yang dibuat oleh komite standardisasi IEEE.
sumber
Sintaks 'standar' yang Anda maksudkan sebenarnya adalah sistem operasi GNU yang dikembangkan pada 1980-an. Utilitas dan filosofi berbasis GNU digabungkan dengan kernel Linux untuk mengembangkan distribusi Linux paling modern (termasuk Ubuntu).
Sistem operasi BSD dikembangkan pada akhir 1970-an, independen dari GNU, dan kemudian bercabang ke versi modern seperti FreeBSD atau OpenBSD.
GNU dan BSD keduanya diinspirasi oleh Unix dan mereka memiliki filosofi, sintaksis yang sedikit berbeda, dll.
sumber
Coreutils Ubuntu adalah kumpulan aplikasi yang dikelola GNU yang menyertakan banyak hal (lihat apt-cache show coreutils). BSD memiliki versinya sendiri (GNU tidak kompatibel dengan lisensi BSD).
sumber