自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一些 Shell 腳本的基本概念

系統(tǒng) Linux
如果你希望自動(dòng)執(zhí)行常規(guī)任務(wù)并使你的生活更輕松,那么使用 Shell 腳本是一個(gè)很好的選擇。本文將向你介紹一些基本概念,這些概念將幫助你編寫高效的 Shell 腳本。

Shell 腳本是一種被設(shè)計(jì)用來運(yùn)行命令行解釋器 UNIX Shell 的計(jì)算機(jī)程序。Shell 腳本的各類變種被視作腳本語言。Shell 腳本執(zhí)行的典型操作包括文件操作、程序執(zhí)行和文本打印。設(shè)置環(huán)境、運(yùn)行程序并執(zhí)行任何必要的清理或日志記錄的腳本稱為封裝。

識(shí)別 Shell 命令提示符

你可以通過查看終端窗口中的提示符符號(hào)來識(shí)別 Linux 系統(tǒng)的計(jì)算機(jī)上的 Shell 命令提示符的用戶是普通用戶還是超級(jí)用戶。??#?? 符號(hào)用于超級(jí)用戶,??$?? 符號(hào)用于具有標(biāo)準(zhǔn)權(quán)限的用戶。

基本命令

腳本附帶了很多可以在終端窗口上執(zhí)行的、用以管理您的計(jì)算機(jī)的命令。每個(gè)命令的詳細(xì)信息可以在該命令附帶的使用手冊(cè)中找到。你可以使用如下命令來查看手冊(cè):

一些常用的命令有:

每個(gè)命令都附帶了幾個(gè)可以一起使用的選項(xiàng)。你可以參考使用手冊(cè)以了解更多的細(xì)節(jié)。??man date?? 的輸出如圖 1 所示。

Figure 1: Manual of date command

Figure 1: Manual of date command

重定向操作符

當(dāng)你希望捕獲文件中的命令輸出或重定向到文件時(shí),可以使用重定向操作符。

命令

描述

??ls -l /usr/bin >file??

默認(rèn)標(biāo)準(zhǔn)輸出到文件

??ls -l /usr/bin 2>file??

重定向標(biāo)準(zhǔn)錯(cuò)誤到文件

??ls -l /usr/bin > ls-output 2>&1??

重定向標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出到文件

??ls -l /usr/bin &> ls-output??

重定向標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出到文件

??ls -l /usr/bin 2> /dev/null??

寫入 ??/dev/null??,丟棄輸出

大括號(hào)擴(kuò)展

大括號(hào)擴(kuò)展是 UNIX 提供的強(qiáng)大選項(xiàng)之一。它有助于在一行指令中使用最少的命令完成大量操作。例如:

這條命令會(huì)為 2009 到 2011 年里的每個(gè)月建立一個(gè)目錄。

環(huán)境變量

環(huán)境變量是一個(gè)動(dòng)態(tài)命名的值,它可以影響計(jì)算機(jī)上運(yùn)行的進(jìn)程的行為方式。此變量是進(jìn)程運(yùn)行環(huán)境的一部分。

命令

描述

??printenv??

打印出所有環(huán)境變量的值。

??set??

設(shè)置 Shell 選項(xiàng)

??export??

導(dǎo)出環(huán)境到隨后執(zhí)行的程序

??alias??

為命令創(chuàng)建別名

網(wǎng)絡(luò)命令

網(wǎng)絡(luò)命令對(duì)于排查網(wǎng)絡(luò)問題和檢查連接到客戶機(jī)的特定端口非常有用。

命令

描述

??ping??

發(fā)送 ICMP(網(wǎng)際網(wǎng)路控制訊息協(xié)定)數(shù)據(jù)包

??traceroute??

打印數(shù)據(jù)包在網(wǎng)絡(luò)中的路徑

??netstat??

打印網(wǎng)絡(luò)連接信息、路由表、接口數(shù)據(jù)

??ftp???/??lftp??

互聯(lián)網(wǎng)文件傳輸程序

??wget??

非交互式網(wǎng)絡(luò)下載器

??ssh??

OpenSSH SSH 客戶端 (遠(yuǎn)程登錄程序)

??scp??

安全拷貝

??sftp??

安全文件傳輸程序

grep 命令

??grep?? 命令用于查找系統(tǒng)和日志中的錯(cuò)誤。它是 Shell 擁有的強(qiáng)大工具之一。

命令

描述

??grep -h '.zip' file.list??

??.?? 表示任意字符

