1. 程式人生 > >linux快捷鍵和指令記錄

linux快捷鍵和指令記錄

我學的是Ubuntu的教程,用的是centos7.15,不過還好大部分的指令都是能用的,centos7.15能用的指令和快捷鍵記錄在此,Ubuntu應該也是能用的

快捷鍵:
ctrl+p 上一條指令
ctrl+n 下一條指令
ctrl+b 游標向前移動一格
ctrl+f 游標向後移動一格
這四個快捷鍵對應了小鍵盤的上下左右

Shift + PageUp 向前翻頁
Shift + PageDown 向後翻頁

ctrl+a 游標移動到最前
ctrl+e 游標移動到末尾

ctrl+h 刪除,一般是直接按backspace就可以了- -,不用這麼麻煩
ctrl+d 向後刪除
ctrl+l

清屏

指令:
(家目錄就是當然使用者在home裡面的同名資料夾,例如baiye使用者的家目錄就是/home/baiye/)
cd 返回家目錄
cd … 返回上一級目錄(這裡是兩個點,CSDN的編輯器是真的麻煩,兩個點出來就變成三個了,不知道意義何在)
cd~ 返回家目錄
cd / 返回根目錄

pwd 檢視當前所在的位置(其實通過前面部分也能看出來,例:位置轉到home裡後,前面的~變為了home)
在這裡插入圖片描述

查詢:
ls 檢視當前目錄
ls ~ 檢視家目錄
ls / 檢視根目錄
引數:
-a 輸出全部,包括隱藏的檔案和資料夾(隱藏的檔案或資料夾前面有個. 例如.abc)
-l 輸出帶有詳細資訊,不包括隱藏的檔案和資料夾

新建:
touch XXX 在當前位置新建一個XXX檔案,如果XXX已存在,則修改檔案的時間為現在
mkdir XXX 在當前位置建立一個XXX目錄
引數:
mkdir aa/bb/cc -p 在當前位置建立一個多層的目錄,需要加-p引數,引數放在最末端或mkdir後面都可以

刪除:
rmdir XXX 刪除當前目錄下的XXX目錄,但該目錄必須為空才能刪除成功(不實用)
rm XXX 徹底刪除當前目錄下的XXX檔案
引數:
rm XXX -r 徹底刪除當前目錄下的XXX目錄,包括裡面的所有東西,需要加-r引數,引數位置前後都可(遞迴刪除)
rm XXX -i 提高安全性有一個確認的警告,如果是多級目錄,系統會逐層的詢問是否刪除該級目錄,不過刪除目錄的話還要加上r

複製:
cp a b 將當前位置的a檔案拷貝,並新建一個b,如果b已存在,則覆蓋
引數:
cp adir bdir -r 將當前位置的adir目錄拷貝,並新建bdir目錄,包括目錄下的所有內容,如果bdir是已存在的目錄,則把adir整個目錄複製到bdir的目錄裡面
拷貝檔案也是一樣,如果b是已存在的目錄,則將該a檔案/目錄複製到b裡面去,並且不改名字

開啟(都不實用,但是可以瞭解一下):
cat a 開啟當前的a檔案,適合短文字檔案
more a 開啟當前的a檔案,可以開啟長文字檔案,開啟後,按回車是多看一行,空格是多翻一頁。但是注意more是無法看前面的內容的,翻頁翻過了不能往回翻。如果看到一半想退出,就按q(ctrl+c也可以)
less a 開啟當前的a檔案,可以開啟長文字檔案,開啟後,按回車是多看一行,空格是多翻一頁。並且,ctrl+p是往前翻一行,ctrl+n是往後翻一行,ctrl+b是往前翻一頁,ctrl+f是往後翻一頁。如果看到一半想退出,就按q
head a 預設顯示檔案前十行
tail a 預設顯示檔案後十行
head -x a 在中間新增引數(-行數),顯示檔案前x行
tail -x a 在中間新增引數(-行數),顯示檔案後x行

