linux 命令行

(windows10) ubuntu config --default-user root 指定子系統(tǒng)的登錄賬號(hào)
(windows10) wsl 進(jìn)入子系統(tǒng)

命令&權(quán)限

  • 快捷鍵
按鍵 行動(dòng)
Ctrl-a 移動(dòng)光標(biāo)到行首。
Ctrl-e 移動(dòng)光標(biāo)到行尾褒墨。
Ctrl-k 剪切從光標(biāo)位置到行尾的文本炫刷。
Ctrl-u 剪切從光標(biāo)位置到行首的文本。
Ctrl-y 把剪切環(huán)中的文本粘貼到光標(biāo)位置郁妈。
Ctrl-l 清空屏幕浑玛,移動(dòng)光標(biāo)到左上角。clear 命令完成同樣的工作噩咪。
Alt-f 光標(biāo)前移一個(gè)字顾彰。
Alt-b 光標(biāo)后移一個(gè)字。
Alt-l 把從光標(biāo)位置到字尾的字符轉(zhuǎn)換成小寫字母剧腻。
Alt-u 把從光標(biāo)位置到字尾的字符轉(zhuǎn)換成大寫字母拘央。
  • 通配符

接受文件名作為參數(shù)的命令,支持下列通配符

字符類 意義
* 匹配任意多個(gè)字符(包括零個(gè)或一個(gè))
? 匹配任意一個(gè)字符(不包括零個(gè))
[characters] 匹配任意一個(gè)屬于字符集中的字符
[!characters] 匹配任意一個(gè)不是字符集中的字符
[:lower:] 匹配任意一個(gè)小寫字母
[:upper] 匹配任意一個(gè)大寫字母
---- ----
* 所有文件
g* 文件名以“g”開(kāi)頭的文件
b*.txt 以”b” 開(kāi)頭书在,中間有零個(gè)或任意多個(gè)字符灰伟,并以”.txt” 結(jié)尾的文件
Data??? 以“Data”開(kāi)頭,其后緊接著 3 個(gè)字符的文件
[abc]* 文件名以”a”,”b”, 或”c” 開(kāi)頭的文件
B.[0-9][0-9][0-9] 以”B.” 開(kāi)頭,并緊接著 3 個(gè)數(shù)字的文件
[[:upper:]]* 以大寫字母開(kāi)頭的文件
[![:digit:]]* 不以數(shù)字開(kāi)頭的文件
*[[:lower:]123] 文件名以小寫字母結(jié)尾栏账,或以“1”帖族,“2”,或“3”結(jié)尾的文件
  • 創(chuàng)建軟連接
    ln -s src link
    當(dāng)源文件被刪除時(shí)挡爵,軟鏈接失效竖般,而硬鏈接還可以繼續(xù)用來(lái)訪問(wèn)源文件。去掉[-s] 參數(shù)可創(chuàng)建硬鏈接茶鹃。

  • 查看命令類型
    type ls

命令有四種類型:
1. 是一個(gè)可執(zhí)行程序涣雕,就像我們所看到的位于目錄/usr/bin 中的文件一樣。屬于這一類的程序闭翩,可以編譯成二進(jìn)制文件挣郭,諸如用 C 和 C++ 語(yǔ)言寫成的程序, 也可以是由腳本語(yǔ)言寫成的程序,比如說(shuō) shell疗韵,perl兑障,python,ruby蕉汪,等等流译。
2. 是一個(gè)內(nèi)建于 shell 自身的命令。bash 支持若干命令者疤,內(nèi)部叫做 shell 內(nèi)部命令(builtins)福澡。例如,cd 命令宛渐,就是一個(gè) shell 內(nèi)部命令竞漾。
3. 是一個(gè) shell 函數(shù)。這些是小規(guī)模的 shell 腳本窥翩,它們混合到環(huán)境變量中业岁。在后續(xù)的章節(jié)里,我們將討論配置環(huán)境變量以及書寫 shell 函數(shù)寇蚊。但是現(xiàn)在笔时,僅僅意識(shí)到它們的存在就可以了。
4. 是一個(gè)命令別名仗岸。我們可以定義自己的命令允耿,建立在其它命令之上。
  • 別名命令
    alias m='mkdir m' 創(chuàng)建
    unalias m 刪除

  • 重定向
    ls -al aa 1>>ls-output.txt 2>&1
    ls -al aa &>>ls-output.txt(等價(jià))
    將標(biāo)準(zhǔn)輸入重定向至文件扒怖,標(biāo)準(zhǔn)錯(cuò)誤重定向至標(biāo)準(zhǔn)輸出(即文件)
    2> /dev/null 隱藏標(biāo)準(zhǔn)錯(cuò)誤

  • 顯示文件
    tail -f /var/log/messages 實(shí)時(shí)顯示最后10行,這個(gè)文件是記錄系統(tǒng)的一舉一動(dòng)

  • 歷史記錄
    history | grep mv
    !88 歷史記錄展開(kāi)较锡,再次鍵入該條歷史記錄

  • 文件類型

