struct stat { dev_t st_dev; /* perangkat*/ ino_t st_ino; /* simpul*/ mode_t st_mode; /* mode*/ nlink_t st_nlink; /* tautan keras*/ uid_t st_uid; ID Grup */ dev_t st_rdev; /* Jenis perangkat */ off_t st_off; /* Jumlah byte dalam file*/ unsigned long st_blksize; /* Ukuran blok*/ unsigned long st_blocks; /* Jumlah blok*/ time_t st_atime; /* Waktu akses terakhir*/ time_t st_mtime; /time_t st_ctime; /* Waktu perubahan terakhir (mengacu pada atribut) */};Mari pelajari atribut ini satu per satu. Jika Anda perlu melihat atribut file tertentu, gunakan
statusCukup keluarkan perintah dan itu akan mencantumkan informasi sesuai dengan struktur di atas. Selain itu,
akuPerintah ini juga dapat menampilkan atribut file yang relevan setelah mengikuti parameter tertentu, seperti
-lparameter.
Jenis file sesuai dengan yang di atas
st_modeAda banyak jenis file, seperti file biasa, tautan simbolik (tautan keras, tautan lunak), file pipa, file perangkat (perangkat simbolik, perangkat blok), file soket, dll. Jenis file yang berbeda sesuai dengan fungsi dan peran yang berbeda.
$ ls -ltotal 12drwxr-xr-x 2 akar akar 4096 07-12-2007 20:08 direktori_fileprw-r--r-- 1 akar akar 0 07-12-2007 20:18 fifo_pipebrw-r--r-- 1 akar akar 3, 1 2007-12-07 21:44 hda1_block_dev_filecrw-r--r-- 1 akar akar 1, 3 07-12-2007 21:43 null_char_dev_file-rw-r--r-- 2 akar akar 506 07-12-2007 21:55 regular_file-rw -r--r-- 2 akar akar 506 07-12-2007 21:55 regular_file_hard_linklrwxrwxrwx 1 root root 12 07-12-2007 20:15 regular_file_soft_link -> regular_file$ stat direktori_file/ File: `directory_file/' Ukuran: 4096 Blok: 8 Blok IO: 4096 direktoriPerangkat: 301h/769d Inode: 521521 Tautan: 2Akses: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)Akses: 07-12-2007 20:08:18.000000000 +0800Modifikasi: 2007- 12-07 20:08:18.000000000 +0800Perubahan: 07-12-2007 20:08:18.000000000 +0800$ stat null_char_dev_file File: `null_char_dev_file' Ukuran: 0 Blok: 0 Blok IO: 4096 karakter file khususPerangkat: 301h/769d Inode: 521240 Tautan: 1 Jenis perangkat: 1,3Akses: (0644/crw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Akses: 07-12-2007 21 :43:38.000000000 +0800Ubah: 07-12-2007 21:43:38.000000000 +0800Perubahan: 07-12-2007 21:43:38.000000000 +0800
Deskripsi: Lulus
akuAnda dapat melihat bahwa karakter pertama dari setiap baris hasil perintah berbeda satu sama lain, yang hanya mencerminkan jenis file yang berbeda.
DMewakili direktori,
-Mewakili file biasa (atau tautan keras),
akuMewakili tautan simbolis,
PMewakili file pipa,
BDan
CMewakili perangkat blok dan perangkat karakter masing-masing (sebagai tambahan
Scepat
stopkontakdokumen). ada
statusPada hasil perintah, Anda dapat menemukan deskripsi di akhir baris kedua. Seperti yang dapat dilihat dari operasi di atas,
direktori_fileadalah direktori,
statusDigunakan dalam hasil perintah
direktorimewakili, dan
null_char_dev_fileIni menggunakan
file khusus karaktermenjelaskan.
Biasanya hanya direktori, file biasa, dan tautan simbolik yang digunakan, dan jenis file lain jarang ditemui. Namun, file-file ini masih memiliki kegunaannya sendiri. Jika Anda melakukan pengembangan tertanam atau proses komunikasi, dll., File perangkat, Dinamakan pipa (FIFO). Berikut ini adalah operasi sederhana untuk mencerminkan perbedaan di antara keduanya (prinsip spesifiknya akan diperkenalkan di bagian berikutnya "Sistem File Paradigma Pemrograman Shell". Jika Anda tertarik, Anda juga dapat online terlebih dahulu untuk menemukan peran file perangkat , memblokir perangkat dan perbedaan perangkat karakter, dan cara menulis driver perangkat terkait di driver, dll.).
Untuk file biasa: merupakan kumpulan karakter, sehingga dapat dibaca, ditulis, dll.
$ echo halo, dunia > file_reguler$cat file_regulerhalo, dunia
File baru dapat dibuat di direktori, sehingga direktori disebut juga: folder. Struktur file direktori akan dianalisis nanti. Ini sebenarnya menyimpan nama file dari setiap file di bawahnya.
$ cd direktori_file$ sentuh file1 file2 file3
Untuk pipa bernama, pengoperasiannya lebih menarik: jika Anda ingin membacanya, ia akan memblokir kecuali ada konten; jika Anda ingin menulisnya, ia akan memblokir kecuali ada yang datang untuk membacanya; Ini biasanya digunakan dalam komunikasi proses. Dua terminal dapat dibuka
terminal1Dan
terminal2, cobalah:
terminal1$ cat fifo_pipe #Ini memblokir di sini pada awalnya, dan tidak mencetak string pengujian sampai tindakan penulisan berikut terjadi terminal2$ echo test > fifo_pipe
Mengenai perangkat blok, perangkat karakter, file perangkat berhubungan dengan
/dev/hda1Dan
/dev/null, jika Anda pernah menggunakan USB flash drive atau menulis skrip sederhana, sebaiknya Anda menggunakan cara ini sebelumnya: :-)
$ mount hda1_block_dev_file /mnt #Mount partisi pertama hard disk ke /mnt (prinsip pemasangan akan dibahas di bagian selanjutnya) $ echo somefewfef > /dev/null #/dev/null seperti lubang hitam, sesuatu hilang Begitu masuk, semuanya lenyap
Dua file terakhir adalah
file_regulerHard link dan soft link file, kalau dibaca dan ditulis isinya sama, tapi kalau dihapus tidak ada hubungannya satu sama lain. Yang pertama dapat dikatakan sebagai file asli, sedangkan yang kedua hanya memiliki file seperti itu
inode, tetapi tidak ada ruang penyimpanan sebenarnya, disarankan untuk digunakan
statusperintah untuk melihat perbedaan di antara mereka, termasuk mereka
Blok,
inodeSetara, Anda juga dapat mempertimbangkan untuk menggunakan
berbedaBandingkan ukurannya.
$ ls regular_file*ls regular_file* -l-rw-r--r-- 2 akar akar 204800 07-12-2007 22:30 regular_file-rw-r--r-- 2 akar akar 204800 07-12-2007 22 :30 regular_file_hard_linklrwxrwxrwx 1 akar akar 12 07-12-2007 20:15 regular_file_soft_link -> regular_file$ rm regular_file # Hapus file asli $ cat regular_file_hard_link # Hard link masih ada, dan masih ada konten di dalamnya fefe$ cat regular_file_soft_linkcat: regular_file_soft_link: Tidak ada file atau direktori seperti itu
Meskipun file soft linknya sendiri masih ada, namun tidak dapat membaca apapun karena tidak menyimpan konten itu sendiri. Inilah perbedaan antara soft link dan hard link.
Perlu dicatat bahwa tautan keras tidak dapat melintasi sistem file, tetapi tautan lunak bisa. Selain itu, tidak diperbolehkan membuat hard link ke direktori.
Jenis file dibagi menjadi beberapa jenis di atas dari tingkat sistem file Linux, tetapi file biasa masih dapat dibagi (sesuai dengan "struktur data" konten file), seperti file teks umum, file yang dapat dieksekusi
PERIdokumen,
anehdokumen,
jpgformat gambar,
menukarfile partisi,
PERIJika Anda tertarik dengan prinsip kerja file tersebut, disarankan untuk membaca referensi dan
PERIBagian file yang relevan, bagian ini sangat penting bagi para insinyur Linux tertanam.
Meskipun berbagai jenis file biasa memiliki alat operasinya masing-masing, Anda tetap dapat membaca dan menulisnya secara langsung. Saya akan menyebutkan alat tersebut terlebih dahulu dan membahas detailnya nanti.
od: "Ekspor" konten file dalam format oktal atau lainnya.
string: Membaca karakter dalam file (karakter yang dapat dicetak)
gcc,
gdb,
membaca diri sendiri, keberatan
Tunggu:PERI
Alat analisis dan pemrosesan file (gcc
penyusun,gdb
debugger,membaca diri sendiri
Analisis file ELF,alat dekompilasi objdump`)
Tambahkan perintah lain yang sangat penting,
mengajukan, perintah ini digunakan untuk melihat properti berbagai jenis file. Dan
statusDibandingkan dengan perintah, ini dapat mengidentifikasi lebih jauh file biasa yaitu
statusperintah ditampilkan
berkas biasa. Karena
berkas biasaAda berbagai struktur yang berbeda dan karenanya ditafsirkan secara berbeda dan melakukan tindakan berbeda dengan dukungan sistem operasi. Meskipun, di Linux, sufiks tertentu ditambahkan ke file sehingga pengguna dapat dengan mudah mengidentifikasi jenis file, sistem operasi Linux mengidentifikasi berbagai jenis file berdasarkan header file, bukan akhiran file, yang membuatnya semakin sulit untuk menafsirkan file. file yang sesuai. Rawan kesalahan. Berikut ini adalah pengenalan singkat
mengajukanPenggunaan perintah.
$ file ././: direktori$ file /etc/profile/etc/profile: teks bahasa Inggris ASCII$ file /lib/libc-2.5.so/lib/libc-2.5.so: ELF 32-bit LSB objek bersama, Intel 80386, versi 1 (SYSV), tidak dihapus$ file /bin/test/bin/test: ELF 32-bit LSB yang dapat dieksekusi, Intel 80386, versi 1 (SYSV), ditautkan secara dinamis (menggunakan lib bersama), dilucuti$ file /dev/hda/dev/hda: blok khusus (3/0)$ file /dev/console/dev/console: karakter khusus (5/1) $ cp /etc/profile .$ tar zcf profile.tar.gz profile$ file profile.tar.gzprofile.tar.gz: data terkompresi gzip, dari Unix, terakhir diubah: Sel 4 Jan 18:53:53 2000$ mkfifo fifo_test$ file fifo_testfifo_test: fifo (bernama pipa)
Lihat penggunaan lainnya
mengajukanManual perintah, tentang
mengajukanUntuk prinsip implementasi perintah, silakan merujuk ke
sihirmanual (lihat
/etc/file/magicFile, pahami apa itu file
angka ajaibTunggu).
Sebagai sistem multi-pengguna, Linux memberikan kemudahan besar bagi banyak pengguna untuk menggunakan sistem yang sama, misalnya, untuk file di sistem, Linux membedakan pengguna yang berbeda berdasarkan pemiliknya untuk mengalokasikan izin pengoperasian mereka ke file yang berbeda. Untuk memudahkan pengelolaan, pemilik file menyertakan pengguna yang memiliki file tersebut dan grup pengguna yang memiliki file tersebut, karena pengguna dapat menjadi anggota beberapa grup. Pertama, mari kita perkenalkan secara singkat pengelolaan pengguna dan grup di Linux.
Linux menyediakan serangkaian perintah untuk mengelola pengguna dan grup, seperti untuk membuat pengguna
tambahan penggunaDan
tambahkan grup, digunakan untuk menghapus pengguna
penggunadelDan
grupdel,Selain itu,
kata sandiPerintah ini digunakan untuk mengubah kata sandi pengguna. Tentu saja Linux juga menyediakan dua konfigurasi yang sesuai yaitu
/etc/passwdDan
/etc/group, selain itu, beberapa sistem juga memasukkan kata sandi secara terpisah di file konfigurasi
/etc/shadowtengah. Silakan merujuk ke informasi berikut untuk penggunaan detailnya. Mereka tidak akan diperkenalkan di sini. Hanya beberapa hubungan antara file dan pengguna yang akan diperkenalkan.
$ chown nama pengguna: nama grup nama file
Jika Anda ingin mengubah pemilik semua file dalam direktori secara rekursif, Anda dapat menambahkan
-Rpilihan.
Dari struktur file yang tercantum di awal bagian ini, kita dapat melihat bahwa hanya ada pengguna
PENGENALdan kelompok
PENGENALinformasi, tapi
aku -lHasilnya menunjukkan informasi nama pengguna dan nama grup. Mari kita lihat dulu
-NHasil dari:
$ ls -n regular_file-rw-r--r-- 1 0 0 115 07-12-2007 23:45 regular_file$ ls -l regular_file-rw-r--r-- 1 akar akar 115 07-12-2007 23:45 file_reguler
Seperti yang Anda lihat,
aku -nPengguna ditampilkan
PENGENALdan kelompok
PENGENAL,Dan
aku -lNama mereka ditampilkan. Ingat dua file konfigurasi yang disebutkan di atas
/etc/passwdDan
/etc/groupMengajukan? Mereka menyimpan pengguna masing-masing
PENGENALdan nama pengguna, grup
PENGENALhubungan yang sesuai dengan nama grup, sehingga mudah untuk dipikirkan
aku -lBagaimana perintah melewati struktur file saat diimplementasikan
PENGENALInformasi menemukan informasi nama yang sesuai. Jika Anda ingin menjadi benar
aku -lUntuk pemahaman yang lebih baik tentang implementasi perintah, Anda dapat menggunakan
jejakLacak untuk melihat apakah ia membaca kedua file konfigurasi.
$ strace -f -o strace.log ls -l regular_file$ cat strace.log |. egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
menjelaskan:
jejakDapat digunakan untuk melacak panggilan sistem dan sinyal. sebagai
gdbSeperti alat canggih lainnya, ini didasarkan pada sistem
ptraceImplementasi panggilan sistem.
Faktanya, tidak baik untuk memperkenalkan pemilik dan izin secara terpisah, karena hanya kombinasi keduanya yang memungkinkan sistem multi-pengguna, jika tidak, tidak mungkin untuk mengisolasi operasi pengguna yang berbeda pada file tertentu, sehingga operasi file izin diperkenalkan di bawah ini.
dari
aku -lDi 9 karakter terakhir kolom pertama hasil perintah, Anda dapat melihat informasi serupa dengan ini
rwxr-xr-x, yang sesuai dengan struktur file
st_modebagian(
st_modeBerisi dua bagian: informasi jenis file dan informasi izin file). Jenis informasi ini dapat dibagi menjadi tiga bagian, yaitu
wx,
rx,
rx, masing-masing sesuai dengan izin pengoperasian pengguna, grup, dan grup lain pada file tempat file tersebut berada
wxSalah satu darinya berarti dapat dibaca, ditulis, dan dapat dieksekusi, jika
-Menunjukkan bahwa tidak ada izin tersebut. Sejalan dengan itu, dapat direpresentasikan dalam oktal, seperti
rwxr-xr-xIni dapat dinyatakan sebagai biner 111101101, dan oktal yang sesuai adalah 755. Oleh karena itu, ada banyak cara untuk mengubah izin pengoperasian file, dan semuanya dapat dilakukan melalui
chmodperintah untuk memodifikasi.
Misalnya, taruh
file_regulerUbah izin file agar dapat dibaca, ditulis, dan dieksekusi oleh semua pengguna, yaitu,
rwxrwxrwx, bisa juga dinyatakan sebagai 111111111, diterjemahkan ke dalam oktal, menjadi 777. Izin ini dapat diubah dengan dua cara.
$ chmod a+rwx regular_file
atau
$chmod777file_reguler
menjelaskan:
AMengacu pada pengguna yang digunakan. Jika Anda hanya ingin memberikan izin baca, tulis, dan eksekusi kepada pengguna, maka Anda bisa
AGanti dengan
kamu;Dan
+Tambahkan saja izin. Sebaliknya, jika Anda ingin menghapus izin tertentu, gunakan
-,Dan
wxIni sesuai dengan dapat dibaca, dapat ditulis, dan dapat dieksekusi. Lihat penggunaan lainnya
chmodBantuan perintah.
Sebenarnya selain izin tersebut, ada dua izin lain yang berkaitan dengan keamanan, yakni
setuid/setgiddan kontrol hanya-baca, dll.
Jika file (program atau perintah) diatur
setuid/setgidizin, maka pengguna akan dapat
akarOleh karena itu, hal ini dapat menimbulkan risiko keamanan; jika izin hanya-baca pada file ditetapkan, pengguna hanya akan memiliki izin yang dapat dibaca untuk file tersebut, sehingga menghindari situasi seperti
rm -rfOperasi yang "keji" ini membawa berkah tertentu.
Secara default, sistem tidak mengizinkan pengguna biasa untuk mengeksekusi
kata sandiperintah, lulus
setuid/setgid, pengguna biasa dapat diberi wewenang untuk menjalankannya.
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 19-06-2007 14:59 /usr/bin/passwd$ su #Beralih ke pengguna root dan tambahkan " Sticky bit" $ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 root root 36092 19-06-2007 14:59 /usr/bin/passwd$ exit$ passwd #Pengguna biasa dapat mengubah kata sandi mereka dengan menjalankan perintah ini.
menjelaskan:
setuidDansetgidBit memungkinkan pengguna biasa untuk melakukannyaakarPeran pengguna hanya berjalanakarSebuah program atau perintah yang hanya dapat dijalankan oleh sebuah akun.
Meskipun hal ini memberikan kemudahan bagi manajemen sampai batas tertentu, misalnya, operasi di atas memungkinkan pengguna biasa untuk mengubah akun mereka
akarAkun untuk melakukan pekerjaan ini untuk setiap pengguna. tentang
setuid/setgidUntuk penjelasan lebih detail, silakan merujuk pada informasi rekomendasi terakhir.
Contoh izin hanya baca: mengunci file penting (tambahkan bit yang tidak dapat diubah [tidak dapat diubah])) untuk menghindari konsekuensi bencana yang disebabkan oleh berbagai kesalahan pengoperasian (seperti
:``rm -rf)
$ chattr +i regular_file$ lsattr regular_file----i-------- regular_file$ rm regular_file #Setelah menambahkan bit yang tidak dapat diubah, Anda tidak dapat melakukan aktivitas "destruktif" apa pun pada file file biasa `file_reguler'? yrm: tidak dapat menghapus `file_reguler': Operasi tidak diizinkan$ chattr -i file_reguler #Jika Anda ingin melakukan operasi reguler pada file tersebut, Anda dapat menghapus bit$ rm file_reguler ini
menjelaskan:
obrolanDapat digunakan untuk mengatur izin khusus pada file. Untuk penggunaan lebih lanjut, silakan merujuk ke
obrolanmembantu.
Untuk file biasa, ukuran file adalah ukuran konten file. Sebagai file khusus, direktori menyimpan berbagai informasi file yang diatur dalam struktur direktori. Oleh karena itu, ukuran direktori umumnya tetap mempunyai batas atas yaitu ukurannya dibagi dengan panjang nama file. "Ukuran file" dari file perangkat sesuai dengan nomor perangkat mayor dan minor pada perangkat, dan ukuran file pipa terkenal selalu 0 karena properti baca dan tulis khusus. Tautan keras (file direktori tidak dapat membuat tautan keras) pada dasarnya adalah salinan lengkap dari file asli, jadi ukurannya adalah ukuran file asli. Tautan lunak hanyalah a
inode, menyimpan pointer ke file asli, sehingga ukurannya hanya jumlah byte dari nama file asli. Selanjutnya kita meningkatkan daya ingat melalui demonstrasi.
Contoh ukuran file untuk file asli dan file tertaut:
$ echo -n abcde > regular_file #Tulis 5 byte ke regular_file $ ls -l regular_file*-rw-r--r-- 2 root root 5 08-12-2007 15:28 regular_file-rw-r--r -- 2 akar akar 5 08-12-2007 15:28 regular_file_hard_filerwxrwxrwx 1 akar akar 12 07-12-2007 20:15 regular_file_soft_link -> regular_filerwxrwxrwx 1 akar akar 22 08-12-2007 15:21 regular_file_soft_link_link -> regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# J} #Tautan lunak menyimpan persis jumlah byte dari nama file dari file asli yang ditunjuknya 12 22Ukuran file sesuai dengan nomor perangkat: nomor perangkat mayor dan minor
$ ls -l hda1_block_dev_filebrw-r--r-- 1 akar akar 3, 1 07-12-2007 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 akar akar 1, 3 07-12-2007 21:43 null_char_dev_file
Tambahan: utama
(utama), kaliNomor perangkat (minor) memiliki fungsi berbeda. Ketika file perangkat dibuka, kernel menentukan nomor perangkat utama (
nomor utama) untuk mencari driver yang telah terdaftar dengan nomor perangkat utama di kernel (bisa
kucing /proc/devicesPeriksa korespondensi antara nomor driver terdaftar dan nomor perangkat utama), dan nomor perangkat kecil (
nomor kecil) diteruskan ke driver itu sendiri melalui kernel (lihat Bab 10 dari "Linux Primer"). Oleh karena itu, untuk kernel, driver yang sesuai dapat ditemukan untuk mengidentifikasi perangkat melalui nomor perangkat utama, dan untuk driver, agar dapat mengakses perangkat dengan lebih kompleks, seperti mengakses berbagai bagian perangkat (seperti sebagai perangkat keras dibagi menjadi beberapa bagian melalui partisi) bagian, muncul
hda1,
hda2,
hda3dll.), seperti menghasilkan angka acak dengan persyaratan berbeda (misalnya
/dev/acakDan
/dev/urandomTunggu).
Besarnya file direktori, kenapa seperti ini? Lihatlah ukuran struktur direktori di bawah ini. Blok file direktori menyimpan entri untuk semua nama file dalam direktori.
$ ls -ld direktori_file/drwxr-xr-x 2 akar akar 4096 07-12-2007 23:14 direktori_file/
Struktur direktorinya adalah sebagai berikut:
struct dirent { long d_ino; off_t d_off; unsigned short d_reclen; char d_name[NAME_MAX+1];Atribut waktu suatu file dapat mencatat informasi operasi pengguna pada file tersebut, dan akan memberikan referensi bagi administrator dalam manajemen sistem, menentukan informasi versi file, dll. Oleh karena itu, saat membaca dokumen, disarankan untuk menggunakannya
kucingTunggu alat membaca, jangan gunakan alat pengeditan
vimBacalah, karena meskipun tidak ada operasi modifikasi yang dilakukan, setelah perintah simpan dijalankan, informasi stempel waktu file akan diubah.
Nama file tidak disimpan dalam struktur file, tetapi dalam struktur direktori tempatnya berada. Oleh karena itu, nama file harus unik dalam tingkat direktori yang sama.
Untuk file, operasi umum meliputi pembuatan, penghapusan, modifikasi, pembacaan, penulisan, dll. "Tindakan di balik layar" terkait dengan berbagai operasi akan dianalisis secara rinci di bab berikutnya "Operasi Sistem File Paradigma Pemrograman Shell".
stopkontakFile adalah jenis file khusus yang dapat dibuat melalui bahasa C. File ini tidak akan diperkenalkan di sini (tidak diketahui apakah dapat dibuat secara langsung dengan perintah).
$ touch regular_file #Buat file normal $ mkdir direktori_file #Buat file direktori, yang dapat berisi lebih banyak file $ ln regular_file regular_file_hard_link #Hard link, salinan lengkap dari file asli $ ln -s regular_file regular_file_soft_link #Mirip dengan penunjuk file, menunjuk ke file asli $mkfifo fifo_pipe # atau dibuat melalui mknod fifo_pipe p, FIFO memenuhi karakteristik first-in-first-out $ mknod hda1_block_dev_file b 3 1 #Blokir perangkat $ mknod null_char_dev_file c 1 3 #Perangkat karakter
Membuat file sebenarnya menambahkan node ke sistem file (
inode), informasi node akan disimpan ke tabel node sistem file. Lebih jelasnya, ini berarti daun (file) atau cabang baru (file direktori, jenis daun yang tumbuh di atasnya) tumbuh di pohonpohon
perintah atauPerintah ls` disajikan secara visual. Dari perspektif penggunaan sehari-hari, sistem file dapat dipandang sebagai pohon terbalik, karena sangat mirip dan mudah diingat.
$ pohon direktori saat ini
atau
$ ls direktori saat ini
Kesan paling langsung dari menghapus file adalah file tersebut sudah tidak ada lagi. Hal ini juga dapat dicapai dengan
akuatau
pohonPerintah tersebut disampaikan seperti ranting yang dipotong dari pohon atau daun yang dipetik. Faktanya, setelah penghapusan, file-file ini tidak langsung hilang, tetapi hanya ditandai untuk dihapus. Oleh karena itu, jika tidak ada operasi penulisan disk yang relevan untuk "menutupi" ruang disk yang sesuai setelah penghapusan, pada prinsipnya file-file tersebut dapat dipulihkan , pekerjaan seperti itu seringkali merepotkan, jadi harap berpikir dua kali sebelum menghapus beberapa data penting, seperti melakukan pekerjaan cadangan).
Perintah khusus untuk menghapus file adalah
rm, jika Anda ingin menghapus direktori kosong, Anda dapat menggunakan
rmdirMemesan. Misalnya:
$ rm file_reguler$ rmdir direktori_file$ rm -r direktori_file_not_empty
rmAda dua parameter yang sangat penting, satu adalah
-F, perintah ini sangat "biadab" dan mungkin menyusahkan banyak pengguna Linux
-Saya, perintah ini sangat "lembut", dan mungkin membuat banyak pengguna merasa kesal. Yang mana yang Anda gunakan bergantung pada "suasana hati" Anda. Jika Anda telah melakukan pekerjaan cadangan yang memadai atau mengambil beberapa tindakan efektif untuk menghindari konsekuensi bencana, Anda akan merasa lebih nyaman saat melakukan tugas ini.
Menyalin file biasanya merujuk pada salinan "sementara" dari isi file. Melalui pengenalan di awal bagian ini, kita harus memahami bahwa tautan keras dan tautan lunak file juga "menyalin file" dalam arti tertentu. Yang pertama menyalin konten file secara serempak, dan yang terakhir "menyalin" secara serempak kasus membaca dan menulis. Misalnya:
menggunakan
cpperintah untuk menyalin file secara normal (menyalin direktori memerlukan
-Rpilihan)
$ cp regular_file regular_file_copy$ cp -r direktori_file direktori_file_copy
Buat tautan keras (
linkDan
menyalinPerbedaannya adalah yang terakhir diperbarui secara serempak, tetapi yang pertama tidak. Setelah disalin, keduanya tidak lagi relevan)
$ dalam file_reguler regular_file_hard_link
Buat tautan lunak
$ ln -s regular_file regluar_file_soft_link
Memodifikasi nama file sebenarnya hanya mengubah pengenal nama file. bisa lewat
mvperintah untuk mengubah nama file (yaitu mengganti nama).
$mv regular_file regular_file_new_name
Mengedit file sebenarnya memanipulasi konten file, yang berhubungan dengan pengeditan file teks biasa. Hal ini terutama melibatkan membaca, menulis, menambahkan, menghapus, dll. dari konten file. Tugas-tugas ini biasanya dilakukan melalui editor khusus, seperti editor baris perintah.
vim,
emacsdan antarmuka grafis
gedit, ketTunggu. Jika itu adalah file tertentu, akan ada alat pengeditan dan pemrosesan khusus, seperti perangkat lunak pengolah gambar
gimp, perangkat lunak pengedit dokumen
Kantor TerbukaTunggu. Alat-alat ini umumnya memiliki tutorial khusus.
Berikut ini adalah pengenalan singkat tentang operasi umum pengeditan file melalui pengalihan di Linux.
Buat file dan tulis
abcde
$ echo abcde > file_regular_baru
Tambahkan baris lain ke file di atas
abcde
$ gema abcde >> file_regular_baru
Membaca file baris demi baris
$saat membaca LINE; lakukan echo $LINE; selesai < test.sh
Tip: Jika Anda ingin menjalankan variabel string yang berisi pengalihan sebagai perintah, gunakan
evaluasiperintah, jika tidak, pengalihan tidak dapat ditafsirkan. Misalnya,
$ redirect=echo abcde >test_redirect_file$ $redirect #Di sini > akan dicetak sebagai karakter > alih-alih ditafsirkan sebagai pengalihan abcde >test_redirect_file$ eval $redirect #Ini akan ditafsirkan > sebagai pengalihan$ cat test_redirect_fileabcde
Mengompresi dan mendekompresi file adalah untuk memfasilitasi transmisi konten file dalam arti tertentu, tetapi mungkin juga memiliki beberapa kegunaan khusus, seperti file gambar kernel dan sistem file, dll. (Untuk pengetahuan lebih lanjut terkait, silakan merujuk ke materi berikutnya).
Berikut adalah beberapa metode kompresi dan dekompresi yang umum:
ter
$ tar -cf file.tar file #Kompres $ tar -xf file.tar #Dekompresi
gz
$ gzip -9 berkas $ berkas gunzip
tar.gz
$ tar -zcf file.tar.gz file$ tar -zxf file.tar.gz
bz2
$ berkas bzip2$ berkas bunzip2
tar.bz2
$ tar -jcf file.tar.bz2 file$ tar -jxf file.tar.bz2
Dari demonstrasi di atas, seharusnya sudah sangat jelas
ter,
bzip2,bunzip2,
gzip,gunzip
Apakah ini peran komando? Jika masih belum jelas, lakukan lebih banyak dan bandingkan beberapa perintah di atas dan periksa manualnya:man tar`...
Pencarian file mengacu pada pencarian lokasi file dengan atribut tertentu dalam sistem file dalam hierarki direktori tertentu. Jika lokasi ini diperluas ke seluruh jaringan, dapat dinyatakan sebagai a
URLAlamat, untuk alamat lokal, dapat dinyatakan sebagai
mengajukan: //+jalur lokal. Jalur lokal di sistem Linux dimulai dengan
/Untuk memulainya, misalnya, direktori home setiap pengguna dapat direpresentasikan sebagai:
file:///rumah/. Berikut ini hanya memperkenalkan beberapa metode pencarian file lokal.
menemukanPerintah ini menyediakan metode pencarian "just-in-time" Berdasarkan permintaan pengguna, perintah ini melintasi semua file dalam hierarki direktori yang ditentukan hingga file yang diperlukan ditemukan. Dan
diperbaruib+temukanMemberikan strategi pencarian "cepat",
diperbaruibPerbarui dan buat database file lokal, sementara
menemukanCari database ini berdasarkan nama file untuk menemukan file yang sesuai dengan cepat. Yang pertama mendukung pencarian melalui berbagai atribut file dan menyediakan antarmuka (
-eksekutifoption) digunakan untuk memproses file yang dicari. Oleh karena itu, ini memberikan kemudahan besar bagi penggemar skrip "perintah tunggal", tetapi untuk pencarian berdasarkan nama file,
diperbaruib+temukanMetode ini akan meningkatkan efisiensi pencarian secara signifikan. Berikut adalah pengenalan singkat tentang kedua metode tersebut:
menemukanDemonstrasi penggunaan perintah dasar
$ find ./ -name *.c -o -name *.h #Temukan semua file bahasa C, -o adalah atau $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# Pindahkan file yang ditemukan ke c_files.Penggunaan di atas dapat digunakan
xargssubstitusi perintah
perintah $fin ./ -name *.c -o -name *.h |
Ubah semua akhiran nama file menjadi huruf besar.
$ temukan ./ -nama *.c -o -nama *.h |.xargs -i ./toupper.sh '{}' ./c_files/toupper.shIni adalah file pemrosesan yang perlu kita terapkan untuk mengubah huruf kecil menjadi huruf besar. Implementasi spesifiknya adalah sebagai berikut:
$ cat toupper.sh#!/bin/bash# {} akan diperluas ke baris saat ini dan menjadi argumen pertama skrip iniFROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COMdiperbaruib+temukanDemonstrasi penggunaan dasar
$updateb #Perbarui perpustakaan $ cari temukan*.gz #Temukan semua paket terkompresi gz yang berisi string find
Sebenarnya, selain dua perintah di atas, ada juga alat pencarian perintah di Linux:
yangDan
dimana, yang pertama digunakan untuk mengembalikan path lengkap dari perintah tertentu, sedangkan yang kedua digunakan untuk mengembalikan perintah tertentu, file sumber,
Jalur ke file man. Misalnya, temukanJalur absolut ke perintah find`:
$ yang menemukan/usr/bin/find$ di mana findfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
Perlu disebutkan bahwa jika Anda ingin mencari file berdasarkan kontennya, maka
menemukanDan
diperbaruib+temukanmaupun
yang,
dimanaTidak ada yang bisa kita lakukan, alternatifnya adalah
memahami,
sedTunggu perintahnya, yang pertama ditambahkan
-RDi masa depan, parameter tersebut dapat digunakan untuk mencari konten file tertentu dalam file di direktori tertentu, dan kemudian digunakan
-SayaSetelah melewati parameter, konten file dapat diganti. Penggunaan dasarnya telah diperkenalkan secara rinci pada bab sebelumnya dan tidak akan diulangi di sini.
Perlu ditekankan bahwa perintah ini sangat berarti untuk operasi file. Mereka mengabstraksi struktur sistem file sampai batas tertentu, menyederhanakan pengoperasian seluruh sistem file menjadi pengoperasian satu file. Jika satu file hanya mempertimbangkan bagian teks, pada akhirnya akan diubah menjadi operasi string sebelumnya apa yang telah dibahas pada bagian sebelumnya. Untuk lebih memahami struktur organisasi file dan hubungan antar file, maka sistem file akan dibahas secara mendalam pada bagian berikutnya.
Melihat sistem file virtual Linux dari file I/O
Analisis sistem file Linux
Sistem File "Linux Core" Bab 9
Driver Perangkat Linux, Edisi ke-3
Tip: Beberapa tip untuk pengalihan I/O Linux
Memuat, menguraikan, dan contoh analisis tautan dinamis file ELF di Linux pada platform Intel:
bagian1,
bagian2
Teknologi debugging skrip shell
Ringkasan format file ELF dan proses eksekusi pemuatan program
Pemrograman bahasa C di Linux - operasi file
Operasi file bagian dari pemrograman bahasa C di Linux
Standar Hirarki Sistem File
Pelajari cara memulihkan file Ext3 yang terhapus di sistem Linux
Gunakan mc untuk memulihkan file yang terhapus
Prinsip penghapusan dan pemulihan Linux ext3 yang tidak disengaja
Daftar lengkap metode kompresi/dekompresi Linux
Semuanya satu byte
Mengingat pentingnya file dan sistem file, maka akan diperkenalkan dalam tiga subbagian: file, sistem file, program dan proses. Di bagian "File", kami terutama memperkenalkan atribut dasar dan pengoperasian reguler file. Di bagian "Sistem File", kami akan membahas secara mendalam berbagai bagian sistem file Linux (termasuk struktur sistem file Linux dan sistem file Linux). struktur umum sistem file tertentu. Analisis, prinsip kerja driver yang mendasarinya), bagian "Program dan Proses" akan secara khusus membahas konten yang relevan dari file yang dapat dieksekusi (termasuk berbagai jenis program, proses pemuatan dan eksekusi, interaksi antara berbagai jenis program). proses [pipa perintah dan pipa tanpa nama, Komunikasi sinyal], kontrol proses, dll.)
Penting untuk membahas dengan jelas arti ukuran direktori. Selain itu, yang terbaik adalah mempertimbangkan semua operasi file konvensional, termasuk membaca file, menulis, mengeksekusi, menghapus, memodifikasi, menyalin, kompresi/dekompresi, dll.
Saya baru saja kembali dari Shanghai di sore hari. , dan menemukan bahwa Shanghai adalah kota yang indah. Ketika saya kembali, saya mulai memilah blog ini yang telah saya lewatkan selama dua minggu karena kompetisi.
Pada tanggal 15 Desember, tambahkan bagian pencarian file