2018年10月27日 星期六

檔案管理File management

manual page
space : 向下翻一頁
[Page Down] : 向下翻一頁
[Page Up] : 向上翻一頁
[Home] : 到第一頁
[Page Down] : 到最後一頁
/string : 向下搜尋, n:next
?string : 向上搜尋, N:up next
q : quit

cnf
1. 在opensuse下面有時候想用一條命令但是發現沒有安裝,可以用cnf(command-not-found)找出來
    ex:
    cnf mplayer

pwd 
檢查當前的位置
 
tab 
自動補齊

cd
cd / 返回根目錄
cd ~ 用戶主目錄
cd . 當前目錄
cd ..返回到上一層目錄
cd – 返回前一個目錄

ls
使用權限 : 所有使用者
使用方式 : ls [-alrtAFR] [name...]
說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。
-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭爲"."的視爲隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出
範例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈後面 :
ls -ltr s*
將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin
列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF

mv
mv can do two jobs.
It can move files or directories

It can rename files or directories 
mv /tmp  /home/user/tmp (include sub subdirectories) 
使用權限:所有使用者
使用方式:
mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。
範例:
將檔案 aaa 更名爲 bbb :
mv aaa bbb
將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c

cp
使用權限:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。
-a 盡可能將檔案狀態、許可權等資料都照原狀予以複製。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-R copy in recursive
-f 若目的地已經有相同檔名的檔案存在,則在複製前先予以刪除再行複製。
範例:
將檔案 aaa 複製(已存在),並命名爲 bbb :
cp aaa bbb
將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished

rm
使用權限:所有使用者
使用方式:rm [options] name...
說明:刪除檔案及目錄。
-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設爲唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c
將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished

mkdir

rmdir
使用權限:於目前目錄有適當許可權的所有使用者
使用方式: rmdir [-p] dirName
說明: 刪除空的目錄。
參數: -p 是當子目錄被刪除後使它也成爲空目錄的話,則順便一併刪除。
範例:
將工作目錄下,名爲 AAA 的子目錄刪除 :
rmdir AAA
在工作目錄下的 BBB 目錄中,刪除名爲 Test 的子目錄。若 Test 刪除後,BBB 目錄成爲空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test

find
#find in / 
$ find /  -name  "filename"

#僅僅在當前文件系統中搜索
$ find . -name filename

# -iname:忽略大小寫

#find without searching network or mounted filesystems
$ find -name "filename" -xdev

# 正則表達式查找.txt和.cpp文件,注意特殊符號用`\`轉義
# -iregex:忽略大小寫
find . -regex ".*\.\(txt\|cpp\)$"
find . -iregex ".*\.\(txt\|cpp\)$"

# 使用`!`進行否定,查找非.txt或.cpp的所有文件
find . ! -regex ".*\.\(txt\|cpp\)$"

# 查找指定深度和指定類型:f為文件,d為目錄,l為符號連接
find . -maxdepth 3 -type f

# 查找後進行指定操作,`-ok`逐文件提示是否進行操作,`-exec`無提示,注意結尾的`;`
find . -type f -name "*.txt" -ok cat {} \;
find . -type f -name "*.txt" -exec cat {} \;

# 排除指定文件夾
find / -path "/home" -prune -o -path "/proc" -prune -o  -name "*.txt"

使用說明 :
將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、許可權等不同資訊的組合,只有完全相符的才會被列出來。
find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份爲 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 爲預設 expression
expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。
-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其他檔案系統中的檔案
-amin n : 在過去 n 分鐘內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鐘內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案
你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
範例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name "*.c"
將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f
將目前目錄及其子目錄下所有最近 20 分鐘內更新過的檔案列出
# find . -ctime -20


ln
使用權限 : 所有使用者
使用方式 : ln [options] source dist,其中 option 的格式爲 :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視爲檔案的別名,而連結又可分爲兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是産生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是産生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。
不論是硬連結或軟鏈結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。
-f : 鏈結時先將與 dist 同檔名的檔案刪除-d : 允許系統管理者硬鏈結自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,將 dist 視爲一般的檔案-s : 進行軟鏈結(symbolic link)-v : 在連結之前顯示其檔名-b : 將在鏈結時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 yy 産生一個 symbolic link : zz
ln -s yy zz
將檔案 yy 産生一個 hard link : zz
ln yy xx


cat
使用權限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)
參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-v 或 --show-nonprinting
範例:
cat -n textfile1 > textfile2 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裏
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3


Tab
The Tab key lets you auto-complete commands and file names and double-tapping lets you list all of the objects that have a similar name. This works with unambinguous file and  command names For example, 'fir' gives you 'firefox' because no other commands begin with 'fir'. you get multiple hits, continue typing to narrow the selection then hit Tab again.

grep
search words in files in directory /dir
grep -rnwi /dir  -e 'keyword'


Tar
參數
-x 解開 tar 檔案
-c 打包成 tar 檔案
-z 加入壓縮 / 解壓
-v 顯示運作過程資訊
-f 指定子目錄與檔案
tar zcvf tarfile.tar.gz SubD/
將子目錄的資料加壓到檔案,並在螢光幕上列出作業情況,一般用戶會以[此作備份
tar zxvf tarfile.tar.gz
將檔案解壓到已定的子目錄,並在螢光幕上列出作業情況
tar ztf tarfile.tar.gz
tar xjf ./file.tar.bz2
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" |
tar xzf -


zip
壓縮檔案
zip myfiles *.txt
unzip
解壓檔案
unzip myfiles
檔案管理
指令
解說、語法及例子

xargs
 find . -name "*.c" | xargs rm
    search all .c files
    xargs all files
    rm all files