屬性 文件類型
- 一個(gè)普通文件
d 一個(gè)目錄
l 一個(gè)符號(hào)鏈接。注意對(duì)于符號(hào)鏈接文件盗痒,剩余的文件屬性總是”rwxrwxrwx”蚂蕴,而且都是虛擬值。真正的文件屬性是指符號(hào)鏈接所指向的文件的屬性。
c 一個(gè)字符設(shè)備文件骡楼。這種文件類型是指按照字節(jié)流熔号,來(lái)處理數(shù)據(jù)的設(shè)備。比如說(shuō)終端機(jī)鸟整,或者調(diào)制解調(diào)器
b 一個(gè)塊設(shè)備文件引镊。這種文件類型是指按照數(shù)據(jù)塊,來(lái)處理數(shù)據(jù)的設(shè)備篮条,例如一個(gè)硬盤弟头,或者 CD-ROM 盤。
  • 文件權(quán)限
    chmod u+x,go=rw 1.txt 給文件擁有者執(zhí)行權(quán)限并給組和其他人讀和執(zhí)行的
    權(quán)限兑燥。多種設(shè)定可以用逗號(hào)分開(kāi)亮瓷。
    chown [owner][:[group]] 1.txt 更改文件或目錄的所有者和用戶組

  • 添加用戶
    adduser unual 創(chuàng)建用戶
    passwd unual 修改用戶的密碼

進(jìn)程

  • 查看進(jìn)程快照信息
    ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 8324 152 ? Ss 21:38 0:00 /init
root 3 0.0 0.0 8328 156 tty1 Ss 21:38 0:00 /init
unual 4 0.0 0.0 16892 3428 tty1 S 21:38 0:00 -bash
unual 21 0.0 0.0 17380 1920 tty1 R 21:43 0:00 ps aux
字段 含義
USER 用戶 ID. 進(jìn)程的所有者琴拧。
%CPU 以百分比表示的 CPU 使用率
%MEM 以百分比表示的內(nèi)存使用率
VSZ 虛擬內(nèi)存大小
RSS 進(jìn)程占用的物理內(nèi)存的大小降瞳,以千字節(jié)為單位。
START 進(jìn)程運(yùn)行的起始時(shí)間蚓胸。若超過(guò) 24 小時(shí)挣饥,則用天表示。
STAT字段 含義
R 運(yùn)行沛膳。這意味著扔枫,進(jìn)程正在運(yùn)行或準(zhǔn)備運(yùn)行。
S 正在睡眠锹安。進(jìn)程沒(méi)有運(yùn)行短荐,而是,正在等待一個(gè)事件叹哭,比如說(shuō)忍宋,一個(gè)按鍵或者網(wǎng)絡(luò)數(shù)據(jù)包。
D 不可中斷睡眠风罩。進(jìn)程正在等待 I/O糠排,比方說(shuō),一個(gè)磁盤驅(qū)動(dòng)器的 I/O超升。
T 已停止. 已經(jīng)指示進(jìn)程停止運(yùn)行入宦。稍后介紹更多。
Z 一個(gè)死進(jìn)程或“僵尸”進(jìn)程室琢。這是一個(gè)已經(jīng)終止的子進(jìn)程乾闰,但是它的父進(jìn)程還沒(méi)有清空它。(父進(jìn)程沒(méi)有把子進(jìn)程從進(jìn)程表中刪除)
< 一個(gè)高優(yōu)先級(jí)進(jìn)程盈滴。這可能會(huì)授予一個(gè)進(jìn)程更多重要的資源涯肩,給它更多的 CPU 時(shí)間。進(jìn)程的這種屬性叫做 niceness。具有高優(yōu)先級(jí)的進(jìn)程據(jù)說(shuō)是不好的(less nice)宽菜,因?yàn)樗加昧吮容^多的 CPU 時(shí)間谣膳,這樣就給其它進(jìn)程留下很少時(shí)間。
N 低優(yōu)先級(jí)進(jìn)程铅乡。一個(gè)低優(yōu)先級(jí)進(jìn)程(一個(gè)“好”進(jìn)程)只有當(dāng)其它高優(yōu)先級(jí)進(jìn)程執(zhí)行之后继谚,才會(huì)得到處理器時(shí)間。
  • 查看計(jì)算機(jī)運(yùn)行狀態(tài)和進(jìn)程
    top
top - 21:56:19 up 17 min,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:   4 total,   1 running,   3 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  1.1 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.2 hi,  0.0 si,  0.0 st
KiB Mem :  8295652 total,  5215984 free,  2850316 used,   229352 buff/cache
KiB Swap: 25165824 total, 25150436 free,    15388 used.  5311604 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   22 unual     20   0   17620   2036   1504 R   0.3  0.0   0:00.07 top
    1 root      20   0    8324    152    128 S   0.0  0.0   0:00.06 init
    3 root      20   0    8328    156    120 S   0.0  0.0   0:00.00 init
    4 unual     20   0   16892   3428   3324 S   0.0  0.0   0:00.06 bash
行號(hào) 字段 含義
1 top 程序名阵幸。
21:56:19 當(dāng)前時(shí)間花履。
up 17min 這是正常運(yùn)行時(shí)間。它是計(jì)算機(jī)從上次啟動(dòng)到現(xiàn)在所運(yùn)行的時(shí)間挚赊。在這個(gè)例子里诡壁,系統(tǒng)已經(jīng)運(yùn)行了17分鐘。
load average:0.52, 0.58, 0.59 加載平均值是指荠割,等待運(yùn)行的進(jìn)程數(shù)目妹卿,也就是說(shuō),處于運(yùn)行狀態(tài)的進(jìn)程個(gè)數(shù)蔑鹦,這些進(jìn)程共享 CPU夺克。展示了三個(gè)數(shù)值,每個(gè)數(shù)值對(duì)應(yīng)不同的時(shí)間周期嚎朽。第一個(gè)是前 60 秒的平均值铺纽,下一個(gè)是前 5 分鐘的平均值,最后一個(gè)是前 15 分鐘的平均值哟忍。若平均值低于 1.0狡门,則指示計(jì)算機(jī)工作不忙碌。
2 Tasks: 總結(jié)了進(jìn)程數(shù)目和各種進(jìn)程狀態(tài)锅很。
3 Cpu(s): 這一行描述了 CPU 正在執(zhí)行的進(jìn)程的特性其馏。
0.2us 0.2% of the CPU is being used for user processes. 這意味著進(jìn)程在內(nèi)核之外。
1.1sy 1.1% 的 CPU 時(shí)間被用于系統(tǒng)(內(nèi)核)進(jìn)程粗蔚。
0.0ni 0.0% 的 CPU 時(shí)間被用于”nice”(低優(yōu)先級(jí))進(jìn)程尝偎。
98.5id 98.5% 的 CPU 時(shí)間是空閑的。
0.0wa 0.0% 的 CPU 時(shí)間來(lái)等待 I/O鹏控。
4 Mem: 展示物理內(nèi)存的使用情況致扯。
5 Swap: 展示交換分區(qū)(虛擬內(nèi)存)的使用情況。
  • 后臺(tái)任務(wù)
    xlogo &

  • 以列出從終端中啟動(dòng)的任務(wù)
    jobs
    [1]+ Running xlogo &

  • 將后臺(tái)任務(wù)返回前臺(tái)
    fg %1

  • 暫停任務(wù)
    ctrl + z

  • 將任務(wù)移到后臺(tái)
    bg %1

  • 通過(guò) kill 命令給進(jìn)程發(fā)送信號(hào)
    kill [-signal] PID

