Kelas ilmu komputer paling berguna yang mungkin belum pernah Anda ikuti
OSatu hal yang selalu saya amati sepanjang karier saya adalah bahwa ilmuwan dan insinyur data yang paling produktif biasanya memiliki satu kesamaan: mereka penyihir baris perintah. Mereka dapat menavigasi sistem file komputer mereka, mencari pola dalam file log, dan mengelola pekerjaan, kode sumber, dan kontrol versi, semuanya dari baris perintah, tanpa bergantung pada navigasi lambat dengan mouse dan antarmuka pengguna grafis.
Namun, 'keajaiban' baris perintah ini, seperti yang terlihat oleh seseorang yang tidak terbiasa dengan alat shell, biasanya bukan bagian dari kurikulum ilmu komputer standar. Sebuah kursus MIT sekitar menguasai baris perintah Anda diberi nama yang tepat "Semester yang Hilang dalam Pendidikan Ilmu Komputer Anda".
Posting ini adalah kelas 'command-line wizardry 10' pribadi saya yang berisi 101 pelajaran, ditargetkan untuk pembaca yang ingin bekerja lebih banyak dengan baris perintah dan lebih sedikit dengan antarmuka pengguna grafis. Kami akan membahas dasar-dasar seputar shell dan variabel path, alias, izin file, streaming dan pemipaan, manajemen pekerjaan yang efisien, tmux, ssh, git, dan vim.
Mari kita mulai. Selamat datang di CLW 101.
1. Kerang
Saat Anda membuka terminal, Anda melihat a tempurung, seperti bash (dibawa lagi shell) atau ZSH (z-shell). Shell benar-benar merupakan bahasa pemrograman lengkap dengan akses ke program standar tertentu yang memungkinkan navigasi sistem file dan manipulasi data. Anda dapat mengetahui shell mana yang Anda jalankan dengan mengetik:
echo $ SHELL
Di bash, setiap kali Anda memulai shell baru, shell memuat serangkaian perintah yang ditentukan di dalamnya .bashrc
file, yang biasanya ada di direktori home Anda (jika Anda menggunakan Mac, biasanya ada a .bash_profile
mengajukan sebagai gantinya). Dalam file itu Anda dapat menentukan hal-hal berguna seperti variabel jalur atau alias Anda (selengkapnya di bawah).
2. Variabel jalur
Saat Anda mengetikkan nama program tertentu ke dalam shell Anda, seperti python
, cat
, atau ls
, bagaimana shell mengetahui dari mana mendapatkan program itu? Itulah tujuan dari variabel jalur. Variabel ini menyimpan daftar semua jalur di mana shell mencari program, dipisahkan dengan titik dua. Anda dapat memeriksa variabel jalur Anda dengan mengetik:
gema $PATH
Dan Anda dapat menambahkan direktori tambahan ke variabel jalur Anda dengan perintah ini:
ekspor PATH="my_new_path:$PATH"
Yang terbaik adalah menambahkan perintah ini ke file bashrc Anda, sehingga direktori tambahan Anda selalu ada di jalur Anda saat Anda memulai shell baru.
3. Alias
alias adalah perintah khusus yang dapat Anda tentukan untuk menghindari mengetik perintah yang panjang berulang kali, seperti:
alias ll="ls -lah"
alias gs = "status git"
alias gp="git push master asal"
Alias โโjuga dapat digunakan untuk menciptakan perlindungan bagi alur kerja pengembangan Anda. Misalnya dengan mendefinisikan
alias mv = "mv -i"
terminal Anda akan memperingatkan Anda jika file yang akan Anda pindahkan sudah ada di direktori baru, sehingga Anda tidak secara tidak sengaja menimpa file yang tidak ingin Anda timpa.
Setelah Anda menambahkan alias ini ke dalam file bashrc Anda, alias tersebut selalu tersedia saat Anda memulai shell baru.
4. Izin file dan sudo
Ketika beberapa pengguna berbagi mesin, penting untuk mengaturnya izin file yang menentukan pengguna mana yang dapat melakukan operasi apa pada data apa. Saat Anda mengetik ls -l
, Anda akan melihat file di direktori Anda saat ini beserta izinnya dalam bentuk berikut:
-rwxrwxrwx
Di sini,
rwx
masing-masing mewakili hak baca, tulis, dan eksekusi- yang 3
rwx
blok ditujukan untuk (1) pengguna, (2) grup pengguna, dan (3) orang lain. Dalam contoh yang diberikan, ketiga entitas ini memiliki izin membaca, menulis, dan mengeksekusi. - tanda hubung menunjukkan bahwa ini adalah file. Selain tanda hubung, Anda juga dapat melihat a
d
untuk direktori ataul
untuk tautan simbolis.
Anda dapat mengedit izin file dengan chmod
. Misalnya, jika Anda ingin membuat file dapat dieksekusi sendiri, ketikkan
chmod u+x my_program.py
๐ Jika suatu file dapat dieksekusi, bagaimana shell mengetahui cara mengeksekusinya? Ini ditentukan dengan 'hashbang' di baris pertama file, seperti
#!/bin/bash
untuk skrip bash atau#!/bin/python
untuk skrip python.
Terakhir, ada 'pengguna super' khusus yang memiliki semua izin untuk semua file. Anda dapat menjalankan perintah apa pun saat pengguna super menulis sudo
di depan perintah itu. Anda juga dapat meluncurkan sudo shell yang berdiri sendiri dengan mengeksekusi
sudo su
โ ๏ธ Gunakan sudo dengan hati-hati. Dengan sudo, Anda dapat membuat perubahan pada kode yang mengontrol perangkat keras komputer Anda, dan kesalahan dapat membuat mesin Anda tidak dapat digunakan. Ingat, di balik kekuatan yang besar, terdapat pula tanggung jawab yang besar.
5. Streaming dan perpipaan
Grafik Streaming operator >
mengarahkan output dari suatu program ke file. >>
melakukan hal yang sama, tetapi menambahkan ke file yang sudah ada alih-alih menimpanya, jika sudah ada. Ini berguna untuk mencatat program Anda sendiri seperti ini:
python my_program.py > file log
Konsep lain yang berguna adalah perpipaan: x | y
mengeksekusi program x, dan mengarahkan output dari x ke program y. Misalnya:
cat log.txt | tail -n5
: mencetak 5 baris terakhir dari log.txtcat log.txt | head -n5
: mencetak 5 baris pertama dari log.txtcat -b log.txt | grep error
: menampilkan semua baris di log.txt yang berisi string 'error', beserta nomor baris (-b)
6. Mengelola pekerjaan
Jika Anda menjalankan program dari baris perintah Anda (mis python run.py
), program secara default akan dijalankan di latar depan, dan mencegah Anda melakukan hal lain hingga program selesai. Saat program berjalan di latar depan, Anda dapat:
- ketik control+C, yang akan mengirimkan sinyal SIGINT (interupsi sinyal) ke program, yang memerintahkan mesin untuk segera menghentikan program (kecuali program memiliki cara untuk menangani sinyal-sinyal ini secara internal).
- ketik control+Z, yang akan menghentikan sementara program. Setelah dijeda, program dapat dilanjutkan dengan membawanya ke latar depan (
fg
), atau dengan mengirimkannya ke latar belakang (bg
).
Untuk segera memulai perintah Anda di latar belakang, Anda menggunakan &
operator:
python run.py &
๐ Bagaimana Anda mengetahui program mana yang sedang berjalan di latar belakang? Gunakan perintah
jobs
. Ini akan menampilkan nama pekerjaan yang berjalan serta id prosesnya (PID).
Terakhir,kill
adalah program untuk mengirimkan sinyal ke program yang berjalan di latar belakang. Misalnya,
kill -STOP %1
mengirimkan sinyal STOP, menjeda program 1.kill -KILL %1
mengirimkan sinyal KILL, menghentikan program 1 secara permanen.
7.tmux
tmux
('terminal multiplexer') memungkinkan Anda membuat terminal baru dengan mudah dan bernavigasi di antara terminal-terminal tersebut. Ini bisa sangat berguna, misalnya Anda dapat menggunakan satu terminal untuk menavigasi sistem file Anda dan terminal lain untuk menjalankan pekerjaan. Dengan tmux, Anda bahkan dapat memiliki keduanya secara berdampingan.
๐ Alasan lain untuk mempelajari tmux adalah pengembangan jarak jauh: ketika Anda keluar dari mesin jarak jauh (baik disengaja atau tidak), semua program yang aktif berjalan di dalam shell Anda akan dihentikan secara otomatis. Di sisi lain, jika Anda menjalankan program di dalam shell tmux, Anda cukup melepaskan jendela tmux, logout, menutup komputer Anda, dan kembali lagi ke shell itu nanti seolah-olah Anda belum pernah logout.
Berikut adalah beberapa perintah dasar untuk membantu Anda memulai dengan tmux:
tmux new -s run
membuat sesi terminal baru dengan nama 'run'- control-BD: lepaskan jendela ini
tmux a
: lampirkan ke jendela terbarutmux a -t run
: lampirkan ke jendela yang disebut 'jalankan'- control-Bโ : tambahkan panel terminal lain di bawah
- control-B% : tambahkan panel terminal lain di sebelah kanan
- control-Bโก๏ธ : pindah ke panel terminal ke kanan (mirip dengan kiri, atas, bawah)
8. SSH dan pasangan kunci
ssh
adalah program untuk masuk ke mesin jarak jauh. Untuk masuk ke mesin jarak jauh, Anda harus memberikan nama pengguna dan kata sandi, atau Anda menggunakan pasangan kunci, yang terdiri dari kunci publik (yang dapat diakses oleh kedua mesin) dan kunci pribadi (yang hanya dapat diakses oleh mesin Anda sendiri). memiliki akses ke).
ssh-keygen
adalah program untuk menghasilkan pasangan kunci tersebut. Jika kamu lari ssh-keygen
, secara default akan membuat kunci publik bernama id_rsa.pub
dan kunci pribadi bernama id_rsa
, dan tempatkan keduanya ke dalam file Anda ~/.ssh
direktori. Anda harus menambahkan kunci publik ke mesin jarak jauh, yang, seperti yang sudah Anda ketahui sekarang, dapat Anda lakukan dengan melakukan pipeline bersama-sama. cat
, ssh
, dan operator streaming:
kucing .ssh/id_rsa.pub | ssh pengguna@remote 'kucing >> ~/.ssh/authorized_keys'
Sekarang Anda dapat menggunakan ssh ke jarak jauh hanya dengan memberikan kunci pribadi Anda:
ssh jarak jauh -i ~/.ssh/id_rsa
Praktik yang lebih baik lagi adalah membuat file ~/.ssh/config
yang berisi semua konfigurasi otentikasi ssh Anda. Misalnya, jika Anda config
berkasnya sebagai berikut:
Pengembang tuan rumah
Nama Host jarak jauh
IdentityFile ~/.ssh/id_rsa
Kemudian Anda dapat login ke remote hanya dengan mengetik ssh dev
.
9. git
git
adalah sistem kontrol versi yang memungkinkan Anda menavigasi riwayat versi dan cabang kode secara efisien dari baris perintah.
๐ Perhatikan itu
git
tidak sama dengan GitHub:git
adalah program mandiri yang dapat mengelola versi kode Anda di laptop lokal Anda, sedangkan GitHub adalah tempat untuk menghosting kode Anda dari jarak jauh.
Berikut adalah beberapa perintah git penting:
git add
: menentukan file mana yang ingin Anda sertakan dalam komit berikutnyagit commit -m 'my commit message'
: melakukan perubahan kodegit checkout -b dev
: membuat cabang baru bernama 'dev' dan memeriksa cabang itugit merge dev
: menggabungkan dev ke cabang saat ini. Jika hal ini menimbulkan konflik penggabungan, Anda harus memperbaiki konflik tersebut secara manual, lalu menjalankannyagit add file_that_changed; git merge --continue
git stash
: mengembalikan semua perubahan, dangit stash pop
membawa mereka kembali. Ini berguna jika Anda membuat perubahan pada cabang master, dan kemudian memutuskan bahwa Anda benar-benar ingin perubahan tersebut menjadi cabang terpisah.git reset --hard
: mengembalikan semua perubahan secara permanen
Dan berikut adalah beberapa perintah git penting untuk menangani host jarak jauh (misalnya GitHub):
git clone
: mengkloning salinan repo kode ke mesin lokal Andagit push origin master
: mendorong perubahan ke host jarak jauh (misalnya GitHub)git pull
: menarik versi terbaru dari jarak jauh. (Ini sama dengan berlarigit fetch; git merge;
).
๐ Sebelum bisa menjalankan perintah seperti
git push origin master
, Anda harus mengautentikasi dengan keypair ssh (lihat Pelajaran 8). Jika Anda menggunakan GitHub, Anda cukup menempelkan kunci publik di bawah pengaturan profil Anda.
10. vim
Vim adalah editor teks berbasis baris perintah yang kuat. Merupakan ide bagus untuk mempelajari setidaknya perintah paling dasar di vim:
- sesekali Anda mungkin harus masuk ke mesin jarak jauh dan mengubah kode di sana. vim adalah program standar dan oleh karena itu biasanya tersedia di mesin mana pun yang Anda gunakan.
- saat berlari
git commit
, secara default git membuka vim untuk menulis pesan komit. Jadi setidaknya Anda ingin mengetahui cara menulis, menyimpan, dan menutup file.
Hal terpenting untuk dipahami tentang vim adalah adanya mode operasi yang berbeda. Setelah Anda meluncurkan vim, Anda berada di dalam modus navigasi, yang Anda gunakan untuk menavigasi file. Jenis i
untuk memulai mode edit, di mana Anda dapat membuat perubahan pada file. Ketik Esc
tombol untuk keluar dari mode edit dan kembali ke mode navigasi.
Hal yang berguna tentang mode navigasi adalah Anda dapat menavigasi dan memanipulasi file dengan cepat menggunakan keyboard Anda, misalnya:
x
menghapus karakterdd
menghapus seluruh barisb
(kembali) pergi ke kata sebelumnya,n
(berikutnya) melanjutkan ke kata berikutnya:wq
menyimpan perubahan Anda dan menutup file:q!
mengabaikan perubahan Anda dan menutup file
Untuk lebih banyak (lebih banyak lagi!) pintasan keyboard vim, lihat lembar contekan vim ini.
Pesan terakhir
Selamat, Anda telah menyelesaikan 'command line wizardry 101'. Namun, kami hanya menggores permukaannya saja di sini. Sebagai inspirasi, perhatikan masalah berikut:
โDiberikan file teks dan bilangan bulat
k
, cetakk
kata-kata yang paling umum dalam file (dan jumlah kemunculannya) dengan frekuensi yang semakin menurun.โ
Sebagai seorang data scientist, dorongan pertama saya mungkin adalah meluncurkan notebook jupyter, mungkin memuat data ke dalam pandas, dan kemudian menggunakan fungsi seperti pandas agg
. Namun, bagi penyihir baris perintah yang berpengalaman, ini adalah satu kalimat:
tr -cs A-Za-z'' | tr AZ az | urutkan | unik -c | urutkan -rn | sed ${1}q
Ini tidak terlihat jauh berbeda dengan imajinasi Difusi Stabil yang ditampilkan di awal artikel ini. Memang benar sihir.
Cara menjadi penyihir baris perintah Diterbitkan ulang dari Sumber https://towardsdatascience.com/how-to-become-a-command-line-wizard-5d78d75fbf0c?source=rssโ-7f60cf5620c9โ4 melalui https://towardsdatascience. com/umpan
<!โ
->
- Bitcoin
- bizbuildermike
- blockchain
- kepatuhan blockchain
- konferensi blockchain
- Konsultan Blockchain
- coinbase
- kecerdasan
- Konsensus
- konferensi crypto
- pertambangan kripto
- cryptocurrency
- Terdesentralisasi
- Defi
- Aset-Aset Digital
- ethereum
- Mesin belajar
- token yang tidak dapat dipertukarkan
- plato
- plato ai
- Kecerdasan Data Plato
- Platoblockchain
- Data Plato
- permainan plato
- Poligon
- bukti kepemilikan
- W3
- zephyrnet.dll