Dalam postingan kemarin, saya berbicara tentang struktur khususnya dalam konteks bilangan, lebih khusus lagi dalam konteks sistem dasar seperti sistem desimal berbasis 10 yang kita kenal dan sistem biner berbasis 2 yang sangat disukai oleh robot. Hari ini, saya ingin membicarakan sesuatu yang sama sekali berbeda.

Ini adalah cangkang. Ini adalah lapisan sistem operasi komputer Anda yang memberi Anda akses ke semua fungsi intinya tanpa harus khawatir tentang bagaimana tombol-tombol kecil di mesin Anda hidup dan mati. Nama ini berasal dari fakta bahwa lapisan ini menjaga cara kerja bagian dalam sistem Anda tetap berjalan. Git Bash (gambar di atas) adalah contoh shell baris perintah, yang mana pengguna harus secara eksplisit mengetikkan tindakan yang ingin mereka lakukan.

Ini jugasebuah shell — yang mungkin lebih Anda kenal. Yang satu ini lebih berperan dalam mendandani sistem operasi digital menjadi sesuatu yang lebih mudah diakses oleh rata-rata pengguna; navigasi dibantu oleh mouse dan juga keyboard, memanfaatkan kemampuan manusia untuk penalaran spasial.

Namun pada akhirnya, keduanya memiliki tujuan yang sama: memungkinkan kita menavigasi dan memanipulasi file dan direktori di komputer kita. Ada kesan bahwa keduanya terhubung secara abstrak. Di paragraf pertama, saya menyebutkan bahwa saya akan berbicara tentang sesuatu yang sama sekali berbeda dari sistem dasar saat ini; mungkin aku berbohong sedikit. Sama seperti angka 5(desimal) dan 101 (biner) adalah dua nama berbeda untuk angka yang sama, antarmuka baris perintah (CLI) dan antarmuka pengguna grafis(GUI) adalah dua shell berbeda yang mencakup sistem inti yang sama. Mereka mempunyai struktur abstrak yang sama, sehingga kita dapat mengarsipkannya secara mental ke dalam kotak yang sama.

Baik antarmuka baris perintah maupun antarmuka pengguna grafis memiliki tujuan yang sama: keduanya memungkinkan kita menavigasi dan memanipulasi file dan direktori di komputer kita.

Ini adalah realisasi yang kuat, karena begitu kita mengenali struktur umum ini, kita dapat menggunakan fakta tersebut untuk menerjemahkan tindakan dalam satu hal ke tindakan dalam hal lain. Sebagai ilustrasi, saya akan mengambil proses sederhana di sisi grafis — membuat file, membuat folder, dan memindahkan file ke folder baru —dan memandu Anda menerjemahkannya ke baris perintah.

Mari kita mulai.

Kata Kerja, Kata Benda, Tindakan, Subjek

Hidup kita didorong oleh berbuat. Kita selalu bergerak, mendengarkan, bernafas, berbicara, merasa, menjadi. Tindakan ini berdampak pada penggunaan alat; Anda mengayunkanpalu, mengendarai mobil, memutarsaklar lampu. Untuk alat yang lebih rumit, tindakan kita diterjemahkan ke dalam jenis tindakan lain; menekantombol “panggil lift” berarti menaikkanatau menurunkanlift, menariktuas di samping kursi recliner diduga membuatnya berbaring.

Komputer tidak terkecuali. Mengklik file membukafile itu, menekanCtrl+S di editor teks menyimpan dokumen saat ini (atau membukajendela penyimpanan); tindakan yang dilakukan dari mouse atau keyboard diterjemahkan ke tindakan yang dilakukan oleh sistem operasi.

Di baris perintah, mouse tidak lagi menjadi pilihan. Sebaliknya, kita perlu memberi tahu sistem operasi tindakan apa yang ingin kita lakukan; kita perlu memberikan instruksi tertulis.

Apa yang menciptakan penghalang masuk yang tampaknya tinggi bagi banyak orang yang pertama kali menemukan baris perintah adalah perintah-perintahnya yang relatif berlawanan dengan intuisi dibandingkan dengan gerakan dan klik intuitif pada mouse, meskipun terkubur di bawah tampilan bahasanya yang misterius adalah struktur kuat yang memungkinkan untuk fleksibilitas dan ekspresi yang lebih besar daripada GUI.

Pertunjukan Terjemahan Pertama Kami: Memasukkan File ke dalam Folder

