Daftar Isi
Saya rasa belajar sistem komputer seperti belajar bahasa asing baru. Meskipun buku dan dokumentasi tutorial sangat membantu, Anda harus mempraktikkannya sendiri. Untuk membantu Anda memulai dengan lancar, saya menguraikan beberapa hal mendasar.
Desain kuat dari Debian GNU/Linux berasal dari sistem operasi Unix, yaitu, suatu sistem operasi yang multiuser, multitasking. Anda harus belajar untuk mengambil keuntungan dari kekuatan fitur-fitur ini dan kemiripan antara Unix dan GNU/Linux.
Jangan menghindar dari teks yang berorientasi Unix dan jangan hanya mengandalkan teks GNU/Linux, karena ini merampas banyak informasi berguna.
![]() |
Catatan |
---|---|
Jika Anda telah menggunakan salah satu sistem mirip Unix untuk sementara waktu dengan baris perintah, Anda mungkin tahu segala sesuatu yang saya jelaskan di sini. Harap gunakan ini sebagai uji realita dan penyegaran. |
Saat memulai sistem, Anda disajikan layar login berbasis karakter bila Anda
tidak memasang lingkungan GUI seperti misalnya
sistem desktop GNOME atau KDE. Misalnya nama host Anda adalah
foo
, sapaan login tampak sebagai berikut.
Bila Anda memasang suatu lingkungan GUI , maka Anda masih dapat menuju ke sapaan login berbasis karakter dengan Ctrl-Alt-F3, dan Anda dapat kembali ke lingkungan GUI melalui Ctrl-Alt-F2 (lihat Bagian 1.1.6, “Konsol virtual” di bawah untuk lebih lanjut).
foo login:
Pada sapaan login, Anda mengetikkan nama pengguna Anda,
mis. penguin
, dan menekan tombol Enter, lalu ketikkan
kata sandi Anda dan tekan tombol Enter lagi.
![]() |
Catatan |
---|---|
Mengikuti tradisi Unix, nama pengguna dan kata sandi sistem Debian
membedakan huruf besar kecil. Nama pengguna biasanya dipilih hanya dari
huruf kecil. Akun pengguna pertama biasanya dibuat saat instalasi. Akun
pengguna tambahan dapat dibuat dengan |
Sistem mengawali dengan pesan sapaan yang disimpan dalam
"/etc/motd
" (Message Of The Day, Pesan Hari Ini) dan
menyajikan suatu sapaan perintah.
Debian GNU/Linux 12 foo tty3 foo login: penguin Password: Linux foo 6.5.0-0.deb12.4-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.10-1~bpo12+1 (2023-11-23) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Dec 20 09:39:00 JST 2023 on tty3 foo:~$
Sekarang Anda berada di shell. Shell menafsirkan perintah-perintah Anda.
Jika Anda menginstal lingkungan GUI selama instalasi, Anda akan disajikan dengan layar login grafis saat memulai sistem Anda. Anda mengetikkan nama pengguna dan kata sandi Anda untuk log masuk ke akun pengguna biasa. Gunakan tab untuk menavigasi antara nama pengguna dan kata sandi, atau gunakan klik primer tetikus.
Anda bisa mendapatkan prompt shell di bawah lingkungan GUI dengan memulai
program x-terminal-emulator
seperti
gnome-terminal
(1), rxvt
(1), atau
xterm
(1). Di bawah lingkungan Desktop GNOME, menekan
tombol SUPER (tombol Windows) dan mengetikkan "terminal" ke prompt pencarian
akan melakukan itu.
Di bawah beberapa sistem Desktop lain (seperti fluxbox
),
mungkin ada titik awal yang jelas untuk menu. Jika ini terjadi, cobalah
mengklik (kanan) latar belakang layar desktop dan berharap untuk munculnya
suatu menu.
Akun root juga disebut superuser atau pengguna istimewa. Dari akun ini, Anda dapat melakukan tugas-tugas administrasi sistem berikut.
Baca, tulis, dan hapus berkas apapun di sistem terlepas dari hak akses berkas mereka
Setel kepemilikan berkas dan hak akses berkas apapun pada sistem
Tetapkan kata sandi pengguna non-istimewa di sistem
Login ke akun manapun tanpa kata sandi mereka
Kekuatan akun root tak terbatas ini mengharuskan Anda untuk mempertimbangkan dan bertanggung jawab saat menggunakannya.
![]() |
Awas |
---|---|
Jangan pernah berbagi kata sandi root dengan orang lain. |
![]() |
Catatan |
---|---|
Izin dalam sebuah berkas (termasuk perangkat keras seperti dll. CD-ROM yang sekedar suatu berkas lain untuk sistem Debian) dapat membuatnya tidak dapat digunakan atau tidak dapat diakses oleh pengguna non-root. Meskipun penggunaan akun root adalah cara cepat untuk menguji situasi semacam ini, resolusi harus dilakukan melalui pengaturan hak akses berkas dan keanggotaan grup pengguna yang tepat (Lihat Bagian 1.2.3, “Hak akses sistem berkas”). |
Berikut adalah beberapa metode dasar untuk mendapatkan prompt shell root dengan menggunakan kata sandi root.
Ketikkan root
pada prompt login mode teks.
Ketik "su -l
" dari sebarang prompt shell pengguna.
Ini tidak mempertahankan lingkungan pengguna saat ini.
Ketik "su -l
" dari sebarang prompt shell pengguna.
Ini mempertahankan sebagian lingkungan pengguna saat ini.
Ketika menu desktop Anda tidak memulai alat administrasi sistem GUI secara
otomatis dengan hak istimewa yang sesuai, Anda dapat memulai mereka dari
prompt shell root dari emulator terminal, seperti
gnome-terminal
(1), rxvt
(1), atau
xterm
(1). Lihat Bagian 1.1.4, “Prompt shell root”
dan Bagian 7.9, “Sambungan server X”.
![]() |
Awas |
---|---|
Jangan pernah memulai pengelola tampilan/sesi GUI di bawah akun root dengan
mengetikkan Jangan pernah menjalankan program GUI remote tidak terpercaya di bawah X Window ketika informasi penting ditampilkan karena itu dapat menguping X layar Anda. |
Dalam sistem Debian default, ada enam konsol mode teks mirip VT100 yang dapat ditukar, tersedia untuk
memulai shell perintah langsung pada host Linux. Kecuali Anda berada di
lingkungan GUI, Anda dapat beralih antara konsol virtual dengan menekan
tombol Alt kiri
dan salah satu tombol
F1
-F6
secara bersamaan. Setiap konsol
mode teks memungkinkan login yang independen ke akun dan menawarkan
lingkungan multiuser. Lingkungan multiuser ini adalah fitur Unix yang
hebat, dan sangat adiktif.
Jika Anda berada dalam lingkungan GUI, Anda mendapatkan akses ke konsol mode
teks 3 dengan menekan tombol Ctrl-Alt-F3
, yaitu
tombol Ctrl kiri
, tombol Alt kiri
, dan
tombol F3
ditekan bersamaan. Anda dapat bisa kembali ke
lingkungan GUI, biasanya berjalan pada konsol virtual 2, dengan menekan
Alt-F2
.
Anda juga dapat berpindah ke konsol virtual lain, mis. ke konsol 3, dari baris perintah.
# chvt 3
Anda mengetik Ctrl-D
, yaitu tombol Ctrl
kiri
dan tombol d
ditekan bersama-sama, pada
prompt perintah untuk menutup kegiatan shell. Jika Anda berada pada konsol
mode teks, Anda kembali ke prompt login dengan ini. Meskipun karakter
kontrol ini disebut sebagai "kontrol D" dengan huruf besar, Anda tidak perlu
menekan tombol Shift. Ekspresi singkat, ^D
, juga
digunakan untuk Ctrl-D
. Sebagai alternatif, Anda dapat
mengetikkan "exit".
Jika Anda di x-terminal-emulator
(1), Anda bisa menutup
jendela x-terminal-emulator
dengan ini.
Sama seperti OS moden lain manapun dimana operasi berkas melibatkan penyinggahan data dalam memori untuk peningkatan kinerja, sistem Debian memerlukan prosedur shutdown yang tepat sebelum daya aman dimatikan. Ini adalah untuk mempertahankan integritas berkas, dengan memaksa semua perubahan dalam memori harus ditulis ke disk. Jika perangkat lunak kendali daya tersedia, prosedur shutdown secara otomatis mematikan daya sistem. (Jika tidak, Anda mungkin harus menekan tombol power selama beberapa detik setelah prosedur shutdown.)
Anda bisa mematikan sistem di bawah mode multi user normal dari command line.
# shutdown -h now
Anda bisa mematikan sistem di bawah mode single-user dari commandline.
# poweroff -i -f
Lihat Bagian 6.3.8, “Cara mematikan sistem jarak jauh di SSH”.
Ketika layar mengamuk setelah melakukan beberapa hal lucu seperti
"cat suatu-berkas-biner
", ketikkan
"reset
" pada prompt perintah. Anda mungkin tidak dapat
melihat perintah dipantulkan saat Anda mengetik. Anda dapat juga
memerintahkan "clear
" untuk membersihkan layar.
Meskipun instalasi minimal sistem Debian tanpa task lingkungan desktop apa
pun telah menyediakan fungsionalitas dasar Unix, ide yang baik untuk
menginstal beberapa perintah tambahan dan paket terminal karakter berbasis
curses seperti mc
dan vim
dengan
apt-get
(8) bagi pemula untuk mengawali dengan yang
berikut ini.
# apt-get update ... # apt-get install mc vim sudo aptitude ...
Jika Anda sudah menginstal paket ini, tidak ada paket baru yang diinstal.
Tabel 1.1. Daftar paket program mode teks yang menarik
paket | popcon | ukuran | deskripsi |
---|---|---|---|
mc
|
V:50, I:209 | 1542 | Manajer berkas layar penuh mode teks |
sudo
|
V:688, I:841 | 6550 | Sebuah program untuk mengizinkan hak istimewa root terbatas kepada pengguna |
vim
|
V:95, I:369 | 3743 | Editor teks Unix Vi IMproved, editor teks pemrogram (versi standar) |
vim-tiny
|
V:58, I:975 | 1722 | Editor teks Unix, Vi IMproved, editor teks programmer (versi ringkas) |
emacs-nox
|
V:4, I:16 | 39647 | Proyek GNU Emacs, penyunting teks yang dapat diperluas berbasis Lisp |
w3m
|
V:15, I:187 | 2837 | Peramban WWW mode teks |
gpm
|
V:10, I:12 | 521 | Potong dan tempel gaya Unix pada konsol mode teks (daemon) |
Mungkin ada baiknya membaca beberapa dokumentasi informatif.
Tabel 1.2. Daftar paket dokumentasi informatif
paket | popcon | ukuran | deskripsi |
---|---|---|---|
doc-debian
|
I:867 | 187 | Dokumentasi Proyek Debian, (FAQ Debian) dan dokumen lainnya |
debian-policy
|
I:14 | 4659 | Manual Kebijakan Debian dan dokumen terkait |
developers-reference
|
V:0, I:5 | 2601 | Panduan dan informasi untuk pengembang Debian |
debmake-doc
|
I:0 | 11701 | Panduan untuk Pengelola Debian |
debian-history
|
I:0 | 4692 | Sejarah Proyek Debian |
debian-faq
|
I:865 | 790 | FAQ Debian |
Anda dapat menginstal beberapa paket berikut ini.
# apt-get install package_name
Jika Anda tidak ingin menggunakan akun pengguna utama untuk kegiatan
pelatihan berikut, Anda dapat membuat akun pengguna pelatihan, misalnya
fish
dengan cara berikut.
# adduser fish
Jawablah semua pertanyaan.
Ini membuat akun baru bernama fish
. Setelah latihan
Anda, Anda dapat menghapus akun pengguna ini dan direktori home-nya dengan
cara berikut.
# deluser --remove-home fish
Pada sistem Debian terspesialisasi dan non-Debian, kegiatan di atas perlu
menggunakan utilitas level bawah useradd
(8) dan
userdel
(8).
Untuk workstation pengguna tunggal biasa seperti sistem Debian desktop pada
PC laptop, biasanya menggunakan konfigurasi sederhana
sudo
(8) sebagai berikut untuk membiarkan pengguna yang
tidak memiliki hak istimewa, mis. penguin
, untuk
mendapatkan hak administratif hanya dengan kata sandi penggunanya tetapi
tanpa kata sandi root.
# echo "penguin ALL=(ALL) ALL" >> /etc/sudoers
Sebagai alternatif, juga biasa dilakukan sebagai berikut untuk membiarkan
pengguna biasa, mis. penguin
, untuk mendapatkan hak
administratif tanpa kata sandi.
# echo "penguin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Trik ini hanya boleh digunakan untuk workstation pengguna tunggal yang Anda kelola dan di mana Anda adalah satu-satunya pengguna.
![]() |
Awas |
---|---|
Jangan membuat akun pengguna biasa di workstation multiuser seperti ini karena akan sangat buruk bagi keamanan sistem. |
![]() |
Perhatian |
---|---|
Kata sandi dan akun Hak administratif dalam konteks ini adalah milik seseorang yang berwenang untuk melakukan tugas administrasi sistem pada workstation. Jangan pernah memberikan hak semacam itu kepada manajer di departemen Admin di perusahaan Anda atau bos Anda, kecuali mereka memiliki wewenang dan kemampuan. |
![]() |
Catatan |
---|---|
Untuk memberikan hak akses ke perangkat terbatas dan berkas terbatas, Anda
mesti mempertimbangkan untuk menggunakan group untuk memberikan akses terbatas daripada
menggunakan hak istimewa Dengan konfigurasi yang lebih bijaksana dan hati-hati,
|
Sekarang Anda siap untuk bermain dengan sistem Debian tanpa risiko selama Anda menggunakan akun pengguna yang tidak memiliki hak istimewa.
Ini karena sistem Debian, bahkan setelah instalasi baku, dikonfigurasi dengan izin berkas yang tepat yang mencegah pengguna yang tidak memiliki hak istimewa merusak sistem. Tentu saja, mungkin masih ada beberapa lubang yang dapat dieksploitasi tetapi mereka yang khawatir tentang masalah ini tidak boleh membaca bagian ini tetapi harus membaca Manual Mengamankan Debian.
Kami mempelajari sistem Debian sebagai sebuah sistem mirip Unix dengan yang berikut ini.
Bagian 1.2, “Sistem berkas mirip Unix” (konsep dasar)
Bagian 1.3, “Midnight Commander (MC)” (metode survival)
Bagian 1.4, “Lingkungan kerja dasar mirip Unix” (metode dasar)
Bagian 1.5, “Perintah shell sederhana” (mekanisme shell)
Bagian 1.6, “Pemrosesan teks mirip Unix” (metode pengolahan teks)
Di GNU/Linux dan sistem operasi mirip Unix
lainnya, berkas diatur ke dalam direktori. Semua berkas dan direktori diatur
dalam satu pohon besar yang berakar pada "/
". Disebut
pohon karena jika Anda menggambar sistem berkas, itu terlihat seperti pohon
tetapi terbalik.
Berkas dan direktori ini dapat tersebar di beberapa
perangkat. mount
(8) berfungsi untuk mencantolkan sistem
berkas yang ditemukan pada beberapa perangkat ke pohon berkas besar.
Sebaliknya, umount
(8) melepaskannya lagi. Pada kernel
Linux terbaru, mount
(8) dengan beberapa opsi dapat
mengikat bagian dari pohon berkas di tempat lain atau dapat mengait sistem
berkas sebagai shared, private, slave, atau unbindable. Opsi pemasangan yang
didukung untuk setiap sistem berkas tersedia di
"/usr/share/doc/linux-doc-*/Documentation/filesystems/
".
Direktori pada sistem Unix disebut
folder pada beberapa sistem lain. Harap
perhatikan juga bahwa tidak ada konsep untuk drive seperti "A:
" pada sistem
Unix mana pun. Ada satu sistem berkas, dan semuanya disertakan. Ini adalah
keuntungan besar dibandingkan dengan Windows.
Berikut adalah beberapa dasar berkas Unix.
Nama berkas peka huruf besar/kecil.
Artinya, "MYFILE
" dan "MyFile
" adalah
berkas yang berbeda.
Direktori root berarti akar dari sistem
berkas yang disebut sebagai "/
". Jangan bingung dengan
direktori home untuk pengguna root: "/root
".
Setiap direktori memiliki nama yang dapat berisi huruf atau simbol kecuali "/
". Direktori root
adalah pengecualian; namanya adalah "/
" (diucapkan
"slash" atau "direktori root") dan tidak dapat diganti namanya.
Setiap berkas atau direktori ditunjuk oleh fully-qualified filename, nama berkas absolut, atau path, memberikan urutan direktori yang harus dilalui untuk mencapainya. Ketiga istilah tersebut sinonim.
Semua fully-qualified filenames dimulai
dengan direktori "/
", dan ada "/
" di
antara setiap direktori atau berkas dalam nama
berkas. "/
" pertama adalah direktori tingkat puncak, dan
subdirektori terpisah "/
" lainnya, sampai kita mencapai
entri terakhir yang merupakan nama berkas sebenarnya. Kata-kata yang
digunakan di sini bisa membingungkan. Ambil fully-qualified filenames berikut sebagai contoh:
"/usr/share/keytables/us.map.gz
". Namun, orang juga
merujuk ke nama dasarnya "us.map.gz
" saja sebagai nama
berkas.
Direktori root memiliki sejumlah cabang, seperti "/etc/
"
dan "/usr/
". Subdirektori ini pada gilirannya bercabang
menjadi lebih banyak subdirektori, seperti
"/etc/systemd/
" dan
"/usr/local/
". Semua itu dilihat secara kolektif disebut
sebagai pohon direktori. Anda dapat
menganggap nama berkas absolut sebagai rute dari dasar pohon
("/
") ke akhir beberapa cabang (berkas). Anda juga
mendengar orang berbicara tentang pohon direktori seolah-olah itu adalah
pohon keluarga yang mencakup semua
keturunan langsung dari satu figur yang disebut direktori root
("/
"): jadi subdirektori memiliki induk, dan sebuah path menunjukkan keturunan
lengkap dari sebuah berkas. Ada juga jalur relatif yang dimulai di suatu
tempat selain direktori root. Anda harus ingat bahwa direktori
"../
" merujuk ke direktori induk. Terminologi ini juga
berlaku untuk direktori lain seperti struktur, seperti struktur data
hierarkis.
Tidak ada komponen nama path direktori khusus yang sesuai dengan perangkat
fisik, seperti hard disk Anda. Ini berbeda dari RT-11, CP/M, OpenVMS, MS-DOS, AmigaOS, dan Microsoft Windows, dengan path berisi nama
perangkat seperti "C:\
". (Namun, entri direktori memang
ada yang merujuk ke perangkat fisik sebagai bagian dari sistem berkas
normal. Lihat Bagian 1.2.2, “Internal sistem berkas”.)
![]() |
Catatan |
---|---|
Meskipun Anda dapat menggunakan hampir
semua huruf atau simbol dalam nama berkas, dalam praktiknya adalah ide yang
buruk untuk melakukannya. Sebaiknya hindari karakter yang sering memiliki
arti khusus pada baris perintah, termasuk spasi, tab, baris baru, dan
karakter khusus lainnya: |
![]() |
Catatan |
---|---|
Kata "root" dapat berarti "pengguna root" atau "direktori root". Konteks penggunaannya harus membuatnya jelas. |
![]() |
Catatan |
---|---|
Kata path digunakan tidak hanya untuk nama berkas lengkap seperti di atas tetapi juga untuk path pencarian perintah. Makna yang dimaksud biasanya jelas dari konteksnya. |
Praktik terbaik terperinci untuk hierarki berkas dijelaskan dalam Standar
Hierarki Sistem Berkas/Filesystem Hierarchy Standard
("/usr/share/doc/debian-policy/fhs/fhs-2.3.txt.gz
" dan
hier
(7)). Anda harus mengingat fakta-fakta berikut di
awal.
Tabel 1.3. Daftar penggunaan direktori kunci
direktori | penggunaan direktori |
---|---|
/ |
direktori root |
/etc/ |
berkas konfigurasi seluruh sistem |
/var/log/ |
berkas log sistem |
/home/ |
semua direktori rumah bagi semua pengguna tanpa hak istimewa |
Mengikuti tradisi Unix, sistem GNU/Linux
Debian menyediakan sistem berkas di mana
data fisik pada hard disk dan perangkat penyimpanan lainnya berada, dan
interaksi dengan perangkat keras seperti layar konsol dan konsol serial
jarak jauh diwakili secara terpadu di bawah "/dev/
".
Setiap berkas, direktori, pipa bernama (cara dua program dapat berbagi data), atau perangkat fisik pada sistem Debian GNU/Linux memiliki struktur data yang disebut inode yang menjelaskan atribut terkait seperti pengguna yang memilikinya (pemilik), grup yang diikutinya, waktu terakhir diakses, dll. Gagasan untuk mewakili hampir semua hal dalam sistem berkas adalah inovasi Unix, dan kernel Linux modern telah mengembangkan gagasan ini lebih jauh. Sekarang, bahkan informasi tentang proses yang berjalan di komputer dapat ditemukan di sistem berkas.
Representasi abstrak dan kesatuan entitas fisik dan proses internal ini sangat kuat karena ini memungkinkan kita untuk menggunakan perintah yang sama untuk jenis operasi yang sama pada banyak perangkat yang sama sekali berbeda. Bahkan dimungkinkan untuk mengubah cara kerja kernel dengan menulis data ke berkas khusus yang terkait dengan proses yang berjalan.
![]() |
Tip |
---|---|
Jika Anda perlu mengidentifikasi korespondensi antara pohon berkas dan
entitas fisik, jalankan |
Izin sistem berkas dari sistem seperti Unix ditentukan untuk tiga kategori pengguna yang terpengaruh.
pengguna yang memiliki berkas (u)
Pengguna lain di grup tempat berkas tersebut termasuk (g)
Semua pengguna lainnya (o) juga disebut sebagai "dunia" dan "semua orang"
Untuk berkas tersebut, setiap izin yang sesuai memungkinkan tindakan berikut.
Izin baca (r) memungkinkan pemilik untuk memeriksa konten berkas.
Izin tulis (w) memungkinkan pemilik untuk memodifikasi berkas.
Izin eksekusi (x) memungkinkan pemilik untuk menjalankan berkas sebagai perintah.
Untuk direktori, setiap izin yang sesuai memungkinkan tindakan berikut.
Izin baca (r) memungkinkan pemilik untuk membuat daftar isi direktori.
Izin tulis (w) memungkinkan pemilik untuk menambah atau menghapus berkas dalam direktori.
Izin eksekusi (x) memungkinkan pemilik untuk mengakses berkas dalam direktori.
Di sini, izin eksekusi pada direktori berarti tidak hanya mengizinkan pembacaan berkas di direktori itu tetapi juga untuk memungkinkan melihat atribut mereka, seperti ukuran dan waktu modifikasi.
ls
(1) digunakan untuk menampilkan informasi izin (dan
lebih banyak lagi) untuk berkas dan direktori. Ketika dipanggil dengan opsi
"-l
", ini menampilkan informasi berikut dalam urutan yang
diberikan.
Tipe berkas (karakter pertama)
Izin akses berkas (sembilan karakter, masing-masing terdiri dari tiga karakter untuk pengguna, grup, dan lainnya dalam urutan ini)
Banyaknya hard link ke berkas
Nama dari pengguna yang memiliki berkas tersebut
Nama dari grup pemilik berkas tersebut
Ukuran berkas dalam karakter (byte)
Tanggal dan waktu berkas (mtime)
Nama berkas
Tabel 1.4. Daftar karakter pertama dari keluaran "ls -l
"
karakter | arti |
---|---|
- |
berkas biasa |
d |
direktori |
l |
symlink |
c |
simpul perangkat karakter |
b |
simpul perangkat blok |
p |
pipa bernama |
s |
soket |
chown
(1) digunakan dari akun root untuk mengubah pemilik
berkas. chgrp
(1) digunakan dari pemilik berkas atau akun
root untuk mengubah grup berkas. chmod
(1) digunakan dari
pemilik berkas atau akun root untuk mengubah izin akses berkas dan
direktori. Sintaks dasar untuk memanipulasi berkas foo
adalah sebagai berikut.
# chown newowner foo # chgrp newgroup foo # chmod [ugoa][+-=][rwxXst][,...] foo
Misalnya, Anda dapat membuat pohon direktori agar dimiliki oleh pengguna
foo
dan dipakai bersama oleh grup bar
dengan cara berikut ini.
# cd /some/location/
# chown -R foo:bar .
# chmod -R ug+rwX,o=rX .
Ada tiga bit izin khusus lagi.
Bit set user ID (s atau S alih-alih x pengguna)
Bit set group ID (s atau S alih-alih x grup)
Bit sticky (t atau T alih-alih x lainnya)
Di sini keluaran dari "ls -l
" untuk bit ini adalah
dalam kapital jika bit eksekusi yang
disembunyikan oleh keluaran ini tak
ditata.
Menyetel set ID pengguna pada berkas executable memungkinkan pengguna untuk menjalankan berkas executable dengan ID pemilik berkas (misalnya root). Demikian pula, pengaturan set ID grup pada berkas executable memungkinkan pengguna untuk menjalankan berkas executable dengan ID grup berkas (misalnya root). Karena pengaturan ini dapat menyebabkan risiko keamanan, mengaktifkannya memerlukan kehati-hatian ekstra.
Mengatur set ID grup pada direktori akan mengaktifkan skema pembuatan berkas seperti BSD di mana semua berkas yang dibuat dalam direktori menjadi milik grup dari direktori.
Menyetel sticky bit pada direktori
mencegah berkas dalam direktori dihapus oleh pengguna yang bukan pemilik
berkas. Untuk mengamankan konten berkas di direktori yang dapat ditulis
dunia seperti "/tmp
" atau dalam direktori yang dapat
ditulis grup, seseorang tidak hanya harus mengatur ulang izin tulis untuk berkas tersebut, tetapi juga mengatur
sticky bit pada direktori. Jika tidak,
berkas dapat dihapus dan berkas baru dapat dibuat dengan nama yang sama oleh
setiap pengguna yang memiliki akses tulis ke direktori.
Berikut adalah beberapa contoh menarik dari izin berkas.
$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4 crw------T 1 root root 108, 0 Oct 16 20:57 /dev/ppp -rw-r--r-- 1 root root 2761 Aug 30 10:38 /etc/passwd -rw-r----- 1 root shadow 1695 Aug 30 10:38 /etc/shadow -rwsr-xr-x 1 root root 973824 Sep 23 20:04 /usr/sbin/exim4 $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 14 root root 20480 Oct 16 21:25 /tmp drwxrwsr-x 10 root staff 4096 Sep 29 22:50 /usr/local drwxr-xr-x 10 root root 4096 Oct 11 00:28 /usr/src drwxrwsr-x 2 root mail 4096 Oct 15 21:40 /var/mail drwxrwxrwt 3 root root 4096 Oct 16 21:20 /var/tmp
Ada mode numerik alternatif untuk menjelaskan izin berkas dengan
chmod
(1). Mode numerik ini menggunakan 3 hingga 4 digit
angka oktal lebar (radix = 8).
Tabel 1.5. Mode numerik untuk izin berkas dalam perintah chmod
(1)
nomor | arti |
---|---|
digit opsional pertama | jumlahdari set ID pengguna (=4), set ID grup (=2), dan sticky bit (=1) |
angka ke-2 | jumlah dari izin baca (=4), tulis (=2), dan eksekusi (=1) untuk pengguna |
angka ke-3 | begitu juga untuk grup |
angka ke-4 | begitu juga untuk lainnya |
Ini terdengar rumit tetapi sebenarnya cukup sederhana. Jika Anda melihat
beberapa (2-10) kolom pertama dari keluaran perintah "ls
-l
" dan membacanya sebagai representasi biner (basis=2) dari izin
berkas ("-" menjadi "0" dan "rwx" menjadi "1"), 3 digit terakhir dari nilai
mode numerik harus masuk akal sebagai representasi oktal (basis=8) dari izin
berkas bagi Anda.
Misalnya, coba yang berikut ini
$ touch foo bar $ chmod u=rw,go=r foo $ chmod 644 bar $ ls -l foo bar -rw-r--r-- 1 penguin penguin 0 Oct 16 21:39 bar -rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foo
![]() |
Tip |
---|---|
Jika Anda perlu mengakses informasi yang ditampilkan oleh " |
Izin apa yang diterapkan ke berkas atau direktori yang baru dibuat dibatasi
oleh perintah bawaan shell umask
. Lihat
dasbd
(1), bash
(1), dan
builtins
(7).
(file permissions) = (requested file permissions) & ~(umask value)
Tabel 1.6. Contoh-contoh nilai umask
umask | izin berkas dibuat | izin direktori dibuat | pengunaan |
---|---|---|---|
0022 |
-rw-r--r-- |
-rwxr-xr-x |
hanya dapat ditulis oleh pengguna |
0002 |
-rw-rw-r-- |
-rwxrwxr-x |
dapat ditulis oleh grup |
Sistem Debian menggunakan skema grup privat pengguna (user private
group/UPG) sebagai bakunya. UPG dibuat setiap kali pengguna baru ditambahkan
ke sistem. UPG memiliki nama yang sama dengan pengguna yang dibuat dan
pengguna itu adalah satu-satunya anggota UPG. Skema UPG membuatnya aman
untuk mengatur umask ke 0002
karena setiap pengguna
memiliki grup pribadi mereka sendiri. (Dalam beberapa varian Unix, sangat
umum untuk mengatur semua pengguna normal yang termasuk dalam satu grup
users
dan merupakan
ide yang baik untuk mengatur umask ke 0022
untuk keamanan
dalam kasus seperti itu.)
![]() |
Tip |
---|---|
Aktifkan UPG dengan meletakkan " |
![]() |
Awas |
---|---|
Pastikan untuk menyimpan perubahan yang belum tersimpan sebelum melakukan reboot atau tindakan serupa. |
Anda dapat menambahkan pengguna penguin
ke grup
bird
dalam dua langkah:
Ubah konfigurasi grup menggunakan salah satu dari yang berikut:
Jalankan "sudo usermod -aG bird penguin
".
Jalankan "sudo adduser penguin bird
". (hanya pada sistem
Debian umum)
Jalankan "sudo vigr
" bagi /etc/group
dan "sudo vigr -s
" bagi /etc/gshadow
untuk mengimbuhkan penguin
dalam baris bagi
bird
.
Terapkan konfigurasi menggunakan salah satu yang berikut:
Boot ulang cold (matikan daya lalu nyalakan lagi) dan log masuk. (Pilihan terbaik)
Jalankan "kill -TERM -1
" dan lakukan beberapa tindakan
perbaikan seperti "systemctl restart
NetworkManager.service
".
Log keluar melalui menu GUI dan log masuk.
Anda dapat menghapus pengguna penguin
dari grup
bird
dalam dua langkah:
Ubah konfigurasi grup menggunakan salah satu dari yang berikut:
Jalankan "sudo usermod -rG bird penguin
".
Jalankan "sudo deluser penguin bird
". (hanya pada sistem
Debian umum)
Jalankan "sudo vigr
" bagi /etc/group
dan "sudo vigr -s
" bagi /etc/gshadow
untuk membuang penguin
dalam baris bagi
bird
.
Terapkan konfigurasi menggunakan salah satu yang berikut:
Boot ulang cold (matikan daya lalu nyalakan lagi) dan log masuk. (Pilihan terbaik)
Jalankan "kill -TERM -1
" dan lakukan beberapa tindakan
perbaikan seperti "systemctl restart
NetworkManager.service
".
Log keluar melalui menu GUI bukanlah suatu opsi bagi Desktop Gnome.
Sebarang upaya boot ulang warm adalah pengganti yang rentan dari boot ulang cold di bawah sistem desktop modern.
![]() |
Catatan |
---|---|
Atau, Anda dapat secara dinamis menambahkan pengguna ke grup selama proses
otentikasi dengan menambahkan baris " |
Perangkat keras hanyalah jenis berkas lain di sistem Debian. Jika Anda memiliki masalah dalam mengakses perangkat seperti CD-ROM dan flash disk USB dari akun pengguna, Anda harus menjadikan pengguna tersebut anggota grup yang relevan.
Beberapa grup terkenal yang disediakan sistem mengizinkan anggotanya
mengakses berkas dan perangkat tertentu tanpa hak istimewa
root
.
Tabel 1.7. Daftar grup yang disediakan sistem terkenal untuk akses berkas
kelompok | deskripsi untuk berkas dan perangkat yang dapat diakses |
---|---|
dialout |
akses penuh dan langsung ke port serial
("/dev/ttyS[0-3] ") |
dip |
akses terbatas ke port serial untuk koneksi IP Dialup ke rekan tepercaya |
cdrom |
Drive CD-ROM, DVD+/-RW |
audio |
perangkat audio |
video |
perangkat video |
scanner |
pemindai |
adm |
log pemantauan sistem |
staff |
beberapa direktori untuk pekerjaan administratif junior:
"/usr/local ", "/home " |
![]() |
Tip |
---|---|
Anda harus tergabung dalam grup |
Beberapa grup terkenal yang disediakan sistem mengizinkan anggotanya untuk
menjalankan perintah tertentu tanpa hak istimewa root
.
Tabel 1.8. Daftar grup penting yang disediakan untuk eksekusi perintah tertentu
kelompok | perintah yang dapat diakses |
---|---|
sudo |
menjalankan sudo tanpa kata sandinya |
lpadmin |
menjalankan perintah untuk menambah, memodifikasi, dan menghapus printer dari database printer |
Untuk daftar lengkap pengguna dan grup yang disediakan sistem, lihat versi
terbaru dari dokumen "Pengguna dan Grup" di
"/usr/share/doc/base-passwd/users-and-groups.html
" yang
disediakan oleh paket base-passwd
.
Lihat passwd
(5), group
(5),
shadow
(5), newgrp
(1),
vipw
(8), vigr
(8), dan
pam_group
(8) untuk perintah manajemen pengguna dan sistem
grup.
Ada tiga jenis stempel waktu untuk berkas GNU/Linux.
Tabel 1.9. Daftar jenis stempel waktu
jenis | artinya (definisi Unix historis) |
---|---|
mtime | waktu modifikasi berkas (ls -l ) |
ctime | waktu perubahan status berkas (ls -lc ) |
atime | waktu akses berkas terakhir (ls -lu ) |
![]() |
Catatan |
---|---|
ctime bukanlah waktu pembuatan berkas. |
![]() |
Catatan |
---|---|
Nilai sebenarnya dari atime pada sistem GNU/Linux mungkin berbeda dari definisi Unix historis. |
Menimpa berkas mengubah semua atribut mtime, ctime, dan atime dari berkas.
Mengubah kepemilikan atau izin berkas mengubah atribut ctime dan atime berkas.
Membaca berkas mengubah atribut atime berkas pada sistem Unix bersejarah.
Membaca berkas mengubah atribut atime
berkas pada sistem GNU/Linux jika sistem berkasnya dikait dengan
"strictatime
".
Membaca berkas untuk pertama kalinya atau setelah satu hari mengubah atribut
atime berkas pada sistem GNU/Linux jika
sistem berkasnya dikait dengan ""relatime
". (perilaku
baku sejak Linux 2.6.30)
Membaca berkas tidak mengubah atribut atime berkas pada sistem GNU/Linux jika sistem
berkasnya dikait dengan "noatime
".
![]() |
Catatan |
---|---|
Opsi kait " |
Gunakan perintah touch
(1) untuk mengubah stempel waktu
berkas yang ada.
Untuk stempel waktu, perintah ls
menghasilkan string
terlokalkan di bawah lokal non-Inggris ("fr_FR.UTF-8
").
$ LANG=C ls -l foo -rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo $ LANG=en_US.UTF-8 ls -l foo -rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo $ LANG=fr_FR.UTF-8 ls -l foo -rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foo
![]() |
Tip |
---|---|
Lihat Bagian 9.3.4, “Tampilan waktu dan tanggal yang disesuaikan” untuk
menyesuaikan keluaran " |
Ada dua metode untuk menghubungkan berkas "foo
" dengan
nama berkas yang berbeda "bar
".
Nama duplikat untuk berkas yang sudah ada
"ln foo bar
"
Berkas khusus yang menunjuk ke berkas lain berdasarkan nama
"ln -s foo bar
"
Lihat contoh berikut untuk perubahan cacah tautan dan perbedaan halus dalam
hasil perintah rm
.
$ umask 002 $ echo "Original Content" > foo $ ls -li foo 1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo $ ln foo bar # hard link $ ln -s foo baz # symlink $ ls -li foo bar baz 1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar 1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo 1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo $ rm foo $ echo "New Content" > foo $ ls -li foo bar baz 1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar 1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo 1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo $ cat bar Original Content $ cat baz New Content
Hardlink dapat dibuat dalam sistem berkas yang sama dan memiliki nomor inode
yang sama yang diungkap oleh opsi "-i
"
ls
(1).
Symlink selalu memiliki izin akses berkas nominal
"rwxrwxrwx
", seperti yang ditunjukkan pada contoh di
atas, dengan izin akses efektif ditentukan oleh izin berkas yang diacunya.
![]() |
Perhatian |
---|---|
Hal ini umumnya ide yang baik untuk tidak membuat taut simbolis yang rumit atau hardlink sama sekali kecuali Anda memiliki alasan yang sangat baik. Hal ini dapat menyebabkan mimpi buruk di mana kombinasi logis dari taut simbolis menghasilkan loop dalam sistem berkas. |
![]() |
Catatan |
---|---|
Umumnya lebih baik untuk menggunakan taut simbolis daripada hardlink kecuali Anda memiliki alasan yang baik untuk menggunakan hardlink. |
Direktori ".
" menaut ke direktori tempat itu muncul,
sehingga cacah taut dari setiap direktori baru dimulai pada 2. Direktori
"..
" menaut ke direktori induk, sehingga cacah taut dari
direktori meningkat dengan penambahan subdirektori baru.
Jika Anda baru saja pindah ke Linux dari Windows, segera menjadi jelas seberapa baik dirancang penautan nama berkas Unix, dibandingkan dengan yang setara pada Windows terdekat yaitu "pintasan". Karena diimplementasikan dalam sistem berkas, aplikasi tidak dapat melihat perbedaan antara berkas yang ditautkan dan yang asli. Dalam kasus hardlink, benar-benar tidak ada perbedaan.
Suatu pipa bernama (named pipe) adalah berkas yang bertindak seperti pipa. Anda memasukkan sesuatu ke dalam berkas, dan itu keluar di ujung yang lain. Jadi itu disebut FIFO, atau First-In-First-Out: hal pertama yang Anda masukkan ke dalam pipa adalah hal pertama yang keluar dari ujung yang lain.
Jika Anda menulis ke pipa bernama, proses yang menulis ke pipa tidak
berakhir sampai informasi yang ditulis dibaca dari pipa. Jika Anda membaca
dari pipa bernama, proses membaca menunggu sampai tidak ada yang bisa dibaca
sebelum mengakhiri. Ukuran pipa selalu nol --- itu tidak menyimpan data,
itu hanya menghubungkan dua proses seperti fungsi yang ditawarkan oleh
sintaks shell "|
". Namun, karena pipa ini memiliki nama,
kedua proses tidak harus berada di baris perintah yang sama atau bahkan
dijalankan oleh pengguna yang sama. Pipa adalah inovasi Unix yang sangat
berpengaruh.
Misalnya, coba yang berikut ini
$ cd; mkfifo mypipe $ echo "hello" >mypipe & # put into background [1] 8022 $ ls -l mypipe prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe $ cat mypipe hello [1]+ Done echo "hello" >mypipe $ ls mypipe mypipe $ rm mypipe
Soket digunakan secara luas oleh semua komunikasi Internet, basis data, dan sistem operasi itu sendiri. Hal ini mirip dengan pipa bernama (FIFO) dan memungkinkan proses untuk bertukar informasi bahkan antara komputer yang berbeda. Untuk soket, proses tersebut tidak perlu berjalan pada saat yang sama atau berjalan sebagai anak dari proses leluhur yang sama. Ini adalah titik akhir untuk komunikasi antar proses (inter process communication/IPC). Pertukaran informasi dapat terjadi melalui jaringan antara host yang berbeda. Dua yang paling umum adalah soket Internet dan soket domain Unix.
![]() |
Tip |
---|---|
" |
Berkas perangkat mengacu pada perangkat
fisik atau virtual pada sistem Anda, seperti hard disk, kartu video, layar,
atau papan ketik Anda. Contoh perangkat virtual adalah konsol, diwakili
oleh "/dev/console
".
Ada dua jenis berkas perangkat.
Perangkat karakter
Mengakses satu karakter pada satu waktu
1 karakter = 1 byte
Mis. perangkat papan ketik, port serial, …
Perangkat blok
diakses dalam unit yang lebih besar yang disebut blok
1 blok > 1 byte
Mis. hard disk, …
Anda dapat membaca dan menulis berkas perangkat, meskipun berkas mungkin
berisi data biner yang mungkin tidak dapat dimengerti oleh manusia. Menulis
data langsung ke berkas-berkas ini kadang-kadang berguna untuk pemecahan
masalah koneksi perangkat keras. Misalnya, Anda dapat mencurahkan berkas
teks ke perangkat pencetak "/dev/lp0
" atau mengirim
perintah modem ke port serial yang sesuai "/dev/ttyS0
".
Tapi, kecuali ini dilakukan dengan hati-hati, itu dapat menyebabkan bencana
besar. Jadi berhati-hatilah.
![]() |
Catatan |
---|---|
Untuk akses normal ke pencetak, gunakan |
Nomor simpul perangkat ditampilkan dengan mengeksekusi
ls
(1) sebagai berikut.
$ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero brw-rw---T 1 root disk 8, 0 Oct 16 20:57 /dev/sda brw-rw---T+ 1 root cdrom 11, 0 Oct 16 21:53 /dev/sr0 crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0 crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
"/dev/sda
" memiliki nomor perangkat mayor 8 dan nomor
perangkat minor 0. Ini dapat dibaca/tulis oleh pengguna yang termasuk dalam
grup disk
.
"/dev/sr0
" memiliki nomor perangkat mayor 11 dan nomor
perangkat minor 0. Ini dapat dibaca/tulis oleh pengguna yang tergabung
dalam grup cdrom
.
"/dev/ttyS0
" memiliki nomor perangkat mayor 4 dan nomor
perangkat minor 64. Ini dapat dibaca/tulis oleh pengguna yang termasuk
dalam grup dialout
.
"/dev/zero
" memiliki nomor perangkat mayor 1 dan
perangkat minor nomor 5. Ini dapat dibaca/ditulis oleh siapa saja.
Pada sistem Linux modern, sistem berkas di bawah "/dev/
"
secara otomatis dihuni oleh mekanisme udev
(7).
Ada beberapa berkas perangkat khusus.
Tabel 1.10. Daftar berkas perangkat khusus
berkas perangkat | aksi | deskripsi respon |
---|---|---|
/dev/null |
baca | mengembalikan "karakter end-of-file (EOF)" |
/dev/null |
tulis | tidak mengembalikan apa-apa (lubang pembuangan data tanpa dasar) |
/dev/zero |
baca | mengembalikan "karakter \0 (NUL)" (tidak sama dengan
angka nol ASCII) |
/dev/random |
baca | mengembalikan karakter acak dari pembangkit angka acak sejati, memberikan entropi nyata (lambat) |
/dev/urandom |
baca | mengembalikan karakter acak dari pembangkit angka pseudorandom yang aman secara kriptografis |
/dev/full |
tulis | mengembalikan kesalahan disk-full (ENOSPC) |
Ini sering digunakan bersamaan dengan pengalihan shell (lihat Bagian 1.5.8, “Urutan perintah umum dan pengalihan shell”).
procfs dan sysfs
yang dipasang pada "/proc
" dan "/sys
"
adalah pseudo-filesystem dan mengekspos struktur data internal kernel ke
userspace. Dengan kata lain, entri ini bersifat virtual, yang berarti bahwa
mereka bertindak sebagai jendela yang nyaman ke dalam pengoperasian sistem
operasi.
Direktori "/proc
" berisi (antara lain) satu subdirektori
untuk setiap proses yang berjalan pada sistem, yang dinamai dengan id proses
(PID). Utilitas sistem yang mengakses informasi proses, seperti
ps
(1), mendapatkan informasi mereka dari struktur
direktori ini.
Direktori di bawah "/proc/sys/
" berisi antarmuka untuk
mengubah parameter kernel tertentu pada saat berjalan. (Anda dapat
melakukan hal yang sama melalui perintah khusus sysctl
(8)
atau berkas preload/konfigurasinya "/etc/sysctl.conf
".)
Orang sering panik ketika mereka melihat satu berkas khususnya -
"/proc/kcore
" - yang umumnya sangat besar. Ini (kurang
lebih) salinan konten memori komputer Anda. Ini digunakan untuk men-debug
kernel. Ini adalah berkas virtual yang menunjuk ke memori komputer, jadi
jangan khawatir tentang ukurannya.
Direktori di bawah "/sys
" berisi struktur data kernel
yang diekspor, atributnya, dan hubungan di antara mereka. Ini juga berisi
antarmuka untuk mengubah parameter kernel tertentu pada saat berjalan.
Lihat "proc.txt(.gz)
",
"sysfs.txt(.gz)
", dan dokumen terkait lainnya dalam
dokumentasi kernel Linux
("/usr/share/doc/linux-doc-*/Documentation/filesystems/*
")
yang disediakan oleh paket linux-doc-*
.
tmpfs adalah sistem berkas sementara yang menyimpan semua berkas dalam memori virtual. Data tmpfs dalam cache halaman pada memori dapat ditukar ke ruang swap pada disk sesuai kebutuhan.
Direktori "/run
" dikait sebagai tmpfs dalam proses boot
awal. Hal ini memungkinkan menulis ke sana bahkan ketika direktori
"/
" dikait sebagai hanya-baca. Ini adalah lokasi baru
untuk penyimpanan berkas keadaan sementara dan menggantikan beberapa lokasi
yang dijelaskan dalam Filesystem
Hierarchy Standard versi 2.3:
"/var/run
" → "/run
"
"/var/lock
" → "/run/lock
"
"/dev/shm
" → "/run/shm
"
Lihat "tmpfs.txt(.gz)
" dalam dokumentasi kernel Linux
("/usr/share/doc/linux-doc-*/Documentation/filesystems/*
")
yang disediakan oleh paket linux-doc-*
.
Midnight Commander (MC) adalah GNU "pisau tentara Swiss" untuk konsol Linux dan lingkungan terminal lainnya. Ini memberi pemula pengalaman konsol berbasis menu yang jauh lebih mudah dipelajari daripada perintah Unix standar.
Anda mungkin perlu menginstal paket Midnight Commander yang berjudul
"mc
" dengan yang berikut ini.
$ sudo apt-get install mc
Gunakan perintah mc
(1) untuk menjelajahi sistem Debian.
Ini adalah cara terbaik untuk belajar. Silakan jelajahi beberapa lokasi
menarik hanya dengan menggunakan tombol kursor dan tombol Enter.
"/etc
" dan subdirektorinya
"/var/log
" dan subdirektorinya
"/usr/share/doc
" dan subdirektorinya
"/usr/sbin
" dan "/usr/bin
"
Untuk membuat MC mengubah direktori kerja saat keluar dan
cd
ke direktori, saya sarankan untuk memodifikasi
"~/.bashrc
" untuk menyertakan skrip yang disediakan oleh
paket mc
.
. /usr/lib/mc/mc.sh
Lihat mc
(1) (di bawah opsi "-P
" karena
alasan tersebut. (Jika Anda tidak mengerti apa sebenarnya yang saya
bicarakan di sini, Anda dapat melakukan ini nanti.)
MC dapat dimulai dengan yang berikut.
$ mc
MC menangani semua operasi berkas melalui menunya, membutuhkan upaya pengguna minimal. Cukup tekan F1 untuk mendapatkan layar bantuan. Anda dapat bermain dengan MC hanya dengan menekan tombol kursor dan tombol fungsi.
![]() |
Catatan |
---|---|
Di beberapa konsol seperti |
Jika Anda menemui masalah pengkodean karakter yang menampilkan karakter
sampah, menambahkan "-a
" ke baris perintah MC dapat
membantu mencegah masalah.
Jika ini tidak menjernihkan masalah tampilan Anda dengan MC, lihat Bagian 9.5.6, “Konfigurasi terminal”.
Default adalah dua panel direktori yang berisi daftar berkas. Mode lain
yang berguna adalah mengatur jendela yang tepat ke "informasi" untuk melihat
informasi hak istimewa akses berkas, dll. Berikut ini adalah beberapa
penekanan tombol penting. Dengan daemon gpm
(8) berjalan,
seseorang dapat menggunakan tetikus pada konsol karakter Linux juga.
(Pastikan untuk menekan tombol shift untuk mendapatkan perilaku normal
potong and tempel di MC.)
Tabel 1.11. Pengikatan tombol MC
tombol | pengikatan tombol |
---|---|
F1 |
menu bantuan |
F3 |
penampil berkas internal |
F4 |
penyunting internal |
F9 |
mengaktifkan menu tarik turun |
F10 |
keluar dari Midnight Commander |
Tab |
berpindah di antara dua jendela |
Insert atau Ctrl-T |
menandai berkas untuk operasi beberapa berkas seperti menyalin |
Del |
menghapus berkas (hati-hati---atur MC ke mode hapus yang aman) |
Tombol kursor | sudah jelas |
Perintah cd
mengubah direktori yang ditampilkan pada
layar yang dipilih.
Ctrl-Enter
atau Alt-Enter
menyalin
nama berkas ke baris perintah. Gunakan ini dengan perintah
cp
(1) dan mv
(1) bersama dengan
penyuntingan baris perintah.
Alt-Tab
memperlihatkan pilihan ekspansi nama berkas
shell.
Kita dapat menentukan direktori awal untuk kedua jendela sebagai argumen
untuk MC; misalnya, "mc /etc /root
".
Esc
+ n-key
→ Fn
(yaitu, Esc
+ 1
→
F1
, dll.; Esc
+ 0
→
F10
)
Menekan Esc
sebelum tombol memiliki efek yang sama
seperti menekan Alt
dan tombol bersama-sama.; yaitu,
ketik Esc
+ c
untuk
Alt-C
. Esc
disebut tombol meta dan
kadang-kadang ditulis sebagai "M-
".
Penyunting internal memiliki skema potong dan tempel yang menarik. Menekan
F3
menandai dimulainya pilihan, F3
kedua menandai akhir seleksi dan menyoroti pilihan. Kemudian Anda dapat
memindahkan kursor Anda. Jika Anda menekan F6, area yang dipilih
dipindahkan ke lokasi kursor. Jika Anda menekan F5, area yang dipilih
disalin dan disisipkan di lokasi kursor. F2
menyimpan
berkas. F10
mengeluarkanmu. Sebagian besar tombol
kursor bekerja secara intuitif.
Penyunting ini dapat langsung dimulai pada sebuah berkas menggunakan salah satu perintah berikut.
$ mc -e filename_to_edit
$ mcedit filename_to_edit
Ini bukan penyunting multi-jendela, tetapi seseorang dapat menggunakan beberapa konsol Linux untuk mencapai efek yang sama. Untuk menyalin antar jendela, gunakan tombol Alt-Fn untuk beralih konsol virtual dan gunakan "Berkas→Sisipkan berkas" atau "Berkas→Salin ke berkas" untuk memindahkan sebagian berkas ke berkas lain.
Penyunting internal ini dapat diganti dengan penyunting pilihan eksternal.
Juga, banyak program menggunakan variabel lingkungan
"$EDITOR
" atau "$VISUAL
" untuk
memutuskan penyunting mana yang akan digunakan. Jika Anda tidak nyaman
dengan vim
(1) atau nano
(1) pada
awalnya, Anda dapat mengatur ini ke "mcedit
" dengan
menambahkan baris berikut ke "~/.bashrc
".
export EDITOR=mcedit export VISUAL=mcedit
Saya sarankan untuk mengatur ini ke "vim
" jika
memungkinkan.
Jika Anda merasa tidak nyaman dengan vim
(1), Anda dapat
terus menggunakan mcedit
(1) untuk sebagian besar tugas
pemeliharaan sistem.
MC adalah penampil yang sangat cerdas. Ini adalah alat yang hebat untuk
mencari kata-kata dalam dokumen. Saya selalu menggunakan ini untuk
berkas-berkas di direktori "/usr/share/doc
". Ini adalah
cara tercepat untuk menelusuri banyak informasi Linux. Penampil ini dapat
langsung dimulai dengan menggunakan salah satu perintah berikut.
$ mc -v path/to/filename_to_view
$ mcview path/to/filename_to_view
Tekan Enter pada berkas, dan program yang sesuai menangani konten berkas (lihat Bagian 9.4.11, “Menyesuaikan program yang akan dimulai”). Ini adalah fitur MC yang sangat nyaman.
Tabel 1.12. Reaksi terhadap tombol enter di MC
jenis berkas | reaksi untuk tombol enter |
---|---|
berkas yang dapat dieksekusi | menjalankan perintah |
berkas man | menyalurkan konten ke perangkat lunak penampil |
berkas html | menyalurkan konten ke peramban web |
berkas "*.tar.gz " dan "*.deb " |
menelusuri isinya seolah-olah subdirektori |
Untuk memungkinkan fitur penampil dan berkas virtual ini berfungsi,
berkas-berkas yang dapat dilihat tidak boleh diatur sebagai executable.
Ubah status mereka menggunakan chmod
(1) atau melalui menu
berkas MC.
MC dapat digunakan untuk mengakses berkas-berkas melalui Internet. Buka
menu dengan menekan F9
, lalu ketik
"Enter
" dan "h
" untuk mengaktifkan
sistem berkas Shell. Masukkan URL dalam bentuk
"sh://[pengguna@]mesin[:opsi]/[dir-jauh]
", yang mengambil
direktori jarak jauh dan muncul seperti direktori lokal memakai
ssh
.
Meskipun MC memungkinkan Anda untuk melakukan hampir segalanya, sangat penting bagi Anda untuk belajar bagaimana menggunakan alat baris perintah yang dipanggil dari prompt shell dan menjadi akrab dengan lingkungan kerja mirip Unix.
Karena shell log masuk mungkin dipakai oleh beberapa program inisialisasi
sistem, bijaksana untuk mempertahankannya sebagai bash
(1)
dan menghindari beralih shell log masuk dengan chsh
(1).
Bila Anda ingin memakai prompt shell interaktif lain, atur itu dari
konfigurasi emulator terminal GUI atau mulailah itu dari
~/.bashrc
. mis., dengan menempatkan "exec
/usr/bin/zsh -i -l
" atau "exec /usr/bin/fish -i
-l
" di dalamnya.
Tabel 1.13. Daftar program shell
paket | popcon | ukuran | Shell POSIX | deskripsi |
---|---|---|---|---|
bash
|
V:838, I:999 | 7175 | Ya | Bash: GNU Bourne Again SHell (standar de facto) |
bash-completion
|
V:32, I:933 | 1454 | T/T | penyelesaian yang dapat diprogram untuk shell bash |
dash
|
V:884, I:997 | 191 | Ya | Debian Almquist Shell, bagus untuk skrip shell |
zsh
|
V:40, I:73 | 2463 | Ya | Z shell: shell standar dengan banyak tambahan |
tcsh
|
V:6, I:20 | 1355 | Tidak | TENEX C Shell: versi yang disempurnakan dari Berkeley csh |
mksh
|
V:6, I:11 | 1579 | Ya | Versi dari shell Korn |
csh
|
V:1, I:6 | 339 | Tidak | C Shell OpenBSD, suatu versi dari Berkeley csh |
sash
|
V:0, I:5 | 1157 | Ya | Stand-alone dengan perintah-perintah
bawaan (Tidak dimaksudkan untuk standar "/usr/bin/sh ") |
ksh
|
V:1, I:10 | 61 | Ya | versi AT&T yang sebenarnya dari shell Korn |
rc
|
V:0, I:1 | 178 | Tidak | implementasi dari AT&T Plan 9 rc shell |
posh
|
V:0, I:0 | 190 | Ya | Policy-compliant Ordinary SHell (turunan pdksh ) |
![]() |
Tip |
---|---|
Meskipun shell mirip POSIX berbagi sintaks dasar, mereka dapat berbeda dalam perilaku untuk hal-hal yang mendasar seperti variabel shell dan ekspansi glob. Silakan periksa dokumentasi mereka untuk rinciannya. |
Dalam bab tutorial ini, shell interaktif selalu berarti
bash
.
Anda dapat menyesuaikan perilaku bash
(1) dengan
"~/.bashrc
".
Misalnya, coba yang berikut.
# enable bash-completion if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi # CD upon exiting MC . /usr/lib/mc/mc.sh # set CDPATH to a good one CDPATH=.:/usr/share/doc:~:~/Desktop:~ export CDPATH PATH="${PATH+$PATH:}/usr/sbin:/sbin" # set PATH so it includes user's private bin if it exists if [ -d ~/bin ] ; then PATH="~/bin${PATH+:$PATH}" fi export PATH EDITOR=vim export EDITOR
![]() |
Tip |
---|---|
Anda dapat menemukan lebih banyak tips penyesuaian |
![]() |
Tip |
---|---|
Paket |
Dalam lingkungan mirip Unix, ada beberapa
ketukan tombol yang memiliki arti khusus. Harap dicatat bahwa pada konsol
karakter Linux normal, hanya tombol Ctrl
dan
Alt
kiri yang berfungsi seperti yang diharapkan. Berikut
adalah beberapa ketukan kunci yang penting untuk diingat.
Tabel 1.14. Daftar pengikatan kunci untuk bash
tombol | deskripsi pengikatan kunci |
---|---|
Ctrl-U |
menghapus baris sebelum kursor |
Ctrl-H |
menghapus satu karakter sebelum kursor |
Ctrl-D |
mengakhiri masukan (keluar shell jika Anda menggunakan shell) |
Ctrl-C |
mengakhiri program yang sedang berjalan |
Ctrl-Z |
menghentikan sementara program dengan memindahkannya ke pekerjaan latar belakang |
Ctrl-S |
menghentikan keluaran ke layar |
Ctrl-Q |
mengaktifkan kembali keluaran ke layar |
Ctrl-Alt-Del |
reboot/halt sistem, lihat inittab (5) |
tombol Alt Kiri (opsional, tombol
Windows ) |
tombol meta untuk Emacs dan UI serupa |
Panah naik |
mulai pencarian riwayat perintah di bawah bash |
Ctrl-R |
memulai pencarian riwayat perintah inkremental di bawah
bash |
Tab |
melengkapi masukan nama berkas ke baris perintah di bawah
bash |
Ctrl-V Tab |
memasukkan tab tanpa ekspansi ke baris perintah di bawah
bash |
![]() |
Tip |
---|---|
Fitur terminal |
Operasi tetikus untuk teks pada sistem Debian mencampur 2 gaya dengan beberapa keunikan:
Operasi tetikus gaya Unix tradisional:
gunakan tombol 3 (klik)
gunakan PRIMER
digunakan oleh aplikasi X seperti xterm
dan aplikasi teks
di konsol Linux
Operasi tetikus gaya GUI modern:
gunakan tombol 2 (seret + klik)
gunakan PRIMER dan PAPANKLIP
digunakan dalam aplikasi GUI modern seperti
gnome-terminal
Tabel 1.15. Daftar operasi tetikus dan tindakan tombol terkait pada Debian
aksi | respon |
---|---|
Kiri-klik-dan-seret tetikus | pilih rentang sebagai pilihan PRIMER |
Klik kiri | pilih awal rentang untuk pilihan PRIMER |
Klik kanan (tradisional) | pilih akhir rentang untuk pilihan PRIMER |
Klik kanan (modern) | menu bergantung konteks (potong/salin/tempel) |
Klik tengah atau Shift-Ins |
menyisipkan pilihan PRIMER di kursor |
Ctrl-X |
memotong pilihan PRIMER ke PAPANKLIP |
Ctrl-C (Shift-Ctrl-C dalam terminal) |
menyalin pilihan PRIMER ke PAPANKLIP |
Ctrl-V |
menempelkan PAPANKLIP pada kursor |
Di sini, pilihan PRIMER adalah rentang teks yang disorot. Dalam program
terminal, Shift-Ctrl-C
digunakan sebagai gantinya untuk
menghindari menghentikan program yang sedang berjalan.
Roda tengah pada tetikus roda modern dianggap tombol tetikus tengah dan dapat digunakan untuk klik tengah. Mengklik tombol kiri dan kanan tetikus bersama-sama berfungsi sebagai klik tengah di bawah situasi sistem tetikus 2 tombol.
Untuk menggunakan tetikus di konsol karakter Linux, Anda harus menjalankan
gpm
(8) sebagai daemon.
Perintah less
(1) adalah pager yang disempurnakan
(peramban konten berkas). Ini membaca berkas yang ditentukan oleh argumen
perintah atau masukan standarnya. Tekan "h
" jika Anda
memerlukan bantuan saat menjelajah dengan perintah less
.
Ini dapat melakukan jauh lebih banyak daripada more
(1)
dan dapat didongkrak dengan mengeksekusi "eval
$(lesspipe)
" atau "eval $(lessfile)
" dalam
skrip awal mula shell. Lihat lebih lanjut di
"/usr/share/doc/less/LESSOPEN
". Opsi
"-R
" memungkinkan keluaran karakter mentah dan
memfungsikan escape sequence warna ANSI. Lihat less
(1).
![]() |
Tip |
---|---|
Dalam perintah |
Anda harus menjadi mahir dalam salah satu varian program Vim atau Emacs yang populer di sistem mirip Unix.
Saya pikir membiasakan diri dengan perintah Vim adalah hal yang benar untuk
dilakukan, karena Vi-editor selalu ada di dunia Linux/Unix. (Sebenarnya,
vi
asli atau nvi
baru adalah program
yang Anda temukan di mana-mana. Saya memilih Vim sebagai gantinya untuk
pemula karena menawarkan bantuan melalui tombol F1
sementara itu cukup mirip dan lebih kuat.)
Jika Anda memilih Emacs atau XEmacs sebagai pilihan penyunting Anda, itu adalah pilihan lain yang baik memang, terutama untuk pemrograman. Emacs memiliki sejumlah besar fitur lain juga, termasuk berfungsi sebagai pembaca berita, penyunting direktori, program surat, dll. Ketika digunakan untuk pemrograman atau menyunting skrip shell, itu secara cerdas mengenali format dari apa yang sedang Anda kerjakan, dan mencoba memberikan bantuan. Beberapa orang berpendapat bahwa satu-satunya program yang mereka butuhkan di Linux adalah Emacs. Sepuluh menit belajar Emacs sekarang dapat menghemat berjam-jam kemudian. Memiliki manual GNU Emacs untuk referensi ketika belajar Emacs sangat dianjurkan.
Semua program ini biasanya datang dengan program bimbingan belajar bagi Anda
untuk mempelajarinya dengan latihan. Mulailah Vim dengan mengetik
"vim
" dan tekan tombol F1. Anda setidaknya harus membaca
35 baris pertama. Kemudian lakukan kursus pelatihan daring dengan
memindahkan kursor ke "|tutor|
" dan menekan
Ctrl-]
.
![]() |
Catatan |
---|---|
Penyunting yang baik, seperti Vim dan Emacs, dapat menangani UTF-8 dan pengodean teks eksotis lainnya dengan benar. Ide yang baik untuk menggunakan lingkungan GUI di lokal UTF-8 dan untuk memasang program yang diperlukan dan fonta untuk itu. Penyunting memiliki opsi untuk mengatur pengodean berkas independen dari lingkungan GUI. Silakan lihat dokumentasi mereka tentang teks multi-byte. |
Debian hadir dengan sejumlah penyunting yang berbeda. Kami sarankan untuk
memasang paket vim
, seperti yang disebutkan di atas.
Debian menyediakan akses terpadu ke penyunting baku sistem melalui perintah
"/usr/bin/editor
" sehingga program lain (misalnya,
reportbug
(1)) dapat memanggilnya. Anda dapat mengubahnya
dengan yang berikut.
$ sudo update-alternatives --config editor
Pilihan "/usr/bin/vim.basic
" daripada
"/usr/bin/vim.tiny
" adalah rekomendasi saya untuk pemula
karena mendukung penyorotan sintaksis.
![]() |
Tip |
---|---|
Banyak program menggunakan variabel lingkungan " |
vim
(1) baru-baru ini memulai dirinya dalam opsi
"nocompatible
" waras dan masuk ke mode
NORMAL
.[1]
Tabel 1.16. Daftar ketukan tombol Vim dasar
mode | ketikan tombol | aksi |
---|---|---|
NORMAL |
:help|only |
menampilkan berkas bantuan |
NORMAL |
:e namaberkas.ext |
membuka penyangga baru untuk menyunting namaberkas.ext |
NORMAL |
:w |
menimpa penyangga saat ini ke berkas asli |
NORMAL |
:w namaberkas.ext |
menulis penyangga saat ini ke namaberkas.ext |
NORMAL |
:q |
keluar vim |
NORMAL |
:q! |
memaksa keluar vim |
NORMAL |
:only |
tutup semua jendela belah terbuka lainnya |
NORMAL |
:set nocompatible? |
periksa apakah vim berada dalam mode
nocompatible |
NORMAL |
:set nocompatible |
atur vim ke mode nocompatible yang
waras |
NORMAL |
i |
masuk ke mode SISIP |
NORMAL |
R |
masuk ke mode TIMPA |
NORMAL |
v |
masuk ke mode VISUAL |
NORMAL |
V |
masuk ke mode VISUAL baris |
NORMAL |
Ctrl-V |
masuk ke mode VISUAL blok |
selain TERMINAL-JOB |
ESC -key |
masuk mode NORMAL |
NORMAL |
:term |
masuk ke mode TERMINAL-JOB |
TERMINAL-NORMAL |
i |
masuk ke mode TERMINAL-JOB |
TERMINAL-JOB |
Ctrl-W N (atau
Ctrl-\ Ctrl-N ) |
masuk ke mode TERMINAL-NORMAL |
TERMINAL-JOB |
Ctrl-W : |
masuk mode Ex dalam mode
TERMINAL-NORMAL |
Harap gunakan program "vimtutor
" untuk belajar
vim
melalui suatu kursus tutorial interaktif.
Program vim
mengubah perilakunya ke tombol yang diketik
berdasarkan mode. Mengetikkan tombol ke
buffer sebagian besar dilakukan dalam mode INSERT
dan
mode REPLACE
. Menggerakkan kursor sebagian besar
dilakukan dalam mode NORMAL
. Pemilihan interaktif
dilakukan dalam mode VISUAL
. Mengetik
":
" dalam mode NORMAL
mengubah
mode menjadi mode
Ex
. Mode Ex
menerima perintah.
![]() |
Tip |
---|---|
Vim hadir dengan paket Netrw. Netrw
mendukung membaca berkas, menulis berkas, meramban direktori melalui
jaringan, dan meramban lokal! Cobalah Netrw dengan " |
Untuk konfigurasi tingkat lanjut vim
, lihat Bagian 9.2, “Menyesuaikan vim”.
Keluaran dari perintah shell dapat bergulir keluar layar Anda dan mungkin hilang selamanya. Adalah praktik yang baik untuk mencatat aktivitas shell ke dalam berkas bagi Anda untuk meninjaunya nanti. Catatan semacam ini sangat penting ketika Anda melakukan tugas-tugas manajemen sistem apa pun.
![]() |
Tip |
---|---|
Vim baru (versi>=8.2) dapat digunakan untuk merekam aktivitas shell
secara bersih menggunakan mode |
Metode dasar untuk merekam aktivitas shell adalah menjalankannya di bawah
script
(1).
Misalnya, coba yang berikut ini
$ script Script started, file is typescript
Lakukan perintah shell apa pun di bawah script
.
Tekan Ctrl-D
untuk keluar dari script
.
$ vim typescript
Lihat Bagian 9.1.1, “Merekam aktivitas shell secara bersih” .
Mari kita pelajari perintah dasar Unix. Di sini saya menggunakan "Unix"
dalam arti generiknya. Setiap OS klon Unix biasanya menawarkan perintah
yang setara. Sistem Debian tidak terkecuali. Jangan khawatir jika beberapa
perintah tidak berfungsi seperti yang Anda inginkan sekarang. Jika
alias
digunakan dalam shell, keluaran perintah yang
sesuai akan berbeda. Contoh-contoh ini tidak dimaksudkan untuk dieksekusi
dalam urutan ini.
Cobalah semua perintah berikut dari akun pengguna yang tidak memiliki hak istimewa.
Tabel 1.17. Daftar perintah dasar Unix
perintah | deskripsi |
---|---|
pwd |
menampilkan nama direktori kerja/saat ini |
whoami |
menampilkan nama pengguna saat ini |
id |
menampilkan identitas pengguna saat ini (nama, uid, gid, dan grup terkait) |
file foo |
menampilkan jenis berkas untuk berkas
"foo " |
type -p namaperintah |
menampilkan lokasi berkas perintah
"nama_perintah " |
which namaperintah |
, , |
type namaperintah |
menampilkan informasi tentang perintah
"nama_perintah " |
apropos kata-kunci |
temukan perintah yang terkait dengan
""kata-kunci " |
man -k kata-kunci |
, , |
whatis namaperintah |
tampilkan penjelasan satu baris pada perintah
"namaperintah " |
man -a namaperintah |
menampilkan penjelasan pada perintah
"namaperintah " (gaya Unix) |
info namaperintah |
menampilkan penjelasan yang agak panjang pada perintah
"namaperintah " (gaya GNU) |
ls |
menampilkan isi direktori (berkas non-dot dan direktori) |
ls -a |
menampilkan isi direktori (semua berkas dan direktori) |
ls -A |
menampilkan daftar isi direktori (hampir semua berkas dan direktori, yaitu,
melewati ".. " dan ". ") |
ls -la |
menampilkan semua isi direktori dengan informasi detail |
ls -lai |
menampilkan semua isi direktori dengan nomor inode dan informasi detail |
ls -d |
menampilkan semua direktori di bawah direktori saat ini |
tree |
menampilkan konten pohon berkas |
lsof foo |
menampilkan daftar status terbuka dari berkas
"foo " |
lsof -p pid |
menampilkan daftar berkas yang dibuka oleh ID proses:
"pid " |
mkdir foo |
membuat direktori baru "foo " di
direktori saat ini |
rmdir foo |
menghapus direktori "foo " di
direktori saat ini |
cd foo |
berpindah direktori ke direktori
"foo " di direktori saat ini atau di
direktori yang tercantum dalam variabel "$CDPATH " |
cd / |
berpindah direktori ke direktori root |
cd |
berpindah direktori ke direktori beranda pengguna saat ini |
cd /foo |
berpindah direktori ke direktori path absolut
"/foo " |
cd .. |
berpindah direktori ke direktori induk |
cd ~foo |
berpindah direktori ke direktori rumah pengguna
"foo " |
cd - |
berpindah direktori ke direktori sebelumnya |
</etc/motd pager |
menampilkan isi "/etc/motd " menggunakan pager baku |
touch junkfile |
membuat berkas kosong "junkfile " |
cp foo bar |
menyalin berkas yang ada "foo " ke
berkas baru "bar " |
rm junkfile |
menghapus berkas "junkfile " |
mv foo bar |
mengganti nama berkas yang ada "foo "
menjadi nama baru "bar "
("bar " tidak boleh ada) |
mv foo bar |
memindahkan berkas yang ada "foo " ke
lokasi baru
"bar/foo "
(direktori "bar " harus ada) |
mv foo
bar/baz |
memindahkan berkas yang ada "foo " ke
lokasi baru dengan nama baru
"bar/baz "
(direktori "bar " harus ada tetapi
direktori
"bar/baz " tidak
boleh ada) |
chmod 600 foo |
membuat berkas yang ada "foo "
menjadi tidak dapat dibaca dan tidak dapat ditulis oleh orang lain (tidak
dapat dieksekusi untuk semua) |
chmod 644 foo |
membuat berkas yang ada "foo "
menjadi bisa dibaca tetapi tidak dapat ditulis oleh orang lain (tidak dapat
dieksekusi untuk semua) |
chmod 755 foo |
membuat berkas yang ada "foo "
menjadi bisa dibaca tetapi tidak dapat ditulis oleh orang lain (dapat
dieksekusi untuk semua) |
find . -name pattern |
mencari nama berkas yang cocok menggunakan
"pola " shell (lebih lambat) |
locate -d . pattern |
mencari nama berkas yang cocok menggunakan
"pola " shell (lebih cepat
menggunakan basis data yang dihasilkan secara teratur) |
grep -e "pattern" *.html |
mencari suatu "pola " di semua berkas
yang berakhiran ".html " di direktori saat ini dan
tampilkan semuanya |
top |
menampilkan informasi proses menggunakan layar penuh, ketik
"q " untuk berhenti |
ps aux | pager |
menampilkan informasi tentang semua proses yang berjalan menggunakan keluaran gaya BSD |
ps -ef | pager |
menampilkan informasi tentang semua proses yang berjalan menggunakan keluaran gaya Sistem-V Unix |
ps aux | grep -e "[e]xim4*" |
menampilkan semua proses "exim " dan
"exim4 " yang sedang berjalan |
ps axf | pager |
menampilkan informasi tentang semua proses yang berjalan dengan keluaran seni ASCII |
kill 1234 |
membunuh proses yang diidentifikasi oleh id proses: "1234" |
gzip foo |
mengompresi "foo " untuk membuat
"foo.gz " menggunakan pengkodean
Lempel-Ziv (LZ77) |
gunzip foo.gz |
mendekompresi "foo.gz " untuk membuat
"foo " |
bzip2 foo |
mengompresi "foo " untuk membuat
"foo.bz2 " menggunakan algoritma
kompresi teks penyortiran blok Burrows-Wheeler, dan pengkodean Huffman
(kompresi yang lebih baik daripada gzip) |
bunzip2 foo.bz2 |
mendekompresi "foo.bz2 " untuk
membuat "foo " |
xz foo |
mengompresi "foo " untuk membuat
"foo.xz " menggunakan algoritma
rantai Lempel-Ziv-Markov (kompresi yang lebih baik daripada
bzip2 ) |
unxz foo.xz |
mendekompresi "foo.xz " untuk membuat
"foo " |
tar -xvf foo.tar |
mengekstrak berkas dari arsip
"foo.tar " |
tar -xvzf foo.tar.gz |
mengekstrak berkas dari arsip
"foo.tar.gz " yang di-gzip |
tar -xvjf foo.tar.bz2 |
mengekstrak berkas dari arsip
"foo.tar.bz2 " |
tar -xvJf foo.tar.xz |
mengekstrak berkas dari arsip
"foo.tar.xz " |
tar -cvf foo.tar
bar/ |
mengarsipkan isi folder "bar/ " dalam
arsip "foo.tar " |
tar -cvzf foo.tar.gz
bar/ |
mengarsipkan isi folder "bar/ " dalam
arsip "foo.tar.gz " terkompresi |
tar -cvjf foo.tar.bz2
bar/ |
mengarsipkan isi folder "bar/ " dalam
arsip "foo.tar.bz2 " |
tar -cvJf foo.tar.xz
bar/ |
mengarsipkan isi folder "bar/ " dalam
arsip "foo.tar.xz " |
zcat README.gz | pager |
menampilkan isi "README.gz " yang terkompresi menggunakan
pager baku |
zcat README.gz > foo |
membuat berkas "foo " dengan konten yang didekompresi dari
"README.gz " |
zcat README.gz >> foo |
menambahkan konten yang didekompresi dari "README.gz " ke
akhir berkas "foo " (jika tidak ada, buat dulu) |
![]() |
Catatan |
---|---|
Unix memiliki tradisi untuk menyembunyikan nama berkas yang dimulai dengan
" Untuk perintah Pager baku dari sistem Debian polos adalah " |
Silakan melintasi direktori dan mengintip ke dalam sistem menggunakan perintah di atas sebagai pelatihan. Jika Anda memiliki pertanyaan tentang perintah konsol apa pun, pastikan untuk membaca halaman manual.
Misalnya, coba yang berikut ini
$ man man $ man bash $ man builtins $ man grep $ man ls
Gaya halaman man mungkin sedikit sulit untuk dibiasakan, karena mereka agak singkat, terutama yang sangat tradisional, yang lebih tua. Tetapi begitu Anda terbiasa, Anda akan menghargai ringkasnya.
Harap dicatat bahwa banyak perintah mirip Unix termasuk yang dari GNU dan BSD menampilkan informasi bantuan singkat jika Anda memanggil mereka dalam salah satu cara berikut (atau tanpa argumen dalam beberapa kasus).
$ commandname --help $ commandname -h
Sekarang Anda mulai merasakan tentang cara menggunakan sistem Debian. Mari
kita lihat jauh ke dalam mekanisme eksekusi perintah dalam sistem Debian. Di
sini, saya telah menyederhanakan realitas untuk pemula. Lihat
bash
(1) untuk penjelasan yang tepat.
Perintah sederhana adalah urutan komponen.
Penugasan variabel (opsional)
Nama perintah
Argumen (opsional)
Pengalihan (opsional: >
, >>
, <
, <<
, dll.)
Operator kontrol (opsional: &&
,
||
, newline , ;
, &
, (
, )
)
Nilai-nilai dari beberapa variabel lingkungan mengubah perilaku beberapa perintah Unix.
Nilai baku variabel lingkungan pada awalnya ditetapkan oleh sistem PAM dan kemudian beberapa di antaranya dapat diatur ulang oleh beberapa program aplikasi.
Sistem PAM seperti pam_env
dapat mengatur variabel
lingkungan dengan /etc/pam.conf
",
"/etc/environment
", dan
"/etc/default/locale".
Manajer tampilan seperti gdm3
dapat mengatur ulang
variabel lingkungan untuk sesi GUI dengan "~/.profile
".
Inisialisasi program spesifik pengguna dapat mengatur ulang variabel
lingkungan dengan "~/.profile
",
"~/.bash_profile
", dan "~/.bashrc
".
Lokal baku didefinisikan dalam variabel lingkungan
"$LANG
" dan dikonfigurasi sebagai
"LANG=xx_YY.UTF-8
" oleh installer atau dengan konfigurasi
GUI berikutnya, mis., "Pengaturan" → "Wilayah & Bahasa" → "Bahasa" /
"Format" untuk GNOME.
![]() |
Catatan |
---|---|
Saya sarankan Anda untuk mengkonfigurasi lingkungan sistem hanya dengan
variabel " |
Nilai lokal lengkap yang diberikan kepada variabel
"$LANG
" terdiri dari 3 bagian:
"xx_YY.ZZZZ
".
Tabel 1.19. Daftar rekomendasi lokal
rekomendasi lokal | Bahasa (area) |
---|---|
en_US.UTF-8 |
Inggris (Amerika Serikat) |
en_GB.UTF-8 |
Inggris (Inggris Raya) |
fr_FR.UTF-8 |
Prancis (Prancis) |
de_DE.UTF-8 |
Jerman (Jerman) |
it_IT.UTF-8 |
Italia (Italia) |
es_ES.UTF-8 |
Spanyol (Spanyol) |
ca_ES.UTF-8 |
Katala (Spanyol) |
sv_SE.UTF-8 |
Swedia (Swedia) |
pt_BR.UTF-8 |
Portugis (Brasil) |
ru_RU.UTF-8 |
Rusia (Rusia) |
zh_CN.UTF-8 |
Cina (Republik Rakyat Cina) |
zh_TW.UTF-8 |
Cina (Taiwan) |
ja_JP.UTF-8 |
Jepang (Jepang) |
ko_KR.UTF-8 |
Korea (Republik Korea) |
vi_VN.UTF-8 |
Vietnam (Vietnam) |
Eksekusi perintah umum menggunakan urutan baris shell sebagai berikut.
$ echo $LANG en_US.UTF-8 $ date -u Wed 19 May 2021 03:18:43 PM UTC $ LANG=fr_FR.UTF-8 date -u mer. 19 mai 2021 15:19:02 UTC
Di sini, program date
(1) dijalankan dengan nilai lokal
yang berbeda.
Sebagian besar eksekusi perintah biasanya tidak memiliki definisi variabel lingkungan sebelumnya. Untuk contoh di atas, Anda dapat mengeksekusi sebagai berikut.
$ LANG=fr_FR.UTF-8 $ date -u mer. 19 mai 2021 15:19:24 UTC
![]() |
Tip |
---|---|
Saat mengajukan laporan bug, menjalankan dan memeriksa perintah di bawah
lokal " |
Untuk detail lengkap konfigurasi lokal, lihat Bagian 8.1, “Lokal”.
Ketika Anda mengetik perintah ke dalam shell, shell mencari perintah dalam
daftar direktori yang terkandung dalam variabel lingkungan
"$PATH
". Nilai variabel lingkungan
"$PATH
" juga disebut path pencarian shell.
Dalam instalasi Debian baku, variabel lingkungan "$PATH
"
dari akun pengguna mungkin tidak termasuk "/usr/sbin
" dan
"/usr/sbin
". Misalnya, perintah
ifconfig
perlu dijalankan dengan path lengkap sebagai
"/usr/sbin/ifconfig
". (Perintah ip
yang serupa terletak di "/usr/bin
".)
Anda dapat mengubah variabel lingkungan "$PATH
" dari
shell Bash dengan berkas "~/.bash_profile
" atau
"~/.bashrc
".
Banyak perintah menyimpan konfigurasi spesifik pengguna di direktori rumah
dan mengubah perilaku mereka dengan isinya. Direktori rumah diidentifikasi
oleh variabel lingkungan "$HOME
".
Tabel 1.20. Daftar nilai "$HOME
"
nilai "$HOME " |
situasi eksekusi program |
---|---|
/ |
program yang dijalankan oleh proses init (daemon) |
/root |
program yang dijalankan dari shell root normal |
/home/pengguna_normal |
program yang dijalankan dari shell pengguna normal |
/home/pengguna_normal |
program yang dijalankan dari menu desktop GUI pengguna normal |
/home/pengguna_normal |
program dijalankan sebagai root dengan "sudo program " |
/root |
program dijalankan sebagai root dengan "sudo -H program " |
![]() |
Tip |
---|---|
Shell mengekspansi " |
Lihat Bagian 12.1.5, “Variabel lingkungan shell” bila
$HOME
tidak tersedia bagi program Anda.
Beberapa perintah menerima argumen. Argumen yang dimulai dengan
"-
" atau "--
" disebut opsi dan
mengontrol perilaku perintah.
$ date Thu 20 May 2021 01:08:08 AM JST $ date -R Thu, 20 May 2021 01:08:12 +0900
Di sini argumen baris perintah "-R
" mengubah perilaku
date
(1) untuk menghasilkan string tanggal yang patuh
RFC2822.
Seringkali Anda ingin perintah untuk bekerja dengan sekelompok berkas tanpa mengetik semuanya. Pola ekspansi nama berkas menggunakan glob shell, (kadang-kadang disebut sebagai wildcard), memfasilitasi kebutuhan ini.
Tabel 1.21. Pola glob shell
pola glob shell | deskripsi aturan kecocokan |
---|---|
* |
nama berkas (segmen) tidak dimulai dengan ". " |
.* |
nama berkas (segmen) dimulai dengan ". " |
? |
tepat satu karakter |
[…] |
tepat satu karakter dengan karakter apa pun dalam tanda kurung |
[a-z] |
tepat satu karakter dengan karakter apapun antara "a " dan
"z " |
[^…] |
tepat satu karakter selain karakter apa pun yang dilampirkan dalam tanda
kurung (tidak termasuk "^ ") |
Misalnya, coba yang berikut ini
$ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt $ echo *.txt 1.txt 2.txt $ echo * 1.txt 2.txt 3.c 4.h $ echo *.[hc] 3.c 4.h $ echo .* . .. .5.txt ..6.txt $ echo .*[^.]* .5.txt ..6.txt $ echo [^1-3]* 4.h $ cd ..; rm -rf junk
Lihat glob
(7).
![]() |
Catatan |
---|---|
Tidak seperti ekspansi nama berkas normal oleh shell, pola shell
" |
![]() |
Catatan |
---|---|
BASH dapat disetel untuk mengubah perilaku glob dengan opsi bawaan shopt
builtin " |
Setiap perintah mengembalikan status keluarnya (variabel:
"$?
") sebagai nilai kembalian.
Tabel 1.22. Kode keluar perintah
status keluar perintah | nilai kembalian numerik | nilai kembalian logis |
---|---|---|
sukses | nol, 0 | TRUE |
galat | bukan-nol, -1 | FALSE |
Misalnya, coba yang berikut.
$ [ 1 = 1 ] ; echo $? 0 $ [ 1 = 2 ] ; echo $? 1
![]() |
Catatan |
---|---|
Harap dicatat bahwa, dalam konteks logis untuk shell, sukses diperlakukan sebagai TRUE logis yang memiliki 0 (nol) sebagai nilainya. Ini agak tidak intuitif dan perlu diingatkan di sini. |
Mari kita coba mengingat idiom perintah shell berikut yang diketik dalam satu baris sebagai bagian dari perintah shell.
Tabel 1.23. Idiom perintah Shell
idiom perintah | deskripsi |
---|---|
perintah & |
eksekusi latar belakang
perintah dalam subshell |
perintah1 | perintah2 |
Menyalurkan lewat pipa keluaran standar
perintah1 ke masukan standar perintah2
(eksekusibersamaan) |
perintah1 2>&1 | perintah2 |
Menyalurkan lewat pipa keluaran standar
dan kesalahan standar perintah1 ke masukan standar
perintah2 (eksekusibersamaan) |
perintah1 ; perintah2 |
menjalankan perintah1 dan perintah2
secara berurutan |
perintah1 && perintah2 |
menjalankan perintah1 ; jika berhasil, menjalankan
perintah2 secara
berurutan (mengembalikan sukses jika perintah1
dan perintah2
berhasil) |
perintah1 || perintah2 |
menjalankan perintah1 ; jika tidak berhasil, menjalankan
perintah2 secara
berurutan (mengembalikan sukses jika perintah1
atau perintah2
berhasil) |
perintah > foo |
mengalihkan keluaran standar dari perintah ke berkas
foo (menimpa) |
perintah 2> foo |
mengalihkan kesalahan standar perintah ke berkas
foo (menimpa) |
perintah >> foo |
mengalihkan keluaran standar perintah ke berkas
foo (menambah) |
perintah 2>> foo |
mengalihkan kesalahan standar perintah ke berkas
foo (menambah) |
perintah > foo 2>&1 |
mengalihkan keluaran dan kesalahan standar perintah ke
berkas foo |
perintah < foo |
mengalihkan masukan standar perintah ke berkas
foo |
perintah << pembatas |
mengalihkan masukan standar perintah ke baris berikut
sampai "pembatas " dijumpai (di sini dokumen) |
perintah <<- pembatas |
mengalihkan masukan standar perintah ke baris berikut
sampai "pembatas " dijumpai (di sini dokumen, karakter tab
di awal dibuang dari baris masukan) |
Sistem Debian adalah sistem multi-tasking. Pekerjaan latar belakang
memungkinkan pengguna untuk menjalankan beberapa program dalam satu shell.
Manajemen proses latar belakang melibatkan bawaan shell:
jobs
, fg
, bg
, dan
kill
. Silakan baca bagian bash(1) di bawah "SIGNALS",
dan "JOB CONTROL", dan builtins
(1).
Misalnya, coba yang berikut ini
$ </etc/motd pager
$ pager </etc/motd
$ pager /etc/motd
$ cat /etc/motd | pager
Meskipun semua 4 contoh pengalihan shell menampilkan hal yang sama, contoh
terakhir menjalankan perintah cat
tambahan dan
menghamburkan sumber daya tanpa alasan.
Shell memungkinkan Anda untuk membuka berkas menggunakan
exec
bawaan dengan sembarang deskriptor berkas.
$ echo Hello >foo $ exec 3<foo 4>bar # open files $ cat <&3 >&4 # redirect stdin to 3, stdout to 4 $ exec 3<&- 4>&- # close files $ cat bar Hello
Deskriptor berkas 0-2 sudah ditentukan.
Tabel 1.24. Deskriptor berkas yang telah ditentukan
perangkat | deskripsi | deskriptor berkas |
---|---|---|
stdin |
masukan standar | 0 |
stdout |
keluaran standar | 1 |
stderr |
galat standar | 2 |
Anda dapat mengatur alias untuk perintah yang sering digunakan.
Misalnya, coba yang berikut ini
$ alias la='ls -la'
Sekarang, "la
" bekerja sebagai singkatan untuk
"ls-la
" yang mencantumkan semua berkas dalam format
daftar panjang.
Anda dapat menampilkan daftar alias yang ada dengan alias
(lihat bash
(1) di bawah "PERINTAH BAWAAN SHELL").
$ alias ... alias la='ls -la'
Anda dapat mengidentifikasi path atau identitas yang tepat dari perintah
berdasarkan tipe
(lihat bash
(1) di
bawah "PERINTAH BAWAAN SHELL").
Misalnya, coba yang berikut ini
$ type ls ls is hashed (/bin/ls) $ type la la is aliased to ls -la $ type echo echo is a shell builtin $ type file file is /usr/bin/file
Di sini ls
baru-baru ini dicari sementara
"file
" tidak, sehingga "ls
" adalah
"di-hash", yaitu, shell memiliki catatan internal untuk akses cepat ke
lokasi perintah "ls
".
![]() |
Tip |
---|---|
Dalam lingkungan kerja mirip Unix, pemrosesan teks dilakukan dengan menyalurkan teks melalui rantai alat pemrosesan teks standar. Ini adalah inovasi Unix penting lainnya.
Ada beberapa alat pemrosesan teks standar yang sangat sering digunakan pada sistem mirip Unix.
Tidak ada ekspresi reguler yang digunakan:
cat
(1) menyambungkan berkas-berkas dan mengeluarkan
seluruh konten.
tac
(1) menyambungkan berkas-berkas dan mengeluarkan
secara terbalik.
cut
(1) memilih bagian dari baris dan keluaran.
head
(1) mengeluarkan bagian pertama dari berkas.
tail
(1) mengeluarkan bagian terakhir dari berkas.
sort
(1) mengurutkan baris-baris berkas teks.
uniq
(1) menghapus baris duplikat dari suatu berkas
terurut.
tr
(1) menerjemahkan atau menghapus karakter.
diff
(1) membandingkan berkas-berkas baris demi baris.
Ekspresi reguler dasar (BRE) dipakai sebagai baku:
ed
(1) adalah penyunting baris primitif.
sed
(1) adalah penyunting stream.
grep
(1) mencocokkan teks dengan pola.
vim
(1) adalah penyunting layar.
emacs
(1) adalah penyunting layar. (BRE yang agak diperluas)
Extended regular expression (ERE) digunakan untuk:
awk
(1) melakukan pemrosesan teks sederhana.
egrep
(1) mencocokkan teks dengan pola.
tcl
(3tcl) dapat melakukan setiap pemrosesan teks yang
mungkin: Lihat re_syntax
(3). Sering digunakan dengan
tk
(3tk).
perl
(1) dapat melakukan setiap pemrosesan teks yang
mungkin. Lihat perlre
(1).
pcregrep
(1) dari paket pcregrep
mencocokkan teks dengan pola Perl Compatible Regular Expressions
(PCRE).
python
(1) dengan modul re
dapat
melakukan setiap pemrosesan teks yang mungkin. Lihat
"/usr/share/doc/python/html/index.html
".
Jika Anda tidak yakin apa sebenarnya perintah ini, silakan gunakan
"perintah man
" untuk mencari tahu sendiri.
![]() |
Catatan |
---|---|
Pengurutan dan ekspresi rentang tergantung lokal. Jika Anda ingin mendapatkan perilaku tradisional untuk perintah, gunakan lokal C atau C.UTF-8 bukan UTF-8 normal (lihat Bagian 8.1, “Lokal”). |
![]() |
Catatan |
---|---|
Ekspresi reguler Perl
( |
Ekspresi reguler digunakan di banyak alat pemrosesan teks. Mereka serupa dengan glob shell, tetapi mereka lebih rumit dan kuat.
Ekspresi reguler menggambarkan pola pencocokan dan terdiri dari karakter teks dan karakter meta.
Suatu karakter meta hanyalah karakter dengan makna khusus. Ada 2 gaya utama, BRE dan ERE, tergantung pada alat teks seperti yang dijelaskan di atas.
Tabel 1.25. Karakter meta untuk BRE dan ERE
BRE | ERE | deskripsi ekspresi reguler |
---|---|---|
\ . [ ] ^ $ * |
\ . [ ] ^ $ * |
karakter meta umum |
\+ \? \( \) \{ \} \| |
karakter meta yang di-escape
"\ " hanya oleh BRE |
|
+ ? ( ) { } | |
karakter meta yang tidak di-escape
"\ " hanya oleh ERE |
|
c |
c |
cocok bukan karakter meta
"c " |
\c |
\c |
cocok karakter literal "c " bahkan jika
"c " adalah karakter
meta dengan sendirinya |
. |
. |
cocok dengan karakter apa pun termasuk baris baru |
^ |
^ |
posisi di awal string |
$ |
$ |
posisi di akhir string |
\< |
\< |
posisi di awal sebuah kata |
\> |
\> |
posisi di akhir sebuah kata |
[abc…] |
[abc…] |
cocok dengan karakter apa pun dalam "abc… " |
[^abc…] |
[^abc…] |
cocok dengan karakter apa pun kecuali dalam "abc… " |
r* |
r* |
cocok dengan nol atau lebih ekspresi reguler yang diidentifikasi oleh
"r " |
r\+ |
r+ |
cocok dengan satu atau lebih ekspresi reguler yang diidentifikasi oleh
"r " |
r\? |
r? |
cocok dengan nol atau satu ekspresi reguler yang diidentifikasi oleh
"r " |
r1\|r2 |
r1|r2 |
cocok dengan salah satu ekspresi reguler yang diidentifikasi oleh
"r1 " atau "r2 " |
\(r1\|r2\) |
(r1|r2) |
cocok dengan salah satu ekspresi reguler yang diidentifikasi oleh
"r1 " atau "r2 " dan memperlakukannya
sebagai ekspresi reguler yang dikurung |
Ekspresi reguler emacs
pada dasarnya adalah BRE tetapi telah
diperluas untuk memperlakukan "+
" dan
"?
" sebagai karakter
meta seperti dalam ERE.
Dengan demikian, tidak perlu meng-escape mereka dengan
"\
" dalam ekspresi reguler emacs
.
grep
(1) dapat digunakan untuk melakukan pencarian teks
menggunakan ekspresi reguler.
Misalnya, coba yang berikut ini
$ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program
![]() |
Tip |
---|---|
Untuk ekspresi pengganti, beberapa karakter memiliki arti khusus.
Tabel 1.26. Ekspresi penggantian
ekspresi penggantian | deskripsi teks untuk menggantikan ekspresi pengganti |
---|---|
& |
apa yang cocok dengan ekspresi reguler (gunakan \&
dalam emacs ) |
\n |
apa yang cocok dengan ekspresi reguler dikurung ke-n ("n" adalah angka) |
Untuk string pengganti Perl, "$&" digunakan sebagai pengganti "&" dan "$n" digunakan sebagai pengganti "\n".
Misalnya, coba yang berikut ini
$ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -E -e 's/(1[a-z]*)[0-9]*(.*)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=$&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ sed -E -e 's/(1[a-z]*)[0-9]*(.*)$/\2===\1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/' zzzefg3hij4===1abc
Di sini harap perhatikan lebih lanjut gaya ekspresi reguler yang dikurung dan bagaimana string yang cocok digunakan dalam proses penggantian teks pada alat yang berbeda.
Ekspresi reguler ini juga dapat digunakan untuk gerakan kursor dan tindakan penggantian teks di beberapa penyunting.
Garis miring balik "\
" di akhir baris di baris perintah
shell meng-escape baris baru sebagai karakter white space dan melanjutkan
masukan baris perintah shell ke baris berikutnya.
Silakan baca semua halaman manual terkait untuk mempelajari perintah ini.
Perintah ed
(1) dapat menggantikan semua kemunculan
"FROM_REGEX
" dengan "TO_TEXT
" dalam
"berkas
".
$ ed file <<EOF ,s/FROM_REGEX/TO_TEXT/g w q EOF
Perintah sed
(1) dapat menggantikan semua kemunculan
"FROM_REGEX
" dengan "TO_TEXT
" dalam
"berkas
".
$ sed -i -e 's/FROM_REGEX/TO_TEXT/g' file
Perintah vim
(1) dapat menggantikan semua kemunculan
"FROM_REGEX
" dengan "TO_TEXT
" dalam
"berkas
" dengan menggunakan perintah
ex
(1).
$ vim '+%s/FROM_REGEX/TO_TEXT/gc' '+update' '+q' file
![]() |
Tip |
---|---|
Bendera " |
Beberapa berkas ("berkas1
", "berkas2
",
dan "berkas3
") dapat diproses dengan ekspresi reguler
secara serupa dengan vim
(1) atau
perl
(1).
$ vim '+argdo %s/FROM_REGEX/TO_TEXT/gce|update' '+q' file1 file2 file3
![]() |
Tip |
---|---|
Bendera " |
$ perl -i -p -e 's/FROM_REGEX/TO_TEXT/g;' file1 file2 file3
Dalam contoh perl(1), "-i
" adalah untuk penyuntingan di
tempat dari setiap berkas target, dan "-p
" adalah untuk
pengulangan implisit atas semua berkas yang diberikan.
![]() |
Tip |
---|---|
Penggunaan argumen " |
![]() |
Catatan |
---|---|
|
Mari kita pertimbangkan berkas teks yang disebut "DPL
"
dimana beberapa nama pemimpin proyek Debian pra-2004 dan tanggal inisiasi
mereka tercantum dalam format yang dipisah spasi.
Ian Murdock August 1993 Bruce Perens April 1996 Ian Jackson January 1998 Wichert Akkerman January 1999 Ben Collins April 2001 Bdale Garbee April 2002 Martin Michlmayr March 2003
![]() |
Tip |
---|---|
Lihat "Sejarah Singkat Debian" untuk sejarah kepemimpinan Debian terbaru. |
Awk sering digunakan untuk mengekstrak data dari jenis berkas ini.
Misalnya, coba yang berikut ini
$ awk '{ print $3 }' <DPL # month started August April January January April April March $ awk '($1=="Ian") { print }' <DPL # DPL called Ian Ian Murdock August 1993 Ian Jackson January 1998 $ awk '($2=="Perens") { print $3,$4 }' <DPL # When Perens started April 1996
Shell seperti Bash juga dapat digunakan untuk mengurai berkas semacam ini.
Misalnya, coba yang berikut ini
$ while read first last month year; do echo $month done <DPL ... same output as the first Awk example
Di sini, perintah read
bawaan menggunakan karakter dalam
"$IFS
" (internal field separators/pemisah ruas internal)
untuk memecah baris menjadi kata-kata.
Jika Anda mengubah "$IFS
" menjadi ":
",
Anda dapat mengurai "/etc/passwd
" memakai shell dengan
baik.
$ oldIFS="$IFS" # save old value $ IFS=':' $ while read user password uid gid rest_of_line; do if [ "$user" = "bozo" ]; then echo "$user's ID is $uid" fi done < /etc/passwd bozo's ID is 1000 $ IFS="$oldIFS" # restore old value
(Jika Awk digunakan untuk melakukan yang setara, gunakan
"FS=':'
" untuk mengatur pemisah ruas.)
IFS juga digunakan oleh shell untuk memecah hasil ekspansi parameter, substitusi perintah, dan ekspansi aritmatika. Ini tidak terjadi dalam kata-kata yang dikutip ganda atau tunggal. Nilai baku IFS adalah spasi, tab, dan baris baru digabungkan.
Berhati-hatilah dalam menggunakan trik IFS shell ini. Hal-hal aneh dapat terjadi, ketika shell menafsirkan beberapa bagian dari skrip sebagai masukan.
$ IFS=":," # use ":" and "," as IFS $ echo IFS=$IFS, IFS="$IFS" # echo is a Bash builtin IFS= , IFS=:, $ date -R # just a command output Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # sub shell --> input to main shell Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # reset IFS to the default $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200
Skrip berikut melakukan hal-hal baik sebagai bagian dari pipa.
Tabel 1.27. Daftar cuplikan skrip untuk perintah perpipaan
cuplikan skrip (ketik dalam satu baris) | efek perintah |
---|---|
find /usr -print |
cari semua berkas di bawah "/usr " |
seq 1 100 |
cetak 1 hingga 100 |
| xargs -n 1 command |
jalankan perintah berulang kali dengan setiap butir dari pipa sebagai argumennya |
| xargs -n 1 echo |
memecah butir yang dipisah white-space dari pipa ke dalam baris-baris |
| xargs echo |
menggabungkan semua baris dari pipa ke dalam satu baris |
| grep -e regex_pattern |
mengekstrak baris-baris dari pipa yang mengandung pola_regex |
| grep -v -e regex_pattern |
mengekstrak baris-baris dari pipa yang tidak mengandung pola_regex |
| cut -d: -f3 - |
ekstrak ruas ketiga dari pipa yang dipisahkan oleh ": "
(berkas passwd dll.) |
| awk '{ print $3 }' |
mengekstrak ruas ketiga dari pipa yang dipisah oleh whitespace |
| awk -F'\t' '{ print $3 }' |
mengekstrak ruas ketiga dari pipa yang dipisah oleh tab |
| col -bx |
menghapus backspace dan mengekspansi tab ke spasi |
| expand - |
mengekspansi tab |
| sort| uniq |
mengurutkan dan menghapus duplikat |
| tr 'A-Z' 'a-z' |
mengonversi huruf besar menjadi huruf kecil |
| tr -d '\n' |
menyambung baris-baris menjadi satu |
| tr -d '\r' |
menghapus CR |
| sed 's/^/# /' |
menambahkan "# " ke awal setiap baris |
| sed 's/\.ext//g' |
menghapus ".ext " |
| sed -n -e 2p |
mencetak baris kedua |
| head -n 2 - |
mencetak 2 baris pertama |
| tail -n 2 - |
mencetak 2 baris terakhir |
Skrip shell satu baris dapat mengulang atas banyak berkas menggunakan
find
(1) dan xargs
(1) untuk melakukan
tugas yang cukup rumit. Lihat Bagian 10.1.5, “Idiom untuk pemilihan berkas” dan Bagian 9.4.9, “Mengulangi perintah atas berkas”.
Saat menggunakan mode interaktif shell menjadi terlalu rumit, silakan pertimbangkan untuk menulis skrip shell (lihat Bagian 12.1, “Skrip shell”).
[1] Bahkan vim
yang lebih tua dapat dimulai dalam mode
"nocompatible
" yang waras dengan memulainya dengan opsi
"-N
".