Kursus yang sesuai https://www.bilibili.com/video/BV18p4y167Md
Mata Kuliah Korespondensi Sistem Operasi Kuliah Praktek Sistem Operasi 45
Daftar Isi CSAPP Pemahaman mendalam tentang sistem komputer berasal dari kelas terbuka bos Microsoft
yangminz
https://www.bilibili.com/video/BV17K4y1N7Q2 (sedang diperbarui)
Daftar Isi Seri Pemrograman Berorientasi Objek C++ dari Seri Pemrograman Berorientasi Objek CPP Master Hou Jie (Selesai)
Pengantar penggunaan dasar dan opsi perintah.
Man adalah singkatan dari manual, yang menampilkan informasi spesifik dari instruksi.
Ketika man date dijalankan, DATE(1) muncul. Angka di dalamnya mewakili tipe instruksi yang umum digunakan dan tipenya adalah sebagai berikut:
nama kode | jenis |
---|---|
1 | Instruksi atau file yang dapat dieksekusi yang dapat dioperasikan pengguna di lingkungan shell |
5 | Berkas konfigurasi |
8 | Perintah administratif tersedia untuk administrator sistem |
info mirip dengan man, tetapi info membagi dokumen menjadi beberapa halaman, dan setiap halaman dapat dilompati.
/usr/share/doc menyimpan satu set dokumentasi lengkap untuk perangkat lunak.
Sebelum mematikan, Anda perlu menggunakan perintah who untuk memeriksa apakah ada pengguna lain yang online.
Untuk mempercepat pembacaan dan penulisan file disk, data file yang terletak di memori tidak akan segera disinkronkan ke disk, sehingga diperlukan operasi sinkronisasi sinkronisasi sebelum dimatikan.
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
Jalur ke file yang dapat dieksekusi dideklarasikan dalam PATH, dipisahkan oleh :.
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
sudo memungkinkan pengguna biasa untuk menggunakan perintah root yang dapat dieksekusi, tetapi hanya pengguna yang ditambahkan dalam file konfigurasi /etc/sudoers yang dapat menggunakan perintah ini.
RPM dan DPKG adalah dua jenis alat manajemen paket perangkat lunak yang paling umum:
Distribusi Linux adalah versi terintegrasi dari kernel Linux dan berbagai perangkat lunak aplikasi. Alat manajemen paket berdasarkan Distribusi Komersial Distribusi komunitas RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
Memesan | memengaruhi |
---|---|
:w | menulis ke disk |
:w! | Memaksa penulisan ke disk ketika file bersifat baca-saja. Apakah dapat ditulis tergantung pada izin pengguna pada file tersebut. |
:Q | meninggalkan |
:Q! | Terpaksa pergi tanpa menyimpan |
:wq | Tulis ke disk dan tinggalkan |
:wq! | Paksa tulis ke disk lalu keluar |
Proyek GNU, diterjemahkan sebagai Proyek Asli, bertujuan untuk menciptakan sistem operasi yang sepenuhnya gratis yang disebut GNU, dan perangkat lunak kontennya dirilis sepenuhnya di bawah GPL. Nama lengkap GPL adalah GNU General Public License, yang mencakup konten berikut: kebebasan menjalankan program ini untuk tujuan apa pun kebebasan untuk mereproduksi; kebebasan untuk menyempurnakan program ini dan merilis perbaikan secara publik; ¶Pilih lisensi sumber terbuka (membuka jendela baru) Bagaimana cara memilih lisensi sumber terbuka?
IDE (ATA) adalah singkatan dari Advanced Technology Attachment. Kecepatan antarmuka maksimum adalah 133MB/s. Karena kabel port paralel memiliki kinerja anti-interferensi yang buruk dan kabel memakan banyak ruang, yang tidak kondusif bagi pembuangan panas internal. komputer, secara bertahap telah digantikan oleh SATA.
Nama lengkap SATA adalah Serial ATA, yang merupakan antarmuka ATA yang menggunakan port serial. Ia memiliki anti-interferensi yang kuat, memiliki persyaratan panjang kabel data yang jauh lebih rendah daripada ATA, dan mendukung fungsi hot-swappable dan lainnya. Kecepatan antarmuka SATA-II adalah 300MiB/s, sedangkan standar SATA-III yang baru dapat mencapai kecepatan transmisi 600MiB/s. Kabel data SATA juga jauh lebih tipis dibandingkan ATA, sehingga bermanfaat untuk sirkulasi udara di dalam sasis dan memudahkan penataan kabel.
Nama lengkap SCSI adalah Small Computer System Interface. Ia telah mengalami banyak generasi pengembangan, dari SCSI-II awal hingga Ultra320 SCSI dan Fiber-Channel saat ini, dengan berbagai jenis antarmuka. Hard drive SCSI banyak digunakan di komputer pribadi dan server tingkat stasiun kerja. Oleh karena itu, hard drive tersebut menggunakan teknologi yang lebih canggih, seperti kecepatan disk yang tinggi yaitu 15.000 rpm, dan memiliki penggunaan CPU yang lebih rendah selama transmisi Hard drive ATA dan SATA dengan kapasitas yang sama.
Setiap perangkat keras di Linux diperlakukan sebagai file, termasuk disk. Disk diberi nama sesuai dengan jenis antarmuka disk. Nama file disk yang umum adalah sebagai berikut:
Penentuan nomor seri setelah nama file terkait dengan urutan sistem mendeteksi disk, dan tidak ada hubungannya dengan posisi slot di mana disk dimasukkan.
Ada dua format utama tabel partisi disk, satu adalah tabel partisi MBR yang lebih ketat, dan yang lainnya adalah tabel partisi GPT yang lebih baru dan tidak terlalu ketat.
Di MBR, sektor pertama adalah yang paling penting. Ini berisi master boot record (MBR) dan tabel partisi. Master boot record menempati 446 byte dan tabel partisi menempati 64 byte.
Tabel partisi hanya berukuran 64 byte dan hanya dapat menyimpan hingga 4 partisi, yaitu partisi primer (Primer) dan partisi perluasan (Extend). Hanya ada satu partisi perluasan, yang menggunakan sektor lain untuk mencatat tabel partisi tambahan. Oleh karena itu, lebih banyak partisi dapat dibagi melalui partisi perluasan.
Linux juga memperlakukan partisi sebagai file. Metode penamaan file partisi adalah: nama file disk + nomor, seperti /dev/sda1. Perhatikan bahwa penomoran partisi logis dimulai dari 5.
Disk yang berbeda memiliki ukuran sektor yang berbeda, misalnya 512 byte dan 4k untuk disk terbaru. Agar kompatibel dengan semua disk, GPT menggunakan alamat blok logis (Alamat Blok Logis, LBA) pada sektor yang ditentukan. Ukuran default LBA adalah 512 byte.
Blok pertama GPT mencatat main boot record (MBR), diikuti oleh 33 blok untuk mencatat informasi partisi, dan 33 blok terakhir digunakan untuk membuat cadangan informasi partisi. Yang pertama dari 33 blok ini adalah catatan header GPT. Bagian ini mencatat lokasi dan ukuran tabel partisi itu sendiri serta lokasi partisi cadangan. Ini juga berisi kode pemeriksaan (CRC32) dari tabel partisi sistem operasi gunakan kode Periksa ini untuk menentukan apakah GPT benar. Jika terjadi kesalahan, Anda dapat menggunakan partisi cadangan untuk memulihkannya.
GPT tidak memiliki konsep partisi extended, semuanya merupakan partisi primer. Setiap LAB dapat dibagi menjadi 4 partisi, sehingga total 4 * 32 = 128 partisi dapat dibagi.
MBR tidak mendukung hard drive di atas 2,2 TB, sedangkan GPT mendukung hingga 233 TB = 8 ZB.
BIOS (Basic Input/Output System) adalah firmware (perangkat lunak yang tertanam dalam perangkat keras). Program BIOS disimpan dalam memori read-only yang isinya tidak akan hilang setelah listrik padam.
BIOS adalah program pertama yang dijalankan oleh komputer ketika dihidupkan. Program ini mengetahui disk yang dapat di-boot dan membaca main boot record (MBR) dari sektor pertama disk program manajemen boot, program manajemen boot ini akan memuat file inti sistem operasi.
Manajer boot di Main Boot Record (MBR) menyediakan fungsi berikut:
menu, memuat file inti, dan mentransfer ke program manajemen boot lainnya. Fungsi transfer dapat digunakan untuk mengimplementasikan multi-boot. Anda hanya perlu menginstal program manajemen boot dari sistem operasi lain pada sektor boot dari partisi lain. Saat memulai program manajemen boot, Anda dapat memilih untuk memulai sistem operasi saat ini atau memulai sistem operasi saat ini melalui menu. Transfer ke program manajemen boot lain untuk memulai sistem operasi lain.
Pada gambar di bawah, program manajemen boot di catatan boot utama (MBR) sektor pertama menyediakan dua menu: M1, M2. M1 menunjuk ke sistem operasi Windows, dan M2 menunjuk ke sektor boot dari partisi lain, yang berisi Program manajemen boot lainnya menyediakan menu yang mengarah ke Linux.
Untuk menginstal multi-boot, yang terbaik adalah menginstal Windows terlebih dahulu, lalu Linux. Karena catatan boot utama (MBR) akan ditimpa ketika menginstal Windows, Linux dapat memilih untuk menginstal program manajemen boot di catatan boot utama (MBR) atau sektor boot partisi lain, dan dapat mengatur menu program manajemen boot .
BIOS tidak bisa membaca tabel partisi GPT, tapi UEFI bisa.
Memformat partisi adalah membuat sistem file pada partisi tersebut. Sebuah partisi biasanya hanya dapat diformat dengan satu sistem file, namun teknologi seperti array disk dapat memformat partisi dengan beberapa sistem file.
Komponen terpentingnya adalah sebagai berikut:
Selain itu, juga mencakup:
Artinya blok tempat isi file berada terlalu tersebar.
Ukuran blok yang didukung dalam sistem file Ext2 adalah 1K, 2K dan 4K. Ukuran yang berbeda membatasi ukuran maksimum satu file dan sistem file.
ukuran | 1KB | 2KB | 4KB |
---|---|---|---|
file tunggal terbesar | 16 GB | 256GB | 2 TB |
Sistem file maksimum 2TB 8TB 16TB Satu blok hanya dapat digunakan oleh satu file, dan bagian yang tidak terpakai langsung terbuang sia-sia. Oleh karena itu, jika Anda perlu menyimpan file kecil dalam jumlah besar, yang terbaik adalah memilih blok yang lebih kecil.
Inode secara khusus berisi informasi berikut:
inode mempunyai ciri-ciri sebagai berikut:
Inode mencatat nomor blok tempat konten file berada, tetapi setiap blok berukuran sangat kecil. File besar memerlukan ratusan ribu blok. Sebuah inode memiliki ukuran terbatas dan tidak dapat secara langsung mereferensikan begitu banyak nomor blok. Oleh karena itu, diperkenalkanlah referensi tidak langsung, tidak langsung ganda, dan tidak langsung rangkap tiga. Referensi tidak langsung berarti bahwa blok referensi yang direkam oleh inode mencatat informasi referensi.
Ketika direktori dibuat, sebuah inode dan setidaknya satu blok dialokasikan. Konten yang direkam berdasarkan blok adalah nomor inode dan nama file dari semua file dalam direktori. Terlihat bahwa inode file itu sendiri tidak mencatat nama file, tetapi nama file dicatat dalam direktori. Oleh karena itu, operasi seperti menambah file, menghapus file, dan mengubah nama file berkaitan dengan izin w direktori.
Jika terjadi pemadaman listrik secara tiba-tiba, maka akan terjadi kesalahan pada sistem file. Misalnya, bitmap blok hanya diubah sebelum listrik padam, tetapi data tidak benar-benar ditulis ke dalam blok. Sistem file ext3/ext4 memperkenalkan fungsi log, yang dapat digunakan untuk memperbaiki sistem file.
Mounting menggunakan direktori sebagai pintu masuk ke sistem file, yaitu setelah masuk ke direktori, data sistem file dapat dibaca.
Untuk menjaga konsistensi dalam struktur direktori distribusi Linux yang berbeda, Filesystem Hierarchy Standard (FHS) menentukan struktur direktori Linux.
Tiga direktori paling dasar adalah sebagai berikut:
Ada tiga jenis pengguna: pemilik file, grup, dan lainnya.
Saat menggunakan ls untuk melihat file, informasi file akan ditampilkan, seperti drwxr-xr-x. 3 root root 17 May 6 00:14 .config
.
Jenis file umum dan artinya adalah:
Pada kolom izin file 9 digit, setiap 3 digit berada dalam satu grup, dan total ada 3 grup. Setiap grup mewakili izin file untuk pemilik file, grup tempatnya, dan orang lain. Tiga digit dalam satu set izin adalah izin r, w, dan x, yang menunjukkan izin yang dapat dibaca, dapat ditulis, dan dapat dieksekusi.
Ada tiga jenis waktu file:
Daftar informasi file atau direktori. Informasi direktori adalah file yang terkandung di dalamnya.
# # ls [-aAdfFhilnrRSt] file|dir
-a : 列出全部的文件
-d : 仅列出目录本身
-l : 以长数据串行列出,包含文件的属性与权限等等数据
cd [相对路径或绝对路径]
# # mkdir [-mp] 目录名称
-m : 配置目录权限
-p : 递归创建目录
rmdir [-p] 目录名称
-p : 递归删除目录
# # touch [-acdmt] filename
-a : 更新 atime
-c : 更新 ctime,若该文件不存在则不建立新文件
-m : 更新 mtime
-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date= "日期或时间"
-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
Salin filenya. Jika ada lebih dari dua file sumber, file tujuan harus berupa direktori.
cp [-adfilprsu] source destination
-a : 相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明
-d : 若来源文件为链接文件,则复制链接文件属性而非文件本身
-i : 若目标文件已经存在时,在覆盖前会先询问
-p : 连同文件的属性一起复制过去
-r : 递归持续复制
-u : destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all : 除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
# # rm [-fir] 文件或目录
-r : 递归删除
Pindahkan file.
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
Satu set izin dapat direpresentasikan dengan angka. Saat ini, tiga bit dari satu set izin dianggap sebagai bit bilangan biner. Bobot setiap bit dari kiri ke kanan adalah 4, 2, dan 1 adalah, bobot digital yang sesuai dengan setiap izin. Nilainya adalah r: 4, w: 2, x: 1.
# # chmod [-R] xyz dirname/filename
Contoh: Ubah izin file .bashrc menjadi -rwxr-xr--.
# # chmod 754 .bashrc
Anda juga dapat menggunakan simbol untuk mengatur izin.
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
Contoh: Tambahkan izin menulis ke file .bashrc untuk semua pengguna.
# # chmod a+w .bashrc
**Nama file tidak disimpan dalam isi file, tetapi di direktori tempat file tersebut berada. **Oleh karena itu, memiliki izin pada file tidak dapat mengubah nama file. Direktori menyimpan daftar file, dan izin direktori adalah izin pada daftar filenya.
**Oleh karena itu, izin r pada direktori berarti daftar file dapat dibaca; izin w berarti daftar file dapat diubah, khususnya, menambah, menghapus file, dan mengubah nama file; direktori menjadi direktori kerja, dan izin x dapat menjadikan direktori tersebut sebagai direktori kerja. Ini adalah dasar dari izin r dan w. Jika suatu direktori tidak dapat dijadikan direktori kerja, tidak akan ada cara untuk membaca daftar file atau memodifikasi daftar file. **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
Buat entri di direktori untuk mencatat nama file dan nomor inode. Inode ini adalah inode dari file sumber. Hapus entri apa pun dan file akan tetap ada, selama jumlah referensi tidak nol. Ia memiliki batasan berikut: tidak dapat menjangkau sistem file dan tidak dapat menghubungkan direktori.
# # ln /etc/crontab .
# # ll -i /etc/crontab crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
File tautan simbolik menyimpan jalur absolut dari file sumber, dan akan ditempatkan di file sumber saat membaca. Ini dapat dipahami sebagai pintasan ke Windows. Ketika file sumber dihapus, file tertaut tidak dapat dibuka. Tautan dapat dibuat ke direktori.
# # ll -i /etc/crontab /root/crontab2
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 - > /etc/crontab
# # cat [-AbEnTv] filename
-n : 打印出行号,连同空白行也会有行号,-b 不会
# # head [-n number] filename
-n : 后面接数字,代表显示几行的意思
Pencarian perintah.
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
Pencarian berkas. Lebih cepat karena hanya mencari beberapa direktori tertentu. ## dimana [-bmsu] dirname/nama file
Pencarian berkas. Anda dapat mencari menggunakan kata kunci atau ekspresi reguler. loc menggunakan database /var/lib/mlocation/ untuk mencari. Ini disimpan dalam memori dan diperbarui sekali sehari, jadi Anda tidak dapat menggunakan locator untuk mencari file yang baru dibuat. Anda dapat menggunakan updateb untuk segera memperbarui database.
# # locate [-ir] keyword
-r: 正则表达式
Pencarian berkas. Anda dapat mencari menggunakan properti dan izin file.
# # find [basedir] [option]
example: find . -name " shadow* "
(1) Opsi terkait waktu
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) Opsi terkait dengan pemilik file dan grup
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) Opsi terkait dengan izin dan nama file
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
Ada banyak nama file terkompresi di Linux, yang umum adalah sebagai berikut:
perpanjangan | Kompresor |
---|---|
*.Z | kompres |
*.ritsleting | ritsleting |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.ter | Data yang dikemas oleh program tar tidak dikompresi. |
*.tar.gz | File dikemas oleh program tar dan dikompresi oleh gzip |
*.tar.bz2 | File dikemas oleh program tar dan dikompresi oleh bzip2 |
*.tar.xz | File dikemas oleh program tar dan dikompresi oleh xz |
gzip adalah perintah kompresi yang paling banyak digunakan di Linux dan dapat mendekompresi file yang dikompresi dengan kompres, zip, dan gzip.
Setelah kompresi gzip, file sumber tidak ada lagi. Ada 9 tingkat kompresi berbeda yang tersedia. Anda dapat menggunakan zcat, zmore, dan zless untuk membaca konten file terkompresi.
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
Memberikan rasio kompresi yang lebih tinggi daripada gzip. Lihat perintah: bzcat, bzmore, bzless, bzgrep.
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
Memberikan rasio kompresi yang lebih baik daripada bzip2. Terlihat bahwa rasio kompresi gzip, bzip2, dan xz terus dioptimalkan. Namun perlu diperhatikan bahwa semakin tinggi rasio kompresi, maka waktu kompresi akan semakin lama.
Lihat perintah: xzcat, xzmore, xzless, xzgrep.
$ xz [-dtlkc#] filename
Perintah kompresi hanya dapat mengompresi satu file, sedangkan paket dapat mengemas banyak file menjadi satu file besar. Tar tidak hanya dapat digunakan untuk mengemas saja, tetapi Anda juga dapat menggunakan gip, bzip2, dan xz untuk mengompres file yang dikemas.
$ tar [-z | -j | -J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩
$ tar [-z | -j | -J] [tv] [-f 已有的 tar 文件] ==查看
$ tar [-z | -j | -J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
-z : 使用 zip;
-j : 使用 bzip2;
-J : 使用 xz;
-c : 新建打包文件;
-t : 查看打包文件里面有哪些文件;
-x : 解打包或解压缩的功能;
-v : 在压缩/解压缩的过程中,显示正在处理的文件名;
-f : filename: 要处理的文件;
-C 目录 : 在特定目录解压缩。
Penggunaan | Memesan |
---|---|
Kemas dan kompres | tar -jcv -f filename.tar.bz2 Nama file atau direktori yang akan dikompres |
Memeriksa | tar -jtv -f nama file.tar.bz2 |
Buka zip | tar -jxv -f filename.tar.bz2 -C Direktori untuk didekompresi |
Anda dapat meminta kernel untuk menyediakan layanan melalui Shell, dan Bash adalah salah satu jenis Shell.
Riwayat perintah: mencatat perintah yang digunakan Penyelesaian perintah dan file: Tombol pintas: tab Penamaan alias: Misalnya, lm adalah alias dari ls -al skrip shell Wildcard: Misalnya, ls -l /usr/bin/X* daftar /usr/ bin Semua file di bawah dimulai dengan X
$
sebelum variabel, atau Anda bisa menggunakan formulir ${}
;$ x=abc
$ echo $x
$ echo ${x}
Jika terdapat spasi pada isi variabel, maka harus digunakan tanda kutip ganda atau tanda kutip tunggal.
x="lang is $LANG"
, maka nilai x is lang adalah zh_TW.UTF-8;x='lang is $LANG'
, maka nilai x adalah lang adalah $LANG
. 指令
atau $(指令)
untuk menetapkan hasil eksekusi instruksi ke variabel. Misalnya, version=$(uname -r), nilai versinya adalah 4.15.0-22-generic. Anda dapat menggunakan perintah ekspor untuk mengubah variabel khusus menjadi variabel lingkungan. Variabel lingkungan dapat digunakan dalam subprogram. Subprogram yang disebut adalah sub-Bash yang dihasilkan oleh Bash saat ini. Variabel bash dapat dideklarasikan sebagai array dan bilangan bulat. Perhatikan bahwa tipe numerik tidak memiliki angka floating point. Jika tidak dideklarasikan, defaultnya adalah tipe string. Variabel dideklarasikan menggunakan perintah mendeklarasikan: $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
Gunakan [ ] untuk mengindeks array:
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
dan jalankan.Pengalihan mengacu pada penggunaan file alih-alih input standar, output standar, dan output kesalahan standar.
1 | kode | operator |
---|---|---|
Masukan standar (stdin) | 0 | < atau << |
Keluaran standar (stdout) | 1 | > atau >> |
Keluaran kesalahan standar (stderr) | 2 | 2> atau 2>> |
Diantaranya, satu panah menunjukkan pengalihan dengan cara menimpa, sementara dua panah menunjukkan pengalihan dengan cara menambahkan.
Output standar yang tidak diperlukan dan output kesalahan standar dapat dialihkan ke /dev/null, yang setara dengan membuangnya ke tempat sampah. Jika Anda perlu mengalihkan keluaran standar dan keluaran kesalahan standar ke file secara bersamaan, Anda perlu mengonversi satu keluaran ke keluaran lain. Misalnya, 2>&1 berarti mengonversi keluaran kesalahan standar ke keluaran standar.
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
Pipelining adalah menggunakan output standar dari satu perintah sebagai input standar dari perintah lain. Pipelining dapat digunakan ketika data perlu diproses dalam beberapa langkah sebelum kita mendapatkan apa yang kita inginkan.
Gunakan |.antara perintah untuk memisahkan perintah alur individual.
$ ls -al /etc | less
cut membagi data dan mengekstrak bagian yang diinginkan. Proses segmentasi berlangsung baris demi baris.
$ cut
-d : 分隔符
-f : 经过 -d 分隔后,使用 -f n 取出第 n 个区间
-c : 以字符为单位取出区间
$ last
root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)
$ last | cut -d ' ' -f 1
$ export
declare -x HISTCONTROL= " ignoredups "
declare -x HISTSIZE= " 1000 "
declare -x HOME= " /home/dmtsai "
declare -x HOSTNAME= " study.centos.vbird "
.....(其他省略).....
$ export | cut -c 12-
digunakan untuk menyortir.
$ sort [-fbMnrtuk] [file or stdin]
-f : 忽略大小写
-b : 忽略最前面的空格
-M : 以月份的名字来排序,例如 JAN,DEC
-n : 使用数字
-r : 反向排序
-u : 相当于 unique,重复的内容只出现一次
-t : 分隔符,默认为 tab
-k : 指定排序的区间
$ cat /etc/passwd | sort -t ' : ' -k 3
root:x:0:0:root:/root:/bin/bash
dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
alex:x:1001:1002::/home/alex:/bin/bash
arod:x:1002:1003::/home/arod:/bin/bash
Anda hanya dapat mengambil satu data duplikat.
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
Pengalihan keluaran akan mengarahkan konten keluaran ke file, dan tee tidak hanya dapat menyelesaikan fungsi ini, tetapi juga mempertahankan keluaran di layar. Artinya, dengan menggunakan perintah tee, output dikirim ke file dan layar.
$ tee [-a] file
Digunakan untuk menghapus karakter dalam satu baris atau mengganti karakter.
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
Ubah karakter tab menjadi karakter spasi.
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
Ubah tab menjadi sejumlah spasi tertentu, defaultnya adalah 8.
$ expand [-t] file
-t : tab 转为空格的数量
Gabungkan baris dengan data yang sama menjadi satu.
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
Rekatkan kedua garis tersebut secara langsung.
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
split membagi file menjadi beberapa file.
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (menelusuri ekspresi reguler secara global dan mencetaknya), menggunakan ekspresi reguler untuk mencari dan mencetak secara global.
$ grep [-acinv] [--color = auto] 搜寻字符串 filename
-c : 统计个数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
--color=auto : 找到的关键字加颜色显示
$ grep -n ' the ' regular_express.txt
8:I can ' t finish the test.
12:the symbol ' * ' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world Happy is the same with "glad".
18:google is the best tools for search keyword
Karena { dan } memiliki arti khusus di shell, keduanya harus di-escape menggunakan karakter escape.
$ grep -n ' go{2,5}g ' regular_express.txt
Untuk keluaran yang diformat. Itu bukan milik perintah pipeline. Anda perlu menggunakan formulir $() saat mengirimkan data ke printf.
$ printf ' %10s %5i %5i %5i %8.2f n ' $( cat printf.txt )
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
Itu dibuat oleh Alfred Aho, Peter Weinberger, dan Brian Kernighan. Nama awk adalah inisial ketiga pendirinya.
awk memproses satu baris pada satu waktu. Unit pemrosesan terkecil adalah bidang. Metode penamaan setiap bidang adalah