alias rm='mv -t /app/'
tree? ? 顯示目錄樹
-? d? ? 只顯示目錄
-? L? ? 層數
mkdir? ? 創建目錄
-p? ? 自動創建所需的個目錄
-v? ? 顯示詳細信息
-m? ? 創建目錄是直接指定權限
rmdir? ? 刪除空目錄
-p? ? 遞歸的刪除父空目錄
-v? ? 顯示詳細信息
rm? -r? ? 遞歸刪除目錄樹
df? ? 用于顯示磁盤分區上的可使用的磁盤空間
-h? ? 以KB以上的單位來顯示
-a? ? 查看全部文件系統
-T? ? 文件系統類型
-i? ? 列出inode信息而不是塊使用情況
watch? ? 定期執行程序,顯示全屏輸出
-n? ? 指定更新間隔
ln目標鏈接名字文件之間建立鏈接(硬鏈接)
-s? ? 使符號鏈接,而不是硬鏈接(軟鏈接)
stat選項文件名顯示文件或文件系統狀態
shred選項文件名覆蓋文件以隱藏其內容,并可選地刪除它
-n? ? 覆蓋次數,默認3次
-u? ? 覆蓋后刪除
-v? ? 查看過程
-z? ? 用零添加最后的覆蓋來隱藏粉碎
例:shred? -zvun? 10
readlink? ? ? 查看鏈接文件路徑
file文件名確定文件類型 (看首部信息,不關心文件后綴)
-b? ? 不顯示文件名
-f? ? 把需要處理的東西存在一個文件,讀取文件的內容,適合批處理
-F? ? 使用指定分隔符號替換輸出文件名后默認的”:”分隔符
-L? ? 查看對應軟鏈接對應文件的文件類型
dd? if=/dev/zero of =/boot/bigfile bs=1M count=500? 可控的添加文件內容
lsof? |? grep deleted? 查看哪些文件已刪除但未釋放空間
killall進程關掉進程
ps? aux|grep? vim? ? 查看進程
ls? -il? ? 顯示節點編號
echo? f{1..50000} | xargs touch? ? 創建大批量文件
watch? -n 1 -df -i
通常rm刪除大文件未必會立即釋放空間,所以建議先使用? >? 清空文件內容,在使用rm 刪除文件。
Centos 6使用的文件系統 ext4? Centos7使用的文件系統 xfs
文件分為兩部分元數據(文件的屬性 )和用戶數據(即文件數據塊,數據塊是記錄文件真是內容的地方)。元數據中的inode號才是文件的唯一標識而非文件名,文件名(存在于數據塊中)只是方便人的使用和記憶。
數據的位置:
直接指針(有12個,0-11)直接指向數據塊(4K),數據低于48K可以通過直接指針直接找到
間接指針:直接指向的是指針塊(4K),消耗4個字節來描述數據塊的位置
節點編號會被重復利用
centos6 根的節點編號是 2? (掛載點都是為2)
centos7的節點編號是64
每個分區分配自己的節點編號,不同分區節點編號可以一樣,同一個文件不能擁有不同的節點編號
文件名不在節點表里,存在于文件夾的文件內容中(數據塊中)
鏈接數:一個節點編號對應的有幾個文件名
刪除文件只是刪除節點信息,并沒有把數據刪除
硬鏈接:可以存放在同一目錄上,也可以在不同目錄上(不允許跨分區創建)
軟鏈接大小是鏈接路徑的大小
軟鏈接和硬鏈接區別:
1.本質不同:硬鏈接是同一個文件。軟鏈接不是同一個文件
2.刪除:刪除一個硬鏈接的文件并不影響有相同inode的文件使用。刪除軟鏈接的原始文件則軟鏈接失效
3.創建:鏈接創建完成連接數會增加。軟鏈接則不會
4.跨分區:硬鏈接不可以跨分區創建。軟鏈接可以
5.目錄:硬鏈接不 可以創建目錄。軟鏈接可以
軟鏈接:源文件的路徑是相對路徑,一定是相對于軟鏈接文件的路徑,而非相對于當前工作目錄的路徑
程序:指令+數據
打開的文件都有一個fd: file descriptor (文件描述符)
I/O重定向:改變默認
STDOUT和STDERR可以被重定向到文件
命令 操作符號 文件名
支持的操作符號包括:
>? ? ? 把STDOUT重定向到文件
2>? ? ? 把STDERR重定向到文件
&>? ? ? 把所有輸出重定向到文件
>? ? ? 文件內容會被覆蓋
set –C 禁止將內容覆蓋已有文件,但可追加
>| file 強制覆蓋
set +C 允許覆蓋
>> 原有內容基礎上,追加內容
<? ? 標準輸入重定向
/dev/null? ? 垃圾箱
ls /misc/
systemctl enable autofs ; systemctl start auttofs? ? ? 讓auttofs可用,auttofs可用了 /misc/cd? 才可用
ls? -l? /proc/進程號/fd/
():合并多個程序的STDOUT
例如:
(ls;pwd;hostname) >> f3.log? 多條命令同時重定向一個文件中
(errcmd;hostname) > /app/true.log? 2> /app/error.log? ? 正確的信息和錯誤信息分開重定向
(errcmd;hostname) > /app/true.log? 2>&1? ? 等同于? ? &>? ? 等同于下面
((errcmd;hostname) 2>&1) > /app/true.log? ? 錯的變成對的,在重定向到文件
(echo error 1>&2) 2> /dev/nul? ? 對的變成錯的,錯的重定向到 垃圾箱
linux和windows的文本格式不一樣,linux一個符號來標識換行,Windows兩個符號來標識 (0d? 0a)
tr? ? 轉換和刪除字符
-c? ? 取補集(除了)
例:tr? -sc? 'a'? ? 除了a全都壓縮
aaabbbcccaaa
aaabcaaa
例:tr? -dc? 'a'? ? 除了a全刪,ctrl+d才能結束
abcabcabc
aaa
例:tr? -dc? ‘a\n’? ? 保留a和回車
-d? ? 刪除
-s? ? 連續重復字符會被壓縮(2個以上)
-t
\t? ? 表示tab鍵
\n? ? 換行
\r? ? 表示回車鍵
例:tr -d '\n'? <? f1? ? 刪除回車并重定向 f1
tr? '\n' ' '? <? f1? ? 換行替換成空格重定向 f1
tr -d '\r' < win.txt > newin.txt? ? windows文本格式轉換為linux
dos2unix? ? windows文本格式轉換為linux
unix2dos? ? linux文本格式轉換為windows
cat? -A win.txt(windows文本)
a^M$
b^M$
c^M$
^M$
^M$
例:
hexdump? -c win.txt
mail? -s郵件標題? 收件人發郵件
mail? ? 接受郵件? ? 輸入主題名查看
單行重定向,
多行重定向 <<
例:cat? > f1 << EOF(end of file)? ? 統一提交
aaabbbbccc
bbbbbccccc
EOF
命令 | 命令 |命令? 管道符號(只能處理標準輸出)
例: ls | tr 'a-z' 'A-Z'
F1
F2
例: who | tr 'a-z' 'A-Z'
ROOT? ? PTS/0? ? ? ? 2017-11-14 17:33 (192.168.27.1)
ROOT? ? PTS/1? ? ? ? 2017-11-14 21:32 (192.168.27.1)
LIYIHANG TTY2? ? ? ? 2017-11-14 21:27
例:error? 2>&1 | tr 'a-z' 'A-Z'? (通過 2>&1把錯誤輸出轉換為正確輸出)
BASH: ERROR: COMMAND NOT FOUND...
error? |& tr 'a-z' 'A-Z'? 等同? ? error? 2>&1 | tr 'a-z' 'A-Z'
例:error? |& tr 'a-z' 'A-Z' | tr -d 'O'
BASH: ERRR: CMMAND NT FUND...
例:ls -R /etc/ | more? ? 管道符號配合 more 分段查看
tee? ? 重定向到多個目標? ? (因為屏幕上可以顯示,所以可以做第二次處理)
-s? ? 追加到給定的文件,不要覆蓋
例:who | tee? f1 | tr -d r
oot? ? pts/0? ? ? ? 2017-11-14 17:33 (192.168.27.1)
oot? ? pts/1? ? ? ? 2017-11-14 21:32 (192.168.27.1)
liyihang tty2? ? ? ? 2017-11-14 21:27
例:who | tee who.out |grep liyihang? ? ? ? grep(搜索)
liyihangtty2? ? ? ? 2017-11-14 21:27
刪除Windows文本文件中的‘^M’