編號(hào) 名字 含義
1 HUP 掛起当辐。這是美好往昔的痕跡抖僵,那時(shí)候終端機(jī)通過(guò)電話線和調(diào)制解調(diào)器連接到遠(yuǎn)端的計(jì)算機(jī)。這個(gè)信號(hào)被用來(lái)告訴程序缘揪,控制的終端機(jī)已經(jīng)“掛起”耍群。通過(guò)關(guān)閉一個(gè)終端會(huì)話义桂,可以說(shuō)明這個(gè)信號(hào)的作用。發(fā)送這個(gè)信號(hào)到終端機(jī)上的前臺(tái)程序蹈垢,程序會(huì)終止慷吊。許多守護(hù)進(jìn)程也使用這個(gè)信號(hào),來(lái)重新初始化曹抬。這意味著溉瓶,當(dāng)發(fā)送這個(gè)信號(hào)到一個(gè)守護(hù)進(jìn)程后,這個(gè)進(jìn)程會(huì)重新啟動(dòng)谤民,并且重新讀取它的配置文件堰酿。Apache 網(wǎng)絡(luò)服務(wù)器守護(hù)進(jìn)程就是一個(gè)例子。
2 INT 中斷张足。實(shí)現(xiàn)和 Ctrl-c 一樣的功能触创,由終端發(fā)送。通常为牍,它會(huì)終止一個(gè)程序哼绑。
9 KILL 殺死。這個(gè)信號(hào)很特別吵聪。鑒于進(jìn)程可能會(huì)選擇不同的方式凌那,來(lái)處理發(fā)送給它的信號(hào),其中也包含忽略信號(hào)吟逝,這樣呢,從不發(fā)送 Kill 信號(hào)到目標(biāo)進(jìn)程赦肋。而是內(nèi)核立即終止這個(gè)進(jìn)程块攒。當(dāng)一個(gè)進(jìn)程以這種方式終止的時(shí)候,它沒(méi)有機(jī)會(huì)去做些“清理”工作佃乘,或者是保存勞動(dòng)成果囱井。因?yàn)檫@個(gè)原因,把 KILL 信號(hào)看作殺手锏趣避,當(dāng)其它終止信號(hào)失敗后庞呕,再使用它。
15 TERM 終止程帕。這是 kill 命令發(fā)送的默認(rèn)信號(hào)住练。如果程序仍然“活著”,可以接受信號(hào)愁拭,那么這個(gè)程序?qū)⒔K止讲逛。
18 CONT 繼續(xù)。在停止一段時(shí)間后岭埠,進(jìn)程恢復(fù)運(yùn)行盏混。
19 STOP 停止蔚鸥。這個(gè)信號(hào)導(dǎo)致進(jìn)程停止運(yùn)行,而沒(méi)有終止许赃。像KILL 信號(hào)止喷,它不被發(fā)送到目標(biāo)進(jìn)程,因此它不能被忽略混聊。

eg: kill -9 108
[1] Killed top

  • 樹型結(jié)構(gòu)的進(jìn)程列表
    pstree

  • 系統(tǒng)資源使用快照
    vmstat
    輸出一個(gè)系統(tǒng)資源使用快照启盛,包括內(nèi)存届案,交換分區(qū)和磁盤I/O惧辈。為了看到連續(xù)的顯示結(jié)果颅和,則在命令名后加上延時(shí)的時(shí)間(以秒為單位)沾谓。例如计螺,“vmstat 5”暖混。終止輸出禾唁,按下Ctrl-c 組合鍵弹砚。

SHELL

  • shell環(huán)境變量
    登錄 shell 會(huì)話會(huì)提示用戶輸入用戶名和密碼拙绊;例如向图,我們啟動(dòng)一個(gè)虛擬控制臺(tái)會(huì)話。當(dāng)我們?cè)?GUI 模式下運(yùn)行終端會(huì)話時(shí)标沪,非登錄 shell 會(huì)話會(huì)出現(xiàn)榄攀。