Inilah yang ingin kami lakukan:

  • Buat direktori baru
  • Buat file teks baru
  • Letakkan file teks di direktori

Inilah cara kami melakukannya di GUI seperti Windows:

Dari pengalaman bertahun-tahun dengan sistem seperti Windows, proses ini (membuat folder baru dan mengklik-dan-menyeret) mungkin sudah menjadi kebiasaan Anda. Bagaimana Anda memulai dengan hal seperti ini?

Untungnya, para desainer di balik git bash dan shell baris perintah serupa cukup berbaik hati untuk memberinya struktur yang konsisten; ada keteraturan yang mungkin tampak seperti kekacauan pada awalnya:

Pada tingkat yang sangat mendasar, setiap instruksi baris perintah dapat dipecah menjadi sebuah tindakan (sesuatu yang ingin kita lakukan) dan sebuah subjek ( hal yang kita lakukan ke atau dengan). Struktur ini sangat penting; tanpa memahaminya, Anda hanya akan membuang kata kunci secara acak dan berharap yang terbaik. Di sini, tindakancd(singkatan dari “perubahan direktori”) bertindak pada subjekDownloads ,mengubah direktori kerja ke "Unduhan."

Gambar berikut menunjukkan sisa proses pembuatan file dan direktori serta memindahkan file dan direktori sebelumnya ke direktori terakhir:

Ini memiliki efek yang sama dengan apa yang kita lakukan sebelumnya di GUI. Perhatikan bahwa dalam kedua kasus tersebut, tindakan yang dilakukan oleh sistem operasi adalah untuk

  • Buat direktori baru,
  • Buat file teks baru, dan
  • Letakkan file teks di direktori

GUI dan CLI memiliki tujuan yang sama, meskipun cara mencapainya berbeda.

Perintah sebagai Blok Penyusun: Mari Kita Abstrak

Pada titik ini, Anda mungkin bertanya-tanya: jika baris perintah dan shell grafis dapat melakukan hal yang sama, mengapa saya ingin menggunakan baris perintah? Ada sejumlah jawaban bagus untuk pertanyaan ini yang telah ditulis oleh orang-orang yang jauh lebih berpengalaman daripada saya, tetapi menurut pendapat saya, GUI membatasi Anda pada daftar tindakan yang dipilih desainer; Anda hanya dapat membuat kalimat dari sejumlah templat dan cuplikan. Baris perintah memungkinkan Anda menulis kalimat Anda sendiri.

Ingat di postingan pertama ketika saya menyinggung ide abstraksi? Misalnya, Anda dapat memasukkan sepuluh objek ke dalam kotak dan memperlakukannya sebagai satu objek (yaitu, satu sepuluh), sehingga Anda dapat melupakan objek satu per satu saat Anda bekerja dengan kelompok yang membentuknya. Kita bisa melakukan hal yang sama untuk perintah.

Dan sekarang kita memperlakukan perintah sebagai objek tunggal, pertanyaan yang wajar untuk ditanyakan mungkin adalah “Bisakah kita menggabungkannya?”

Pembaca yang budiman, di sini saya ingin memberi tahu Anda bahwa ya, Anda bisa, dan ada sejumlah cara untuk melakukannya (beberapa di antaranya, sejujurnya, saya tidak begitu paham) . Saya akan menyelesaikan artikel ini dengan contohnya.

Dalam contoh kami sebelumnya, kami memerlukan tiga tindakan untuk menyelesaikan tugas kami, namun kami dapat melakukan lebih baik lagi dengan menggabungkan ketiga tindakan tersebut menjadi satu tindakan gabungan. Memperlakukan perintah kita sebagai blok tunggal, kita dapat melihat keseluruhan proses seperti ini:

Buat direktori → Buat file → Pindahkan file ke dalam direktori

Kami ingin tahu bagaimana menghubungkan ketiga hal ini bersama-sama. Kebetulan, bash shell memiliki simbol khusus untuk tujuan ini: operator &&. Kita cukup meletakkan &&di antara setiap perintah untuk menghubungkannya:

mkdir testFolder && touch test-file-1.txt && mv test-file-1.txt testFolder

Abstraksi adalah alat yang sangat ampuh, dan sesuatu yang dapat membuat sistem yang sangat kompleks menjadi lebih mudah untuk diperhitungkan. Coba lihat kotak mental seperti apa yang bisa kamu buat!