Linux基础命令必知必会
基礎命令:這里的文件可以是單個文件也可以是文件夾也可以是軟連接類文件,一切皆文件
$ 環境變量, @ 主機, ~ 用戶, | 管道符(將一個命令的輸出定向到另一個命令的輸入;也就說前一個命令處理后的數據會作為數據源傳遞給下一命令繼續進行處理), ; 連續(使用;保證命令的連續)
> 輸出重定向, < 輸入重定向
所有的命令都具有 --help,有問題找助手;
以下內容中<source>是指源文件或者源路徑,<dest>目標文件或者路徑
-
man <command> manual 手冊:search for files in a directory hierarchy
-
pwd print working directory 打印當前路徑
-
date date 打印當前系統時間
-
history <n> 打印歷史限制n個最近命令,默認全部
-
type <command>顯示命令的位置
-
./jemeter.sh 執行一個可執行文件
文件基本操作
-
cd change directory 切換路徑
cd [options] <dest>
cd ~ # 切換到HOMEcd # 切換到HOME -
ls list 列出文件列表
ls [options] <dest>
- -a all 所有文件包括隱藏文件
- -l long 長列表即詳情 等同于ll
-
cp copy 復制(并重命名)文件
cp [options] <source> <dest>
- -a all 全部信息拷貝,連同內鏈接等一同拷貝 等同于-dpr
- -r recursive 遞歸復制,如果有文件夾會遞歸復制文件夾中的所有文件
- -f force 強制拷貝,如果有相同的文件名強制覆蓋
- -i interactive 交互,有需要提示的給出彈窗
-
mv move 移動文件(可以用于重命名文件功能)
mv [options] <source> <desc>
- -f force 強制拷貝,如果有相同的文件名強制覆蓋
- -n no-blobber 不覆蓋已經存在的文件
- -i interactive 交互,有需要提示的給出彈窗
-
rm remove 移除文件(rm 是不能夠直接移除非空的文件夾)
rm [options] <desc>
- -r recursive 遞歸移除,如果有文件件會遞歸復制文件件中的所有文件
- -f force 強制拷貝,如果有相同的文件名強制覆蓋
- -i interactive 交互,每移除一個文件時都會提示給出彈窗
-
mkdir make directory 創建路徑
mkdir [options] <desc>
- -m mode 創建路徑的同時設置其權限屬性
- -p parrents 可以創建目錄路徑的父類路徑
-
rmdir remove directory 移除空的路徑
mkdir [options] <desc>
- -p parents 連同上級的空目錄一并刪除(僅限于空的上級目錄)
-
touch touch 創建文件(修改文件的屬性)
touch [options] <dest>
- -a access time 修改文件的訪問時間
- -m modification time 修改文件的修改時間
-
ln link 創建一個連接(在指定路徑下創建目標文件的快捷方式)
ln [options] <source> <dest-ln>
- -f force 如果已經存在目標連接名稱則強制移除后在創建
- -i interactive 交互,有需要提示的給出彈窗
- -s soft 創建一個軟連接
-
tar 打包文件,把多個文件打包成一個文件,生成或者提取.tar文件
注意這里并沒有壓縮,僅僅是打包,如果需要壓縮請使用-z參數,或者使用gzip命令
- -c create a new compressed archive 創建(打包)一個壓縮文件
- -f use archive file or device ARCHIVE
- -x extract files from an archive 提取一個包文件
- -t list the contents of an archive 列出包文件的內容
- -v verbosely list files processed 冗長地列出處理過的文件
- -z filter the archive through gzip 通過 gzip 過濾存檔即:壓縮和解壓
-
gzip 壓縮/解壓縮文件,會生成或者解壓.gzip文件
通常用的比較少,都是直接使用tar -z直接使用了
- -k keep 不刪除原有文件,默認完成壓縮后會刪除原有文件
- -d 解壓縮文件
-
lrzsz 插件/工具:文件傳輸器,需要使用yum/apt進行安裝
rzsz僅支持單文件處理的傳輸
- rz 上傳
- sz 下載
注意:xshell支持,putty是不支持的
如果是ssh協議可以使用scp,OpenSSH secure file copy
scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
- -r recurse 遞歸,用于復制文件夾
- -P port 指定host端口
注意scp只能傳輸regular文件,如果是文件夾的話需要使用-r參數
-
zip/unzip 插件/工具:解壓縮文件,需要使用yum/apt進行安裝
- -r recurse 遞歸壓縮文件夾
- -d delete 刪除 zip entry
比較之下壓縮率:zip不及gzip
-
find find 命令用來在指定目錄下查找文件,更多使用方法
find path -option [ -print ] [ -exec -ok command ] {} \;
(N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN -readable -writable -executable -wholename PATTERN -size N[bcwkMG] -type [bcdpflsD] -uid N -used N -user NAME -xtype [bcdpfls] -context CONTEXT
- -amin <n> File was last accessed n minutes ago.
- -atime <n> 過去 n 天內被訪問的文件
- -cmin <n> File’s status was last changed n minutes ago.
- -ctime <n> 過去 n 天內被修改的文件
- -mmin <n> File’s data was last modified n minutes ago.
- -mtime <n> 過去 n 天內被修改過屬性的文件
- -empty File is empty and is either a regular file or a directory. (蛋疼會找空的文件)
- -name/inamne <pattern> 文件名符合 str 的文件(iname 忽略大小寫) 支持(*, ?,[])進行文件名稱匹配
- -type [options] 過濾指定類型的文件: f regular file ,d directory , l link file
- -user <uname> File is owned by user uname
- -size +/- <n[c/k/M/G]> 過濾文件大小(+/-大于/小于參數,c:bytes,k:kb,M:Mb,G:Gb)
- -writable,-readable,-executable 可寫,可讀,可執行的屬性
總結: 對文件操作時,一般 -r是遞歸完成指令,-f是強制完成指令, -i 是由需要時給出提示 ,-v顯示執行過程
文本文件基本讀寫查
-
cat Concatenate file 輸出文本內容到控制臺
比較適合打開小型文本文件,因為它是一次性讀取全部內容;如果內容比較大的文件建議聯合grep一起使用
cat [options] <dest>
- -n 帶有行號打印
-
tac 功能和作用與cat相同,只不過是文件的讀取方向剛好相反
-
more 一次性讀取全部文本,可以進入閱讀模式,支持內容內容查找
more [options] <dest>
回車鍵 移動下一行
空格鍵 移動下一頁
b 向上翻一頁
f 向下翻一頁
d 向下翻半頁
q quit 退出閱讀模式,或者ctrl +c -
less 一屏一屏的讀取,可以進入閱讀模式,支持操作查看內容 更多使用技巧
less [options] <dest>
操作覆蓋more的外鍵操作功能,同時支持方向鍵和PageUp/PageDown功能鍵控制
/ 輸入關鍵字后回車向下搜索
? 輸入關鍵字后回車向上搜索
支持F鍵開啟文件新內容監聽,類似tail -F- -o 保存到其他文件
- -N 顯示行號
例如:分頁顯示進程
ps -ef | less -N -
head 輸出文件頭部指定行數
head [options] <dest>
- -c bytes 指定的字節數
- -l lines 指定的行數(沒有指定-c可以省略)
-
tail 輸出文件尾部指定行數
tail [options] <dest>
- -c bytes 指定的字節數
- -l lines 指定的行數(沒有指定-c可以省略)
- -f follow 監聽文件,常用于監聽日志,抓取指定日志,進入等待模式
- -F follow retry
三劍客(grep,sec,awk)
-
grep 查找文件里符合條件的字符串
grep可以直接查文檔,也可以接收流
grep [options] <str> <dest>
- -c count 計算符合樣式的行數
- -r 使用遞歸的方式查文件夾
- -A <n> after 找到目標的后n行
- -B <n> before 找到目標的前n行
- -C <n> 找到目標詞匯的前后n行
- -v <str>
-
sed 一種在線編輯器,一次處理一行數據
多用于行數據處理
sed [options] 'n [,m] action'
options:
- -n --silent,quiet 沉靜的,如果沒有指定該參數那么在使用action/p(打印)中指定的行號無效
- -i 默認所有的操作都是在使用內存的副本,并不對文件本身進行修改,如果需要修改文件就需要使用-i參數
actions:
格式:[n,[m]] function- -a 新增行,需要指定在第幾行后追加,可以標記新增行的內容,例如:2a hello,world
- -c 替換行
- -d 刪除行,不可與option中的-n同時使用
- -i 插入行
- -p [指定行號/查詢]打印,如果指定了行號需要聯合option中的-n使用
- -s 替換,直接進行取代工作; s/source/target/g全局替換
-
awk 對文件進行格式化的工具
多用于列數據進行處理
awk [options] 'pattern{action}' file,file,...
options:
- -F --field-separator指定分割符,以分隔符為標識把行數據進行分割為多列;默認為空白字符
pattern:符合pattern的才會傳遞給action(簡單理解為符合該條件)可以使用&&,||…等邏輯判斷符
- $n 可以直接獲取第n列的值與指定條件比較,例如:$2=="order"
- NF 分割后的字段列的數量(支持==,>,<等比較操作)
- NR 當前行的行號
action :
- print $n 打印第n列($n)數據內容
涉及第幾列的數據優先使用awk,因為awk會對行依據分隔符進行分列,有列的概念
-
sort 把文件內容中以行為單位進行比較,按照首字符向后
- -r reverse 反轉
- -n numerical value 數值
通常會和其它命令聯合使用,例如:uniq,awk
sort -rn login.log # 排序文件中的行數據 -
uniq 去重,去除重復數據,前提條件是相鄰數據相同才會被執行去重
在使用 uniq之前要用sort進行排序,目的是使相同的數據相鄰,這樣uniq才會更準確
- -c 統計出現的次數
通常會和其它命令聯合使用,例如:sort,awk
awk -F "," 'NF>2 {print $1,$2}' awk.txt | sort | uniq -c | sort -rn | head -3 # 讀取文件以','進行分割,滿足至少兩個字段后進行過濾然后按照出現頻率又少到多進行排序
總結:
awk 適合對行內有規律的列數據進行處理,通常用于找到(行分割后的)列數據進行統計分析,較多情況需要結合sort -rn,uniq -c使用
sed 適合對行數據進行處理,可以增刪改查 用于修改文件內容例如:sed -i 's/source/target/g file'grep適合對文本數據進行過濾處理 較多使用-C `過濾文件關鍵字
磁盤系統
-
df (disk free:report file system disk space usage) 顯示磁盤可用空間數目信息
目標是系統文件:檢查文件系統的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息
df [options] <test>
- -a all
- -k k byte
- -m M byte
- -h 自行顯示相關單位,人性化的單位,常用
-
du estimate file space usage
目標是用戶文件/目錄
- -a all 列出該目錄的子目錄的已用容量
- -k k byte
- -m M byte
- -h 自行顯示相關單位,人性化,常用
- -s 對于目錄:列出該目錄的總體積,而不列出每個各別的目錄占用容量;
-
fdisk 磁盤分區(manipulate disk partition table)
fdisk [options] device
- -l 輸出后面接的裝置所有的分區內容
這個命令的輸出內容有點專業,表示似懂非懂
-
mount 磁盤掛載 (mount a filesystem)
mount [options] <device> <dir>
fdisk -l # 查找接入設備的信息,主要指設備名稱 /dev/sdb1# Device Boot Start End Sectors Size Id Type# /dev/sdb1 63 4108607 4108545 2G e W95 FAT16 (LBA)mkdir -p /mnt/usb/tempmount /dev/sdb1 /mnt/usb/tempcd /mnt/usb/temp # 就可以看到u盤內容了,使用文件 -
umount 磁盤掛載
- -f force 強制卸載
-
fsck 磁盤檢查
mkfs [options] <device>
沒有怎么用到
-
mkfs make file system 格式化文件系統
mkfs [options] <device>
- -t <type> 指定格式化后的文件系統格式,例如’ext2’
安裝軟件包
-
rpm
-
yum Centos發行版本的包管理器,使用于yum源上已有的資源
- list <package> list packages based on package names
- install/reinstall -y <package_name> install/reinstall package
- search <package> list packages based on package names
- remove <package> 卸載指定的軟件包
- update/downgrade <package> 升/降級已經安裝的軟件包
-
apt Ubuntu發行版本的包管理,默認使用Ubuntu平臺的資源
- list <package> list packages based on package names
- search <package> list packages based on package names
- show <package> show package details
- install/reinstall -y <package> install/reinstall package
- remove <package> 卸載指定的軟件包
- upgrade <package> 升級已經安裝的軟件包
-
wget 插件/工具:文件下載器,需要使用yum/apt進行安裝
系統相關
-
ip how / manipulate(操縱) routing, network devices, interfaces and tunnels
ifconfig 默認centos7及Ubuntu都已經去掉了該工具,可以使用sudo yum/apt instatll -y ifconfig進行安裝
- addr/address 查看IP地址 protocol (IP or IPv6) address on a device.
- route 路由主機 routing table entry.
- link network device.
-
systectl 服務控制器 Control the systemd system and service manager
systemctl暫且可以看作是命令service的升級兼容版本
同時等效于直接啟動/etc/init.d/<service_name> [options]systemctl [options] <test> [status | start | stop | restart(restart service) | force-reload(reload config file)`]
systemctl start mysqld.servicesystemctl stop mysqld.servicesystemctl restart mysqld.service -
ps process status 進程狀態(類似 windows 的任務管理器) report a snapshot of the current processes.ps displays information about a selection of the active processes.
ps [options]
- -auxf To see every process on the system using BSD syntax
- -ef To see every process on the system using standard syntax
- -ejH To print a process tree
Notes:可以用于查看指定應用的進程是否已經啟動
-
kill send a signal to a process 發送一個信號給進程
kill 有多個signal,可以使用 kill -l查看,參數-9是SIGKILL殺掉進程
kill [options] <pid>
kill -9 -1 # Kill all processes you can kill. -
nohup 以后臺進程的方式啟動,避免控制臺阻塞式啟動
nohup [opitons]
nohup ./jemter.sh > run.log # 以后臺的方式運行./jemeter.sh 并把輸出信息保存到run.log文件如果沒有權限運行可以先確認腳本文件是否有x可執行權限,使用chmod +x <file>增加可執行屬性
如果用戶角色權限不夠請切換su,·sudo passwd root·修改root密碼 -
netstat 顯示協議統計信息和當前 TCP/IP 網絡連接 prints information about the Linux networking subsystem.
netstat [options]
- -a 顯示所有連接
- -n 以數字形式顯示地址和端口號
總結
以上是生活随笔為你收集整理的Linux基础命令必知必会的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 职教mooc计算机组装与维护课程网课答案
- 下一篇: 基于Wi-Fi指纹和深度神经网络的室内定