新聞中心
隨著計算機(jī)時代的發(fā)展,軟件系統(tǒng)不斷升級,計算機(jī)應(yīng)用領(lǐng)域日益拓寬,各種操作系統(tǒng)也層出不窮,其中以Linux最為經(jīng)典、穩(wěn)定、安全、靈活,并且有著廣泛的應(yīng)用場景。Linux系統(tǒng)不僅可以利用現(xiàn)成的命令完成各種操作,更可以通過自主編寫命令來發(fā)揮自己的創(chuàng)造力。本文將會介紹Linux命令的基本構(gòu)成,以及如何利用常用工具封裝成自己的命令,并最終用Python腳本完成一個實用的自己編寫的命令。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供屏南網(wǎng)站建設(shè)、屏南做網(wǎng)站、屏南網(wǎng)站設(shè)計、屏南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、屏南企業(yè)網(wǎng)站模板建站服務(wù),十年屏南做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
一、Linux命令的基本構(gòu)成
正如我們平時在Linux中所用的命令一樣,每一個Linux命令都由三個部分組成,即命令 + 選項 + 參數(shù)。
1. 命令:
命令是指在Linux系統(tǒng)下可執(zhí)行的程序或腳本文件。每一個命令都有著自己的功能,在使用時通過輸入命令來啟動對應(yīng)的功能。
2. 選項:
選項是指在執(zhí)行命令時需要添加的參數(shù),用來調(diào)整命令的參數(shù)或行為。選項的前綴一般是“-”,如果有多個選項的話,可以把它們緊密地組織在一起。舉個例子,如果我們使用“l(fā)s -al”命令,其中“-a”和“-l”就是兩個選項,表示顯示文件的全部信息和以列表形式顯示文件的詳細(xì)信息。
3. 參數(shù):
參數(shù)是指在執(zhí)行命令時需要傳遞的特定值,用來指定需要對哪些文件或目錄進(jìn)行操作。參數(shù)可以是一個或多個,它們是命令的具體操作對象。比如“cd /usr”,其中的“/usr”就是參數(shù),用來指定切換到“/usr”目錄。
二、如何用常用工具封裝成自己的命令
在Linux系統(tǒng)中,我們可以利用已有的工具封裝成自己的命令,來進(jìn)一步發(fā)揮自己的創(chuàng)造力。下面就以封裝常用的“find”命令來舉例。
1. 創(chuàng)建shell腳本
我們需要創(chuàng)建一個新的shell腳本,以便在其中編寫我們自己的命令。在終端輸入以下命令:
vi myfind
這將會創(chuàng)建一個名為“myfind”的文件。
2. 編寫腳本
接下來,我們需要在“myfind”腳本中編寫相關(guān)代碼。以下是一個簡單的示例:
#!/bin/bash
if [ $# -ne 2 ]; then
echo “Usage: myfind [path] [pattern]”
exit 1
fi
find $1 -name “${2}”
在腳本中,我們首先指定解釋器為bash,然后通過“$#”獲取參數(shù)數(shù)量,如果參數(shù)數(shù)量不等于2,則提示使用方法并返回錯誤代碼。如果參數(shù)數(shù)量正確,則使用“find”命令查找指定路徑下的所有文件名匹配指定模式的文件,并將其打印出來。
3. 為腳本添加可執(zhí)行權(quán)限
我們還需要為該腳本添加可執(zhí)行權(quán)限,這樣才能在終端中執(zhí)行該命令。在終端輸入以下命令:
chmod +x myfind
現(xiàn)在我們就可以愉快地使用我們自己編寫的命令了。例如,在終端中輸入“myfind /home/user *.txt”,就可以查找“/home/user”目錄下所有擴(kuò)展名為“.txt”的文件。
三、用Python腳本完成一個實用的自己編寫的命令
在之前的例子中,我們通過封裝現(xiàn)有的工具來編寫自己的命令。但是,如果我們想編寫更加實用、功能更加豐富的命令,就需要使用Python腳本了。
1. 創(chuàng)建Python腳本
在終端中輸入以下命令,創(chuàng)建一個名為“mycmd”的Python腳本文件:
vi mycmd.py
2. 編寫腳本
接下來,我們可以在“mycmd.py”中編寫我們自己的命令。例如,以下是一個基于Python的簡單計算器命令:
#!/usr/bin/python
import argparse
parser = argparse.ArgumentParser(description=”A simple calculator command.”)
parser.add_argument(“x”, type=float, help=”the first operand”)
parser.add_argument(“y”, type=float, help=”the second operand”)
parser.add_argument(“-a”, “–add”, action=”store_true”, help=”add two operands”)
parser.add_argument(“-s”, “–subtract”, action=”store_true”, help=”subtract two operands”)
parser.add_argument(“-m”, “–multiply”, action=”store_true”, help=”multiply two operands”)
parser.add_argument(“-d”, “–divide”, action=”store_true”, help=”divide two operands”)
args = parser.parse_args()
if args.add:
print(args.x + args.y)
elif args.subtract:
print(args.x – args.y)
elif args.multiply:
print(args.x * args.y)
elif args.divide:
print(args.x / args.y)
在腳本中,我們使用了“argparse”庫來實現(xiàn)命令行參數(shù)的解析。我們指定了4個參數(shù)(兩個必須參數(shù)和4個可選參數(shù)),分別表示兩個操作數(shù)和四種運算方式。當(dāng)參數(shù)解析完成后,根據(jù)用戶的輸入進(jìn)行對應(yīng)的計算操作,最終輸出計算結(jié)果。
3. 為腳本添加可執(zhí)行權(quán)限
我們還需要為該腳本添加可執(zhí)行權(quán)限,以便在終端中執(zhí)行它。在終端中輸入以下命令:
chmod +x mycmd.py
現(xiàn)在我們就可以愉快地使用我們自己編寫的命令了。在終端中輸入“./mycmd.py 2 2 –add”,就可以計算2+2的結(jié)果,并將其輸出到終端中。
綜上所述,利用Linux系統(tǒng)可以發(fā)揮自己的創(chuàng)造力,自主編寫個人命令,從而方便自己在日常計算機(jī)操作中的實用性。通過本文的介紹,相信讀者已經(jīng)掌握了如何編寫自己的命令的基本方法和原理,并且可以熟練地使用Linux系統(tǒng)下的各種工具進(jìn)行封裝,以及使用Python腳本實現(xiàn)更加實用和有趣的命令。歡迎讀者在自己的計算機(jī)上嘗試編寫自己的命令,發(fā)揮自己的創(chuàng)造力和想象力!
相關(guān)問題拓展閱讀:
- centos 怎樣寫linux命令
centos 怎樣寫linux命令
Linux的常用基本命令。
首先啟動Linux。啟動完畢后需要進(jìn)行用戶的登錄,選擇登陸的用戶不同自然權(quán)限也不一樣,其中“系統(tǒng)管理員”擁有更高權(quán)限。
在啟動Linux后屏幕出現(xiàn)如下界面顯示:
……
Red Hat Linux release 9 (Shrike)
Kernel2.4.20.8 on an i686
login:
輸入:root(管理員名)后,計算機(jī)顯示輸口令(password:),輸入你的口令即可。當(dāng)計算機(jī)出現(xiàn)一個“?!碧崾?符時,表明你登錄成功!
屏幕顯示Linux提示符: #_
這里需要說明的是“Red Hat Linux release 9 (Shrike)”表示當(dāng)前使用的操作系統(tǒng)的名稱及版本?!?.4.20.8”表示Linux操作系統(tǒng)的核
心版本編號?!癷686”表示該臺電腦使用的CPU的等級。
下面我們來介紹常用基本命令
一,注銷,關(guān)機(jī),重啟
注銷系統(tǒng)的logout命令
1,Logout 注銷是登陸的相對操作,登陸系統(tǒng)后,若要離開系統(tǒng),用戶只要直接下達(dá)logout命令即可:
#logout
Red Hat Linuxrelease 9(Shike)
Kernel2.4.20.8 on an i686
Login: ← 回到登陸的畫面
2,關(guān)機(jī)或重新啟動的shutdown命令
Shutdown命令可以關(guān)閉所有程序,依照用戶的需要,重新啟動或關(guān)機(jī)。
參數(shù)說明如下:
? 立即關(guān)機(jī):-h(huán) 參數(shù)讓系統(tǒng)立即關(guān)機(jī)。范例如下:
#shutdown –h now ← 要求系統(tǒng)立即關(guān)機(jī)
? 指定關(guān)機(jī)時間:time參數(shù)可指定關(guān)機(jī)的時間;或設(shè)置多久時間后運行shutdown命令,范例如下:
#shutdown now ← 立刻關(guān)機(jī)
#shutdown +5 ← 5分鐘后關(guān)機(jī)
#shutdown 10:30 ← 在10:30時關(guān)機(jī)
? 關(guān)機(jī)后自動重啟:-r 參數(shù)設(shè)置關(guān)機(jī)后重新啟動。范例如下:
#shutdown -r now ← 立刻關(guān)閉系統(tǒng)并重啟
#shutdown -r 23:59 ← 指定在23:59時重啟動
3,重新啟動計算機(jī)的reboot命令
顧名思義,reboot命令是用來重新啟動系統(tǒng)的。常用的參數(shù)如下:
? -f 參數(shù):不依正常的程序運行關(guān)機(jī),直接關(guān)閉系統(tǒng)并重新啟動計算機(jī)。
? -I 參數(shù):在在重新啟動之前關(guān)閉所有網(wǎng)絡(luò)接口。
雖然reboot命令有個參數(shù)可以使用,但是一般只需要單獨運行reboot命令就可以了
二,文件與目錄的操作
1,列出文件列表的ls命令
ls(list)命令是非常有用的命令,用來顯示當(dāng)前目錄中的文件和子目錄列表。配合參數(shù)的使用,能以不同的方式顯示目錄內(nèi)容。范例
如下:
? 顯示當(dāng)前目錄的內(nèi)容:
$ ls
Desktop mail myinstall.log test.txt ← 有兩個目錄及兩個文件夾
? 當(dāng)運行l(wèi)s命令時,并不會顯示名稱以“.”開頭的文件。因此可加上“-a”參數(shù)指定要列出這些文件。范例如下:
$ ls –a
? 以“-s”參數(shù)顯示每個文件所有的空間,并以“-S”參數(shù)指定按所有占用空間的大小排序。范例如下:
$ ls –s –S
總計36
4 Desktop 4 mail 24 myinstall.log 4 test.txt
? 在ls命令后直接加上欲顯示的目錄路徑,就會列出該目錄的內(nèi)容。范例如下:
$ ls –l/usr/games
2,切換目錄的cd命令
cd(change directory)命令可讓用戶切當(dāng)前所在的目錄。范例如下:
$ cd tony ← 切換到當(dāng)前目錄下的tony子目錄
$ cd .. ← 切換到上一層目錄
$ cd / ← 切換到系統(tǒng)根目錄
$ cd ← 切換到用戶主目錄
$ cd /usr/bin ← 切換到/usr/bin目錄
3,創(chuàng)建目錄的mkdir命令
Mkdir(make directory)命令可用來創(chuàng)建子目錄。下面的范例會在所在目錄下創(chuàng)建tool子目錄。
$ mkdir tool
4,刪除目錄的rmdir命令
rmdir(remove directory)命令可用來刪除“空”的子目錄。范例如下:
$ rmdir tool ← 刪除tool目錄
5,復(fù)制文件的cp命令
cp(copy)命令可以將文件從一處復(fù)制到另一處。一般在使用cp命令將以個文件復(fù)制成另一個文件或復(fù)制到某個目錄時,需要指定原始文件
名與目的文件名或目錄。范例如下:
$ cp data1.txt data2.txt ← 將data1.txt復(fù)制成data2.txt
$ cp data3.txt /tmp/data ← 將data3復(fù)制到/tmp/data目錄中
? 顯示復(fù)制過程:加入-v參數(shù)可顯示命令執(zhí)行過程。范例如下:
$ cp zip.txt zip2.txt ← 一般狀態(tài)下不會顯示復(fù)制過程
$ cp –v zip.txt zip3.txt ← 以-v顯示復(fù)制過程
zip.txt ->zip3.txt
? 遞回復(fù)制:加入“-R”參數(shù)可同時復(fù)制目錄下的所有文件及子目錄。范例如下:
$ cp –v –R * backup ← 將所有文件(含子目錄文件)復(fù)制到backup目錄
6,刪除文件或目錄的rm命令
rm(remove)命令可以刪除文件或目錄。范例如下:
$ rm myfile ← 刪除指定的文件
$ rm * ← 刪除當(dāng)前目錄中的所有文件
rm命令的常用參數(shù)如下:
? 強(qiáng)迫刪除:使用-f參數(shù)時,rm命令會直接刪除文件,不再詢問。范例如下:
$ rm –f *.txt ← 強(qiáng)迫刪除文件
? 遞回刪除:-r 也是一個相當(dāng)常用的參數(shù),使用此參數(shù)可同時刪除指定目錄下的所有文件及子目錄。范例如下:
$ rm –r data ← 刪除data目錄(含data目錄下所有文件和子目錄)
$ rm –r * ← 刪除所有文件(含當(dāng)前目錄所有文件,所有子目錄和子目錄下的文件)
? 強(qiáng)制刪除指定目錄:當(dāng)使用-r參數(shù)刪除目錄時,若該目錄下有許多子目錄及文件,則系統(tǒng)會不間斷地詢問,以確認(rèn)您的確要刪除
目錄或文件。若已確定要刪除所存目錄及文件,則可以使用-rf參數(shù),如此一來,系統(tǒng)將直接刪除該目錄中所有的文件及子目錄,不再詢問。范
例如下:
$ rm –rf tmp 強(qiáng)制刪除tmp目錄及該目錄下所有文件及子目錄
? 顯示刪除過程:使用-v 參數(shù)。范例如下:
$ rm –v
7,讓顯示畫面暫停的more命令
為了避免畫面顯示瞬間就閃過去,用戶可以使用more命令,讓畫面在顯示滿一頁時暫停,此時可按空格鍵繼續(xù)顯示下一個畫面,或按Q鍵停
止顯示。
? 當(dāng)使用ls命令查看文件列表時,若文件太多則可以配合more命令使用。范例如下:
$ ls –al more
? 單獨使用more命令時,可用來顯示文字文件的內(nèi)容。范例如下:
$ more data.txt
8,連接文件的cat命令
cat(concatenate) 命令可以顯示文件的內(nèi)容(經(jīng)常和more命令搭配使用),或是將數(shù)個文件合并成一個文件。范例如下:
? 逐頁顯示 preface.txt的內(nèi)容:
$ cat preface.txt more
? 將preface.txt 附加到outline.txt文件之后:
$ cat preface.txt >> outline.txt
? 將new.txt和info.txt合并成readme.txt文件:
$ cat new.txt info.txt >readme.txt
9,移動或更換文件,目錄名稱的mv命令
mv (move)命令可以將文件及目錄移動到另一個目錄下面,或更換文件及目錄的名稱。范例如下:
$ mv a.txt .. ← 將a.txt文件移到上層目錄
$ mv z1.txt z3.txt ← 將 z1.txt改名成z3.txt
$ cd.. ← 切換到上一層目錄
$ mv backup.. ← backup 目錄上移一層
10,顯示當(dāng)前所在目錄的pwd命令
pwd(print working directory)命令可顯示用戶當(dāng)前所在的目錄。范例如下:
$ pwd
/home/tony ← 當(dāng)前所在目錄為“/home/tony”
11,查找文件的locate命令
locate 命令可用來搜索包含指定條件字符串的文件或目錄。范例如下:
$ locate zh_CN 列出所有包含“zh_CN”字符串的文件和目錄。
由于locate命令是從系統(tǒng)中保存文件及目錄名稱的數(shù)據(jù)庫中搜索文件,雖然系統(tǒng)會定時更新數(shù)據(jù)庫,但對于剛新增或刪除的文件、目錄,
仍然可能會因為數(shù)據(jù)庫尚未更新而無法查得,此時可用root身份運行updatedb命令更新,為此數(shù)據(jù)庫得內(nèi)容正確。
12,搜索字符串得grep命令
grep 命令可以搜索特定字符串來并顯示出來,一般用來過濾先前得結(jié)果,避免顯示太多不必要得信息。范例如下:
$ grep text *.conf ← 搜索當(dāng)前目錄中擴(kuò)展名為.conf且包含“text”字符串得文件。
grep:amd.conf: ← 拒絕不符權(quán)限得操作
grep:diskcheck.conf: ← 拒絕不符權(quán)限得操作
grep:grub.conf ← 拒絕不符權(quán)限得操作
? 若您是使用一般權(quán)限的用戶運行,上例的輸出結(jié)果會包含很多如“拒絕不符權(quán)限的操作之類的錯誤信息,可使用-s參數(shù)消除。
$ grep –s text *.conf
13,重導(dǎo)與管道
重導(dǎo)(redirect)可將某命令的結(jié)果輸出導(dǎo)文件中,它有兩中命令:“>”和“>>”?!?”可將結(jié)果輸出到文件中,該文件原有的內(nèi)容會被
刪除:“>>”則將結(jié)果附加到文件中,原文件內(nèi)容不會被清除。范例如下:
$ ls –a>dir.txt ← 將ls –a命令執(zhí)行結(jié)果輸出到dir.txt文件。
$ cat data1.txt >> data2.txt ← 將 data1.txt 內(nèi)容附加到data2.txt文件之后。
通道(pipe)命令的符號是“ ”,可將某命令的結(jié)果輸出給另一命令,一下范例將ls命令的輸出結(jié)果傳給grep命令過濾:
$ ls gerp conf ← 搜索并顯示ls命令運行結(jié)果中包含有“conf”字符串
在舉一個刪除文件或目錄的例子,可以利用yes命令重復(fù)輸出“y”字符的特性,將結(jié)果傳給rm命令,如此即可避免重復(fù)輸入“y”:
$ yes rm –r mydir
三,使用光盤及軟盤
在Linux的文字模式下要使用光盤或軟盤,并不是只將光盤或軟盤放入即可,用戶需要運行加載的命令,才可讀寫數(shù)據(jù)。所謂加載就是將存
儲介質(zhì)(如光盤和軟盤)指定成系統(tǒng)中的某個目錄(如/mnt/cdrom或mnt/floppy)。通過直接存取此加載目錄,即可讀寫存儲介質(zhì)中的數(shù)據(jù)。
以下就來看看文字模式下的加載及卸載命令。
1,加載的mount命令
要使用光盤時先把光盤放入光驅(qū),然后執(zhí)行加載的mount命令,將光盤加載至系統(tǒng)中:
# mount/dev/cdrom/mut/cdrom ← 加載光盤
同理,使用軟盤之前也需要和光盤一樣,必須先加載后才能使用:
# mount/dev/fd0/mut/floppy ← 加載軟盤
2,卸載的umount命令
如果不需要使用光盤或軟盤,則需先執(zhí)行卸載命令之后,才能將光盤或軟盤退出。范例如下:
# umount / mnt/cdrom ← 光盤卸載
在不使用軟盤時執(zhí)行umount 命令卸載軟盤,再將軟盤拿出
# umount / mnt/ ← 軟盤卸載
四,在后臺運行程序
用戶有時的程序有可能要花費很多時間,如果將它放在前臺運行,將導(dǎo)致無法繼續(xù)做其他事情,更好的方法就是將它放在后臺運行,甚至
可能希望在用戶注銷系統(tǒng)后,程序還可以繼續(xù)運行。讓我們看看那如何實現(xiàn)這一目的。
1,在后臺運行程序的&、bg命令
將程序放到后臺運行的最簡單方法就是在命令最后加上“&”,范例如下:
# updatedb & ← 在后臺執(zhí)行 locate 數(shù)據(jù)庫更新命令
# bg ← 將更新操作放到后臺運行
2,前臺運行的程序fg命令
如果用戶當(dāng)前已有程序在后臺運行,可以輸入fg命令,將它從背景中移到前臺運行:
# fg ← 放到前臺執(zhí)行的命令會顯示出來
3,在退出后讓程序繼續(xù)運行的nohup命令
此命令可使用戶退出系統(tǒng)后,程序繼續(xù)運行。范例如下:
$ nohup myserver &
然后用戶就可以退出了,當(dāng)再次登錄的時候,可以用ps –aux命令看到程序仍在后臺中運行。
五,任務(wù)調(diào)度命令
計算機(jī)有很多程序需要周期性的被運用,例如清理磁盤中不要的暫存盤、備份系統(tǒng)數(shù)據(jù)、檢查遠(yuǎn)程服務(wù)器的郵件等。對于這些重復(fù)性的工
作,其實不需要每次都辛苦地運行這些程序??衫萌蝿?wù)調(diào)度命令,指定系統(tǒng)定期在某個時間運行這些程序,輕輕松松完成想要執(zhí)行的工作。
任務(wù)調(diào)度的crond常駐命令
crond 是Linux用來定期執(zhí)行程序的命令。當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)便會啟動此任務(wù)調(diào)動命令。crond命令每分鐘會定期檢查是否有要
執(zhí)行的工作,如果有要執(zhí)行的工作,便會自動執(zhí)行該工作。由于任務(wù)調(diào)度中間的操作過程十分繁雜,我們只將任務(wù)調(diào)度文件的寫法介紹給大家
,供大家參閱:
Minute Hour Day Month DayOfWeek Command
在這段文字中除了“Command”是每次都必須指定的字段以外,其他自動皆可視需求自行決定是否指定。
六,任務(wù)調(diào)度的系統(tǒng)工作
/ect/crontab/文件是Linux系統(tǒng)工程的任務(wù)調(diào)度設(shè)置文件,其默認(rèn)的內(nèi)容如下:
SHELL=/bin/bash ← 指定執(zhí)行任務(wù)調(diào)度工作時所使用的SHELL
PATH=/shin:/bin:/usr/in:/usr/bin ← 指定命令搜索的路徑
MAILTO=root ← 指定將輸出結(jié)果給root用戶
關(guān)于linux 自己寫命令的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
當(dāng)前名稱:用Linux發(fā)揮自己的創(chuàng)造力,自主編寫個人命令(linux自己寫命令)
網(wǎng)址分享:http://m.5511xx.com/article/codpggh.html


咨詢
建站咨詢