??grep -h '^zip' file.list??

以 ??zip?? 開頭

??grep -h 'zip$' file.list??

以 ??zip?? 結(jié)尾

??grep -h '^zip$' file.list??

只含有 ??zip??

??grep -h '[^bz]zip' file.list??

不含 ??b??? 和 ??z??

??grep -h '^[A-Za-z0-9]' file.list??

所有文件名有效的文件

量詞

下面是一些量詞的例子:

命令

描述

?????

匹配出現(xiàn) 0 次或 1 次的元素

??*??

匹配出現(xiàn) 0 次或多次的元素

??+??

匹配出現(xiàn) 1 次或多次的元素

??{}??

匹配出現(xiàn)特定次數(shù)的元素

文本處理

文本處理是當(dāng)今 IT 世界中的另一項(xiàng)重要任務(wù)。程序員和管理員可以使用這些命令來切片、剪切和處理文本。

命令

描述

??cat -A $FILE??

顯示 ??$FILE?? 文件的所有內(nèi)容

??sort file1.txt file2.txt file3.txt > final_sorted_list.txt??

一次性將所有文件排序

??ls - l | sort -nr -k 5??

按指定的第 5 列進(jìn)行排序

??sort --key=1,1 --key=2n distor.txt??

對(duì)第 1 列進(jìn)行排序(默認(rèn)按字母表順序),對(duì)第 2 列進(jìn)行數(shù)值排序

??sort foo.txt | uniq -c??

查找重復(fù)的行并顯示該行重復(fù)的次數(shù)

??cut -f 3 distro.txt??

剪切第 3 列

??cut -c 7-10??

剪切 7 - 10 字符

??cut -d ':' -f 1 /etc/password??

分隔符 ??:??

??sort -k 3.7nbr -k 3.1nbr -k 3.4nbr distro.txt??

按第 3 列第 7 個(gè)字符、第 3 列第 1 個(gè)字符和第 3 列第 4 個(gè)字符排序

??paste file1.txt file2.txt > newfile.txt??

合并兩個(gè)文件

??join file1.txt file2.txt??

按公共字段連接兩個(gè)文件

竅門和技巧

在 Linux 中,我們可以通過使用簡單的命令或控制選項(xiàng)返回到命令的歷史記錄。

命令

描述

??clear??

清空屏幕

??history??

查看保存命令的歷史記錄

??script filename??

捕獲文件中的所有命令執(zhí)行

一些歷史命令的技巧:

  • ??CTRL + R??: 搜索命令歷史
  • ??!!number??:執(zhí)行編號(hào)為??number?? 的命令
  • ??!!?? :執(zhí)行上一條命令
  • ??!?string?? : 執(zhí)行包含??string?? 的上一條命令
  • ??!string??:執(zhí)行以??string?? 開始的上一條命令
  • ??export HISTCONTROL=ignoredups??: 忽略重復(fù)條目
  • ??export HISTSIZE=10000??:設(shè)置存儲(chǔ)的歷史行數(shù)

隨著你對(duì) Linux 命令逐漸熟悉,你將能夠編寫封裝腳本。所有手動(dòng)任務(wù),如定期備份、清理文件、監(jiān)控系統(tǒng)使用情況等,都可以使用腳本自動(dòng)完成。在學(xué)習(xí)高級(jí)概念之前,本文將幫助您開始編寫腳本。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2011-11-08 21:12:35

2009-06-14 17:08:11

ibmdw云計(jì)算

2020-05-19 14:35:42

Shell腳本循環(huán)

2020-04-10 08:50:37

Shell腳本循環(huán)

2009-06-18 14:54:52

Spring AOP

2011-03-28 11:05:17

ODBC

2013-04-16 10:45:52

Android基本概念

2010-06-24 13:26:53

FTP協(xié)議

2009-09-21 17:46:25

Hibernate數(shù)據(jù)

2010-08-23 16:58:17

DHCP協(xié)議

2010-07-07 15:17:40

LDAP協(xié)議

2014-04-16 15:11:19

Spark

2009-03-20 11:46:10

MGCP協(xié)議網(wǎng)關(guān)

2012-09-11 14:39:03

Moosefs

2010-03-09 13:36:41

Linux基本概念

2010-06-08 16:52:38

CANopen總線協(xié)議

2010-06-12 14:12:22

RSVP協(xié)議

2010-06-29 13:00:49

EIGRP協(xié)議

2011-12-14 16:43:54

javanio

2009-12-21 10:27:52

WCF基本概念
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)