重新命名或移動:
mv a b 將a重新命名為b
注意如果b已存在,則覆蓋b。
如果b已存在並且是個目錄,則將a移動到b目錄裡
移動到上一層的話是 /…(兩個點)

快捷方式(軟連結):
ln -s ~/a/b.txt c 在指定位置建立b.txt檔案的快捷方式c,注意的是這個路徑必須是絕對路徑,如果只是相對路徑,則該快捷方式只能在當前位置使用換了位置後會失效。
ln -s ~/a/b/ c 在指定位置建立b目錄的快捷方式c

硬連結:
ln ~/a/b.txt c 去掉-s引數,就是建立硬連結的方式,相對路徑也可以建立,目錄是無法建立硬連結的
硬連結不會佔用磁碟空間,只是一個對映,指向i結點對應的位置上的檔案
每個檔案都至少有一個硬連結,如果一個i結點沒有了硬連結,則建立新檔案時,新檔案會覆蓋這個位置
大概意思是軟連線相當於一個殘次品,它跟真的檔案(硬連結)是比不了的,它只是一個快捷方式,它指向的也是硬連結所在目錄的位置。
如果有多個同樣檔案不同位置的硬連結,那它們每個建立的快捷方式指向的位置都不同。但硬連結無論在哪裡有幾個,指向的地方都是相同的
也就是說軟連線就是正品和模型的差別,軟連線只是個模型,它指向的是正品。但硬連結就像真假美猴王一樣,有多少個,多少個就都是一樣的,刪掉哪個都無所謂,只要留一個就夠了。
ls -l命令可以檢視當前目錄下檔案或目錄的詳細資訊,可以看到硬連結數量

檔案和目錄屬性(瞭解就行):
wc a.txt按順序獲取文字檔案的以下屬性
1行數 2單詞數(空格分割為準) 3位元組數 4文字檔名字
od -t a開啟二進位制檔案,-t引數是指定資料顯示格式:c是ASCII字元,d是有符號十進位制數,f是浮點數,o是八進位制數,u是無符號十進位制數,x是十六進位制數,根據需求可在t後面加上不同引數
du -h 檢視當前位置的所有目錄大小和當前目錄的大小,-h引數是格式化輸出
df -h 檢視磁碟的使用情況,-h引數是格式化輸出

檢視指定命令的位置:
wich xx 檢視xx命令的位置,但是隻能查外建命令,內建命令是查不到的

檢視修改檔案許可權:
whoami 檢視當前登入使用者
修改檔案的許可權有兩種方式
1.文字設定法
chmod [who] [+|-|=] [mode] [檔名]
who:
所有人 a(不寫who的話預設為所有人)
檔案所有者 u
檔案所屬組 g
其他人 o
+:新增許可權
-:減少許可權
=:覆蓋原來的許可權
mode:
讀 r
寫 w
執行 x(目錄如果沒有這個許可權將無法訪問)
例:chomod a+r b 修改b檔案的所有人許可權增加讀許可權
2.數字設定法(常用,比較簡單方便)
chmod [-|+|=][3個數字分別代表3個許可權] [檔名]
+:新增許可權
-:減少許可權
=:覆蓋原來的許可權(不寫的話,預設是覆蓋)
r:4
w:2
x:1
數字相加就是許可權,三個數字按順序分別對應檔案所有者,檔案所屬組,其他人
例:chmod 765 b 修改b檔案的許可權為:檔案所有者rwx(7),檔案所屬組rw(6),其他人rx(5)
chmod +001 b 給b檔案的其他人許可權加1:rx(5)=》rw(6),另外兩個許可權加0不變

修改檔案所有者和所屬組:
sudo chown baiye a 修改檔案a的所有者為baiye,sudo是借用管理員許可權
sudo chown baiye:hal a 修改檔案a的所有者為baiye,所屬組為hal
sudo chgrp hal a 修改檔案a的所屬組為hal

