文章目錄
- 01)cp 指令(重要)
- 02)mv 指令(重要)
- 03)cat 指令
- 04)more 指令
- 拓展幾個小知識
- 1)管道
- 2)管道搭配 grep 指令使用
- 3)日志
- 4)重定向
- 1、echo
- 2、輸出重定向
- 3、追加重定向
- 4、輸入重定向
- 5)如何快速清空一個檔案
- 05)less 指令
- 06)head && tail 指令
- 1)head
- 2)tail
- 07)和時間相關的指令 date
- 1)顯示時間
- 2)時間戳
- 08)cal 指令
- 09)find 指令(重要)
- 10)zip/unzip 指令
- 11)tar 指令(重要)
- 12)bc 指令
- 13)uname 指令
- 14)重要的幾個熱鍵 [Tab],[ctrl+c],[ctrl+d]
- 15)關機指令 shutdown
- 擴展命令
接著上一篇: 【Linux】基本指令的使用(一)
01)cp 指令(重要)
語法:cp [選項] [源檔案名或目錄名] [目標檔案名或目錄名]
功能:(copy file):復制檔案或目錄
說明:cp指令用于復制檔案或目錄,如同時指定兩個以上的檔案或目錄,且最后的目的地是一個已經存在的目錄,則它會把前面指定的所有檔案或目錄復制到此目錄中,若同時指定多個檔案或目錄,而最后的目的地并非一個已存在的目錄,則會出現錯誤資訊,
常用選項:
-f 或 --force 強制拷貝檔案或目錄, 不論目的檔案或目錄是否已經存在
-i 或 --interactive 覆寫檔案之前先詢問用戶
【 -r】遞回處理,將指定目錄下的檔案與子目錄一并處理,若源檔案或目錄的形態,不屬于目錄或符號鏈接,則一律視為普通檔案處理
![]()
-R 或 --recursive遞回處理,將指定目錄下的檔案及子目錄一并處理
02)mv 指令(重要)
mv命令是move的縮寫,可以用來移動檔案或者將檔案改名(move (rename) files),是Linux系統下常用的命令,經常用來備份檔案或者目錄,
語法:mv [選項] [源檔案名或目錄名] [目標檔案名或目錄名]
功能:(move file):移動檔案與目錄,或修改檔案與目錄的名稱
-
視mv命令中第二個引數型別的不同(是目標檔案還是目標目錄),mv命令將檔案重命名或將其移至一個新的目錄中,
-
當第二個引數型別是檔案時,mv命令完成檔案重命名,此時,源檔案只能有一個(也可以是源目錄名),它將所給的源檔案或目錄重命名為給定的目標檔案名,
-
當第二個引數是已存在的目錄名稱時,源檔案或目錄引數可以有多個,mv命令將各引數指定的源檔案均移至目標目錄中,
常用選項:
- 【 -f 】–force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆寫
- 【 -i 】若目標檔案 (destination) 已經存在時,就會詢問是否覆寫!
舉例:
對檔案或目錄重命名
![]()
移動檔案或目錄(相當于剪切復制)
![]()
03)cat 指令
語法:cat [選項] [檔案名]
功能: 查看目標檔案的內容(通常用于閱讀小檔案,因為它會把檔案內容一次性全部顯示出來)
補充一個小知識,還有一個命令
tac,反向顯示檔案內容,從尾到頭來顯示檔案內容
常用選項:
-b 對非空輸出行編號
![]()
-n 對輸出的所有行編號
-s 不輸出多行空行
舉例:
04)more 指令
語法:more [選項] [檔案名]
功能:more命令,功能類似 cat(適合閱讀大檔案,不會一次性全部顯示,分屏顯示)
常用選項:
-n 對輸出的所有行編號
【-行號】:顯示前多少行
![]()
/字串:搜索“字串”的功能
q:退出
回車鍵翻頁
拓展幾個小知識
1)管道
生活中有許許多多的管道,每個管道都有一個入端和出端,用于傳輸東西,在計算機中,也有管道(用 ‘|’ 表示),用于傳輸資訊流、資料流,「把一個命令的資訊通過管道交給下一個命令,」
使用舉例:
dmesg 命令配合 more 命令使用,
dmesg | more -5 #把 dmesg 命令的輸出經過管道傳遞給 more用 more 來閱讀 dmesg 列印的資訊的前3行:
![]()
2)管道搭配 grep 指令使用
Linux grep 命令,用于查找檔案里符合條件的字串,
文本行過濾工具,可以把含有范本樣式的那一行顯示出來,
語法:
grep [選項] [搜尋字串] [檔案]功能: 在檔案中搜索字串,將找到的行列印出來
常用選項:
-i :–ignore-case 忽略大小寫的不同,所以大小寫視為相同
-n :–line-number 順便輸出行號
-E :同時查找多個字串
[ll@VM-0-12-centos lesson3]$ grep -E '9999|8888|7777' log.txt hello 7777 hello 8888 hello 9999-v :–invert-match 反向選擇,顯示出沒有 ‘搜尋字串’ 內容的那一行
[ll@VM-0-12-centos lesson3]$ grep -E -v '1111|2222' test.c 3333 4444 hello Linux!使用舉例:
從ls顯示內容中查找指定字串的行
![]()
從檔案內容中查找指定字串的行
![]()
從dmesg命令列印的日志資訊中查找含有error字串的行,并用more命令閱讀前3行
dmesg | grep -i 'error' | more -3![]()
3)日志
相當于程式的日記,專案運行之后,會一直進行寫入,到對應的日志檔案中,比如時間、日志等級、內容等
4)重定向
1、echo
「echo」:輸出字串
[ll@VM-0-12-centos lesson3]$ echo "hello Linux" hello Linux
2、輸出重定向
本來應該顯示到顯示幕上,現在直接寫入到了檔案中,「輸出重定向,會清空原始檔案,然后再進行寫入,每次都是最新的,」
echo "hello Linux" > hello.txt
3、追加重定向
echo "1234" >> hello.txt #新增寫入的內容![]()
4、輸入重定向
5)如何快速清空一個檔案
>hello.txt #清空 hello.txt 檔案中的內容
05)less 指令
less 工具也是對檔案或其它輸出進行分頁顯示的工具,應該說是linux正統查看檔案內容的工具,功能極
其強大,less 的用法比起 more 更加的有彈性,在 more 的時候,我們并沒有辦法向前面翻, 只能往后面看
但若使用了 less 時,就可以使用上下方向鍵 「pageup」、「pageup」等按鍵的功能來往前往后翻看檔案,更容易用來查看一個檔案的內容!
除此之外,在 less 里頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜,
語法: less [引數] [檔案]
功能:less 與 more 類似(但更推薦使用 less),但使用 less 可以隨意瀏覽檔案,而 more 僅能向前移動,卻不能向后移動,而且 less 在查看之前不會加載整個檔案,
選項:
【-i】 :忽略搜索時的大小寫
【-N】:顯示每行的行號
【/字串】:向下搜索“字串”的功能
【?字串】:向上搜索“字串”的功能
【n】:重復前一個搜索(與 / 或 ? 有關)
【N】:反向重復前一個搜索(與 / 或 ? 有關)
【q】:quit
06)head && tail 指令
1)head
head就像它的名字一樣淺顯易懂,用來顯示檔案開頭的內容
語法: head [引數] [檔案]
功能:head 用來顯示檔案的開頭至標準輸出中,默認 head 命令列印其相應檔案的開頭10行,
選項:
-n<行數>:顯示的行數
![]()
2)tail
tail就像它的名字一樣淺顯易懂,用來顯示檔案尾部的內容
語法: tail [必要引數] [選擇引數] [檔案]
功能: 用于顯示指定檔案末尾內容,不指定檔案時,作為輸入資訊進行處理,常用查看日志檔案,
選項:
-f 回圈讀取
-n<行數>:顯示的行數
![]()
士大夫
【思考】
log.txt 檔案有一萬行,如果我要提取中間的10行(4990-5000),怎么做呢?
![]()
如果我要提取中間的10行(4990-5000),并將其逆置,又該怎么做呢?
![]()
07)和時間相關的指令 date
1)顯示時間
顯示或設定系統的日期與時間,在顯示方面,使用者可以設定欲顯示的格式,格式設定為一個加號后接數個標記,其中常用的標記串列如下:
- %H : 小時(00…23)
- %M : 分鐘(00…59)
- %S : 秒(00…61)
- %X : 相當于 %H:%M:%S
- %Y : 完整年份 (0000…9999)
- %m : 月份 (01…12)
- %d : 日 (01…31)
- %F : 相當于 %Y-%m-%d
使用舉例:
[ll@VM-0-12-centos lesson3]$ date
Sun Jan 2 22:50:25 CST 2022
[ll@VM-0-12-centos lesson3]$ date +%Y-%m-%d-%H:%M:%S
2022-01-02-22:51:01
設定時間:
- date -s //設定當前時間,只有root權限才能設定,其他只能查看,
- date -s 20080523 //設定成20080523,這樣會把具體時間設定成空00:00:00
- date -s 01:01:01 //設定具體時間,不會對日期做更改
- date -s “01:01:01 2008-05-23″ //這樣可以設定全部時間
- date -s “01:01:01 20080523″ //這樣可以設定全部時間
- date -s “2008-05-23 01:01:01″ //這樣可以設定全部時間
- date -s “20080523 01:01:01″ //這樣可以設定全部時間
2)時間戳
時間戳是指格林威治時間自1970年1月1日(00:00:00 GMT)至當前時間所經過的總秒數,它也被稱為Unix時間戳(Unix Timestamp),
時間 --> 時間戳:
[ll@VM-0-12-centos ~]$ date +%s
1641136824 #指從1970年1月1日00:00到現在累計的秒數
時間戳 --> 時間:
#時間戳轉日期時間
[ll@VM-0-12-centos ~]$ date -d @1641136824
Sun Jan 2 23:20:24 CST 2022
#時間戳轉指定格式的日期時間
[ll@VM-0-12-centos ~]$ date +%Y-%m-%d-%H:%M:%S -d @1641136824
2022-01-02-23:20:24
【思考】
請看下面這個,為啥顯示的是1970年1月1日08:00:00呢?不應該是1970年1月1日00:00:00嗎?
[ll@VM-0-12-centos ~]$ date +%Y-%m-%d-%H:%M:%S -d @0
1970-01-01-08:00:00 #格林威治與北京的時差是8小時
【思考】
為什么要有時間戳?
- 因為是累計的秒數,遞增且不重復的,比較適合進行查找,尤其是范圍查找,
- 時間戳比起正常的日期時間在記憶體中占的空間也比較小,
比如我想要查找某年某月某日8點20分到8點50分的監控錄像,輸出時間去查找太麻煩了,還要控制它的格式,而我們找到這段時間的起始時間戳,很方便就可以去定位到這段監控,
正因為有這樣的特點,日志當中可能會使用到時間戳,
【拓展】
時間戳用無符號整型變數來存盤的,那么隨著時間遞增,有沒有可能溢位呢?
答案是有可能的,而且溢位了影響會相當大,時間一旦紊亂了,鐵軌飛機的調度,銀行的取款和借貸等等都會受到巨大的影響,感興趣的可以去看一下:千年蟲(計算機2000年問題)
那這個問題可以徹底解決嗎?目前是不能的
08)cal 指令
cal命令可以用來顯示公歷(陽歷)日歷,公歷是現在國際通用的歷法,又稱格列歷,通稱陽歷,“陽歷”又名“太陽
歷”,系以地球繞行太陽一周為一年,為西方各國所通用,故又名“西歷”,
語法: cal [引數] [月份] [年份]
功能: 用于查看日歷等時間資訊,如只有一個引數,則表示年份(1-9999),如有兩個引數,則表示月份和年份,
常用選項:
- -3 顯示系統前一個月,當前月,下一個月的月歷
- -j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數)
- -y 顯示當前年份的日歷
09)find 指令(重要)
- Linux下 find 命令在目錄結構中搜索檔案,并執行指定的操作,
- Linux下 find 命令提供了相當多的查找條件,功能很強大,由于 find 具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解下,
- 即使系統中含有網路檔案系統(NFS),find 命令在該檔案系統中同樣有效,只你具有相應的權限,
- 在運行一個非常消耗資源的 find 命令時,很多人都傾向于把它放在后臺執行,因為遍歷一個大的檔案系統可能會花費很長的時間(這里是指30G位元組以上的檔案系統),
語法: find [pathname路徑名] -options
功能: 用于在檔案樹中查找檔案,并作出相應的處理(可能訪問磁盤),所以查找速度慢
常用選項:
-name 按照檔案名查找檔案,
#在家目錄下查找名為test.c的檔案 [ll@VM-0-12-centos lesson3]$ find ~ -name test.c /home/ll/lesson3/test.c /home/ll/school/test3/test.c /home/ll/school/test4/test.c
【拓展】
其它查找指令
- 「whilch」:用來查找命令所在路徑的命令
#示例1:
[ll@VM-0-12-centos lesson3]$ which ls
alias ls='ls --color=auto' #alias取別名
/usr/bin/ls
#示例2:
[ll@VM-0-12-centos lesson3]$ which ll
alias ll='ls -l --color=auto' #alias取別名
/usr/bin/ls
#示例3:
[ll@VM-0-12-centos lesson3]$ which pwd
/usr/bin/pwd
【思考】
我們平時經常用「 ls 」和「 ll 」這兩個命令,它們又有何區別呢?
alias作用是給命令取別名,「 ll 」是「 ls 」加了特定選項「 -l 」后的一個別名,如上代碼所示
alias ls='ls --color=auto'
alias ll='ls -l --color=auto'
那我們自己可以取別名嗎?當然可以,比如:
(注:我們自己取的別名只能在當前終端視窗中有效)
#給ls -l -a -i命令取別名為lll
[ll@VM-0-12-centos lesson3]$ alias lll='ls -l -a -i --color=auto'
#使用lll命令
[ll@VM-0-12-centos lesson3]$ lll
total 124
655469 drwxrwxr-x 3 ll ll 4096 Jan 2 21:39 .
655457 drwx------ 16 ll ll 4096 Jan 2 22:01 ..
790011 drwxrwxr-x 2 ll ll 4096 Jan 2 19:37 dir
655410 -rw-rw-r-- 1 ll ll 33 Jan 2 18:35 test.c
- 「whereis」:在系統中特定路徑下,對檔案、命令等相關檔案的查找(只要包含了這個關鍵字,都會找出來)
#示例1:
[ll@VM-0-12-centos lesson3]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
#示例2:
[ll@VM-0-12-centos lesson3]$ whereis pwd
pwd: /usr/bin/pwd /usr/include/pwd.h /usr/share/man/mann/pwd.n.gz /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz
10)zip/unzip 指令
Linux中常見的
語法: zip [壓縮檔案.zip] [目錄或檔案]
功能: 將目錄或檔案壓縮成zip格式
常用選項:
- -r 遞回處理,將指定目錄下的所有檔案和子目錄一并處理
使用舉例:
#將lesson3一級目錄下的所有檔案壓縮
zip lesson3.zip lesson3/*
#將lesson3目錄下及其子目錄的所有檔案壓縮
zip -r lesson3.zip lesson3/*
#將lesson3解壓到tmp目錄下
Unzip lesson3.zip -d /tmp #-d解壓到指定目錄tmp
11)tar 指令(重要)
語法:tar [選項] [壓縮檔案.tgz] [目錄或檔案]
選項:
- -c :建立一個壓縮檔案的引數指令(create 的意思);
- -x :解開一個壓縮檔案的引數指令!
- -z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
- -j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
- -f :使用檔名,請留意,在 f 之后要立即接檔名喔!不要再加引數!
- -v :壓縮的程序中顯示檔案!這個常用,但不建議用在背景執行程序!
- -t :查看 tarfile 里面的檔案!
- -C : 解壓到指定目錄
使用舉例:
打包:
tar -czf lesson3.tgz lesson3
tar -cvzf lesson3.tgz lesson3 #-v顯示壓縮的程序,壓縮的哪些檔案,這樣防止遺漏檔案
解包:
tar -xzf lesson3.tgz #解壓到當前目錄
tar -xzf lesson3.tgz -C /tmp #-C解壓到指定目錄tmp
tar -xvzf lesson3.tgz lesson3 #-v顯示解壓的程序,解壓的哪些檔案,這樣防止遺漏檔案
【思考】
為什么要有壓縮包?
壓縮包本質就是:大量檔案(普通檔案+目錄) -> 一個檔案(壓縮包),這樣**方便傳輸,存盤空間小**,
- 減少因為網路或者其它原因導致檔案丟失的情況,我們把多個檔案打包成一個檔案,只要保證把這一個檔案下載下來,就能夠完整得到想要的多個檔案
- 減少存盤/傳送的成本
12)bc 指令
bc命令是任意精度計算器語言,通常在linux下當計算器用,
使用舉例:
通過管道符:
[ll@VM-0-12-centos lesson3]$ echo "(1+2*3+4+5)/3" | bc
5
scale=2 設小數位,2 代表保留兩位:
[ll@VM-0-12-centos lesson3]$ echo "scale=2;1+2+3+4+5/3" | bc
11.66
13)uname 指令
語法:uname [選項]
功能: uname用來獲取電腦和作業系統的相關資訊,(uname可顯示linux主機所用的作業系統的版本、硬體的名稱等基本資訊,)
常用選項:
-a 或 –all 詳細輸出所有資訊,主機名,內核名稱,內核版本號,內核版本,硬體名,處理器型別,硬體平臺型別,作業系統名稱等等
![]()
內核版本不是上層作業系統版本
14)重要的幾個熱鍵 [Tab],[ctrl+c],[ctrl+d]
- 「history 指令」:顯示輸入過的歷史命令
- 「ctrl + r」按鍵:搜索歷史命令
- 「Tab」按鍵:具有『命令補全』和『檔案補齊』的功能
- 「ctrl + c」按鍵:讓當前的程式『停掉』
- 「ctrl + d」按鍵:通常代表著:鍵盤輸入結束(End Of File, EOF 或 End Of Input)的意思;另外,他也可以用來取代 exit
- 「exit 指令」:可以用來退出當前用戶登錄
15)關機指令 shutdown
語法:shutdown [選項]
常見選項:
- -h : 將系統的服務停掉后,立即關機,
- -r : 在將系統的服務停掉之后就重新啟動
- -t sec : -t 后面加秒數,即『過幾秒后關機』的意思
擴展命令
◆ 安裝和登錄命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 檔案處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系統管理相關命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 網路操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系統安全相關命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/402607.html
標籤:其他