類別 文件 內(nèi)容
登錄shell /etc/profile 應(yīng)用于所有用戶的全局配置腳本。
?/.bash_profile 用戶私人的啟動(dòng)文件金句¢萦可以用來(lái)擴(kuò)展或重寫全局配置腳本中的設(shè)置。
?/.bash_login 如果文件 ?/.bash profile 沒(méi)有找到违寞,bash 會(huì)嘗試讀取這個(gè)腳本贞瞒。
?/.profile 如果文件 ?/.bash profile 或文件 ?/.bash login 都沒(méi)有找到,bash 會(huì)試圖讀取這個(gè)文件趁曼。這是基于 Debian 發(fā)行版的默認(rèn)設(shè)置军浆,比方說(shuō) Ubuntu。
非登錄shell /etc/bash.bashrc 應(yīng)用于所有用戶的全局配置文件挡闰。
?/.bashrc 用戶私有的啟動(dòng)文件乒融。可以用來(lái)擴(kuò)展或重寫全局配置腳本中的設(shè)置摄悯。
  1. 登錄shell:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) ->( ~/.bashrc -> /etc/bashrc) -> ~/.bash_logout

    1. profile(由Bourne Shell和Korn Shell使用)和.bash_login(由C Shell使用)兩個(gè)文件是.bash_profile的同義詞赞季,目的是為了兼容其它Shell
    2. bash_profile中一般會(huì)執(zhí)行.bashrc
  2. 交互式非登陸shell: ~/.bashrc -> /etc/bashrc

在普通用戶看來(lái),文件 ~/.bashrc 可能是最重要的啟動(dòng)文件射众,因?yàn)樗鼛缀蹩偸潜蛔x取碟摆。

VI編輯器

按鍵 移動(dòng)光標(biāo)
l or 右箭頭 向右移動(dòng)一個(gè)字符
h or 左箭頭 向左移動(dòng)一個(gè)字符
j or 下箭頭 向下移動(dòng)一行
k or 上箭頭 向上移動(dòng)一行
0 (零按鍵) 移動(dòng)到當(dāng)前行的行首。
? 移動(dòng)到當(dāng)前行的第一個(gè)非空字符叨橱。
$ 移動(dòng)到當(dāng)前行的末尾典蜕。
w 移動(dòng)到下一個(gè)單詞或標(biāo)點(diǎn)符號(hào)的開(kāi)頭断盛。
W 移動(dòng)到下一個(gè)單詞的開(kāi)頭,忽略標(biāo)點(diǎn)符號(hào)愉舔。
b 移動(dòng)到上一個(gè)單詞或標(biāo)點(diǎn)符號(hào)的開(kāi)頭钢猛。
B 移動(dòng)到上一個(gè)單詞的開(kāi)頭,忽略標(biāo)點(diǎn)符號(hào)轩缤。
Ctrl-f or Page Down 向下翻一頁(yè)
Ctrl-b or Page Up 向上翻一頁(yè)
nG 移動(dòng)到第 n行命迈。例如,1G 移動(dòng)到文件的第一行火的。
G 移動(dòng)到文件末尾壶愤。
按鍵 效果
a 當(dāng)前光標(biāo)后插入
A 當(dāng)前行末尾插入
o 當(dāng)前行的下方打開(kāi)一行,進(jìn)入編輯模式
O 當(dāng)前行的上方打開(kāi)一行馏鹤,進(jìn)入編輯模式
- -
x 刪除當(dāng)前字符
3x 刪除當(dāng)前字符及其后的兩個(gè)字符征椒。
dd 刪除當(dāng)前行。
5dd 刪除當(dāng)前行及隨后的四行文本湃累。
dW 刪除從光標(biāo)位置開(kāi)始到下一個(gè)單詞的開(kāi)頭勃救。
d$ 刪除從光標(biāo)位置開(kāi)始到當(dāng)前行的行尾。
d0 刪除從光標(biāo)位置開(kāi)始到當(dāng)前行的行首治力。
d? 刪除從光標(biāo)位置開(kāi)始到文本行的第一個(gè)非空字符蒙秒。
dG 刪除從當(dāng)前行到文件的末尾。
d20G 刪除從當(dāng)前行到文件的第 20 行宵统。
- -
yy 復(fù)制當(dāng)前行晕讲。
5yy 復(fù)制當(dāng)前行及隨后的四行文本。
yW 復(fù)制從當(dāng)前光標(biāo)位置到下一個(gè)單詞的開(kāi)頭榜田。
y$ 復(fù)制從當(dāng)前光標(biāo)位置到當(dāng)前行的末尾益兄。
y0 復(fù)制從當(dāng)前光標(biāo)位置到行首。
y? 復(fù)制從當(dāng)前光標(biāo)位置到文本行的第一個(gè)非空字符箭券。
yG 復(fù)制從當(dāng)前行到文件末尾。
y20G 復(fù)制從當(dāng)前行到文件的第 20 行疑枯。
p 在下方新開(kāi)一行辩块,粘貼復(fù)制內(nèi)容
P 在上方新開(kāi)一行,粘貼復(fù)制內(nèi)容
J 將下一行拼接到當(dāng)前行末尾
u 撤銷之前的修改
fx 移動(dòng)光標(biāo)到當(dāng)前行下一個(gè)x的字符上
- -
/word 查找word荆永,n查找下一個(gè)
- -
:%s/Line/line/gc
: 冒號(hào)字符運(yùn)行一個(gè) ex 命令废亭。
% 指定要操作的行數(shù)。% 是一個(gè)快捷方式具钥,表示從一行到最后一行豆村。另外,操作范圍也可以用 1,5 來(lái)代替(因?yàn)槲覀兊奈募挥?5 行文本)骂删,或者用 1,$ 來(lái)代替掌动,意是“從第一行到文件的最后一行四啰。”如果省略了文本行的范圍粗恢,那么操作只對(duì)當(dāng)前行生效柑晒。
s 指定操作。在這種情況下是眷射,替換(查找與替代)匙赞。
/Line/line 查找類型與替代文本。
g 這是“全局”的意思妖碉,意味著對(duì)文本行中所有匹配的字符串執(zhí)行查找和替換操作涌庭。如果省略 g,則只替換每個(gè)文本行中第一個(gè)匹配的字符串欧宜。
c 需要用戶確認(rèn)每一個(gè)替換
:r file1.txt 復(fù)制整個(gè)file1.txt到當(dāng)前文件

