Jadual Kandungan
1. Jalankan arahan daripada sejarah menggunakan nombor arahan " > 1. Jalankan arahan daripada sejarah menggunakan nombor arahan
2. Jalankan perintah yang dilaksanakan sebelum ini dalam Linux" >2. Jalankan perintah yang dilaksanakan sebelum ini dalam Linux
3 Hantar parameter arahan sebelumnya kepada arahan baharu" >3 Hantar parameter arahan sebelumnya kepada arahan baharu
4. Cara mengendalikan dua atau lebih parameter dalam arahan" >4. Cara mengendalikan dua atau lebih parameter dalam arahan
5 Jalankan arahan terkini berdasarkan kata kunci tertentu" >5 Jalankan arahan terkini berdasarkan kata kunci tertentu
6、在Linux中重复上次执行的命令" >6、在Linux中重复上次执行的命令
7、使用’!’操作符删除除一个文件之外的所有文件" >7、使用’!’操作符删除除一个文件之外的所有文件
Rumah Operasi dan penyelenggaraan Nginx Lapan penggunaan misteri pengendali '!' dalam arahan Linux

Lapan penggunaan misteri pengendali '!' dalam arahan Linux

Jun 27, 2023 pm 12:51 PM
linux Operator

Penggunaan kebanyakan arahan Linux menggunakan simbol '!' mungkin berbeza dalam cangkerang yang berbeza. Walaupun contoh yang saya sediakan biasanya digunakan dalam cengkerang bash, beberapa cangkerang Linux yang lain mungkin mempunyai pelaksanaan yang berbeza atau mungkin tidak menyokong penggunaan simbol '!' tertentu.

Mari kita menyelami penggunaan simbol ‘!’ yang mengejutkan dan misteri dalam arahan Linux.

Linux 命令中“!”操作符的八个神秘用途

1. Jalankan arahan daripada sejarah menggunakan nombor arahan

Petua berguna ialah anda boleh mencari arahan sejarah daripada arahan yang dilaksanakan sebelum ini dan menjalankannya semula. Mula-mula, cari nombor arahan dengan menjalankan arahan 'history'.

linuxmi@linuxmi:~/www.linuxmi.com$ history
Salin selepas log masuk

Linux 命令中“!”操作符的八个神秘用途

Cari arahan yang dilaksanakan baru-baru ini dalam Linux

Untuk menjalankan arahan daripada sejarah mengikut nombor arahan, anda boleh menggunakan simbol ‘!’ diikuti dengan nombor arahan seperti yang ditunjukkan di bawah.

$ !58
Salin selepas log masuk

Linux 命令中“!”操作符的八个神秘用途

Jalankan arahan mengikut nombor arahan

Apabila anda melaksanakan arahan di atas, ia akan menjalankan arahan pada baris 58 dalam sejarah.

Sila ambil perhatian bahawa nombor arahan sebenar mungkin berbeza bergantung pada sejarah arahan anda. Anda boleh menggunakan perintah sejarah untuk melihat senarai arahan dan nombor barisnya.

2. Jalankan perintah yang dilaksanakan sebelum ini dalam Linux

Anda boleh menjalankan perintah yang dilaksanakan sebelum ini mengikut urutan yang dijalankan Perintah terakhir akan diwakili sebagai -1, yang kedua hingga terakhir sebagai -2, dan terakhir hingga terakhir. Yang ketujuh ialah -7, dan seterusnya. Anda boleh menggunakan !-n, di mana n ialah nombor salingan bagi arahan yang ingin anda petik. Seperti yang ditunjukkan di bawah

$ history$ !-3$ !-6$ !-10
Salin selepas log masuk

Linux 命令中“!”操作符的八个神秘用途

Jalankan semula arahan dalam Linux

3 Hantar parameter arahan sebelumnya kepada arahan baharu

Saya perlu menyenaraikan kandungan direktori '/home/linuxmi/snap'. , jadi saya laksanakan saya jalankan arahan berikut:

$ ls /home/linuxmi/snap
Salin selepas log masuk

Kemudian saya sedar bahawa saya harus menjalankan perintah "ls -l" untuk melihat fail yang boleh laku. Daripada menaip semula keseluruhan perintah, hanya hantar parameter yang diluluskan dalam perintah sebelumnya kepada perintah baharu ini, seperti ini:

$ ls -l !$
Salin selepas log masuk