檔案的查詢
按檔名字查詢find /home/baiye/ -name “a” 查詢/home/baiye/路徑下名字為a的檔案
引號內可加萬用字元模糊查詢,*是一個或多個,?是一個
按檔案大小查詢find /home/baiye/ -size +10k -size -10m查詢/home/baiye/路徑下大於10k並小於10m的檔案
按檔案型別查詢find /home/baiye/ -type d 查詢/home/baiye/路徑下的目錄
普通檔案f,目錄d,連結符號l,塊裝置b,字元裝置c,socket套接字s,管道p

按檔案內容查詢
grep -r “hello” ~ 在家目錄下查詢內容帶有hello的檔案

壓縮管理
gzip *.txt:壓縮當前目錄下全部的txt字尾檔案,不保留原始檔
gunzip *.gz 解壓縮當前目錄下全部的gz字尾檔案
bzip2 *txt:壓縮當前目錄下全部的txt字尾檔案,加引數-k可以保留原始檔
bunzip2 *.bz2 解壓縮當前目錄下全部的bz2字尾檔案
上面兩個是用處不大的壓縮方式,它們都不能壓縮目錄,而且不會打包只是逐個壓縮
(centos7需要手動安裝bzip2
yum search bzip2 //查詢安裝包
yum -y install bzip2.x86_64 )
tar
引數:
c 建立
x 釋放
v 顯示提示資訊
f 指定壓縮檔案的名字
z 使用gzip方式壓縮檔案.gz
j 使用bzip2方式壓縮檔案.bz2
如果它不用z/j引數,該命令只能對檔案或目錄打包
tar只是完成了打包動作,其核心還是倚靠z和j執行的
壓縮:
tar zcvf 生成的壓縮包名字(xxx.tar.gz) 要壓縮的檔案或目錄
tar jcvf 生成的壓縮包名字(xxx.tar.bz2) 要壓縮的檔案或目錄
例子
tar zcvf alltxt.tar.gz *.txt 用gzip方式打包壓縮當前目錄下所有的txt檔案,命名為alltxt.tar.gz
tar jcvf animal.tar.bz2 animal/ *.txt 用bzip2方式壓縮整個animal目錄和當前目錄下的所有txt檔案,命名為animal.tar.bz2
解壓縮:
tar jxvf 壓縮包的名字(解壓到當前目錄)如果後面加-C 引數可以指定解壓到哪裡
例子
tar zxvf alltxt.tar.gz 解壓縮alltxt.tar.gz到當前目錄下
tar jxvf animal.tar.bz2 -C test/解壓縮animal.tar.bzip2到test目錄下