vi file1.txt file2.txt
可以同時(shí)編輯兩個(gè)文件坐榆,通過(guò):n/:N切換顯示文件

  • 命令提示符
    PS1 環(huán)境變量定義了命令提示符的格式,默認(rèn)為[\u@\h \W]$
符號(hào) 顯示值
\a 以 ASCII 格式編碼的鈴聲. 當(dāng)遇到這個(gè)轉(zhuǎn)義序列時(shí)鱼鸠,計(jì)算機(jī)會(huì)發(fā)出嗡嗡的響聲猛拴。
\d 以日,月蚀狰,天格式來(lái)表示當(dāng)前日期愉昆。例如,“Mon May 26.”
\h 本地機(jī)的主機(jī)名麻蹋,但不帶末尾的域名跛溉。
\H 完整的主機(jī)名。
\j 運(yùn)行在當(dāng)前 shell 會(huì)話中的工作數(shù)扮授。
\l 當(dāng)前終端設(shè)備名芳室。
\n 一個(gè)換行符。
\r 一個(gè)回車符刹勃。
\s shell 程序名堪侯。
\t 以 24 小時(shí)制,hours:minutes:seconds 的格式表示當(dāng)前時(shí)間.
\T 以 12 小時(shí)制表示當(dāng)前時(shí)間荔仁。
@ 以 12 小時(shí)制伍宦,AM/PM 格式來(lái)表示當(dāng)前時(shí)間。
\A 以 24 小時(shí)制乏梁,hours:minutes 格式表示當(dāng)前時(shí)間次洼。
\u 當(dāng)前用戶名。
\v shell 程序的版本號(hào)遇骑。
\V Version and release numbers of the shell.
\w 當(dāng)前工作目錄名卖毁。
\W 當(dāng)前工作目錄名的最后部分。
! 當(dāng)前命令的歷史號(hào)落萎。
# 當(dāng)前 shell 會(huì)話中的命令數(shù)亥啦。
$ 這會(huì)顯示一個(gè)”$” 字符炭剪,除非你擁有超級(jí)用戶權(quán)限。在那種情況下禁悠,它會(huì)顯示一個(gè)”#” 字符念祭。
[ 標(biāo)志著一系列一個(gè)或多個(gè)非打印字符的開(kāi)始。這被用來(lái)嵌入非打印的控制字符碍侦,這些字符以某種方式來(lái)操作終端仿真器粱坤,比方說(shuō)移動(dòng)光標(biāo)或者是更改文本顏色。
] 標(biāo)志著非打印字符序列結(jié)束瓷产。
  • 包管理工具
發(fā)行版 底層工具 上層工具
Debian-Style dpkg apt-get, aptitude
Fedora, Red Hat Enterprise Linux, CentOS rpm yum
風(fēng)格 命令 含義
Debian apt-get update; apt-get install package_name 安裝
Debian dpkg --install package_file 安裝.deb
Debian apt-get remove package_name 卸載
Debian apt-get update; apt-get upgrade 更新全部軟件
Debian dpkg --install package_file .deb更新
Debian dpkg --list 列出所安裝的軟件包
Debian dpkg --status package_name 是否安裝
Debian apt-cache show package_name 顯示安裝包的信息
Debian dpkg --search file_name 查看某個(gè)文件是誰(shuí)安裝
Red Hat yum install package_name 安裝
Red Hat rpm -i package_file 安裝.rpm
Red Hat yum erase package_name 卸載
Red Hat yum update 更新全部軟件
Red Hat rpm -U package_file .rpm更新
Red Hat rpm -qa 列出所安裝的軟件包
Red Hat rpm -q package_name 是否安裝
Red Hat yum info package_name 顯示安裝包的信息
Red Hat rpm -qf file_name 查看某個(gè)文件是誰(shuí)安裝
  • 網(wǎng)絡(luò)命令
    ping linuxcommand.org
    traceroute(tracepath) slashdot.org
    netstat -ie 查看系統(tǒng)中的網(wǎng)絡(luò)接口
    netstat -r 顯示內(nèi)核的網(wǎng)絡(luò)路由表

  • ssh軟件包
    ssh user@ssh_server 登錄
    ssh remote-sys 'ls *' > dirlist.txt 執(zhí)行單個(gè)命令
    scp remote-sys:document.txt . 復(fù)制文件

  • 查找文件

find ~ -type f -name "*.JPG" -size +1M | wc -l

文件類型 描述
b 塊設(shè)備文件
c 字符設(shè)備文件
d 目錄
f 普通文件
l 符號(hào)鏈接

壓縮和歸檔
gzip foo.txt
gunzip foo.txt.gz

tar cf playground.tar playground
tar xf playground.tar

zip -r playground.zip playground 打包
unzip playground.zip 解壓

  • 同步
    rsync options source destination
    這里 source 和 destination 是下列選項(xiàng)之一,兩者之一必須是本地文件:
    ? 一個(gè)本地文件或目錄
    ? 一個(gè)遠(yuǎn)端文件或目錄站玄,以 [user@]host:path 的形式存在
    ? 一個(gè)遠(yuǎn)端 rsync 服務(wù)器,由 rsync://[user@]host[:port]/path 指定
    ? rsync unual@192.168.2.140:~/Desktop/1.txt /mnt/c/unual/code/1.txt 遠(yuǎn)程文件復(fù)制到本地
    ? rsync /mnt/c/unual/code/linux.pdf unual@192.168.2.140:~ 本地文件復(fù)制到遠(yuǎn)程