Linux 命令中“!”操作符的八个神秘用途

Di sini, '!$' menghantar parameter yang diluluskan dalam perintah sebelumnya kepada Perintah baharu ini.

4. Cara mengendalikan dua atau lebih parameter dalam arahan

Andaikan saya mencipta fail teks bernama 1.txt pada desktop.

linuxmi@linuxmi ~/www.linuxmi.com% touch /home/linuxmi/linuxmi.go
Salin selepas log masuk

Kemudian salin ke direktori ‘/home/avi/Downloads’ menggunakan arahan cp menggunakan laluan penuh.

linuxmi@linuxmi ~/www.linuxmi.com% cp /home/linuxmi/linuxmi.go /home/linuxmi/go
Salin selepas log masuk

Sekarang kita menghantar dua parameter dalam arahan cp. Yang pertama ialah '/home/avi/Desktop/1.txt' dan yang kedua ialah '/home/avi/Downloads'. Kita boleh mencetak dua parameter dengan cara yang berbeza dengan melaksanakan arahan gema dan menggunakan parameter yang berbeza.

linuxmi@linuxmi ~/www.linuxmi.com% echo "第一个参数是:!^"echo "第一个参数是:/home/linuxmi/linuxmi.go"第一个参数是:/home/linuxmi/linuxmi.golinuxmi@linuxmi ~/www.linuxmi.com% echo "第二个参数是:!cp:2"echo "第二个参数是:/home/linuxmi/go"第二个参数是:/home/linuxmi/go
Salin selepas log masuk

Sila ambil perhatian bahawa parameter pertama boleh dipaparkan sebagai "!^", manakala parameter lain boleh dicetak dengan melaksanakan "![Nama Perintah]:[Nombor Parameter]".

Dalam contoh di atas, arahan pertama ialah 'cp' dan parameter kedua perlu dicetak. Oleh itu "!cp:2". Untuk arahan xyz dengan 5 parameter, jika anda perlu mendapatkan parameter ke-4, anda boleh menggunakan "!xyz:4" dan menggunakan parameter tersebut mengikut keperluan. Semua parameter boleh diakses melalui "!*".

Linux 命令中“!”操作符的八个神秘用途

Memproses dua atau lebih parameter

5 Jalankan arahan terkini berdasarkan kata kunci tertentu

Kami boleh melaksanakan perintah yang dilaksanakan baru-baru ini berdasarkan kata kunci. Butirannya adalah seperti berikut:

$ ls /home > /dev/null				[Command 1]$ ls -l /home/linuxmi/linuxmi > /dev/null		[Command 2]	$ ls -la /home/linuxmi/linuxmi.com > /dev/null	[Command 3]$ ls -lA /usr/bin > /dev/null			[Command 4]
Salin selepas log masuk

Di sini kami menggunakan arahan ls, tetapi dengan pilihan yang berbeza dan folder yang berbeza. Selain itu, untuk memastikan konsol bersih, kami akan menghantar output setiap arahan kepada "/dev/null".

Sekarang laksanakan arahan terakhir yang dilaksanakan berdasarkan kata kunci:

$ ! ls			[Command 1]$ ! ls -l		[Command 2]	$ ! ls -la		[Command 3]$ ! ls -lA		[Command 4]
Salin selepas log masuk

Linux 命令中“!”操作符的八个神秘用途

检查输出,你会惊讶地发现你正在运行已经执行过的命令,只是使用了ls关键词。

6、在Linux中重复上次执行的命令

你可以使用(!!)操作符来运行/修改你上次执行的命令,这是一个简写符号,允许你引用在命令行中执行的上一个命令。

例如,我运行了一个单行脚本来查找Linux机器的IP地址:

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/
Salin selepas log masuk

然后突然我发现我需要将上述脚本的输出重定向到一个名为ip.txt的文件中,那么我该怎么办呢?我需要重新输入整个命令并将输出重定向到文件吗?好吧,一个简单的解决方案是使用上箭头键来调出上一条命令,并在末尾添加’> ip.txt’来将输出重定向到文件。

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt
Salin selepas log masuk

感谢上箭头键的救命作用。现在考虑以下情况,下次我运行下面的单行脚本。

ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:
Salin selepas log masuk

当我运行脚本时,bash提示返回了一个错误,信息为“bash: ifconfig: command not found”,我很容易猜到我以一个普通用户的身份运行了这个命令,而它应该以root身份运行。

