對liunx而言 一切皆文件 既然是文件 就免不了各種文件操作 以下就是常用的文件操作命令
ls
ls 命令 用來查看文件 liunx上長用的ll 實質上是ls -l的的別名
格式 ls [參數] [文件]
參數
ls -a列出目錄下的所有文件,包括以.開頭的隱含文件(常見的如.htaccess .git .svn文件)
ls -b 把文件名中不可輸出的字符用反斜槓加字符編號的形式列出(友好的顯示一些文件名非當前編碼下的文件,比如子啊asc下中文名的文件)
ls -lh(或 ll -h) 顯示文件的大小 單位b()
ls -t 按時間排序(通常查看上傳路徑文件很好用)
其它參數不常用 在此不做過多描述 想了解的可以自行搜索
mv
mv命令是move的縮寫,可以用來移動文件或者將文件改名
格式 mv [參數] 源文件 目標文件
參數
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,纔會更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後。
例1 把a.conf重命名爲b.conf
例2 把a文件夾移動到 /home下
mv a.conf /home/b.conf
cp
cp命令用來複制文件或者目錄
格式 cp [參數] 源文件 目標文件
參數
-a 爲每個已存在的目標文件創建備份
-b 在遞歸處理是複製特殊文件內容
-f, --force 如果目標文件無法打開則將其移除並重試(當 -n 選項存在時則不需再選此項)
-H 跟隨源文件中的命令行符號鏈接
-l, --link 鏈接文件而不復制
-L, --dereference 總是跟隨符號鏈接-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, --no-dereference 不跟隨源文件中的符號鏈接
-p 等於--preserve=模式,所有權,時間戳 --preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果可能保持附加屬性:環境、鏈接、xattr 等
-R, -r, --recursive 複製目錄及目錄內的所有項目
例1 備份a.conf文件
cp a.conf a.conf.bak
例2 拷貝文件夾a到 /home目錄下
cp -r a/ /home/a
vim
vim用來文件內容操作
格式 vim [filename]
編輯界面操作按鍵
gg 返回文件頂部
shift+g 到文件底部
i 編輯
:q 退出
:wq 保存並退出
:q! 強制退出 一般用於放棄修改文件
:wq! 強制保存並退出
/ 查詢
:set nu 顯示行號
:數字 跳轉到指定行號
awk
與sed和grep很相似,awk是一種樣式掃描與處理工具
格式 awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
awk命令分兩部分 {匹配模式操作} {filename} 基本格式 awk "匹配部分" "操作部分" 文件 其中匹配模式或者操作有一個即可 匹配模式支持正則 正則此處不介紹 只介紹簡單用法
例1 讀取apache服務器access_log 中的獨立ip數
awk ‘{print $1}’ access_log | uniq -c 從access.log中讀取第一個字斷 並去重複 $1是讀取文本文件第一個字斷 如果文件分隔符不是空格 可以使用-F指定分隔符 $0讀取整行
例2 取出/etc/password 中的所有用戶
awk -F ':' '{print $1}' etc/password -F指定分隔符爲:號
awk的用法還有很多 不僅僅上述 由於篇幅問題 在此不做過多講解 望見諒
tail
tail 命令從指定點開始將文件寫到標準輸出
格式 tail [必要參數] [選擇參數] [文件]
參數
-f 循環讀取
-n 指定顯示的行數
-q 不顯示處理信息
-v 顯示詳細的處理信息
-c<數目> 顯示的字節數
--pid=PID 與-f合用,表示在進程ID,PID死掉之後結束.
-q, --quiet, --silent 從不輸出給出文件名的首部
-s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒
例1 讀取日誌文件最後100行
tail -n 100 access.log
例2 監控日誌 日誌若有內容更新則直接輸出
tail -f access.log
例3 從第五行開始顯示文件內容
tail -n +5 log2014.log
sort
sort命令是幫我們依據不同的數據類型進行排序,其語法及常用參數格式:
格式 sort [-bcfMnrtk][源文件][-o 輸出文件]
補充說明:sort可針對文本文件的內容,以行爲單位來排序。
參數
-b 忽略每行前面開始出的空格字符
-c 檢查文件是否已經按照順序排序
-f 排序時,忽略大小寫字母
-M 將前面3個字母依照月份的縮寫進行排序
-n 依照數值的大小排序
-o<輸出文件> 將排序後的結果存入指定的文件
-r 以相反的順序來排序
-t<分隔字符> 指定排序時所用的欄位分隔字符
-k 選擇以哪個區間進行排序
-u 去重
例1 將a.txt 進行排序 sort將文件的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出
sort a.txt
使用-r則倒序
例2 將b.txt去重
sort -u b.txt
sed
與awk類似 sed功能更爲強大 可以做 匹配替換 輸出 插入 等等 兩者都可以基於行來對文本文件進行處理 但sed對列的操作稍微差點 大部分人只學會了個sed -s 講解sed的全部用法需要大量篇幅 這裏向大家推薦一本書 <<awk與sed>>
格式 sed [-nefri] ‘command’ 輸入文本
參數
a 新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d 刪除,因爲是刪除啊,所以 d 後面通常不接任何咚咚;
i 插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p 列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作~
s 取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!
n 取消自動打印模式空間
例子
替換一行中的某部分
格式:sed 's/要替換的字符串/新的字符串/g' (要替換的字符串可以用正則表達式)
sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替換ruby爲bird