備份別名
alias backup='sudo rsync -av --delete /etc /home /usr/local /media/BigDisk/backup'

sudo rsync -av --delete --rsh=ssh /etc /home /usr/local remote-sys:/backup 本地備份到遠(yuǎn)程主機(jī)
rsync -av -delete rsync://rsync.gtlib.gatech.edu/fedora-linux-core/development/i386/os fedora-devel 從遠(yuǎn)程服務(wù)獲取更新

  • grep (global regular expression print)
    grep [options] regex [file...]
選項(xiàng) 描述
-i 忽略大小寫濒旦。不會(huì)區(qū)分大小寫字符株旷。也可用 --ignore-case 來(lái)指定。
-v 不匹配尔邓。通常晾剖,grep 程序會(huì)打印包含匹配項(xiàng)的文本行。這個(gè)選項(xiàng)導(dǎo)致 grep 程序只會(huì)不包含匹配項(xiàng)的文本行梯嗽。也可用--invert-match 來(lái)指定齿尽。
-c 打印匹配的數(shù)量(或者是不匹配的數(shù)目,若指定了 -v 選項(xiàng))灯节,而不是文本行本身循头。也可用 --count 選項(xiàng)來(lái)指定。
-l 打印包含匹配項(xiàng)的文件名炎疆,而不是文本行本身卡骂,也可用--files-with-matches 選項(xiàng)來(lái)指定。
-L 相似于 -l 選項(xiàng)形入,但是只是打印不包含匹配項(xiàng)的文件名全跨。也可用 --files-without-match 來(lái)指定。
-n 在每個(gè)匹配行之前打印出其位于文件中的相應(yīng)行號(hào)亿遂。也可用--line-number 選項(xiàng)來(lái)指定螟蒸。
-h 應(yīng)用于多文件搜索,不輸出文件名崩掘。也可用 --no-filename選項(xiàng)來(lái)指定。

grep bzip dirlist*.txt
多文件搜索少办,從一批文件的內(nèi)容之中苞慢,查找匹配字符串

  • 正則表達(dá)式
    ^ $ . [ ] { } - ? * + ( ) | \
符號(hào) 用法
^ 行首匹配 (額外,和[]配合表示否定英妓,[^bg]表示不包含b或者g)
$ 行尾匹配
. 用來(lái)匹配任意字符
[] 從一個(gè)指定的字符集合中匹配一個(gè)單個(gè)的字符
- 連接符挽放,或表示一個(gè)范圍绍赛,A-Z表示大寫字母
| 表示或,grep需要使用-E選項(xiàng)辑畦,或者在表達(dá)式中使用轉(zhuǎn)義
( ) 隔離作用
? 可有可無(wú)吗蚌,表示匹配0次或者1次
* 匹配零個(gè)或多個(gè)元素
+ 類似*,但要求至少匹配一次
{n} 匹配n次
  1. grep -h '[^bg]zip' dirlist*.txt
    匹配zip三個(gè)字符前一個(gè)并非b/g字符
  2. grep -h '^[A-Za-z0-9]' dirlist*.txt
    匹配字符或數(shù)字開(kāi)頭
  3. grep -Eh '^(bz|gz|zip)' dirlist*.txt
    匹配以“bz”纯出,或“gz”蚯妇,或“zip”開(kāi)頭的文件名
  4. grep -E '^([[:alpha:]]+ ?)+$'
    匹配一個(gè)或多個(gè)字母開(kāi)頭,可以跟隨一個(gè)空格暂筝,可重復(fù)多次箩言。
  5. ^(?[0-9]{3})? [0-9]{3}-[0-9]{4}$
    匹配電話號(hào)碼
  6. find . -regex '.[^-_./0-9a-zA-Z].'
    find是精確匹配,要求路徑名全匹配
  • sort
選項(xiàng) 長(zhǎng)選項(xiàng) 描述
-b --ignore-leading-blanks 默認(rèn)情況下焕襟,對(duì)整行進(jìn)行排序陨收,從每行的第一個(gè)字符開(kāi)始。這個(gè)選項(xiàng)導(dǎo)致 sort 程序忽略每行開(kāi)頭的空格鸵赖,從第一個(gè)非空白字符開(kāi)始排序务漩。
-f --ignore-case 讓排序不區(qū)分大小寫。
-n --numeric-sort 基于字符串的長(zhǎng)度來(lái)排序它褪。使用此選項(xiàng)允許根據(jù)數(shù)字值執(zhí)行排序饵骨,而不是字母值。
-r --reverse 按相反順序排序列赎。結(jié)果按照降序排列宏悦,而不是升序。
-k --key=field1[,field2] 對(duì)從 field1 到 field2 之間的字符排序包吝,而不是整個(gè)文本行饼煞。看下面的討論诗越。
-m --merge 把每個(gè)參數(shù)看作是一個(gè)預(yù)先排好序的文件砖瞧。把多個(gè)文件合并成一個(gè)排好序的文件,而沒(méi)有執(zhí)行額外的排序嚷狞。
-o --output=file 把排好序的輸出結(jié)果發(fā)送到文件块促,而不是標(biāo)準(zhǔn)輸出。
-t --field-separator=char 定義域分隔字符床未。默認(rèn)情況下竭翠,域由空格或制表符分隔。
  1. ls -al /usr/bin | sort -nr -k 5 | head
  2. sort --key=1,1 --key=2n distros.txt
    指定了 1,1薇搁,意味著“始于并且結(jié)束于第一個(gè)字段斋扰。”在第二個(gè)實(shí)例中,我們指定了 2n传货,意味著第二個(gè)字段是排序的鍵值屎鳍,并且按照數(shù)值排序。
  • cut