那么解决办法是什么呢?登录为root然后重新输入整个命令是很困难的!在上一个示例中的(上箭头键)在这里也无法帮助。所以,要调用用户的最后一个命令,需要输入“!!”(不需要引号)

su -c “!!” root
Salin selepas log masuk

这里的su是切换用户的命令,root是要切换到的用户,-c是以指定的用户身份运行命令的选项,最重要的部分是!!将被替换为上次运行的命令。是的!你需要提供root密码。

7、使用’!’操作符删除除一个文件之外的所有文件

在Linux中,’!’操作符(也称为”bang”操作符)用于历史扩展,它允许你引用先前的命令并对其执行各种操作。要从目录中删除除了特定文件(important_file.txt)之外的所有文件,可以使用带有’!’操作符的rm命令,如下所示。

$ rm !(important_file.txt)
Salin selepas log masuk

要从文件夹中删除除了扩展名为’.pdf’之外的所有文件类型。

$ $ rm !(*.pdf)
Salin selepas log masuk

8、检查Linux中的目录是否存在

在这里,我们将使用’! -d’来验证目录是否存在,如果目录不存在,则紧随其后的是逻辑与操作符(&&),打印出目录不存在,如果目录存在,则紧随其后的是逻辑或操作符(||),打印出目录存在。

逻辑是,当[ ! -d /home/linuxmi/linuxmi.com ]的输出为0时,它将执行逻辑与之后的内容,否则它将转到逻辑或(||)并执行逻辑或之后的内容。

$ [ ! -d /home/linuxmi/linuxmi.com ] && printf '\nno such /home/linuxmi/linuxmi.com directory exist\n' || printf '\n/home/linuxmi/linuxmi.com directory exist\n'
Salin selepas log masuk

类似于上面的条件,但是如果所需目录不存在,它将退出命令。

$ [ ! -d /home/linuxmi/linuxmi.com] && exit
Salin selepas log masuk

在脚本语言中的一般实现,如果所需目录不存在,它将创建一个目录。

[ ! -d /home/linuxmi/linuxmi.com] && mkdir /home/linuxmi/linuxmi.com
Salin selepas log masuk

Atas ialah kandungan terperinci Lapan penggunaan misteri pengendali '!' dalam arahan Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Memulakan Apache Cara Memulakan Apache Apr 13, 2025 pm 01:06 PM

