(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è)置摄悯。 |
-
登錄shell:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) ->( ~/.bashrc -> /etc/bashrc) -> ~/.bash_logout
- profile(由Bourne Shell和Korn Shell使用)和.bash_login(由C Shell使用)兩個(gè)文件是.bash_profile的同義詞赞季,目的是為了兼容其它Shell
- bash_profile中一般會(huì)執(zhí)行.bashrc
交互式非登陸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次 |
- grep -h '[^bg]zip' dirlist*.txt
匹配zip三個(gè)字符前一個(gè)并非b/g字符 - grep -h '^[A-Za-z0-9]' dirlist*.txt
匹配字符或數(shù)字開(kāi)頭 - grep -Eh '^(bz|gz|zip)' dirlist*.txt
匹配以“bz”纯出,或“gz”蚯妇,或“zip”開(kāi)頭的文件名 - grep -E '^([[:alpha:]]+ ?)+$'
匹配一個(gè)或多個(gè)字母開(kāi)頭,可以跟隨一個(gè)空格暂筝,可重復(fù)多次箩言。 - ^(?[0-9]{3})? [0-9]{3}-[0-9]{4}$
匹配電話號(hào)碼 - 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)情況下竭翠,域由空格或制表符分隔。 |
- ls -al /usr/bin | sort -nr -k 5 | head
- 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)指定的文本眷昆。 |
- 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 查看指定文件大小