選項(xiàng) 說(shuō)明
-c char list從文本行中抽取由 char list 定義的文本问裕。這個(gè)列表可能由一個(gè)或多個(gè)逗號(hào)分隔開(kāi)的數(shù)值區(qū)間組成逮壁。
-f field list從文本行中抽取一個(gè)或多個(gè)由 field list 定義的字段。這個(gè)列表可能包括一個(gè)或多個(gè)字段粮宛,或由逗號(hào)分隔開(kāi)的字段區(qū)間窥淆。
-d delim char當(dāng)指定 -f 選項(xiàng)之后,使用 delim char 做為字段分隔符窟勃。默認(rèn)情況下祖乳,字段之間必須由單個(gè) tab 字符分隔開(kāi)。
--complement 抽取整個(gè)文本行秉氧,除了那些由 -c 和/或 -f 選項(xiàng)指定的文本眷昆。
  1. cut -d ':' -f 1 /etc/passwd
    查看所有賬號(hào)

shell 腳本

  • $?
    查看shell命令退出狀態(tài)

  • 流程控制:
    1.if 分支結(jié)構(gòu)

if commands; then commands
[elif commands; then commands...]
[else commands]
fi

2.while

 while commands; do commands; done

3.until

和while區(qū)別為,until滿足條件,退出循環(huán)
until commands; do commands; done

4.case

case word in
    [pattern [| pattern]...) commands ;;]...
esac

5.for

for variable [in words]; do
    commands
done
省略掉 for 命令的可選項(xiàng) words 部分汁咏,for 命令會(huì)默認(rèn)處理位置參數(shù)
  • 計(jì)算文件狀態(tài):
表達(dá)式 如果為真
file1 -ef file2 file1 和 file2 擁有相同的索引號(hào)(通過(guò)硬鏈接兩個(gè)文件名指向相同的文件)亚斋。
file1 -nt file2 file1 新于 file2。
file1 -ot file2 file1 早于 file2攘滩。
-b file file存在并且是一個(gè)塊(設(shè)備)文件帅刊。
-c file file存在并且是一個(gè)字符(設(shè)備)文件。
-d file file存在并且是一個(gè)目錄漂问。
-e file file存在赖瞒。
-f file file存在并且是一個(gè)普通文件。
-g file file存在并且設(shè)置了組 ID蚤假。
-G file file存在并且由有效組 ID 擁有栏饮。
-k file file存在并且設(shè)置了它的“sticky bit”。
-L file file存在并且是一個(gè)符號(hào)鏈接磷仰。
-O file file存在并且由有效用戶 ID 擁有袍嬉。
-p file file存在并且是一個(gè)命名管道。
-r file file存在并且可讀(有效用戶有可讀權(quán)限)灶平。
-s file file存在且其長(zhǎng)度大于零伺通。
-S file file存在且是一個(gè)網(wǎng)絡(luò) socket。
-t fd fd是一個(gè)定向到終端/從終端定向的文件描述符逢享。這可以被用來(lái)決定是否重定向了標(biāo)準(zhǔn)輸入/輸出錯(cuò)誤罐监。
-u file file存在并且設(shè)置了 setuid 位。
-w file file存在并且可寫(有效用戶擁有可寫權(quán)限)瞒爬。
-x file file存在并且可執(zhí)行(有效用戶有執(zhí)行/搜索權(quán)限)笑诅。
- -
string string 不為 null调缨。
-n string 字符串 string 的長(zhǎng)度大于零。
-z string 字符串 string 的長(zhǎng)度為零吆你。
string1 = string2 string1 == string2 string1 和 string2 相同. 單或雙等號(hào)都可以,不過(guò)雙等號(hào)更受歡迎俊犯。
string1 != string2 string1 和 string2 不相同妇多。
string1 ">" string2 sting1 排列在 string2 之后。
string1 "<" string2 string1 排列在 string2 之前燕侠。
- -
integer1 -eq integer2 integer1 等于 integer2.
integer1 -ne integer2 integer1 不等于 integer2.
integer1 -le integer2 integer1 小于或等于 integer2.
integer1 -lt integer2 integer1 小于 integer2.
integer1 -ge integer2 integer1 大于或等于 integer2.
integer1 -gt integer2 integer1 大于 integer2.
test_file () {
    # test-file: Evaluate the status of a file
    FILE=~/.bashrc
    if [ -e "$FILE" ]; then
        if [ -f "$FILE" ]; then
            echo "$FILE is a regular file."
        fi
        if [ -d "$FILE" ]; then
            echo "$FILE is a directory."
        fi
        if [ -r "$FILE" ]; then
            echo "$FILE is readable."
        fi
        if [ -w "$FILE" ]; then
            echo "$FILE is writable."
        fi
        if [ -x "$FILE" ]; then
            echo "$FILE is executable/searchable."
        fi
    else
        echo "$FILE does not exist"
    return 1
    fi
}

[[ ]]支持以上所有表達(dá)式,并且
1.支持正則表達(dá)式

if [[ "\$INT" =~ ^-?[0-9]+$ ]]; then
    echo "INT is an integer."
else
    echo "INT is not an integer." >&2
    exit 1
fi

2.支持類型匹配

FILE=foo.bar
if [[  $FILE == foo.* ]]; then
    echo "$FILE matches pattern 'foo.*'"
fi
  • read
    read [-options] [variable...]
    如果 read 命令接受到變量值數(shù)目少于期望的數(shù)字者祖,那么額外的變量值為空,而多余的輸入數(shù)據(jù)則會(huì)被包含到最后一個(gè)變量中绢彤。如果 read 命令之后沒(méi)有列出變量名七问,則一個(gè) shell 變量,REPLY茫舶,將會(huì)包含所有的輸入械巡。
