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
password Anda dan tekan tombol Enter lagi.
![]() |
Catatan |
---|---|
Mengikuti tradisi Unix, username dan password 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 11 foo tty1 foo login: penguin Password: Linux foo 5.10.0-6-amd64 #1 SMP Debian 5.10.28-1 (2021-04-09) 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: Thu May 13 08:47:13 JST 2021 on tty1 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.
You can gain the shell prompt under GUI environment by starting a
x-terminal-emulator
program such as
gnome-terminal
(1), rxvt
(1) or
xterm
(1). Under the GNOME Desktop environment, press
SUPER-key (Windows-key) and typing in "terminal" to the search prompt does
the trick.
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 password mereka
Kekuatan akun root tak terbatas ini mengharuskan Anda untuk mempertimbangkan dan bertanggung jawab saat menggunakannya.
![]() |
Awas |
---|---|
Jangan pernah berbagi password root dengan yang 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 root shell prompt dengan menggunakan password 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.8, “X server connection”.
![]() |
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, “How to shutdown the remote system on 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 ...
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:56, I:227 | 1508 | Manajer berkas layar penuh mode teks |
sudo
|
V:605, I:814 | 4589 | Sebuah program untuk mengizinkan hak istimewa root terbatas kepada pengguna |
vim
|
V:103, I:394 | 3498 | Editor teks Unix Vi IMproved, editor teks pemrogram (versi standar) |
vim-tiny
|
V:58, I:971 | 1666 | Editor teks Unix, Vi IMproved, editor teks programmer (versi ringkas) |
emacs-nox
|
V:4, I:18 | 18364 | Proyek GNU Emacs, penyunting teks yang dapat diperluas berbasis Lisp |
w3m
|
V:26, I:233 | 2367 | Peramban WWW mode teks |
gpm
|
V:11, I:15 | 539 | 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:855 | 166 | Dokumentasi Proyek Debian, (FAQ Debian) dan dokumen lainnya |
debian-policy
|
I:27 | 4319 | Manual Kebijakan Debian dan dokumen terkait |
developers-reference
|
V:0, I:6 | 2016 | Panduan dan informasi untuk pengembang Debian |
debmake-doc
|
I:0 | 11421 | Panduan untuk Pengelola Debian |
debian-history
|
I:0 | 4302 | Sejarah Proyek Debian |
debian-faq
|
I:851 | 817 | 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
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/init.d/
"
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 |
The Debian system uses a user private group (UPG) scheme as its default. A
UPG is created whenever a new user is added to the system. A UPG has the
same name as the user for which it was created and that user is the only
member of the UPG. UPG scheme makes it safe to set umask to
0002
since every user has their own private group. (In
some Unix variants, it is quite common to setup all normal users belonging
to a single users
group and is a good idea to set umask to 0022
for
security in such cases.)
![]() |
Tip |
---|---|
Aktifkan UPG dengan meletakkan " |
Untuk membuat izin grup diterapkan ke pengguna tertentu, pengguna tersebut
perlu dijadikan anggota grup menggunakan "sudo vigr
"
untuk /etc/group
dan "sudo vigr -s
"
untuk /etc/gshadow
. Anda harus log masuk setelah log
keluar (atau menjalankan "exec newgrp
") untuk
mengaktifkan konfigurasi grup baru.
![]() |
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, “Customized display of time and date” 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
The hardlink can be made within the same filesystem and shares the same
inode number which the "-i
" option with
ls
(1) reveals.
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.
A named pipe is a file that acts like a pipe. You put something into the file, and it comes out the other end. Thus it's called a FIFO, or First-In-First-Out: the first thing you put in the pipe is the first thing to come out the other end.
If you write to a named pipe, the process which is writing to the pipe
doesn't terminate until the information being written is read from the
pipe. If you read from a named pipe, the reading process waits until there
is nothing to read before terminating. The size of the pipe is always zero
--- it does not store data, it just links two processes like the
functionality offered by the shell "|
" syntax. However,
since this pipe has a name, the two processes don't have to be on the same
command line or even be run by the same user. Pipes were a very influential
innovation of Unix.
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, “Typical command sequences and shell redirection”).
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
"/sbin
" dan "/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 | self-explanatory |
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, “Customizing program to be started”). 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
menggunakan FTP. Buka menu dengan menekan F9
, lalu ketik
"p
" untuk mengaktifkan sistem berkas virtual FTP.
Masukkan URL dalam bentuk
"nama_pengguna:kata_sandi@nama_host.nama_domain
", yang
mengambil direktori jarak jauh dan muncul seperti direktori lokal.
Cobalah "[deb.debian.org/debian]" sebagai URL dan telusuri arsip Debian.
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.
Anda dapat memilih shell log masuk Anda dengan chsh
(1).
Tabel 1.13. Daftar program shell
paket | popcon | ukuran | Shell POSIX | deskripsi |
---|---|---|---|---|
bash
|
V:789, I:999 | 6465 | Ya | Bash: GNU Bourne Again SHell (standar de facto) |
bash-completion
|
V:31, I:925 | 1463 | T/T | penyelesaian yang dapat diprogram untuk shell bash |
dash
|
V:894, I:994 | 222 | Ya | Debian Almquist Shell, bagus untuk skrip shell |
zsh
|
V:37, I:72 | 2463 | Ya | Z shell: shell standar dengan banyak tambahan |
tcsh
|
V:9, I:27 | 1316 | Tidak | TENEX C Shell: versi yang disempurnakan dari Berkeley csh |
mksh
|
V:3, I:12 | 1469 | Ya | Versi dari shell Korn |
csh
|
V:1, I:8 | 343 | Tidak | C Shell OpenBSD, suatu versi dari Berkeley csh |
sash
|
V:0, I:5 | 1094 | Ya | Stand-alone dengan perintah-perintah
bawaan (Tidak dimaksudkan untuk standar "/bin/sh ") |
ksh
|
V:2, I:14 | 3280 | Ya | versi AT&T yang sebenarnya dari shell Korn |
rc
|
V:0, I:1 | 169 | 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 the system, see inittab (5) |
Left-Alt-key (optionally, Windows-key ) |
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
used by X applications such as xterm
and text
applications in Linux console
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. List of mouse operations and related key actions on Debian
aksi | respon |
---|---|
Left-click-and-drag mouse | select range as PRIMARY selection |
Klik kiri | select the start of range for PRIMARY selection |
Klik kanan (tradisional) | select the end of range for PRIMARY selection |
Klik kanan (modern) | context dependent menu (cut/copy/paste) |
Klik tengah atau Shift-Ins |
insert PRIMARY selection at the cursor |
Ctrl-X |
cut PRIMARY selection to CLIPBOARD |
Ctrl-C (Shift-Ctrl-C dalam terminal) |
copy PRIMARY selection to CLIPBOARD |
Ctrl-V |
paste CLIPBOARD at the cursor |
Here, the PRIMARY selection is the highlighted text range. Within the
terminal program, Shift-Ctrl-C
is used instead to avoid
terminating a running program.
The center wheel on the modern wheel mouse is considered middle mouse button and can be used for middle-click. Clicking left and right mouse buttons together serves as the middle-click under the 2 button mouse system situation.
In order to use a mouse in Linux character consoles, you need to have
gpm
(8) running as daemon.
The less
(1) command is the enhanced pager (file content
browser). It reads the file specified by its command argument or its
standard input. Hit "h
" if you need help while browsing
with the less
command. It can do much more than
more
(1) and can be supercharged by executing
"eval $(lesspipe)
" or "eval
$(lessfile)
" in the shell startup script. See more in
"/usr/share/doc/less/LESSOPEN
". The
"-R
" option allows raw character output and enables ANSI
color escape sequences. See less
(1).
You should become proficient in one of variants of Vim or Emacs programs which are popular in the Unix-like system.
I think getting used to Vim commands is the right thing to do, since
Vi-editor is always there in the Linux/Unix world. (Actually, original
vi
or new nvi
are programs you find
everywhere. I chose Vim instead for newbie since it offers you help through
F1
key while it is similar enough and more powerful.)
If you chose either Emacs or XEmacs instead as your choice of the editor, that is another good choice indeed, particularly for programming. Emacs has a plethora of other features as well, including functioning as a newsreader, directory editor, mail program, etc. When used for programming or editing shell scripts, it intelligently recognizes the format of what you are working on, and tries to provide assistance. Some people maintain that the only program they need on Linux is Emacs. Ten minutes learning Emacs now can save hours later. Having the GNU Emacs manual for reference when learning Emacs is highly recommended.
All these programs usually come with tutoring program for you to learn them
by practice. Start Vim by typing "vim
" and press
F1-key. You should at least read the first 35 lines. Then do the online
training course by moving cursor to "|tutor|
" and
pressing Ctrl-]
.
![]() |
Catatan |
---|---|
Good editors, such as Vim and Emacs, can handle UTF-8 and other exotic encoding texts correctly. It is a good idea to use the GUI environment in the UTF-8 locale and to install required programs and fonts to it. Editors have options to set the file encoding independent of the GUI environment. Please refer to their documentation on multibyte text. |
Debian comes with a number of different editors. We recommend to install the
vim
package, as mentioned above.
Debian provides unified access to the system default editor via command
"/usr/bin/editor
" so other programs (e.g.,
reportbug
(1)) can invoke it. You can change it by the
following.
$ sudo update-alternatives --config editor
The choice "/usr/bin/vim.basic
" over
"/usr/bin/vim.tiny
" is my recommendation for newbies
since it supports syntax highlighting.
![]() |
Tip |
---|---|
Many programs use the environment variables " |
The recent vim
(1) starts itself in the sane
"nocompatible
" option and enters into the
NORMAL
mode.[1]
Tabel 1.16. Daftar ketukan tombol Vim dasar
mode | ketikan tombol | aksi |
---|---|---|
NORMAL |
:help|only |
menampilkan berkas bantuan |
NORMAL |
:e namaberkas.ext |
open new buffer to edit filename.ext |
NORMAL |
:w |
menimpa penyangga saat ini ke berkas asli |
NORMAL |
:w namaberkas.ext |
write current buffer to filename.ext |
NORMAL |
:q |
keluar vim |
NORMAL |
:q! |
memaksa keluar vim |
NORMAL |
:only |
close all other split open windows |
NORMAL |
:set nocompatible? |
check if vim is in the sane
nocompatible mode |
NORMAL |
:set nocompatible |
set vim to the sane nocompatible mode |
NORMAL |
i |
masuk ke mode SISIP |
NORMAL |
R |
masuk ke mode TIMPA |
NORMAL |
v |
masuk ke mode VISUAL |
NORMAL |
V |
enter the linewise VISUAL mode |
NORMAL |
Ctrl-V |
enter the blockwise VISUAL mode |
except 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.
The vim
program changes its behavior to typed key strokes
based on mode. Typing in key strokes to
the buffer is mostly done in INSERT
-mode and
REPLACE
-mode. Moving cursor is mostly done in
NORMAL
-mode. Interactive selection is done in
VISUAL
-mode. Typing ":
" in
NORMAL
-mode changes its mode to
Ex
-mode. Ex
-mode accepts commands.
![]() |
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, “Customizing vim”.
The output of the shell command may roll off your screen and may be lost forever. It is a good practice to log shell activities into the file for you to review them later. This kind of record is essential when you perform any system administration tasks.
![]() |
Tip |
---|---|
The new Vim (version>=8.2) can be used to record the shell activities
cleanly using |
The basic method of recording the shell activity is to run it under
script
(1).
Misalnya, coba yang berikut ini
$ script Script started, file is typescript
Do whatever shell commands under script
.
Press Ctrl-D
to exit script
.
$ vim typescript
Lihat Bagian 9.1.1, “Recording the shell activities cleanly” .
Let's learn basic Unix commands. Here I use "Unix" in its generic sense.
Any Unix clone OSs usually offer equivalent commands. The Debian system is
no exception. Do not worry if some commands do not work as you wish now. If
alias
is used in the shell, its corresponding command
outputs are different. These examples are not meant to be executed in this
order.
Try all following commands from the non-privileged user account.
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 |
find commands related to "key-word " |
man -k kata-kunci |
, , |
whatis namaperintah |
display one line explanation on command
"commandname " |
man -a namaperintah |
display explanation on command
"commandname " (Unix style) |
info namaperintah |
display rather long explanation on command
"commandname " (GNU style) |
ls |
menampilkan isi direktori (berkas non-dot dan direktori) |
ls -a |
menampilkan isi direktori (semua berkas dan direktori) |
ls -A |
list contents of directory (almost all files and directories, i.e., skip
".. " and ". ") |
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 |
list open status of file "foo " |
lsof -p pid |
list files opened by the process ID:
"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 |
display contents of "/etc/motd " using the default pager |
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 |
display information on all the running processes using Unix system-V style output |
ps aux | grep -e "[e]xim4*" |
display all processes running "exim " and
"exim4 " |
ps axf | pager |
display information on all the running processes with ASCII art output |
kill 1234 |
kill a process identified by the process ID: "1234" |
gzip foo |
compress "foo " to create
"foo.gz " using the Lempel-Ziv coding
(LZ77) |
gunzip foo.gz |
decompress "foo.gz " to create
"foo " |
bzip2 foo |
compress "foo " to create
"foo.bz2 " using the Burrows-Wheeler
block sorting text compression algorithm, and Huffman coding (better
compression than gzip ) |
bunzip2 foo.bz2 |
decompress "foo.bz2 " to create
"foo " |
xz foo |
compress "foo " to create
"foo.xz " using the Lempel–Ziv–Markov
chain algorithm (better compression than bzip2 ) |
unxz foo.xz |
decompress "foo.xz " to create
"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/ |
archive contents of folder "bar/ " in
"foo.tar " archive |
tar -cvzf foo.tar.gz
bar/ |
archive contents of folder "bar/ " in
compressed "foo.tar.gz " archive |
tar -cvjf foo.tar.bz2
bar/ |
archive contents of folder "bar/ " in
"foo.tar.bz2 " archive |
tar -cvJf foo.tar.xz
bar/ |
archive contents of folder "bar/ " in
"foo.tar.xz " archive |
zcat README.gz | pager |
display contents of compressed "README.gz " using the
default pager |
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
" For The default pager of the bare bone Debian system is
The " |
Please traverse directories and peek into the system using the above commands as training. If you have questions on any of console commands, please make sure to read the manual page.
Misalnya, coba yang berikut ini
$ man man $ man bash $ man builtins $ man grep $ man ls
The style of man pages may be a little hard to get used to, because they are rather terse, particularly the older, very traditional ones. But once you get used to it, you come to appreciate their succinctness.
Please note that many Unix-like commands including ones from GNU and BSD display brief help information if you invoke them in one of the following ways (or without any arguments in some cases).
$ commandname --help $ commandname -h
Now you have some feel on how to use the Debian system. Let's look deep
into the mechanism of the command execution in the Debian system. Here, I
have simplified reality for the newbie. See bash
(1) for
the exact explanation.
A simple command is a sequence of components.
Variable assignments (optional)
Nama perintah
Argumen (opsional)
Redirections (optional: >
,
>>
, <
,
<<
, etc.)
Control operator (optional: &&
,
||
, newline , ;
, &
, (
, )
)
The values of some environment variables change the behavior of some Unix commands.
Default values of environment variables are initially set by the PAM system and then some of them may be reset by some application programs.
The PAM system such as pam_env
may set environment
variables by /etc/pam.conf
",
"/etc/environment
" and
"/etc/default/locale
".
The display manager such as gdm3
may reset environment
variables for GUI session.
The user specific program initialization may reset environment variables by
"~/.profile
", "~/.bash_profile
" and
"~/.bashrc
".
The default locale is defined in the "$LANG
" environment
variable and is configured as "LANG=xx_YY.UTF-8
" by the
installer or by the subsequent GUI configuration, e.g., "Settings" → "Region
& Language" → "Language" / "Formats" for GNOME.
![]() |
Catatan |
---|---|
I recommend you to configure the system environment just by the
" |
The full locale value given to "$LANG
" variable consists
of 3 parts: "xx_YY.ZZZZ
".
Tabel 1.19. List of locale recommendations
locale recommendation | 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) |
Typical command execution uses a shell line sequence as the following.
$ 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
Here, the program date
(1) is executed with different
locale values.
Most command executions usually do not have preceding environment variable definition. For the above example, you can alternatively execute as the following.
$ LANG=fr_FR.UTF-8 $ date -u mer. 19 mai 2021 15:19:24 UTC
![]() |
Tip |
---|---|
When filing a bug report, running and checking the command under
" |
For fine details of the locale configuration, see Bagian 8.1, “The locale”.
When you type a command into the shell, the shell searches the command in
the list of directories contained in the "$PATH
"
environment variable. The value of the "$PATH
"
environment variable is also called the shell's search path.
In the default Debian installation, the "$PATH
"
environment variable of user accounts may not include
"/sbin
" and "/usr/sbin
". For example,
the ifconfig
command needs to be issued with full path as
"/sbin/ifconfig
". (Similar ip
command
is located in "/bin
".)
You can change the "$PATH
" environment variable of Bash
shell by "~/.bash_profile
" or
"~/.bashrc
" files.
Many commands stores user specific configuration in the home directory and
changes their behavior by their contents. The home directory is identified
by the environment variable "$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/normal_user |
program yang dijalankan dari shell pengguna normal |
/home/normal_user |
program yang dijalankan dari menu desktop GUI pengguna normal |
/home/normal_user |
program run as root with "sudo program " |
/root |
program run as root with "sudo -H program " |
![]() |
Tip |
---|---|
Shell expands " |
See Bagian 12.1.5, “Shell environment variables” if
$HOME
isn't available for your program.
Some commands take arguments. Arguments starting with
"-
" or "--
" are called options and
control the behavior of the command.
$ date Thu 20 May 2021 01:08:08 AM JST $ date -R Thu, 20 May 2021 01:08:12 +0900
Here the command-line argument "-R
" changes
date
(1) behavior to output RFC2822 compliant date string.
Often you want a command to work with a group of files without typing all of them. The filename expansion pattern using the shell glob, (sometimes referred as wildcards), facilitate this need.
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] |
exactly one character with any character between "a " and
"z " |
[^…] |
exactly one character other than any character enclosed in brackets
(excluding "^ ") |
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 can be tweaked to change its glob behavior with its shopt builtin
options such as " |
Each command returns its exit status (variable: "$?
") as
the return value.
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 |
---|---|
Please note that, in the logical context for the shell, success is treated as the logical TRUE which has 0 (zero) as its value. This is somewhat non-intuitive and needs to be reminded here. |
Let's try to remember following shell command idioms typed in one line as a part of shell command.
Tabel 1.23. Idiom perintah Shell
idiom perintah | deskripsi |
---|---|
perintah & |
background execution of
command in the subshell |
perintah1 | perintah2 |
pipe the standard output of
command1 to the standard input of
command2 (concurrent
execution) |
perintah1 2>&1 | perintah2 |
pipe both standard output and standard
error of command1 to the standard input of
command2 (concurrent
execution) |
perintah1 ; perintah2 |
execute command1 and command2
sequentially |
perintah1 && perintah2 |
execute command1 ; if successful, execute
command2 sequentially
(return success if both command1 and command2 are successful) |
perintah1 || perintah2 |
execute command1 ; if not successful, execute
command2 sequentially
(return success if command1 or command2 are successful) |
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 |
redirect standard input of command to the following lines
until "delimiter " is met (here document) |
command <<- delimiter |
redirect standard input of command to the following lines
until "delimiter " is met (here document, the leading tab
characters are stripped from input lines) |
The Debian system is a multi-tasking system. Background jobs allow users to
run multiple programs in a single shell. The management of the background
process involves the shell builtins: jobs
,
fg
, bg
, and kill
.
Please read sections of bash(1) under "SIGNALS", and "JOB CONTROL", and
builtins
(1).
Misalnya, coba yang berikut ini
$ </etc/motd pager
$ pager </etc/motd
$ pager /etc/motd
$ cat /etc/motd | pager
Although all 4 examples of shell redirections display the same thing, the
last example runs an extra cat
command and wastes
resources with no reason.
Shell memungkinkan Anda untuk membuka berkas menggunakan
exec
bawaan dengan sembarang deskriptor berkas.
$ echo Hello >foo
$ exec 3foo 4bar # open files
$ cat <&3 >&4 # redirect stdin to 3, stdout to 4
$ exec 3<&- 4>&- # close files
$ cat bar
Hello
The file descriptor 0-2 are predefined.
Tabel 1.24. Predefined file descriptors
perangkat | deskripsi | deskriptor berkas |
---|---|---|
stdin |
masukan standar | 0 |
stdout |
keluaran standar | 1 |
stderr |
galat standar | 2 |
You can set an alias for the frequently used command.
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.
You can list any existing aliases by alias
(see
bash
(1) under "SHELL BUILTIN COMMANDS").
$ alias ... alias la='ls -la'
You can identity exact path or identity of the command by
type
(see bash
(1) under "SHELL BUILTIN
COMMANDS").
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
Here ls
was recently searched while
"file
" was not, thus "ls
" is "hashed",
i.e., the shell has an internal record for the quick access to the location
of the "ls
" command.
![]() |
Tip |
---|---|
In Unix-like work environment, text processing is done by piping text through chains of standard text processing tools. This was another crucial Unix innovation.
There are few standard text processing tools which are used very often on the Unix-like system.
No regular expression is used:
cat
(1) menyambungkan berkas-berkas dan mengeluarkan
seluruh konten.
tac
(1) menyambungkan berkas-berkas dan mengeluarkan
secara terbalik.
cut
(1) selects parts of lines and outputs.
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) translates or deletes characters.
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) matches text with patterns.
vim
(1) is a screen editor.
emacs
(1) is a screen editor. (somewhat extended BRE)
Extended regular expression (ERE) is used:
awk
(1) does simple text processing.
egrep
(1) matches text with patterns.
tcl
(3tcl) can do every conceivable text processing: See
re_syntax
(3). Often used with tk
(3tk).
perl
(1) can do every conceivable text processing. See
perlre
(1).
pcregrep
(1) from the pcregrep
package
matches text with Perl
Compatible Regular Expressions (PCRE) pattern.
python
(1) with the re
module can do
every conceivable text processing. See
"/usr/share/doc/python/html/index.html
".
If you are not sure what exactly these commands do, please use "man
command
" to figure it out by yourself.
![]() |
Catatan |
---|---|
Sort order and range expression are locale dependent. If you wish to obtain traditional behavior for a command, use C locale or C.UTF-8 locale instead of normal UTF-8 ones (see Bagian 8.1, “The locale”). |
![]() |
Catatan |
---|---|
Perl regular expressions
( |
Regular expressions are used in many text processing tools. They are analogous to the shell globs, but they are more complicated and powerful.
The regular expression describes the matching pattern and is made up of text characters and metacharacters.
A metacharacter is just a character with a special meaning. There are 2 major styles, BRE and ERE, depending on the text tools as described above.
Tabel 1.25. Metacharacters for BRE and ERE
BRE | ERE | description of the regular expression |
---|---|---|
\ . [ ] ^ $ * |
\ . [ ] ^ $ * |
common metacharacters |
\+ \? \( \) \{ \} \| |
BRE only "\ " escaped metacharacters |
|
+ ? ( ) { } | |
ERE only non-"\ " escaped metacharacters |
|
c |
c |
match non-metacharacter
"c " |
\c |
\c |
match a literal character "c " even if
"c " is metacharacter
by itself |
. |
. |
match any character including newline |
^ |
^ |
posisi di awal string |
$ |
$ |
posisi di akhir string |
\< |
\< |
posisi di awal sebuah kata |
\> |
\> |
posisi di akhir sebuah kata |
[abc…] |
[abc…] |
match any characters in "abc… " |
[^abc…] |
[^abc…] |
match any characters except in "abc… " |
r* |
r* |
match zero or more regular expressions identified by "r " |
r\+ |
r+ |
match one or more regular expressions identified by "r " |
r\? |
r? |
match zero or one regular expressions identified by "r " |
r1\|r2 |
r1|r2 |
match one of the regular expressions identified by "r1 "
or "r2 " |
\(r1\|r2\) |
(r1|r2) |
match one of the regular expressions identified by "r1 "
or "r2 " and treat it as a bracketed regular expression |
The regular expression of emacs
is basically BRE but has been extended to treat
"+
"and "?
" as the metacharacters as in ERE. Thus, there are no needs to escape them with
"\
" in the regular expression of
emacs
.
grep
(1) can be used to perform the text search using the
regular expression.
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 |
---|---|
For the replacement expression, some characters have special meanings.
Tabel 1.26. Ekspresi penggantian
ekspresi penggantian | description of the text to replace the replacement expression |
---|---|
& |
what the regular expression matched (use \& in
emacs ) |
\n |
what the n-th bracketed regular expression matched ("n" being number) |
For Perl replacement string, "$&" is used instead of "&" and "$n" is used instead of "\n".
Misalnya, coba yang berikut ini
$ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -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 $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=$&=/' zzz=1abc2efg3hij4=
Here please pay extra attention to the style of the bracketed regular expression and how the matched strings are used in the text replacement process on different tools.
These regular expressions can be used for cursor movements and text replacement actions in some editors too.
The back slash "\
" at the end of line in the shell
commandline escapes newline as a white space character and continues shell
command line input to the next line.
Please read all the related manual pages to learn these commands.
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' '+w' '+q' file
![]() |
Tip |
---|---|
The " |
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/ge|update' '+q' file1 file2 file3
![]() |
Tip |
---|---|
The " |
$ 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 |
---|---|
See "A Brief History of Debian" for the latest Debian leadership history. |
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
Here, the read
builtin command uses characters in
"$IFS
" (internal field separators) to split lines into
words.
If you change "$IFS
" to ":
", you can
parse "/etc/passwd
" with shell nicely.
$ 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
(If Awk is used to do the equivalent, use "FS=':'
" to set
the field separator.)
IFS is also used by the shell to split results of parameter expansion, command substitution, and arithmetic expansion. These do not occur within double or single quoted words. The default value of IFS is space, tab, and newline combined.
Be careful about using this shell IFS tricks. Strange things may happen, when shell interprets some parts of the script as its input.
$ 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
The following scripts do nice things as a part of a pipe.
Tabel 1.27. List of script snippets for piping commands
script snippet (type in one line) | efek perintah |
---|---|
find /usr -print |
cari semua berkas di bawah "/usr " |
seq 1 100 |
cetak 1 hingga 100 |
| xargs -n 1 command |
run command repeatedly with each item from pipe as its argument |
| xargs -n 1 echo |
split white-space-separated items from pipe into lines |
| xargs echo |
merge all lines from pipe into a line |
| grep -e regex_pattern |
extract lines from pipe containing regex_pattern |
| grep -v -e regex_pattern |
extract lines from pipe not containing regex_pattern |
| cut -d: -f3 - |
ekstrak ruas ketiga dari pipa yang dipisahkan oleh ": "
(berkas passwd dll.) |
| awk '{ print $3 }' |
extract third field from pipe separated by whitespaces |
| awk -F'\t' '{ print $3 }' |
extract third field from pipe separated by tab |
| col -bx |
remove backspace and expand tabs to spaces |
| expand - |
expand tabs |
| sort| uniq |
sort and remove duplicates |
| tr 'A-Z' 'a-z' |
convert uppercase to lowercase |
| tr -d '\n' |
concatenate lines into one line |
| tr -d '\r' |
remove CR |
| sed 's/^/# /' |
add "# " to the start of each line |
| sed 's/\.ext//g' |
remove ".ext " |
| sed -n -e 2p |
print the second line |
| head -n 2 - |
print the first 2 lines |
| tail -n 2 - |
print the last 2 lines |
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, “Idioms for the selection of files” dan Bagian 9.4.9, “Repeating a command looping over files”.
When using the shell interactive mode becomes too complicated, please consider to write a shell script (see Bagian 12.1, “The shell script”).
[1] Even the older vim
can starts in the sane
"nocompatible
" mode by starting it with the
"-N
" option.