rar(需先安裝,步驟https://blog.csdn.net/weixin_38958597/article/details/83424551)
引數:
a 壓縮
x 解壓縮
壓縮
rar a 生成的壓縮檔案的名字(temp) 壓縮的檔案或目錄
rar我們不用自己寫字尾了,它會智慧補全
例子
rar a all *.txt 壓縮當前目錄下所有的txt檔案,命名為all.rar
rar a animal animal壓縮animal目錄,命名為animal.rar
解壓縮
rar x 壓縮檔名 (解壓縮目錄,不寫的話預設當前目錄)
例子
rar x all.rar解壓縮all.rar到當前目錄下
rar x animal.rar test解壓縮animal.rar到test目錄下

zip(我沒安裝jued)
壓縮
zip 壓縮包的名字 壓縮的檔案,壓縮目錄需要加-r引數
例子
zip all *.txt 壓縮當前目錄下所有的txt檔案,命名為all.zip
zip -r animal animal壓縮animal目錄,命名為animal.zip
解壓縮
unzip 壓縮包的名字
unzip 壓縮包的名字 -d 解壓目錄
例子
unzip all.zip解壓縮all.zip到當前目錄下
unzip animal.zip -d test/解壓縮animal.zip到test目錄下

程序管理
who 檢視當前使用者狀態

ps aux顯示當前使用者下的所有程序
引數:
a檢視當前作業系統下的所有使用者的資訊
u檢視程序所有者及其他一些資訊
x檢視沒有控制終端的應用程式(不能與使用者進行互動的程序,輸入輸出之類的)
ps aux | grep xxx對顯示的程序進行過濾查詢,這裡grep是查詢前面指令輸出的內容裡,帶有xxx的語句
(管道是|,它的作用是把前面指令的輸出作為後面指令的輸入完成指令)

kill -l 檢視所有訊號
kill -SIGKILL 5000或kill -9 5000 關掉程序ID為5000的程序

env檢視當前程序下的所有環境變數設定
env | grep PATH 管道過濾只輸出環境變數中的PATH變數
top相當於window裡的工作管理員,按ctrl+c可以停止並退出

ifconfig 檢視ip資訊(centos7需要先安裝yum install net-tools)

ping xxx 測試與xxxip能不能通訊,ctrl+c退出
加引數-c n可以只輸出n條就結束,-i n可以每隔n秒輸出一次
ping後面也可以加網站例如百度之類的

nslookup www.xxx.com 可以輸出域名的ip

新增使用者
sudo adduser xxx 新增xxx新使用者,用指令碼的方式
sudo useradd -s /bin/bash -g Group -d /home/xxx -m xxx 用命令的方式建立xxx使用者
-s引數後面指定命令解析器,-g指定所屬組,-d指定使用者目錄,-m如果家目錄下沒有指定目錄則建立
sudo groupadd Group 建立Group組
sudo passwd 使用者名稱 修改指定使用者的密碼,如果直接輸入passwd就是修改當前使用者密碼
sudo passwd root 修改root使用者的密碼
su xxx 切換為xxx使用者
sudo userdel -r xxx 刪除xxx使用者
vi /etc/passwd 檢視使用者是否建立成功,每新增一個使用者passwd就會新增一行

ftp伺服器搭建(檔案的上傳和下載)
安裝vsftpd
yum install -y vsftpd 先進入root,然後安裝vsftpd,-y是可以在安裝過程中對系統的詢問(y/n)自動為y
伺服器端配置
cd /etc 進入etc目錄檢視配置檔案
ls -l vsftpd 可以看到vsftpd的相關檔案
vi /vsftpd/vsftpd.conf 進入vsftpd的配置檔案進行編輯
sudo service vsftpd restart 配置完畢後重啟服務
客戶端
ftp IP地址 連線伺服器

vim(要先下載vim替換vi 命令:yum install vim-enhanced)
vi有三種模式:命令模式文字模式末行模式,預設進入的是命令模式
模式間的轉換:
命令>>文字:按aiosAIOS的任意一個,八個字母都可以進入,後面會講解他們8個的區別
文字>>命令:按ESC
命令>>末行:輸入一個冒號
末行>>命令:按兩下ESC退出,或輸入執行一條語句
文字模式不能直接跟末行模式相互轉換

vim命令模式下游標的移動
h左移,j下移,k上移,l右移
shift+4移動到行尾,0移動到行首
按兩下g移動到檔案首,shift+g移動到檔案尾,xx加shift+g移動到xx行
shift+x刪除游標前面的一個字元,x刪除游標後面的一個字元
dw叢當前位置刪除後面單詞,d0叢當前位置刪除到行首,d加shift+4叢當前位置刪除到行尾,dd刪除當前行,ndd從當前位置刪除n行
u撤銷,ctrl+r反撤銷
其實以上的刪除的實質並不是刪除,而是剪下,不管是哪種方式的刪除,都可以粘貼出來
yy複製當前行,nyy從當前位置複製n行,p貼上到游標所在行的下一行,shift+p貼上到游標所在行
只複製片段的方法:在想要複製的頭位置按v切換到可視模式,再用方向鍵移動到想要複製的尾位置,選中後按y複製或按d刪除,p貼上到指定位置

查詢片段
/xx 命令模式下反斜槓加上要查詢的詞,文章裡符合條件的片段會以高亮顯示,n鍵向上切換,N向下切換
?xx 有同樣的效果,它是向上查詢的,/是向下查詢的,不過它們都可以把所有內容查出來,區別只是它們最後游標所在的位置而已
#號也可以查詢,在想要查詢的單詞上按#號鍵(shift+3),會自動選中該文章所有出現的該單詞,但只是查詢這個單詞,不代表查詢這個片段,單詞的前後是有分隔的

不太重要的功能
替換單個字元,在該字元上按r,然後輸入想替換的字元,但僅限單個字元
縮排當前行:游標所在行按<<向左縮排,>>向右縮排
不知道文件裡某個函式的用法時,選中該單詞按shift+k,就會跳轉到man文件的有該函式的章節,如果要在man文件的指定章節查詢,就先按下想要查詢的章節數字再加上shift+k就會查詢指定的章節

命令模式切換到文字模式
a 從當前游標位置的後面開始編輯
i 從當前游標位置的前面開始編輯
A 從當前行尾開始編輯
I 從當前行首開始編輯
o 從游標所在行的下面開闢一個新的行開始編輯
O 從游標所在行的上面開闢一個新的行開始編輯
s 刪除游標所在位置的字元,並開始編輯
S 刪除游標所在位置的那一行,並開始編輯

末行模式
進入末行模式統一需要先輸入一個冒號:
:n,跳轉到文件的第n行
:s/abc/nn 替換游標所在行的第一個abc字串為nn
:s/abc/nn/g 替換游標所在行的所有abc字串為nn
:%s/abc/nn 替換當前檔案裡所有行的第一個abc字串為nn
:%s/abc/nn/g 替換當前檔案裡所有abc字串為nn
:20,30s/abc/nn/g 替換當前檔案裡第20行到第30行中的所有abc字串為nn

:w 儲存檔案
:q 退出檔案
:q! 不儲存退出
:wq 儲存並退出(命令模式下摁兩次大寫Z也一樣)
:x 跟wq是一樣的

分屏(按住ctrl加兩下w切換視窗)
:sq xxx 水平分屏,不輸入xxx檔名的話預設再開啟一個當前文件
:vsp xxx 垂直分屏,不輸入xxx檔名的話預設再開啟一個當前文件
如果想儲存或退出其中一個,就把游標切換到那個文件然後輸入前面的指令
:wall 儲存所有
:qall 退出所有

gcc的編譯過程(需先安裝yum install gcc和yum install gcc-c++)
hello.c+前處理器(cpp,替換常量刪除註釋之類的)=hello.i(c檔案)
hello.i+編譯器(gcc)=hello.s(彙編檔案)
hello.s+彙編器(as)=hello.o(二進位制檔案)
hello.o+連結器(ld)=a.out(可執行檔案)
編譯器消耗時間最多
編譯執行一個c程式的流程:
gcc -E sum.c -o sum.i 預編譯生成一個c檔案
gcc -S sum.i -o sum.s 編譯生成一個彙編檔案
gcc -c sum.s -o sum.o 連結器生成一個二進位制檔案
gcc sum.o -o app生成一個可執行檔案
gcc sum.c -o myapp 也可以直接一步生成可執行檔案,但是它內部也是一步一步呼叫了各個步驟的
-o引數確定生成檔案的名字,如果不寫,預設生成a.out
gcc sum.c -I ./include -o app
引數-I(大寫的i)可以指定標頭檔案所在的位置,如果不寫,預設在當前目錄裡找

gcc其他一些引數:
-On 編譯優化,n為0時優化等級最低,n為3時優化等級最高,可以去掉冗餘程式碼
-Wall 提示更多警告資訊
-g 新增一些除錯資訊