linux的哲學(xué)思想:
- 一切皆文件(硬件設(shè)備亦如此),文本文件保存配置信息;
- 單一目的的小程序(由眾多目的單一的小程序組成)逮光,組合小程序完成復(fù)雜任務(wù);
- 盡量避免捕獲用戶接口墩划;
- 提供機(jī)制涕刚,而非策略。
1. 基本操作
基本流程:
進(jìn)入目錄(cd)-->查看文件是否存在(ls)-->查看文件內(nèi)容(cat)-->編輯文件(vim)
1. cd
cd 進(jìn)入指定的目錄
# cd .. 返回上一級(jí)
# cd / 絕對(duì)路徑
# cd ./ 相對(duì)路徑
2. ls
ls 查看文件的屬性
# ls -l == ll
# ll -h :以人類易讀的模式顯示文件的大小乙帮。Kb/Mb/G
# ls -Sl : 從大到小排序
# ls -rSl : 從小到排序
##小擴(kuò)展:
# ll | wc -l
##wc 是統(tǒng)計(jì)行數(shù)杜漠,|是管道命令
3. cat
cat 查看文件內(nèi)容
cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Aug 17 07:38:21 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=976105f5-f402-456c-aadd-50de49ff88f9 / ext4 defaults 1 1
有時(shí)候文件太長(zhǎng),我們需要借助一下其他小工具察净。
- 按屏輸出內(nèi)容 less
- 通過關(guān)鍵字查找 grep
# cat /etc/fstab | less 或者 less /etc/fstab
# cat StatisticsController.phpbak | grep -n Api
4. vim
如果我們需要修改文件驾茴,應(yīng)該使用linux下自帶的vim編輯器。
vim一共三種操作模式:
- 命令模式:使用一些命令對(duì)文本文件進(jìn)行一些復(fù)制氢卡,粘貼锈至,快速定位等操作
- 冒號(hào)模式:對(duì)文本進(jìn)行批量修改,查找等操作
- 插入模式:輸入字符
<p id="div-border-top-red">按照約定译秦,我們?cè)诜?wù)器上修改任何一個(gè)文件之前峡捡,均需要對(duì)其進(jìn)行備份操作。</p>
1.打開文件
vim + 文件名
直接使用vim + 文件名筑悴,此時(shí)進(jìn)入的是vim編輯器的命令模式们拙。不能直接輸入字符修改文件。
在這個(gè)模式下可以進(jìn)行一些編輯前的預(yù)備操作:
- 刪除不需要的行:
dd 刪除光標(biāo)所在的整行阁吝;
dd 刪除光標(biāo)所在行及其下的#-1行睛竣,#表示數(shù)字。
粘貼刪除的行
p 命令求摇, dd 和 p 配合就實(shí)現(xiàn)了windows下的剪切操作射沟。
- 粘貼操作:
yy 復(fù)制當(dāng)前行
yy 復(fù)制光標(biāo)所在行及其下的#-1行,#表示數(shù)字与境。
粘貼
p yy 和 p 配合實(shí)現(xiàn)了windows下的復(fù)制粘貼操作验夯。
- 調(diào)整光標(biāo)位置,快速定位到需要修改的行
gg : 跳轉(zhuǎn)到文本的第一行
G : 跳轉(zhuǎn)到文本的最好一行
gg : 快速跳轉(zhuǎn)到第#行
- 調(diào)整光標(biāo)位置摔刁,快速定位到行內(nèi)的某個(gè)字符
# crtl + 左右箭頭 按照空格為界挥转,每次跳轉(zhuǎn)到對(duì)應(yīng)空格后字符的詞頭。
Home 鍵跳轉(zhuǎn)到行頭部
End 鍵跳轉(zhuǎn)到行尾部
2.修改文件
簡(jiǎn)單修改:
通過1的操作共屈,定位到想修改的位置绑谣,
i(insert) : 當(dāng)前光標(biāo)位置插入;
a(append): 光標(biāo)后插入拗引;
o(other):在光標(biāo)當(dāng)前行之下開啟新的一行借宵。
批量修改:
在命令模式下,直接輸入:符號(hào)矾削,進(jìn)入冒號(hào)模式壤玫;在冒號(hào)模式下我們可以使用簡(jiǎn)單的命令對(duì)文件進(jìn)行批量替換。
語(yǔ)法:
:[addr]s/源字符串/目的字符串/[option]
全局替換命令為:
:%s/源字符串/目的字符串/g
說明
- s/ / / 可以使用 s@ @ @ 或者 s# # # 替換,從而解決特殊情況哼凯;
- [addr]為指定要替換的行欲间,不指定默認(rèn)當(dāng)前行。 .:全文 3,5: 第3到第5行猎贴;
- [option] g為全文所以,不知道表示只修改每行找到打第一個(gè)蝴光。
a. 用//注釋第10-20 行內(nèi)容:
:10,20s#^#//#g
b. 在10-20行刪除 //注釋
:10,20s#^//##g
c. 批量替換全文所以的單詞:
:1,$s/sup/good/g
冒號(hào)模式下的其他命令:
- :set num , 每行添加行號(hào)她渴,方便跳轉(zhuǎn)
- :# , 快速定位到第#行,:1 首行 :$ 尾行
- :set ai! 設(shè)置自動(dòng)縮進(jìn)
- :syntax on 語(yǔ)法高亮 | off 關(guān)閉
3. 退出
修改完成后虱疏,退出編輯器惹骂。
- 保存退出,:wq
- 不保存退出做瞪,:!q
如果下次打開文件出現(xiàn)
E325: 注意
發(fā)現(xiàn)交換文件 ".Dockerfile.swp"
所有者: root 日期: Fri Nov 9 14:51:09 2018
文件名: ~root/Dockerfile
修改過: 是
用戶名: root 主機(jī)名: izpo45bh60h6bsz
進(jìn)程 ID: 5313
正在打開文件 "Dockerfile"
日期: Thu Nov 8 11:41:25 2018
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
如果是這樣对粪,請(qǐng)用 ":recover" 或 "vim -r Dockerfile"
恢復(fù)修改的內(nèi)容 (請(qǐng)見 ":help recovery")。
如果你已經(jīng)進(jìn)行了恢復(fù)装蓬,請(qǐng)刪除交換文件 ".Dockerfile.swp"
以避免再看到此消息著拭。
交換文件 ".Dockerfile.swp" 已存在!
以只讀方式打開([O]), 直接編輯((E)), 恢復(fù)((R)), 刪除交換文件((D)), 退出((Q)), 中止((A)):
則說明異常退出牍帚,上次編輯文件后沒保存文件就被關(guān)閉了儡遮。
此時(shí)可以直接輸出D,刪除交換文件直接進(jìn)入暗赶。
或者直接刪除.Dockerfile.swp文件鄙币。
2. 一些技巧
1. history命令
history查看文件的執(zhí)行歷史
當(dāng)我們要反復(fù)執(zhí)行某個(gè)比較長(zhǎng)的命令時(shí)候肃叶。我們可以進(jìn)行如下三種操作:
- 重新輸入命令
- 鍵盤上下鍵翻滾
- 配合history命令,找到命令的id十嘿,然后!+id 重新執(zhí)行該行命令
!! 代表上一個(gè)命令
! + 曾經(jīng)輸入過命令的前幾個(gè)字母因惭,可以直接重新執(zhí)行最近的那一條命令
! # 重新執(zhí)行history命令看到的第#條命令。
2. bash上的快捷鍵
crtl + e 跳轉(zhuǎn)到命令行行尾
crtl + a 跳轉(zhuǎn)到命令行行首
crtl + ——> :以單詞為單位移動(dòng)绩衷,向右
crtl + <—— :以單詞為單位移動(dòng)蹦魔,向左
esc + . 獲取最后一條命令的最末尾的參數(shù),并復(fù)制到當(dāng)前命令行上
3. table
table 是linux下常用的命令之一咳燕,作用是補(bǔ)全文件路徑(包括文件名稱)或者補(bǔ)全命令勿决。
TAB鍵的兩大作用:
- 只需輸入文件或目錄名的前幾個(gè)字符,然后按TAB鍵招盲,如無(wú)相重的低缩,完整的文件名立即自動(dòng)在命令行出現(xiàn);如有相重的宪肖,再按一下TAB鍵表制,系統(tǒng)會(huì)列出當(dāng)前目錄下所有以這幾個(gè)字符開頭的名字。
- 在命令行下控乾,只需輸入例如m么介,再連續(xù)按兩次TAB鍵,系統(tǒng)將列出所有以m開頭的命令蜕衡,(包括自定義的Bshell命令函數(shù))壤短,對(duì)查找某些記不清楚的命令特有用。例如輸入ftp慨仿,將查到ftp久脯,ftpcount,ftpwho镰吆,ftpshut等本不熟悉的命令帘撰。
3. 常用命令
1. cp
cp 復(fù)制
cp [options] source dest
使用指令"cp"將當(dāng)前目錄"test/"下的所有文件復(fù)制到新目錄"newtest"下,輸入如下命令:
cp –r test/ newtest
-r 遞歸復(fù)制
2. mv
mv 移動(dòng)
1, 把文件或者目錄移動(dòng)到另外一個(gè)目錄下
mv a /b
2, 重命名文件或者目錄
mv a b
a 可以為文件或者目錄万皿,但是b最好不要存在摧找。
3. rm
rm 刪除文件或者目錄
-f, --force 忽略不存在的文件,從不給出提示牢硅。
-r蹬耘, 遞歸,刪除文件夾
rm -rf ##linux 下最強(qiáng)勢(shì)且最簡(jiǎn)單的操作之一减余,強(qiáng)制刪除指定的文件
rm file #刪除一般的文件
4. touch && mkdir
touch 創(chuàng)建文本文件
mkdir 創(chuàng)建目錄
mkdir -pv /a/b/c #如果a和b不存在综苔,遞歸創(chuàng)建/a和/a/b目錄
4. 其他問題
1,當(dāng)需要在服務(wù)器上運(yùn)行長(zhǎng)時(shí)間占據(jù)終端的命令時(shí)候,我們需要在后臺(tái)運(yùn)行命令如筛。
兩種辦法:
1.screen命令
剝離當(dāng)前終端
開啟一個(gè)新的終端
screen -S Terminal_name #Terminal_name 終端名稱
查看當(dāng)前運(yùn)行的終端
screen -ls
進(jìn)入終端
screen -r # #是-ls 中查看到的id 或者 開啟時(shí)候的Terminal_name
置于后臺(tái)
crtl + a + d
2.將文件內(nèi)容重定向到文本中
| 管道
重定向符號(hào) >>
XXX >> /dev/null #輸出的文本沒用
/dev/null 是linux下的一個(gè)設(shè)備堡牡,又被稱為"黑洞"設(shè)備,所有輸入進(jìn)這個(gè)設(shè)備的文件均消失妙黍。
/dev/zero 是一個(gè)代表一個(gè)永遠(yuǎn)輸出 0的設(shè)備文件悴侵,使用它作輸入可以得到全為空的文件。
xxx >> /tmp/xxx.logs #輸出的文本有作用
2,如何解決服務(wù)器上不能crtl + c 終止的任務(wù)签赃?
比如: php /index.php Moo SydsdsaodsInfo 這個(gè)定時(shí)任務(wù)周偎。
查詢?cè)撊蝿?wù)的進(jìn)程id,使用kill命令結(jié)束該進(jìn)程
1孵运,查詢?cè)撊蝿?wù)的進(jìn)程id :
grep 后邊加的是可以識(shí)別這個(gè)定時(shí)任務(wù)的關(guān)鍵字。比如MemeSyn 也是可以的。
ps aux | grep SydsdsaodsInfo
運(yùn)行結(jié)果:
root 31933 0.6 0.2 438432 38020 pts/9 S+ 11:35 0:00 php /index.php Moo SydsdsaodsInfo
root 31981 0.0 0.0 112652 976 pts/8 S+ 11:36 0:00 grep --color=auto SydsdsaodsInfo
##說明:上邊第一行的第二個(gè)字段就是這個(gè)進(jìn)程的pid
2, kill 該進(jìn)程
kill 31933
個(gè)人小站:www.mykernel.cn