選項(xiàng) 說(shuō)明
-a array 把輸入賦值到數(shù)組 array 中,從索引號(hào)零開(kāi)始饶氏。我們將第36 章中討論數(shù)組問(wèn)題讥耗。
-d delimiter 用字符串 delimiter 中的第一個(gè)字符指示輸入結(jié)束,而不是一個(gè)換行符疹启。
-e 使用 Readline 來(lái)處理輸入古程。這使得與命令行相同的方式編輯輸入。
-n num 讀取 num 個(gè)輸入字符喊崖,而不是整行挣磨。
-p prompt 為輸入顯示提示信息,使用字符串 prompt荤懂。
-r Raw mode. 不把反斜杠字符解釋為轉(zhuǎn)義字符茁裙。
-s Silent mode. 不會(huì)在屏幕上顯示輸入的字符。當(dāng)輸入密碼和其它確認(rèn)信息的時(shí)候势誊,這會(huì)很有幫助呜达。
-t seconds 超時(shí). 幾秒鐘后終止輸入。read 會(huì)返回一個(gè)非零退出狀態(tài)粟耻,若輸入超時(shí)查近。
-u fd 使用文件描述符 fd 中的輸入,而不是標(biāo)準(zhǔn)輸入挤忙。
#!/bin/bash
# read-ifs: read fields from a file
FILE=/etc/passwd
read -p "Enter a user name > " user_name
file_info=$(grep "^$user_name:" $FILE)
if [ -n "$file_info" ]; then
    IFS=":" read user pw uid gid name home shell <<< "$file_info"
    echo "User = '$user'"
    echo "UID = '$uid'"
    echo "GID = '$gid'"
    echo "Full Name = '$name'"
    echo "Home Dir. = '$home'"
    echo "Shell = '$shell'"
else
    echo "No such user '$user_name'" >&2
    exit 1
fi

有用的命令

  • sudo apt update
    是從/etc/apt/source.list文件中定義的源中去同步包的索引文件

  • du命令

選項(xiàng) 說(shuō)明
h 以人類可讀的方式顯示
a 顯示目錄占用的磁盤空間大小霜威,還要顯示其下目錄和文件占用磁盤空間的大小
s 顯示目錄占用的磁盤空間大小,不要顯示其下子目錄和文件占用的磁盤空間大小
c 顯示幾個(gè)目錄或文件占用的磁盤空間大小册烈,還要統(tǒng)計(jì)它們的總和
apparent-size 顯示目錄或文件自身的大小
l 統(tǒng)計(jì)硬鏈接占用磁盤空間的大小
L 統(tǒng)計(jì)符號(hào)鏈接所指向的文件占用的磁盤空間大小

1.du -sh : 查看當(dāng)前目錄總共占的容量戈泼。而不單獨(dú)列出各子項(xiàng)占用的容量
2.du -sh --max-depth=1 : 查看當(dāng)前目錄下一級(jí)子文件和子目錄占用的磁盤容量婿禽。
3.du -sh * | sort -n 統(tǒng)計(jì)當(dāng)前文件夾(目錄)大小,并按文件大小排序
4.du -sk filename 查看指定文件大小

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末大猛,一起剝皮案震驚了整個(gè)濱河市扭倾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挽绩,老刑警劉巖膛壹,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異唉堪,居然都是意外死亡模聋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門唠亚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)链方,“玉大人,你說(shuō)我怎么就攤上這事灶搜∷钍矗” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵占调,是天一觀的道長(zhǎng)暂题。 經(jīng)常有香客問(wèn)我,道長(zhǎng)究珊,這世上最難降的妖魔是什么薪者? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮剿涮,結(jié)果婚禮上言津,老公的妹妹穿的比我還像新娘。我一直安慰自己取试,他們只是感情好悬槽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瞬浓,像睡著了一般初婆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猿棉,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天磅叛,我揣著相機(jī)與錄音,去河邊找鬼萨赁。 笑死弊琴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杖爽。 我是一名探鬼主播紫皇,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼聪铺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼精置!你這毒婦竟也來(lái)了计寇?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脂倦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后元莫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赖阻,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年踱蠢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了火欧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茎截,死狀恐怖苇侵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情企锌,我是刑警寧澤榆浓,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站撕攒,受9級(jí)特大地震影響陡鹃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抖坪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一萍鲸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧擦俐,春花似錦脊阴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至饥悴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間答朋,已是汗流浹背梦碗。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斩例,地道東北人念赶。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像停局,于是被迫代替她去往敵國(guó)和親翻具。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裆泳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ) 1. 學(xué)習(xí)基礎(chǔ)的bash用法,具體地說(shuō)闻葵,閱讀bash的man手冊(cè)(man bash 并通讀一遍)槽畔;很簡(jiǎn)...
    Leon_Geo閱讀 1,115評(píng)論 1 19
  • 對(duì)于剛剛開(kāi)始使用linux的初學(xué)者來(lái)說(shuō)鳞尔,命令行無(wú)疑是必須掌握的技能寥假,極大的方便了對(duì)于系統(tǒng)的操作糕韧。筆者在使用過(guò)程中記...
    0xCoffee閱讀 518評(píng)論 0 8
  • 《快樂(lè)的Linux命令行》 第一部分:引言 本文為學(xué)習(xí)《快樂(lè)的Linux命令行》notes。 好羞恥的名字乒疏。。怎么...
    raincoffee閱讀 484評(píng)論 0 0
  • 胡思亂想胡思亂想 你是不會(huì)離開(kāi)的世界上最好的人 就這樣做了個(gè)偏執(zhí)的夢(mèng)
    deadinside閱讀 170評(píng)論 0 0