Langkah-langkah untuk memulakan Apache adalah seperti berikut: Pasang Apache (perintah: sudo apt-get pemasangan apache2 atau muat turun dari laman web rasmi) Mula Apache (linux: Sudo Systemctl Mula Apache2; Windows: Klik kanan "Apache2.4" Perkhidmatan dan pilih "Mula") Boot secara automatik (Pilihan, Linux: Sudo Systemctl

Apa yang Harus Dilakukan Sekiranya Pelabuhan Apache80 Diduduki Apa yang Harus Dilakukan Sekiranya Pelabuhan Apache80 Diduduki Apr 13, 2025 pm 01:24 PM

Apabila port Apache 80 diduduki, penyelesaiannya adalah seperti berikut: Cari proses yang menduduki pelabuhan dan tutupnya. Semak tetapan firewall untuk memastikan Apache tidak disekat. Jika kaedah di atas tidak berfungsi, sila buat semula Apache untuk menggunakan port yang berbeza. Mulakan semula perkhidmatan Apache.

Cara Memantau Prestasi SSL Nginx di Debian Cara Memantau Prestasi SSL Nginx di Debian Apr 12, 2025 pm 10:18 PM

Artikel ini menerangkan bagaimana untuk memantau prestasi SSL pelayan Nginx secara berkesan pada sistem Debian. Kami akan menggunakan NginXExporter untuk mengeksport data status nginx ke Prometheus dan kemudian memaparkannya secara visual melalui Grafana. Langkah 1: Mengkonfigurasi Nginx Pertama, kita perlu mengaktifkan modul Stub_status dalam fail konfigurasi Nginx untuk mendapatkan maklumat status nginx. Tambahkan coretan berikut dalam fail konfigurasi nginx anda (biasanya terletak di /etc/nginx/nginx.conf atau termasuk fail): lokasi/nginx_status {stub_status

Cara Menyiapkan Bin Kitar Semula dalam Sistem Debian Cara Menyiapkan Bin Kitar Semula dalam Sistem Debian Apr 12, 2025 pm 10:51 PM

Artikel ini memperkenalkan dua kaedah mengkonfigurasi tong kitar semula dalam sistem Debian: antara muka grafik dan baris arahan. Kaedah 1: Gunakan antara muka grafik Nautilus untuk membuka Pengurus Fail: Cari dan mulakan Pengurus Fail Nautilus (biasanya dipanggil "Fail") dalam menu desktop atau aplikasi. Cari tong kitar semula: Cari folder bin kitar semula di bar navigasi kiri. Jika tidak dijumpai, cuba klik "Lokasi Lain" atau "Komputer" untuk mencari. Konfigurasikan Properties Bin Recycle: Klik kanan "Bin Kitar Semula" dan pilih "Properties". Dalam tetingkap Properties, anda boleh menyesuaikan tetapan berikut: Saiz maksimum: Hadkan ruang cakera yang terdapat dalam tong kitar semula. Masa pengekalan: Tetapkan pemeliharaan sebelum fail dipadamkan secara automatik di tong kitar semula

Cara memulakan semula pelayan Apache Cara memulakan semula pelayan Apache Apr 13, 2025 pm 01:12 PM

Untuk memulakan semula pelayan Apache, ikuti langkah -langkah ini: Linux/MacOS: Run Sudo SystemCtl Restart Apache2. Windows: Jalankan Net Stop Apache2.4 dan kemudian Net Start Apache2.4. Jalankan Netstat -A | Cari 80 untuk memeriksa status pelayan.

Kepentingan Sniffer Debian dalam Pemantauan Rangkaian Kepentingan Sniffer Debian dalam Pemantauan Rangkaian Apr 12, 2025 pm 11:03 PM

Walaupun hasil carian tidak secara langsung menyebut "debiansniffer" dan aplikasi khususnya dalam pemantauan rangkaian, kita dapat menyimpulkan bahawa "sniffer" merujuk kepada alat analisis penangkapan paket rangkaian, dan aplikasinya dalam sistem Debian tidak pada dasarnya berbeza daripada pengagihan Linux yang lain. Pemantauan rangkaian adalah penting untuk mengekalkan kestabilan rangkaian dan mengoptimumkan prestasi, dan alat analisis menangkap paket memainkan peranan utama. Berikut ini menerangkan peranan penting alat pemantauan rangkaian (seperti sniffer yang berjalan dalam sistem Debian): Nilai alat pemantauan rangkaian: FAST FAULT Lokasi: Pemantauan masa nyata metrik rangkaian, seperti penggunaan jalur lebar, latensi, kadar kehilangan paket, dan lain-lain, yang dapat dengan cepat mengenal pasti punca akar kegagalan rangkaian dan memendekkan masa masalah masalah.

Cara Mengoptimumkan Prestasi Debian Readdir Cara Mengoptimumkan Prestasi Debian Readdir Apr 13, 2025 am 08:48 AM

Dalam sistem Debian, panggilan sistem Readdir digunakan untuk membaca kandungan direktori. Jika prestasinya tidak baik, cuba strategi pengoptimuman berikut: Memudahkan bilangan fail direktori: Split direktori besar ke dalam pelbagai direktori kecil sebanyak mungkin, mengurangkan bilangan item yang diproses setiap panggilan readdir. Dayakan Caching Kandungan Direktori: Bina mekanisme cache, kemas kini cache secara teratur atau apabila kandungan direktori berubah, dan mengurangkan panggilan kerap ke Readdir. Cafh memori (seperti memcached atau redis) atau cache tempatan (seperti fail atau pangkalan data) boleh dipertimbangkan. Mengamalkan struktur data yang cekap: Sekiranya anda melaksanakan traversal direktori sendiri, pilih struktur data yang lebih cekap (seperti jadual hash dan bukannya carian linear) untuk menyimpan dan mengakses maklumat direktori

Cara menyelesaikan masalah yang tidak dapat dimulakan oleh Apache Cara menyelesaikan masalah yang tidak dapat dimulakan oleh Apache Apr 13, 2025 pm 01:21 PM

Apache tidak boleh bermula kerana sebab -sebab berikut mungkin: ralat sintaks fail konfigurasi. Konflik dengan port permohonan lain. Isu kebenaran. Keluar dari ingatan. Proses kebuntuan. Kegagalan daemon. Isu Kebenaran Selinux. Masalah firewall. Konflik perisian.

See all articles