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 .. 返回上一級目錄
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 添加一些調試信息
總結
以上是生活随笔為你收集整理的linux快捷键和指令记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 4.4.3和4.4.4,
- 下一篇: linux i2c dev.h freq