基礎命令:這裏的文件可以是單個文件也可以是文件夾也可以是軟連接類文件,一切皆文件
$
環境變量, @
主機, ~
用戶, |
管道符(將一個命令的輸出定向到另一個命令的輸入;也就說前一個命令處理後的數據會作爲數據源傳遞給下一命令繼續進行處理), ;
連續(使用;保證命令的連續)
>
輸出重定向, <
輸入重定向
cat /etc/password | sort | less # 獲取password的內容,然後排除,再次使用less查看
data ; troff -me verylargedoc | lpr ; date # 記錄開始時間,然後開始整理一個large doc,完成後再次記錄時間,這樣就記錄了整理文檔的耗時
如果有問題請使用
man <command>
,直接有效,有問題找助手;
以下內容中<source>
是指源文件或者源路徑,<dest>
目標文件或者路徑
-
man <command>
manual 手冊:search for files in a directory hierarchy -
pwd
print working directory 打印當前路徑 -
cd
change directory 切換路徑 -
date
date 打印當前系統時間 -
history <n>
打印歷史限制n個最近命令,默認全部 -
type <command>
顯示命令的位置
文件基本操作
-
ls
list 列出文件列表ls [options] <dest>
-a
all 所有文件包括隱藏文件-l
long 長列表即詳情 等同於ll
ls # 默認當前路徑 ls -l /usr/local/bin
-
cp
copy 複製/並重命名文件cp [options] <source> <dest>
-a
all 全部信息拷貝,連同內鏈接等一同拷貝 等同於-dpr
-r
recursive 遞歸複製,如果有文件夾會遞歸複製文件夾中的所有文件-f
force 強制拷貝,如果有相同的文件名強制覆蓋-i
interactive 交互,有需要提示的給出彈窗
cp -rf /usr/local/thrid/doc/ /home/doc
-
mv
move 移動文件(可以用於重命名文件功能)mv [options] <source> <desc>
-f
force 強制拷貝,如果有相同的文件名強制覆蓋-n
no-blobber 不覆蓋已經存在的文件-i
interactive 交互,有需要提示的給出彈窗
mv -rf /usr/src/log /home/log mv /test/php.log /test/coll.log #如果目標路徑是與原路徑相同會執行重命名
-
rm
remove 移除文件(rm
是不能夠直接移除非空的文件夾)rm [options] <desc>
-r
recursive 遞歸移除,如果有文件件會遞歸複製文件件中的所有文件-f
force 強制拷貝,如果有相同的文件名強制覆蓋-i
interactive 交互,每移除一個文件時都會提示給出彈窗
-
mkdir
make directory 創建路徑mkdir [options] <desc>
-m
mode 創建路徑的同時設置其權限屬性-p
parrents 可以創建目錄路徑的父類路徑
mkdir -m 711 -pv /usr/local/test/1/2/3/4/5/6/7
-
rmdir
remove directory 移除路徑mkdir [options] <desc>
-p
parents 連同上級的空目錄一併刪除(僅限於空的上級目錄)
rmdir -pv /usr/local/test/1/2/3/4/5/6/7
-
touch
touch 創建文件(修改文件的屬性)touch [options] <dest>
-a
access time 修改文件的訪問時間-m
modification time 修改文件的修改時間
touch /usr/local/test.log
-
ln
link 創建一個連接(在指定路徑下創建目標文件的快捷方式)ln [options] <source> <dest-ln>
-f
force 如果已經存在目標連接名稱則強制移除後在創建-i
interactive 交互,有需要提示的給出彈窗-s
soft 創建一個軟連接
ln -is /usr/zk /usr/local/bin/zike
-
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 過濾存檔即:壓縮和解壓
tar -zcvf archive.tar 1.txt 2.log 3.zip files/4.md # 打包並壓縮1,2,3/4等文件到archive.tar文件 tar -tvf archive.tar # 查看.tar文件內容 tar -zxvf archive.tar # 解壓文件包
-
gzip
壓縮/解壓縮文件,會生成或者解壓.gzip
文件通常用的比較少,都是直接使用
tar -z
直接使用了-k
keep 不刪除原有文件,默認完成壓縮後會刪除原有文件-d
解壓縮文件
gzip archive.tar archive.tar.gz # 壓縮archive.tar 到archive.tar.gz du -h archive.tar.gz # 查看壓縮包信息 gzip -d archive.tar.tz # 解壓archive.tar.gz 到 archive.tar
-
lrzsz
插件/工具:文件傳輸器,需要使用yum
/apt
進行安裝rzsz
僅支持單文件處理的傳輸rz
上傳sz
下載
rz # 回車後會彈出計算機文件選擇彈窗,進行文件選擇 sz authorized_keys # 回車後會彈出系統文件保存選擇彈窗
注意:xshell支持,putty是不支持的
如果是ssh協議可以使用
scp
,OpenSSH secure file copyscp [-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 d:/res/a.md [email protected]:~/home/ # 本地上傳到linux scp -r d:/res/ 192.168.101.13:~/home/res/ # 上傳文件夾,然後確認用戶名及密碼 scp [email protected]:/home/res/a.md d:/lin # 由linux下載到本地 scp -r www.baidu.com:/home/ d:/ln/ # 也可以使用域名
注意
scp
只能傳輸regular
文件,如果是文件夾的話需要使用-r
參數
-
zip/unzip
插件/工具:解壓縮文件,需要使用yum
/apt
進行安裝-r
recurse 遞歸壓縮文件夾-d
delete 刪除 zip entry
zip -r folder.zip folder 1.txt 2.txt # 壓縮文件到zip du -h folder.zip # 查看壓縮包信息 unzip folder.zip -d folder # 解壓zip文件
比較之下壓縮率:
zip
不及gzip
-
find
find 命令用來在指定目錄下查找文件,更多使用方法find path -option [ -print ] [ -exec -ok command ] {} \;
-amin <n>
過去 n 分鐘被讀取的文件-cnewer file
過去 n 分鐘創建的文件-atime <n>
過去 n 天內被讀取的文件-cmin <n>
過去 n 分鐘內被修改的文件ctime <n>
過去 n 天內被修改的文件-empty
空文件-name/inamne <str>
文件名符合 str 的文件(iname 忽略大小寫)-type
過濾指定類型的文件:f
一般文件,d
文件夾文件size
過濾文件大小
find . -name "*.log" # find 當前目錄下以.log結尾的文件 find /usr/ -type f -cmin 10 find / -size +500M
總結: 對文件操作時,一般
-r
是遞歸完成指令,-f
是強制完成指令,-i
是由需要時給出提示 ,-v
顯示執行過程
文本文件基本讀寫查
-
cat
Concatenate file 輸出文本內容到控制檯比較適合打開小型文本文件,因爲它是一次性讀取全部內容;如果內容比較大的文件建議聯合
grep
一起使用cat [options] <dest>
-n
帶有行號打印
cat -n /usr/lacal/log/temp.log | grep -C error
-
tac
功能和作用與cat
相同,只不過是文件的讀取方向剛好相反 -
more
一次性讀取全部文本,可以進入閱讀模式,支持內容內容查找more [options] <dest>
回車鍵
移動下一行
空格鍵
移動下一頁
b
向上翻一頁
u
向上翻半頁
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
可以省略)
head -20 /usr/local/requeset.log
-
tail
輸出文件尾部指定行數tail [options] <dest>
-c
bytes 指定的字節數-l
lines 指定的行數(沒有指定-c
可以省略)-f
follow 監聽文件,常用於監聽日誌,抓取指定日誌,進入等待模式-F
follow retry
tail -F /usr/local/src/www/login.log
三劍客(grep,sec,awk)
-
grep
查找文件裏符合條件的字符串grep
可以直接查文檔,也可以接收流grep [options] <str> <dest>
-c
count 計算符合樣式的行數-C <n>
除了顯示符合樣式的那一行之外,並顯示該行之前後各n行的內容-i
ignore 忽略字符串匹配大小寫-r
使用遞歸的方式查文件夾
-
sed
-
awk
磁盤系統
-
df
(disk free:report file system disk space usage) 顯示磁盤可用空間數目信息目標是系統文件:檢查文件系統的磁盤空間佔用情況。可以利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息
df [options] <test>
-a
all-k
k byte-m
M byte-h
自行顯示相關單位,人性化的單位,常用
df -h
-
du
estimate file space usage目標是用戶文件/目錄
-a
all 列出該目錄的子目錄的已用容量-k
k byte-m
M byte-h
自行顯示相關單位,人性化,常用-s
對於目錄:列出該目錄的總體積,而不列出每個各別的目錄佔用容量;
du -hs /usr/local/log # 查看 log目錄總體積
-
fdisk
磁盤分區(manipulate disk partition table)fdisk [options] device
-l
輸出後面接的裝置所有的分區內容
fdisk -l /dev/sda1 # 查看指定設備的磁盤及分區信息
這個命令的輸出內容有點專業,表示似懂非懂
-
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/temp mount /dev/sdb1 /mnt/usb/temp cd /mnt/usb/temp # 就可以看到u盤內容了,使用文件
-
umount
磁盤掛載-f
force 強制卸載
umount /dev/sdb1
-
fsck
磁盤檢查mkfs [options] <device>
沒有怎麼用到
-
mkfs
make file system 格式化文件系統mkfs [options] <device>
-t <type>
指定格式化後的文件系統格式,例如’ext2’
mkfs -t ext3 /dev/sdc
安裝軟件包
-
yum
Centos發行版本的包管理器,使用於yum源
上已有的資源list <package>
list packages based on package namesinstall/reinstall -y <package_name>
install/reinstall packagesearch <package>
list packages based on package namesremove <package>
卸載指定的軟件包update/downgrade <package>
升/降級已經安裝的軟件包
-
apt
Ubuntu發行版本的包管理,默認使用Ubuntu平臺的資源list <package>
list packages based on package namessearch <package>
list packages based on package namesshow <package>
show package detailsinstall/reinstall -y <package>
install/reinstall packageremove <package>
卸載指定的軟件包upgrade <package>
升級已經安裝的軟件包
-
wget
插件/工具:文件下載器,需要使用yum
/apt
進行安裝 -
systectl
服務控制器systemctl start mysqld.service systemctl stop mysqld.service systemctl restart mysqld.service
-
ps
process status 進程狀態(類似 windows 的任務管理器)-auxf
-ef