前言
陸川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
第1章 Linux命令行簡介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令幫助 / 4
1.3Linux shutdown reboot halt / 9
關(guān)機:
shutdown -h now
halt
init 0
第2章 文件和目錄操作命令 / 13
2.1pwd:顯示當前所在的位置 / 13
2.2cd:切換目錄 / 16
2.3tree:以樹形結(jié)構(gòu)顯示目錄下的內(nèi)容 / 18
2.4mkdir:創(chuàng)建目錄 / 22
2.5touch:創(chuàng)建空文件或改變文件的時間戳屬性 / 27
2.6ls:顯示目錄下的內(nèi)容及相關(guān)屬性信息 / 30
2.7cp:復制文件或目錄 / 39
2.8mv:移動或重命名文件 / 42
2.9rm:刪除文件或目錄 / 45
2.10rmdir:刪除空目錄 / 48
2.11ln:硬鏈接與軟鏈接 / 49
2.12readlink:查看符號鏈接文件的內(nèi)容 / 54
2.13find:查找目錄下的文件 / 55
2.14xargs:將標準輸入轉(zhuǎn)換成命令行參數(shù) / 68
2.15rename:重命名文件 / 71
2.16basename:顯示文件名或目錄名 / 72
2.17dirname:顯示文件或目錄路徑 / 72
2.18chattr:改變文件的擴展屬性 / 73
2.19lsattr:查看文件擴展屬性 / 75
2.20file:顯示文件的類型 / 76
2.21md5sum:計算和校驗文件的MD5值 / 77
2.22chown:改變文件或目錄的用戶和用戶組 / 80
2.23chmod:改變文件或目錄權(quán)限 / 81
2.24chgrp:更改文件用戶組 / 85
2.25umask:顯示或設置權(quán)限掩碼 / 86
2.26老男孩從新手成為技術(shù)大牛的心法 / 90
第3章 文件過濾及內(nèi)容編輯處理命令 / 91
3.1cat:合并文件或查看文件內(nèi)容 / 91
3.2tac:反向顯示文件內(nèi)容 / 103
3.3more:分頁顯示文件內(nèi)容 / 104
3.4less:分頁顯示文件內(nèi)容 / 107
3.5head:顯示文件內(nèi)容頭部 / 109
3.6tail:顯示文件內(nèi)容尾部 / 111
3.7tailf:跟蹤日志文件 / 114
3.8cut:從文本中提取一段文字并輸出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按兩個文件的相同字段合并 / 127
3.13uniq:去除重復行 / 129
3.14wc:統(tǒng)計文件的行數(shù)、單詞數(shù)或字節(jié)數(shù) / 131
3.15iconv:轉(zhuǎn)換文件的編碼格式 / 133
3.16dos2unix:將DOS格式文件轉(zhuǎn)換成UNIX格式 / 134
3.17diff:比較兩個文件的不同 / 135
3.18vimdiff:可視化比較工具 / 138
3.19rev:反向輸出文件內(nèi)容 / 139
3.20tr:替換或刪除字符 / 140
3.21od:按不同進制顯示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:純文本編輯器 / 147
3.24老男孩逆襲思想:做Linux運維的多個好處 / 152
第4章 文本處理三劍客 / 153
4.1grep:文本過濾工具 / 153
4.2sed:字符流編輯器 / 159
4.3awk基礎(chǔ)入門 / 165
第5章 Linux信息顯示與搜索文件命令 / 176
5.1uname:顯示系統(tǒng)信息 / 176
5.2hostname:顯示或設置系統(tǒng)的主機名 / 178
5.3dmesg:系統(tǒng)啟動異常診斷 / 179
5.4stat:顯示文件或文件系統(tǒng)狀態(tài) / 181
5.5du:統(tǒng)計磁盤空間使用情況 / 183
5.6date:顯示與設置系統(tǒng)時間 / 186
5.7echo:顯示一行文本 / 190
5.8watch:監(jiān)視命令執(zhí)行情況 / 193
5.9which:顯示命令的全路徑 / 195
5.10whereis:顯示命令及其相關(guān)文件全路徑 / 196
5.11locate:快速定位文件路徑 / 197
5.12updatedb:更新mlocate數(shù)據(jù)庫 / 199
5.13老男孩逆襲思想:新手在工作中如何問問題不會被鄙視 / 200
第6章 文件備份與壓縮命令 / 201
6.1tar:打包備份 / 201
6.2gzip:壓縮或解壓文件 / 208
6.3zip:打包和壓縮文件 / 211
6.4unzip:解壓zip文件 / 212
6.5scp:遠程文件復制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆襲思想:新手如何高效地提問 / 220
第7章 Linux用戶管理及用戶信息查詢命令 / 222
7.1 useradd:創(chuàng)建用戶 / 222
7.2usermod:修改用戶信息 / 227
7.3userdel:刪除用戶 / 229
7.4groupadd:創(chuàng)建新的用戶組 / 230
7.5groupdel:刪除用戶組 / 231
7.6passwd:修改用戶密碼 / 232
7.7chage:修改用戶密碼有效期 / 237
7.8chpasswd:批量更新用戶密碼 / 238
7.9su:切換用戶 / 240
7.10visudo:編輯sudoers文件 / 242
7.11sudo:以另一個用戶身份執(zhí)行命令 / 244
7.12id:顯示用戶與用戶組的信息 / 248
7.13w:顯示已登錄用戶信息 / 249
7.14who:顯示已登錄用戶信息 / 250
7.15users:顯示已登錄用戶 / 252
7.16whoami:顯示當前登錄的用戶名 / 253
7.17last:顯示用戶登錄列表 / 253
7.18lastb:顯示用戶登錄失敗的記錄 / 254
7.19lastlog:顯示所有用戶的最近登錄記錄 / 255
第8章 Linux磁盤與文件系統(tǒng)管理命令 / 257
8.1fdisk:磁盤分區(qū)工具 / 257
8.2partprobe:更新內(nèi)核的硬盤分區(qū)表信息 / 265
8.3tune2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)參數(shù) / 266
8.4parted:磁盤分區(qū)工具 / 268
8.5mkfs:創(chuàng)建Linux文件系統(tǒng) / 272
8.6dumpe2fs:導出ext2/ext3/ext4文件系統(tǒng)信息 / 274
8.7resize2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)大小 / 275
8.8fsck:檢查并修復Linux文件系統(tǒng) / 278
8.9dd:轉(zhuǎn)換或復制文件 / 281
8.10mount:掛載文件系統(tǒng) / 284
8.11umount:卸載文件系統(tǒng) / 288
8.12df:報告文件系統(tǒng)磁盤空間的使用情況 / 289
8.13mkswap:創(chuàng)建交換分區(qū) / 293
8.14swapon:激活交換分區(qū) / 294
8.15swapoff:關(guān)閉交換分區(qū) / 295
8.16sync:刷新文件系統(tǒng)緩沖區(qū) / 296
第9章 Linux進程管理命令 / 298
9.1ps:查看進程 / 298
9.2pstree:顯示進程狀態(tài)樹 / 305
9.3pgrep:查找匹配條件的進程 / 306
9.4kill:終止進程 / 307
9.5killall:通過進程名終止進程 / 310
9.6pkill:通過進程名終止進程 / 311
9.7top:實時顯示系統(tǒng)中各個進程的資源占用狀況 / 313
9.8nice:調(diào)整程序運行時的優(yōu)先級 / 320
9.9renice:調(diào)整運行中的進程的優(yōu)先級 / 323
9.10nohup:用戶退出系統(tǒng)進程繼續(xù)工作 / 324
9.11strace:跟蹤進程的系統(tǒng)調(diào)用 / 325
9.12ltrace:跟蹤進程調(diào)用庫函數(shù) / 332
9.13runlevel:輸出當前運行級別 / 334
9.14init:初始化Linux進程 / 335
9.15service:管理系統(tǒng)服務 / 335
第10章 Linux網(wǎng)絡管理命令 / 338
10.1ifconfig:配置或顯示網(wǎng)絡接口信息 / 338
10.2ifup:激活網(wǎng)絡接口 / 343
ifup eth0
10.3ifdown:禁用網(wǎng)絡接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整個網(wǎng)絡,所有網(wǎng)卡。
10.4route:顯示或管理路由表 / 344
10.5arp:管理系統(tǒng)的arp緩存 / 350
10.6ip:網(wǎng)絡配置工具 / 351
10.7netstat:查看網(wǎng)絡狀態(tài) / 358
10.8ss:查看網(wǎng)絡狀態(tài) / 362
10.9ping:測試主機之間網(wǎng)絡的連通性 / 363
10.10traceroute:追蹤數(shù)據(jù)傳輸路由狀況 / 366
10.11arping:發(fā)送arp請求 / 367
10.12telnet:遠程登錄主機 / 369
10.13nc:多功能網(wǎng)絡工具 / 370
10.14ssh:安全地遠程登錄主機 / 373
10.15wget:命令行下載工具 / 376
10.16mailq:顯示郵件傳輸隊列 / 379
10.17mail:發(fā)送和接收郵件 / 381
10.18nslookup:域名查詢工具 / 386
10.19dig:域名查詢工具 / 389
10.20host:域名查詢工具 / 393
10.21nmap:網(wǎng)絡探測工具和安全/端口掃描器 / 394
10.22tcpdump:監(jiān)聽網(wǎng)絡流量 / 398
第11章 Linux系統(tǒng)管理命令 / 407
11.1lsof:查看進程打開的文件 / 407
11.2uptime:顯示系統(tǒng)的運行時間及負載 / 411
11.3free:查看系統(tǒng)內(nèi)存信息 / 411
11.4iftop:動態(tài)顯示網(wǎng)絡接口流量信息 / 413
11.5vmstat:虛擬內(nèi)存統(tǒng)計 / 415
11.6mpstat:CPU信息統(tǒng)計 / 419
11.7iostat:I/O信息統(tǒng)計 / 420
11.8iotop:動態(tài)顯示磁盤I/O統(tǒng)計信息 / 423
11.9sar:收集系統(tǒng)信息 / 425
11.10chkconfig:管理開機服務 / 430
11.11ntsysv:管理開機服務 / 433
11.12? setup:系統(tǒng)管理工具 / 434
11.13ethtool:查詢網(wǎng)卡參數(shù) / 436
11.14mii-tool:管理網(wǎng)絡接口的狀態(tài) / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自動化RPM包管理工具 / 446
top命令
第12章 Linux系統(tǒng)常用內(nèi)置命令 / 450
12.1Linux內(nèi)置命令概述 / 450
12.2Linux內(nèi)置命令簡介 / 450
12.3Linux常用內(nèi)置命令實例 / 452
如果一個名稱用%括起來,那么就是用的它的賦值,而不是本身的字母
比如
echo time echo %time%
以上兩個前者顯示time這個字母,后者顯示系統(tǒng)時間 19:42:12:02
還有%diskdiver%=系統(tǒng)盤等。
可以用set自己設定,有一些是系統(tǒng)默認的比容上面說的time;diskdiver
----------------------------------------------------------------------
FOR這條命令基本上都被用來處理文本,我們這次除了要說他處理文本的作用外還要講他的其他一些好用的功能!
看看他的基本格式(這里我引用的是批處理中的格式,直接在命令行只需要一個%號)
FOR 參數(shù) %%變量名 IN (相關(guān)文件或命令) DO 執(zhí)行的命令
參數(shù):FOR有4個參數(shù) /d /l /r /f 他們的作用我在下面用例子解釋
%%變量名 :這個變量名可以是小寫a-z或者大寫A-Z,他們區(qū)分大小寫哦~
FOR會把每個讀取到的值給他!
IN:命令的格式,照寫就是了!
(相關(guān)文件或命令) :FOR要把什么東西讀取然后賦值給變量,不懂的話看下面的例子
do:命令的格式,照寫就是了!
執(zhí)行的命令:對每個變量的值要執(zhí)行什么操作就寫在這.
看不懂我的這些說明,可以在CMD輸入for /?看系統(tǒng)提供的幫助!我這里也給出來吧,大家對照
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一個單一字母可替換的參數(shù)。
(set) 指定一個或一組文件??梢允褂猛ㄅ浞?/p>
command 指定對每個文件執(zhí)行的命令。
command-parameters
為特定命令指定參數(shù)或命令行開關(guān)。
現(xiàn)在開始講每個參數(shù)的意思
/d
僅為目錄
如果 Set (也就是我上面寫的 "相關(guān)文件或命令") 包含通配符(* 和 ?),將對與 Set 相匹配的每個目錄(而不是指定目錄中的文件組)執(zhí)行指定的 Command。
這個參數(shù)其實我也沒弄太懂...有錯誤希望各位糾正!
系統(tǒng)幫助的格式:FOR /D %%variable IN (set) DO command
他主要用于目錄搜索,不會搜索文件,看這樣的例子
@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在C盤根目錄執(zhí)行,就會把C盤目錄下的全部目錄名字打印出來,而文件名字一個也不顯示!
在來一個,比如我們要把當前路徑下文件夾的名字只有1-3個字母的打出來
@echo off
for /d %%i in (???) do @echo %%i
pause
這樣的話如果你當前目錄下有目錄名字只有1-3個字母的,就會顯示出來,沒有就不顯示了
這里解釋下*號和?號的作用,*號表示任意N個字符,而?號只表示任意一個字符
知道作用了,給大家個思考題目!
@echo off
for /d %%i in (window?) do @echo %%i
pause
保存到C盤下執(zhí)行,會顯示什么呢?自己看吧!
/D參數(shù)只能顯示當前目錄下的目錄名字,這個大家要注意!
/R
遞歸
進入根目錄樹 [Drive:]Path,在樹的每個目錄中執(zhí)行 for 語句。如果在 /R 后沒有指定目錄,則認為是當前目錄。如果 Set 只是一個句點 (.),則只枚舉目錄樹。
系統(tǒng)幫助的格式:FOR /R [[drive:]path] %%variable IN (set) DO command
上面我們知道,/D只能顯示當前路徑下的目錄名字,那么現(xiàn)在這個/R也是和目錄有關(guān),他能干嘛呢?放心他比/D強大多了!
他可以把當前或者你指定路徑下的文件名字全部讀取,注意是文件名字,有什么用看例子!
@echo off
for /r c:\ %%i in (*.exe) do @echo %%i
pause
咋們把這個BAT保存到D盤隨便哪里然后執(zhí)行,我會就會看到,他把C盤根目錄,和每個目錄的子目錄下面全部的EXE文件都列出來了!!!!
再來一個
@echo off
for /r %%i in (*.exe) do @echo %%i
pause
參數(shù)不一樣了吧!這個命令前面沒加那個C:\也就是搜索路徑,這樣他就會以當前目錄為搜索路徑,比如你這個BAT你把他防災d:\test目錄下執(zhí)行,那么他就會把D:\test目錄和他下面的子目錄的全部EXE文件列出來!!!
這個參數(shù)大家因該理解了吧!還是滿好玩的命令!
/L
迭代數(shù)值范圍
使用迭代變量設置起始值 (Start#),然后逐步執(zhí)行一組范圍的值,直到該值超過所設置的終止值 (End#)。/L 將通過對 Start# 與 End# 進行比較來執(zhí)行迭代變量。如果 Start# 小于 End#,就會執(zhí)行該命令。如果迭代變量超過 End#,則命令解釋程序退出此循環(huán)。還可以使用負的 Step# 以遞減數(shù)值的方式逐步執(zhí)行此范圍內(nèi)的值。例如,(1,1,5) 生成序列 1 2 3 4 5,而 (5,-1,1) 則生成序列 (5 4 3 2 1)。語法是:
系統(tǒng)幫助的格式:for /L %% Variable in (Start#,Step#,End#) do Command
看著這說明有點暈吧!咋們看例子就不暈了!
@echo off
for /l %%i in (1,1,5) do @echo %%i
pause
保存執(zhí)行看效果,他會打印從1 2 3 4 5 這樣5個數(shù)字
(1,1,5)這個參數(shù)也就是表示從1開始每次加1直到5終止!
大會暈,就打印個數(shù)字有P用...好的滿足大家,看這個例子
@echo off
for /l %%i in (1,1,5) do start cmd
pause
執(zhí)行后是不是嚇了一跳,怎么多了5個CMD窗口,呵呵!如果把那個 (1,1,5)改成 (1,1,65535)會有什么結(jié)果,我先告訴大家,會打開65535個CMD窗口....這么多你不死機算你強!
當然我們也可以把那個start cmd改成md %%i 這樣就會建立指定個目錄了!!!名字為1-65535
看完這個被我賦予破壞性質(zhì)的參數(shù)后,我們來看最后一個參數(shù)
/f
\迭代及文件解析
使用文件解析來處理命令輸出、字符串及文件內(nèi)容。使用迭代變量定義要檢查的內(nèi)容或字符串,并使用各種 ParsingKeywords 選項進一步修改解析方式。使用 ParsingKeywords 令牌選項指定哪些令牌應該作為迭代變量傳遞。請注意:在沒有使用令牌選項時,/F 將只檢查第一個令牌。
文件解析過程包括讀取輸出、字符串或文件內(nèi)容,將其分成獨立的文本行以及再將每行解析成零個或更多個令牌。然后通過設置為令牌的迭代變量值,調(diào)用 for 循環(huán)。默認情況下,/F 傳遞每個文件每一行的第一個空白分隔符號。跳過空行。
系統(tǒng)幫助的格式:
for /F "ParsingKeywords" %% Variable in (FileNameSet) do Command
有沒有發(fā)現(xiàn)這個參數(shù)說明比上面幾個都多...沒辦法,人們用FOR命令主要也就是用/f參數(shù),FOR的主場啊!大家得好好看!
先來解釋下那個多出來的"ParsingKeywords"
他表示4個參數(shù)
eol=c - 指一個行注釋字符的結(jié)尾(就一個)
skip=n - 指在文件開始時忽略的行數(shù)。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代
的 for 本身。這會導致額外變量名稱的分配。m-n
格式為一個范圍。通過 nth 符號指定 mth。如果
符號字符串中的最后一個字符星號,
那么額外的變量將在最后一個符號解析之后
分配并接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:
在作為命令執(zhí)行一個后引號的字符串并且一個單
引號字符為文字字符串命令并允許在 filenameset
中使用雙引號擴起文件名稱。
先別暈了!我這就舉個例子幫助大家來理解這些參數(shù)!
usebackq這個參數(shù)不用理解了,系統(tǒng)默認會給我們加上!
為了能使用這個例子,我們先新建一個文本文件,在里面打上這些內(nèi)容保存為test.txt:
;郁悶啊!
您好! 歡迎來到, 非常批處理
我們的網(wǎng)站 bbs.verybat.org
完畢!
@echo off
FOR /F "eol=; tokens=1 delims= " %%i in (test.txt) do @echo %%i
pause
我們把這個BAT保存到和你的test.txt相同的目錄下面然后執(zhí)行
我們會看到屏幕上會顯示
您好!
我們的網(wǎng)站
完畢!
為什么會這樣?我來解釋
這個命令會讀取在當前目錄下名為test.txt文件中的內(nèi)容,將每一行的內(nèi)容賦值給變量%%i,忽略掉以;號開頭的行,并且以空格做為分隔符號,打印每行以空格做分隔符號的第一列
結(jié)果就是這樣了!!
如果改成
當然我們想要把全部文件內(nèi)容直接打印出來就可以這樣
@echo off
FOR /F "delims=" %%i in (test.txt) do @echo %%i
pause
另外/F參數(shù)還可以以輸出命令的結(jié)果看這個例子
@echo off
FOR /F "delims=" %%i in ('net user') do @echo %%i
pause
這樣你本機全部帳號名字就出來了把擴號內(nèi)的內(nèi)容用兩個單引號引起來就表示那個當命令執(zhí)行,FOR會返回命令的每行結(jié)果,加那個"delims=" 是為了讓我空格的行能整行顯示出來,不加就只顯示空格左邊一列!
基本上講完了FOR的基本用法了...如果你看過FOR的系統(tǒng)幫助,你會發(fā)現(xiàn)他下面還有一些特定義的變量,這些我先不講.大家因該都累了吧!你不累我累啊....
模式:
當打開終端,第一行所見的就叫命令行提示符。我的是這樣的:
命令行提示符,顧名思義就是提示在其后面輸入命令。在你輸入新的一行命令前,這個命令提示符都會出現(xiàn)。分別解析一下上邊代表什么意思:
oscar 這是當前用戶的名字。Linux是一個多用戶的操作系統(tǒng),Windows也可以。不過Linux的多用戶管理更方便。我們一般建議每個使用Linux系統(tǒng)的用戶都創(chuàng)建一個屬于自己的賬戶,便于隱私管理。
@ 這個符號我們應該不陌生,我們的電子郵件一般都是 name@domain.com 這樣的不是嗎。這個@就表示英語里的at,是“在...里面,落戶在...的,在其中”的意思。@前面是用戶名,后面是所在的域。
oscar-laptop 這是當前電腦/操作系統(tǒng)的名字。上面說了在@后面的是一個域,所以 oscar@oscar-laptop 就表示oscar-laptop這臺電腦的oscar這個用戶。oscar-laptop這個名稱在安裝此Linux系統(tǒng)時可以任意指定。
: 這是分隔符,沒有什么特別的涵義。
~ 這是當前所在目錄的名字,會隨著用戶進入不同目錄而改變。~表示當前用戶的家目錄,有點類似Windows系統(tǒng)的“我的文檔”這個目錄。
$ 指示你所具有的權(quán)限的字符。在Linux系統(tǒng)中有兩種可能:
因此, oscar@oscar-laptop:~$ 的意思就是:
你目前是以oscar這個用戶登錄;你的電腦名稱為oscar-laptop;你目前位于 ~ 目錄下,就是你的用戶家目錄。你是普通用戶,擁有有限的權(quán)限。
參數(shù)里可以包含多個參數(shù),由空格隔開,也可以包含數(shù)字,字母,等等??梢哉f,參數(shù)沒有固定的格式,但是一般來說還是遵循一定的規(guī)范的。
如果我們要一次加好幾個短參數(shù),可以用空格隔開,例如:
多個短參數(shù)也可以合并在一起,例如上面的命令等價于:
請注意:參數(shù)的字母的大小寫是有區(qū)別的,大寫的T和小寫的t通常表示不同意思。
如果有多個長參數(shù),是不能像多個短參數(shù)那樣合并寫的。而是只能以空格隔開,例如:
當然我們也可以組合使用短參數(shù)和長參數(shù),例如:
有時候,同一個意義的參數(shù)有短參數(shù)和長參數(shù)兩種形式,效果是一樣的,可以任選哪一種。
有一些參數(shù)你還需要給它賦一個值才行。而且短參數(shù)和長參數(shù)的賦值的方式不盡相同。
例如,短參數(shù)賦值,通常是這樣的:
表示把10賦值給p參數(shù)。
如果是長參數(shù),則一般是這樣賦值:
長參數(shù)的方式更加容易理解,但是不如短參數(shù)那么簡潔。
正如我們說過的,參數(shù)的形式?jīng)]有絕對的準則。我們上面給出的規(guī)則是一般的,有些命令的參數(shù)格式可能是我們沒怎么見過的。
有些參數(shù)就不一樣,而且取決于命令。例如對于 ls 這個命令,假如后面帶了一個參數(shù),這個參數(shù)是一個目錄的路徑名的話,那么就會列出此目錄下的文件。
兩種類型的文件
簡單起見,我們把Linux下的文件分為兩大類:
在一個文件系統(tǒng)中,我們總有一個被稱為根目錄的東西,這個根目錄里包含了所有其他目錄和文件。Linux中有且只有一個根目錄,就是
是的,就是用一個斜杠表示。沒有比根目錄再高一階的目錄了,因為沒有目錄包含根目錄,根目錄就是Linux最頂層的目錄。
Linux系統(tǒng)安裝后,包含了很多的文件和目錄(雖然其實都是文件),我們很容易迷失在“茫茫文?!敝?。
當然我們不可能一下子列出Linux中的所有文件,那不現(xiàn)實。但是我們可以向你展示如何在Linux的目錄樹中來回穿梭,你可以知道此刻你位于哪個目錄下。就好比能看懂Linux這個很大的“地圖”。
pwd 是英語Print Working Directory的縮寫,表示“打印當前工作目錄”。
which 命令:獲取命令的可執(zhí)行文件的位置,which命令用于顯示一個命令的對應的可執(zhí)行程序的位置??赡苈犉饋碛悬c拗口。
在Linux下,每一條命令其實對應了一個可執(zhí)行程序。我們在終端中輸入命令,再按回車的時候,其實就是執(zhí)行了對應的那個程序。比如說,pwd命令對應的pwd程序就是存在于Linux中的。
which命令接受一個參數(shù),也就是你想要知道其可執(zhí)行程序位于哪里的那個命令。
我們來測試一下,就拿pwd命令來測試好了:
得到:
因此,pwd命令對應的pwd這個可執(zhí)行程序位于/bin目錄中。
我們也可以注意到Linux中的可執(zhí)行程序和Windows中不太一樣,在Windows中可執(zhí)行程序一般以.exe結(jié)尾,而Linux中一般是沒有后綴名的。
Linux中的可執(zhí)行程序也不是都位于相同目錄的。我們可以來測試一下which命令本身對應的可執(zhí)行程序位于哪里:
我們可以看到,which命令對應的可執(zhí)行程序which并不位于/bin中,而是在/usr/bin中。
Ubuntu的終端默認是有顏色標注的,一般來說:
如果在你的終端里沒有標明顏色,那么你可以加上參數(shù) --color=auto 來開啟顏色標注。如下:
如果你不需要顏色標注,那么可以用 --color=none 來關(guān)閉顏色標注。如下:
當然,為了避免每次都輸入這么一串額外的參數(shù),其實我們可以在一個配置文件里修改,使得永久顯示顏色或不顯示顏色。
在Linux,以點( . )開頭的文件是隱藏文件,不過這里不包括開頭的兩個 . 和 .. ,這兩個的含義如下:
- . (一個點)表示當前目錄。在當前情況下,就是 /home/oscar 。
- .. (兩個點)表示上一級目錄。因為當前目錄是/home/oscar,所以上一級目錄就是 /home 。
我們有一個大寫的參數(shù) -A,它的作用和小寫的-a幾乎一樣,唯一不同就是-A不列出 . 和 .. 這兩個文件。
-l 這個參數(shù)算是ls命令最常用的了。加上-l參數(shù)使得ls命令列出一個顯示文件和目錄的詳細信息的列表。
當我們僅用ls -l時,列出的文件詳細信息中,文件的大小是以字節(jié)為單位的。有時這不是太直觀。我們可以再加一個參數(shù)-h,h是humain readable的縮寫,表示“適合人類閱讀的”。所以我們的命令變成了:
t是time的縮寫。
du命令也是很有用的,因為它可以讓我們知道文件和目錄所占的空間大小。
雖然ls -l命令也可以顯示文件和目錄的大小,但是du命令統(tǒng)計的才是真正的文件大小。du命令會深入遍歷每個目錄的子目錄,把所有文件的大小都做一個統(tǒng)計。
du是英語disk usage的縮寫,表示“磁盤使用/占用”。
我們的du命令也可以使用參數(shù)。
cat命令和less命令:顯示文件內(nèi)容,這兩個命令只能顯示文件內(nèi)容,并不能對文件內(nèi)容進行修改。
一次性顯示文件的所有內(nèi)容,如果你想要在顯示的文件內(nèi)容上加上行號,那么你可以加上 -n 這個參數(shù)。
分頁顯示文件內(nèi)容
head命令和tail命令:顯示文件的開頭和結(jié)尾。
顯示文件開頭,默認情況下,head會顯示文件的頭10行。我們也可以指定顯示的行數(shù),用 -n 這個參數(shù):
就會顯示文件的頭5行。
顯示文件結(jié)尾。默認情況下,tail會顯示文件的尾10行。
我們也可以指定顯示的行數(shù),用 -n 這個參數(shù):
就會顯示文件的尾5行。
tail命令還可以配合 -f 參數(shù)來實時追蹤文件的更新:
這樣,就會檢查文件是否有追加內(nèi)容,如果有,就顯示新增內(nèi)容。
默認地,tail -f會每過1秒檢查一下文件是否有新內(nèi)容。你也可以指定間隔檢查的秒數(shù),用 -s 參數(shù):
可以用快捷鍵 Ctrl + c 來終止tail -f 命令。
touch命令和mkdir命令:創(chuàng)建文件和目錄
創(chuàng)建一個空白文件。事實上,Linux沒有一個命令是專門用來創(chuàng)建一個空白文件的。touch命令其實一開始的設計初衷是修改文件的時間戳,就是可以修改文件的創(chuàng)建時間或修改時間,讓電腦以為文件是在那個時候被修改或創(chuàng)建的。但是touch命令如果后面跟著的文件名是不存在的,那么它就會新建一個。
事實上,我們可以用touch命令同時創(chuàng)建多個文件:
如果我所要創(chuàng)建的文件的名字里有空格怎么辦呢?
很簡單,加上雙引號:
創(chuàng)建一個目錄。
mkdir也可以同時創(chuàng)建好幾個目錄:
如果我所要創(chuàng)建的目錄的名字里有空格怎么辦呢?
很簡單,加上雙引號:
我們還可以用 -p 參數(shù)來遞歸創(chuàng)建目錄結(jié)構(gòu)。
比如:
cp命令和mv命令:拷貝文件和移動文件
拷貝文件或目錄
cp是英語copy的縮寫,表示“拷貝”。所以,顧名思義,此命令用于拷貝。cp命令不僅可以拷貝單個文件,還可以拷貝多個文件,也可以拷貝目錄。
復制文件到另一個目錄只需要把cp命令的第二個參數(shù)換成目錄名。
拷貝目錄
要拷貝目錄,只要在cp命令之后加上-R參數(shù)(注意是大寫的R)??截惖臅r候,目錄中的所有內(nèi)容(子目錄和文件)都會被拷貝。
使用通配符*
*號(星號)是很常用的正則表達式的符號,被稱為“通配符”,
所以如果我們用如下命令:
那么就會把當前目錄下所有txt文件拷貝到folder這個子目錄當中。
又如:
那么就會把當前目錄下凡是以ha開頭的文件都拷貝到folder目錄中。
移動文件
mv是英語move的縮寫,表示“移動”。mv命令有兩個功能:
用mv命令來移動目錄很簡單,不需要額外的參數(shù),就跟移動文件一樣:
當然,我們也可以使用通配符。
除了移動文件,mv命令還可以用于重命名文件。
事實上,Linux中沒有一個專門的命令用于重命名文件。之所以mv命令可以重命名文件,其實還是歸因于它的機制:移動文件。經(jīng)過mv移動之后,原始文件變成了新的名字的文件,文件內(nèi)容是不變的,這不就相當于重命名了嗎?
以上命令會將new_file重命名為renamed_file。
刪除文件和目錄
rm命令可以刪除一個文件,多個文件,目錄,甚至你的整個Linux系統(tǒng)(如果你愿意的話)。
以上命令刪除當前目錄下的new_file_copy這個文件。
我們也可以同時刪除多個文件,只要用空格隔開每個文件即可。例如:
保險起見,用rm命令刪除文件時,可以加上 -i 參數(shù),這樣對于每一個要刪除的文件,終端都會詢問我們是否確定刪除。i是英語inform的縮寫,表示“告知,通知”。
有兩種回答:
y:是英語yes的縮寫,表示“是”。那么回車確認后,文件就刪除了。
n:是英語no的縮寫,表示“否”。那么回車確認后,文件不會刪除。
如果在rm命令后加上-f參數(shù),那么終端不會詢問用戶是否確定刪除文件,不論如何,文件會立刻被強制刪除。
f是英語force的縮寫。
以上命令會強制刪除file文件。
r是英語recursive的縮寫,表示“遞歸的”。所以使用-r參數(shù),可以使rm命令刪除目錄,并且遞歸刪除其包含的子目錄和文件。
這個命令也挺危險的,用得不好可能你的子目錄和文件都沒了。
以上命令會刪除one這個目錄,包括其子目錄和文件。
其實,也存在一個命令
看著和 rm -r 挺像的。但是這個命令有個局限性:只能刪除空的目錄。
創(chuàng)建鏈接
事實上,Linux下有兩種鏈接類型:
為了區(qū)分這兩種鏈接類型的不同,我們首先來談一談如Linux這樣的操作系統(tǒng)中文件在硬盤上的存放。
文件在硬盤上存儲時,大致來說(請注意我用了“大致來說”),每個文件有兩部分:
文件名的列表是儲存在硬盤的其他地方的,和文件內(nèi)容分開存放,這樣方便Linux管理。
注意:為什么我上面要用“大致說來”呢?因為此處我們簡化了描述,其實每個文件有三部分:
我們這里簡化地將文件分為兩部分:文件名和文件內(nèi)容。因為我們不想把事情復雜化,我們想要理解兩種鏈接類型的區(qū)別,暫時只要知道這些就夠了。
每個文件的文件內(nèi)容被分配到一個標示號碼,就是inode。因此每個文件名都綁定到它的文件內(nèi)容(用inode標識)。原理如下圖:
下面我們學習如何創(chuàng)建硬鏈接和軟連接。
比之軟鏈接,硬鏈接的使用幾率小很多。但是我們還是要學習一下,畢竟可能會用到。
硬鏈接的原理:使鏈接的兩個文件共享同樣的文件內(nèi)容,也就是同樣的inode。
所以一旦文件1和文件2之間有了硬鏈接,那么你修改文件1或文件2,其實修改的是相同的一塊內(nèi)容。只不過我們可以用兩個文件名來取到文件內(nèi)容。
硬鏈接有一個缺陷:只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的硬鏈接。但是軟鏈接可以指向文件或目錄。當然了,事實上,通過一些參數(shù)的修改,也可以創(chuàng)建指向目錄的硬鏈接,但是比較復雜,這里不再詳述。所以對于目錄的鏈接,我們一般都是用軟鏈接。
硬鏈接原理圖:
要創(chuàng)建硬鏈接,直接用ln命令,不加任何參數(shù):
我們可以用ls -i命令查看一下(-i參數(shù)可以顯示文件的inode)。對于硬鏈接來說,刪除任意一方的文件,共同指向的文件內(nèi)容并不會從硬盤上被刪除。
我們用ls -l命令查看文件信息的時候,第二列的那個2,其實是表示擁有相同inode號的文件數(shù)。不難理解,因為它們指向相同的文件內(nèi)容,所以共享一個inode。
這個第二列的數(shù)字,一般來說對于普通文件,都是1,因為不同文件inode不同嘛。對于目錄來說,這第二列的數(shù)字標明目錄內(nèi)所含文件數(shù)目。
其實,軟鏈接才是真正像我們在Windows下的快捷方式的,其原理很相似。
創(chuàng)建硬鏈接是ln不帶任何參數(shù),但是要創(chuàng)建軟鏈接需要加上-s參數(shù)。s是symbolic(符號的)的縮寫。
file2指向的不再是file1的文件內(nèi)容(和硬鏈接不同),而是指向file1的文件名。
軟鏈接原理圖:
用ls -l命令查看一下,會發(fā)現(xiàn)形式和之前的硬鏈接不一樣噢,file2的信息是這樣的: file2-file1,表示file2指向file1。
而且file2前面的權(quán)限那里的第一個字母變成了l,表示link(鏈接)。之前硬鏈接的時候是沒有l(wèi)的,硬鏈接外表看起來就和普通文件類似。
我們用ls -l命令查看文件信息的時候,第二列的那個1,表示擁有相同inode號的文件數(shù)。不難理解,因為file2指向file1,它們并沒有指向同一塊文件內(nèi)容,所以它們的inode號不相同。
軟鏈接的特點:
Linux終端命令快捷鍵匯總
相信很多Linux桌面用戶都對使用Linux終端感到反感,其實它沒大家想的那么復雜,很多常見操作都可以直接在終端中進行。特為大家匯總了提升終端命令執(zhí)行效率的快捷操作,希望能幫助你學習和提升效率。
移動定位光標
在終端中移動光標和定位似乎非常不便,其實不是你想的那樣,有很多種方式可以讓鍵盤成為你的好朋友,只是需要掌握正確的方法而已。
定位單詞
在長段的命令中,使用 Ctrl + ← 和 Ctrl + → 可快速將光標定位到命令中單詞的首字母或末尾,實現(xiàn)在各單詞之間的快速跳動定位。
你可以試著在終端中輸入 apt-get install build-essential 命令后,按 Ctrl+ 左鍵或 Ctrl + 右鍵來試試效果。
定位行首和行尾
定位到命令行首可以使用 Ctrl + A,行尾則使用 Ctrl + E 快捷鍵。
清除部分、全部或整行
使用 Ctrl + K 快捷鍵可以將當前光標位置之后的所有部分快速清除,Ctrl + W 可以清除當前光標位置之前的一個單詞,而 Ctrl + U 則可以直接剛整行命令直接清除。
自動補全命令或路徑
tab 鍵可以直接補全命令和路徑,讓我們免去很多輸入錯誤的可能。當然,在命令記不全時,只需輸入幾個首字母即可用 tab 鍵來補,還是十分方便的'。
例如:要在 Ubuntu 安裝軟件,只需輸入 apt-get ins 按 tab 之后即可被補全成 apt-get install。
切換最近使用的命令
在Linux 的終端歷史記錄中會記下用戶執(zhí)行過的命令,用戶只需按鍵盤的 ↓、↑ 上下箭頭即可快速切換執(zhí)行過的命令。
復制前行
!! 雙驚嘆號直接表示上一行命令,例如要用 sudo 重復執(zhí)行上一條命令,無需再輸一遍,只需執(zhí)行如下命令即可:
1. sudo !!
執(zhí)行指定歷史命令
若你想重復執(zhí)行的命令不是「上一條」,則不能再使用 !! 了。此時使用 ! 跟上要重復執(zhí)行的前述命令開頭即可。
復制前一個參數(shù)
將文件夾復制并粘貼到新路徑后,你可能還要在目錄中進行其它操作,此時可以這樣切換:
1. cd !$
其中的 !$ 表示上次使用的參數(shù),通常只用于目錄。
目錄導航
在Linux 終端中進行目錄導航和切換還是使用 cd 命令,下面介紹一些 cd命令的常見操作。
導航到特殊文件夾
在Linux 中操作文件夾時輸入路徑就是一個苦差事,但若你是通過桌面登錄系統(tǒng)的話,可以直接將要指定的文件夾拖入終端窗口,而不必手動輸入路徑。
回到上級目錄
與Windows 一樣,使用 cd.. 即可。如果要在父目錄的各文件夾之間進行切換,使用 ../文件夾名即可。
回到上個目錄
如果你操作到一半時,需要返回上個進入過的目錄,可以使用 – 破折號:
1. cd -
其它目錄導航操作
cd 返回家目錄
pwd 查看當前目錄
cd / 回到根目錄(需要有權(quán)限)
多任務
執(zhí)行多條命令
要在 Linux 終端中同時執(zhí)行多個任務,只需用 符號將多條命令串連起來即可,例如:
1. apt-get update apt-get upgrade
命令失敗備用
只會在前面一條命令執(zhí)行成功時才會繼續(xù)執(zhí)行后續(xù)命令,如果你想在首條命令執(zhí)行失敗時提供備用命令,只需將 替換為 || 即可。
后臺執(zhí)行任務
在任意 Linux 命令最后加上 符號即可將此任務丟到后臺去執(zhí)行,比較適合運行時間較長的任務。對于后臺執(zhí)行的任務可以使用jobs 命令進行顯示查看,也可以用 kill 將其干掉或用fg 命令將其挪到前臺.
;
常見執(zhí)行Linux命令的格式是這樣的:
注意,命令名稱、命令參數(shù)、命令對象之間請用空格鍵分隔。
命令對象一般是指要處理的文件、目錄、用戶等資源,而命令參數(shù)可以用長格式(完整的選項名稱),也可以用短格式(單個字母的縮寫),兩者分別用--與-作為前綴。
命令參數(shù)的長格式與短格式示例
1.echo命令
2.date命令
3.reboot命令
4.poweroff命令
5.wget命令
6.ps命令
7.top命令
8.pidof命令
9.kill命令
10.killall命令
如果我們在系統(tǒng)終端中執(zhí)行一個命令后想立即停止它,可以同時按下Ctrl + C組合鍵(生產(chǎn)環(huán)境中比較常用的一個快捷鍵),這樣將立即終止該命令的進程。
或者,如果有些命令在執(zhí)行時不斷地在屏幕上輸出信息,影響到后續(xù)命令的輸入,則可以在執(zhí)行命令時在末尾添加上一個符號,這樣命令將進入系統(tǒng)后臺來執(zhí)行。
1.ifconfig命令
2.uname命令
3.uptime命令
4.free命令
5.who命令
6.last命令
7.history命令
8.sosreport命令
三、工作目錄切換命令
1.pwd命令
2.cd命令
3.ls命令
四、文本文件編輯命令
1.cat命令
2.more命令
3.head命令
4.tail命令
5.tr命令
6.wc命令
7.stat命令
8.cut命令
9.diff命令
五、文件目錄管理命令
1.touch命令
2.mkdir命令
3.cp命令
4.mv命令
5.rm命令
6.dd命令
7.file命令
六、打包壓縮與搜索命令
1.tar命令
2.grep命令
3.find命令
職場中,大部分都是通過 SSH客戶端 遠程操作,實現(xiàn)磁盤讀取,文件讀取,目錄操作,進程管理等等
打開終端3種方式,收藏夾黑色屏幕圖標點擊,右鍵打開終端,Ctrl+Alt+t組合鍵
command ?[-options] [parameters] ?
command即終端命令,options為選項一般前面有橫杠,后面是參數(shù),選項和參數(shù)有中括號表示可選項
man command (man表示手冊縮寫,查看命令幫助文檔)出現(xiàn)文檔,按回車下滾一行,按空格(或f)下翻一頁,按b上翻一頁,輸入橫杠加上對應的option可實現(xiàn)對應部分高亮
command --help也可以實現(xiàn)幫助文檔,頁面和上面不太一樣,部分還出現(xiàn)了中文
pwd 命令 顯示當前路徑
tree [path] 命令(默認沒有,需要安裝,sudo apt install tree)可以將你當前(或指定)路徑下的文件以樹狀遍歷(所有文件,遞歸)顯示出來
ls 命令 以列表顯示當前目錄文件,(不再深層挖掘)ls顯示出來白色是文件,藍色是文件夾,綠色是可執(zhí)行文件,紅色一般是壓縮包
ls -a 顯示所有的文件包括隱藏文件,顯示結(jié)果以. 點開頭的就是隱藏文件
ls -l 用較長方式顯示文件?
前面10個字母(分成第一個和后9個,第一個橫杠表示一個文件,d表示一個目錄,l表示是個鏈接(類似快捷方式),后九個,rwx表示跟讀寫等操作有關(guān),后面講),硬鏈接數(shù),文件所屬用戶(第一個demo),文件所屬組(第二個demo),文件大小(B為單位),最后修改時間,文件
ls -h以人性化顯示文件(一般和-l一起),可看出加了-h后,文件顯示的單位方便閱讀
cd 可以跟相對路徑和絕對路徑,路徑大小寫敏感
當前路徑用“.”表示,上級路徑“..”
cd 什么都不加或者cd ~可以直接回家目錄/home
cd /去根目錄
cd -返回上次的目錄
mkdir創(chuàng)建目錄?
mkdir 目錄名 ? 不可以一次創(chuàng)建多級目錄(文件夾不存在情況下如mkdir a/b/c,a,b都不存在情況下,創(chuàng)建不了)
如果我們就是想創(chuàng)建多級目錄呢,使用遞歸創(chuàng)建目錄,會把沒有的目錄創(chuàng)建出來
mkdir a/b/c -p
touch創(chuàng)建文件
touch +文件名(建議加后綴名),可以一次創(chuàng)建多個文件用空格隔開
touch a.txt
touch a.txt b.txt
gedit打開文件
gedit 文件相對路徑或絕對路徑,(如果未成功打開需要加上sudo gedit)
同上個命令可以同時打開多個,打開的編輯器編輯內(nèi)容點擊保存完成文件編輯
打開文件后終端進入等待狀態(tài)
rm刪除文件和文件夾
文件刪除不能恢復
rm -i 文件 ? ? ? 這種會出現(xiàn)是否提示,給自己個提醒機會(centos沒有-i就有提示)
rm -f 文件 ? 強制刪除(不提示,和上個相反)
rm -r 目錄 ? 刪除目錄(多級遞歸刪除)
cp拷貝文件和文件夾
cp a.txt b.txt 當前路徑下的a.txt拷貝一個b.txt到當前路徑,如果已經(jīng)存在b.txt直接覆蓋掉
加上-i模式可以給與提示(不是同名文件不會出現(xiàn))
-f 強制復制不提示
-v 顯示一行拷貝的過程
如果是復制文件夾要加上 -r 遞歸拷貝
-a 把文件或文件夾(是遞歸拷貝)的權(quán)限也一起復制過去
mv移動文件文件夾,重命名
mv 原路徑 目標路徑
如果存在同名文件,默認會覆蓋,還是加-i提示,如果選擇n,不會移動成功
-f 強制移動不提示
-v 顯示移動過程
移動文件夾不用加-r(刪除和拷貝不一樣)
clear 清除終端顯示內(nèi)容(類似DOS cls)快捷鍵,Ctrl+L
實際效果只是往下滾動,當前輸入為第一行,拖動滾動條還是能看見之前的內(nèi)容= =
tab 自動補全(有時多個可能要再按下tab出現(xiàn)候選提示)
which 查看命令位置
光標↑↓ 查看翻查之前調(diào)用過的命令
Ctrl+C 終止程序運行
終端字體大小調(diào)整Ctrl Shift +(放大)
Ctrl - (縮小,注意無shift)
cal顯示日歷,當日高亮
cal -3顯示當前月及上下月的日歷(沒有-別的數(shù)字)
cal -y 顯示一年的日歷
cal -j 日歷顯示是當年第幾天
cal 年份4位數(shù)(獲得年份日歷)
date顯示日期
date 加雙引號字符串格式化顯示,注意對應大小寫
%F,%T同樣實現(xiàn)類似效果,分別格式化日期和時間
history 獲得所有的歷史指令
history 數(shù)字 顯示最近的數(shù)字條指令
如果我看到對應指令,然后根據(jù)指令編號,直接輸入
! 指令編號 ? ? 即可執(zhí)行對應指令,這些歷史指令都存在于家目錄隱藏文件 .bash_history 中
cat 直接在命令行顯示文件內(nèi)容,和gedit不一樣
-n 查看文件同時顯示行號
-b 文件空行不編號,但是給空出位置,顯示非空行編號
-s 兩行以上的空行只顯示一行(可以和前面的組合 -sb ? )
同時打開多個文件效果
more
more 文件路徑 ?
分屏查看,會顯示已經(jīng)顯示部分的百分比,
按回車滾一行,
按空格 ?或 ?Ctrl+F或F向下翻一屏,
Ctrl+B或B回滾一屏
q退出
more +num 表示從第num行開始查看,文件默認第一行為1
-p 選項 清屏 置頂顯示內(nèi)容
-s 連續(xù)2行以上的空行顯示一個空行
more 也可以加多個文件,顯示不同文件有專門的分割,這是與cat的區(qū)別