一聊浅、文件基本操作
1.批量重命名
- rename ‘s/.txt/.c/’ *.txt
- rename ‘y/a-z/A-Z/’ .c
sed命令?
對于所有*.txt文件低匙,用第一個參數(shù)提供的正則表達式將.txt替換為.c
2.查看文件內容:
- cat -n
- tac ????
- nl = cat -n
- -b a\b
- -n ln/rn/rz
三者區(qū)別
- mort /less filename
- enter\space
- h\q
- tail
-n 10
-f 不停讀取文件最后某部分內容并顯示顽冶,用于動態(tài)查看日志。
查看文件類型:file 强重,如file test.txt
包括編碼格式
二、環(huán)境變量
3.環(huán)境變量與文件查找
變量類型:
- 當前shell進程的私有【用戶自定義變量】 如temp=abc
- shell內建變量
- 環(huán)境變量:可直接定義佃声,也可從用戶自定義變量導入:export temp倘要。常用大寫表示
- 子進程可以繼承父進程的環(huán)境變量
- 關機、關shell會丟失,除非將環(huán)境變量設置為永久生效夭问。
- 變量按生命周期分類:
- 永久:需要修改配置文件曹铃,變量永久生效;
- /etc/bashrc 存放shell變量
- /etc/profile 存放環(huán)境變量
-.profile:
- 臨時:使用 export 命令行聲明即可铛只,變量在關閉 shell 時失效。
- 兩個重要文件:
- /etc/bashrc 存放shell變量
- /etc/profile 存放環(huán)境變量
-.profile:只對當前用戶永久生效直撤。而寫在 /etc/profile 里面的是對所有用戶永久生效蜕着,所以如果想要添加一個永久生效的環(huán)境變量,只需要打開 /etc/profile承匣,在最后加上你想添加的環(huán)境變量就好啦。
相關命令:
set
env
export
如何查看某幾個文件區(qū)別嘉抒?/如何查看三個變量的區(qū)別:
export | sort > export.txt
env | sort >env.txt
set | sort >set.txt
vim diff env.txt export.txt set.txt
4.命令的查找路徑與順序
shell中執(zhí)行一個命令袍暴,會先去PATH變量中查找,如能查到到政模,則執(zhí)行。
PATH環(huán)境變量:存儲要執(zhí)行的文件所在路徑/目錄
如:在某個目錄下創(chuàng)建abc.sh腳本耗式,只有在該目錄下可運行趁猴,若想在任意地方運行,需要配置PATH變量儡司,添加該路徑。
PATH=$PATH:/home/shiyanlou/mybin
但是這樣存在問題:一旦關閉shell让蕾,該環(huán)境變量會失效。
解決方法:
讓添加的環(huán)境變量全局有效探孝,即永久--修改配置文件profile
-
每次shell啟動,自動執(zhí)行配置
- 用戶目錄下會有個shell啟動時的自動執(zhí)行文件:zsh是.zshrc缸濒,bash是 .bashrc把環(huán)境變量的配置添加到.zshrc中: echo "PATH=$PATH:/home/shiyanlou/bin" >> .zshrc
注意:> 將標準輸出以覆蓋方式重定向到一個文件
>> 追加方式
5. 修改粱腻、刪除環(huán)境變量
變量刪除:
unset temp 刪除環(huán)境變量temp
6.環(huán)境變量生效
- source .zshrc
- . ./.zshrc 點為 source縮寫绍些,此時后面的文件必須指定完整的絕對或相對路徑名,source 則不需要柬批。
7.搜索文件
- whereis 簡單快速
只能搜索二進制文件(-b),man 幫助文件(-m)和源代碼文件(-s) - locate 快而全
locate /home/my 列出home及子目錄中所有以my開頭文件
locate /home/usr/share/*.jpg share下所有jpg文件嗅虏,*要加\轉義- -c僅計數(shù) -i忽略大小寫 -m man文件 -b二進制文件 -s源代碼文件
通過“ /var/lib/mlocate/mlocate.db ”數(shù)據庫查找上沐,不過這個數(shù)據庫也不是實時更新的,系統(tǒng)會使用定時任務每天自動執(zhí)行 updatedb 命令更新一次参咙,所以有時候你剛添加的文件,它可能會找不到蜀细,需要手動執(zhí)行一次 updatedb 命令
- which 小而精
which python戈盈,常用來查看是否安裝某軟件谆刨,shell內建命令。 -
find 精而細
sudo find /etc/ -name interfaces 痊夭,去 /etc/ 目錄下面 ,搜索名字叫做 interfaces 的文件或者目錄(模糊匹配需要用正則表達式)
基本命令格式為 find [path] [option] [action]
$ find ~ -newer /home/shiyanlou/Code
列出用戶家目錄下比 Code 文件夾新的文件
實驗:
chown :更改文件所屬用戶/群組
chmod rwx 讀寫執(zhí)行虹曙,依次:所有者、群組酝碳、其他用戶
8.打包、壓縮
常見格式:
文件后綴名 說明
*.zip zip 程序打包壓縮的文件
*.rar rar 程序壓縮的文件
*.7z 7zip 程序壓縮的文件
*.tar tar 程序打包呛讲,未壓縮的文件
*.gz gzip 程序(GNU zip)壓縮的文件
*.xz xz 程序壓縮的文件
*.bz2 bzip2 程序壓縮的文件
*.tar.gz tar 打包返奉,gzip 程序壓縮的文件
*.tar.xz tar 打包,xz 程序壓縮的文件
*tar.bz2 tar 打包芽偏,bzip2 程序壓縮的文件
*.tar.7z tar 打包,7z 程序壓縮的文件
8.1 zip
- 打包
zip -r -q -[1-9] -e -l -o test.zip /home/shiyanlou
zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip- -r 遞歸打包关面,如不寫十厢,則目錄下全為空文件夾,子目錄下的文件無法被打包進去
- -q 安靜模式不向屏幕輸出打包信息
- -o 表示輸出文件蛮放,需在其后緊跟打包輸出文件名
- -9體積最小時間最久,-1體積最大時間最短瞻想。
- -e 加密
-l 將 linux中的LF 轉換為win中的 CR+LF娩嚼,防止不兼容 - -x 排除之前創(chuàng)建的 zip 文件,否則又會被打包進這一次的壓縮文件中岳悟,注意:這里只能使用絕對路徑,否則不起作用呵俏。
關于 zip 命令滔灶,因為 Windows 系統(tǒng)與 Linux/Unix 在文本文件格式上的一些兼容問題,比如換行符(為不可見字符)录平,在 Windows 為 CR+LF(Carriage-Return+Line-Feed:回車加換行)缀皱,而在 Linux/Unix 上為 LF(換行)动猬,所以如果在不加處理的情況下,在 Linux 上編輯的文本争占,在 Windows 系統(tǒng)上打開可能看起來是沒有換行的序目。如果你想讓你在 Linux 創(chuàng)建的 zip 壓縮文件在 Windows 上解壓后沒有任何問題,那么你還需要對命令做一些修改:
du -h test.zip 查看文件大小
- h猿涨, --human-readable(顧名思義,你可以試試不加的情況)
- d澡绩, --max-depth(所查看文件的深度)
file test.zip
- 解壓
unzip -q [-O GBK] shiyanlou.zip -d ziptest- -O GBK 指定編碼類型
- -d指定目錄
使用 unzip 解壓文件時我們同樣應該注意兼容問題俺附,不過這里我們關心的不再是上面的問題,而是中文編碼的問題事镣,通常 Windows 系統(tǒng)上面創(chuàng)建的壓縮文件,如果有有包含中文的文檔或以中文作為文件名的文件時默認會采用 GBK 或其它編碼氛琢,而 Linux 上面默認使用的是 UTF-8 編碼随闪,如果不加任何處理,直接解壓的話可能會出現(xiàn)中文亂碼的問題(有時候它會自動幫你處理)铐伴,為了解決這個問題,我們可以在解壓時指定編碼類型挽荡。
- 查看
unzip -l shiyanlou.zip
-r 指定目錄
-d 指定路徑
8.2 rar
rar shiyanlou.rar . 創(chuàng)建壓縮包
rar d shiyanlou.rar .zshrc 從指定壓縮包刪除某文件
rar l shiyanlou.rar 查看不解壓文件
$ unrar x shiyanlou.rar 全路徑解壓
unrar e shiyanlou.rar tmp/
8.3
tar -cvf shiyanlou.tar shiyanlou/----需要壓縮的文件夾
- c 創(chuàng)建一個tar包
- f 指定文件名于微,其后要緊跟文件名
- v 以可視的方式輸出打包的文件
tar -xf shiyanlou.tar -C tardir 把包解壓到tardir文件夾中 - x 解壓
- C 指定目錄
tar -tf shi.tar 只查看不解壓
創(chuàng)建不同壓縮格式的文件:
tar -czf shiyanlou.tar.gz~
- xzf 參數(shù)不區(qū)分先后
壓縮文件格式 參數(shù)
*.tar.gz -z
*.tar.xz -J
*tar.bz2 -j
tar 排除多個目錄
- 我們以tomcat 為例青自,打包的時候我們要排除 tomcat/logs 目錄驱证,命令如下:
tar -zcvf tomcat.tar.gz --exclude=tomcat/logs tomcat
- 如果要排除多個目錄,增加 --exclude 即可抹锄,如下命令排除logs和libs兩個目錄及文件xiaoshan.txt:
tar -zcvf tomcat.tar.gz --exclude=tomcat/logs --exclude=tomcat/libs --exclude=tomcat/xiaoshan.txt tomcat
常用命令:
zip:
打包 :zip something.zip something (目錄請加 -r 參數(shù))
解包:unzip something
指定路徑:-d 參數(shù)
tar:
打包:tar -zcvf something.tar something
解包:tar -zxvf something.tar(應該去掉z)
ps: z參數(shù)--解壓gzip格式的伙单。
指定路徑:-C 參數(shù)
三、基本操作命令
1吻育、cd
(1)命令
ls [選項] [目錄名]
(2)常用參數(shù)
參數(shù)描述
-a :–all 列出目錄下的所有文件,包括以 . 開頭的隱含文件
-l : 除了文件名之外摊趾,還將文件的權限游两、所有者、文件大小等信息詳細列出來
-d :–directory 將目錄象文件一樣顯示贱案,而不是顯示其下的文件
-h :–human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
-t :以文件修改時間排序
備注:
列出當前目錄中所有以d開頭的文件目錄的詳細內容: ls -d d*
2、cd
進入系統(tǒng)根目錄 : cd /
進入當前目錄的父目錄:cd ..
進入當前用戶的跟目錄 : cd ~
進入上次目錄所在目錄: cd -
3铸董、mkdir
(1)命令格式
mkdir [選項] 目錄
(2)常用參數(shù)
參數(shù) 描述
-m --mode=模式 設定權限<模式>
-p --parents 可以是一個路徑名稱肴沫。若路徑中的某些目錄尚不存在,加上此選項后,系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
-v --verbose 每次創(chuàng)建新目錄都顯示信息
ps:連續(xù)創(chuàng)建多個文件夾:
mkdir -vp {test/, test2/, test3/{tt1/, tt2/ }} 同時又在test3下創(chuàng)建了兩個子目錄
4、mv 移動/重命名
(1)命令格式
mv [選項] 源文件或目錄 目標文件或目錄
當目的文件/目錄不存在是才為重命名颤芬;
(2)常用參數(shù)
參數(shù) 描述
-b --back 若需覆蓋文件,則覆蓋前先行備份
-f --force 如果目標文件已經存在汰具,不會詢問而直接覆蓋
-i --interactive 若目標文件已經存在時菱魔,就會詢問是否覆蓋
-u --update 若目標文件已經存在,且源文件比較新澜倦,才會更新
-t --target 該選項適用于移動多個源文件到一個目錄的情況杰妓,此時目標目錄在前碘勉,源文件在后
5、cp
(1)命令格式
cp [選項] 源文件/目錄 目的文件/目錄
(2)常用參數(shù)
參數(shù) 描述
-t --target-directory 指定目標目錄
-i --interactive 覆蓋前詢問(使前面的 -n 選項失效)
-n --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-s --symbolic-link 對源文件建立符號鏈接倍宾,而非復制文件
-f --force 強行復制文件或目錄胜嗓, 不論目的文件或目錄是否已經存在
-u --update 使用這項參數(shù)之后,只會在源文件的修改時間較目的文件更新時兼蕊,或是對應的目的文件并不存在,才復制文件
例:將test1下最近更新的文件復制到test2下孙技,覆蓋前詢問:
cp -iu test1/* test2/
6牵啦、cat
(1)命令格式
cat [選項] [文件]
(2)常用參數(shù)
參數(shù) 描述
-A --show-all 等價于 -vET
-b --number-nonblank 對非空輸出行編號
-e 等價于 -vE
-E --show-ends 在每行結束處顯示 $
-n --number 對輸出的所有行編號,由 1 開始對所有輸出的行數(shù)編號
-s --squeeze-blank 有連續(xù)兩行以上的空白行,就代換為一行的空白行
-t 與 -vT 等價
-T --show-tabs 將跳格字符顯示為 ^I
-u (被忽略)
-v --show-nonprinting 使用 ^ 和 M- 引用哈雏,除了 LFD 和 TAB 之外
ps:
cat總是與重定向符搭配使用 >;
tac 與cat相反,從最后一行開始顯示裳瘪。
7、nl
將文件加行號顯示黄伊,與cat -n的區(qū)別是它可以有更多的顯示方法派殷;
(1)命令格式
nl [選項] [文件]
(2)常用參數(shù)
參數(shù) 描述
-b 指定行號指定的方式,主要有兩種:
-b a 表示不論是否為空行毡惜,也同樣列出行號(類似 cat -n)
-b t 如果有空行,空的那一行不要列出行號(默認值)
-n 列出行號表示的方法扶叉,主要有三種:
-n ln 行號在屏幕的最左方顯示
-n rn 行號在自己欄位的最右方顯示,且不加 0
-n rz 行號在自己欄位的最右方顯示辜梳,且加 0
-w 行號欄位的占用的位數(shù)