一、Linux文件管理類命令:
(1)ls
list 用來顯示目錄列表
語法: ls [OPTION]… [FILE]..
常見的opotion選項:
-l:-long 顯示整個目錄下所有文件和目錄或單個文件的詳細信息。
-a:–all 顯示出所有文件和目錄,包括'.'和'..'在內的所有隱藏文件。
-A: –almost-all 顯示出所有文件和目錄,但是除了'.'和'..'之外的所有隱藏文件。
-h:–human-readable 打印出人們可快速理解的文件大小,即對文件大小進行換算。
-i:–inode 打印出文件i節點編號
-d:–directory 列出目錄本身的信息信息
-r:–reverse 逆序排列
-R:–recursive 遞歸排列
-t:按照文件和目錄的更改時間排序
-Z : –context 查看安全上下文,對配置selinux時生效
(2)cat
concatenate,是一個文本文件查看和連接工具。
語法:cat [OPTION]… [FILE]…
常見的opotion選項:
-n 或 –number 由 1 開始對所有輸出的行數編號
-b 或 –number-nonblank 和 -n 相似,只不過對于空白行不編號
-s 或 –squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
(3)tac
tac實際就是cat反過來寫。
(4)head
語法:head [OPTION]…[FILE]…
常見的opotion選項:
-n # 顯示開頭#行信息
-# 等于head -n #,默認開頭10行
(5)tail
語法:tail [OPTION]…[FILE]…
常見的opotion選項:
-n # 顯示結尾#行信息
-# 等于tail -n #,默認結尾10行
-f 查看文件尾部內容結束后不退出,跟隨顯示新增的行
(6)cp
copy 拷貝
單源復制: cp [opotion]… [-T] SOURCE DEST
多源復制: cp [opotion]… SOURCE … DIRECTORY
cp [opotion]… -t DIRECTORY SOURCE
單源復制:
如果dest不存在,則事先創建此文件,并復制源文件的數據流到dest中
如果dest存在:
如果dest是非目錄文件,則覆蓋目標文件
如果dest是目錄文件,則先在dest目錄下創建一個與源文件同名的文件,并復制其數據流
多源復制:
如果dest不存在,錯誤
如果dest存在:
如果dest是非目錄文件,錯誤
如果dest是目錄文件:分別復制每個文件至目標目錄中,并保持原名
常用選項:
-i:交互式復制,及覆蓋之前提醒用戶確認
-f:強制覆蓋目標文件
-r:遞歸復制目標
-d:復制符號鏈接本身,而非其指向的源文件
-a:-dR –preserver=all,archive 用于實現歸檔
–preserve=
mode:權限
owership:屬主和屬組
timestamp:時間戳
context:安全標簽
xattr:擴展屬性
links:符號鏈接
all:上述全部屬性
(7)mv
move
mv [opotion]… [-T] SOURCE DEST
mv [opotion]… SOURCE… DIRECTORY
mv [opotion]… -t DIRECTORY SOURCE…
常用選項
-i:交互式
-f:force
(8)rm
remove
rm [opotion]… file…
常用選項;
-i:interactive
-f:force
-r:recursive
刪除目錄 rm -rf /PATH/TO/DIR
危險操作:rm -rf /*
特別提醒bash編程中可能會遇見災難性的bug,自己踩過的坑:
#!/bin/bash
read -p "test file" file
rm -rf /${file}
file變量如果為空,那結果就是rm -rf /,所以安全的編程建議 rm -rf /${file:?var file is emple}
(9)mkdir
mkdir [opotion]… dirctory…
-p:自動按需創建父目錄
eg:mkdir -p /a/b/c
mkdir /a
mkdir /a/b
mkdir /a/b/c
-v:verbose,顯示詳細過程
-m MODE:直接給定權限
mkdir -m 700 /test 則test目錄的權限應該為 drwx______
注意:路徑基名方為命令的作用對象,基名之前的的路徑必須存在
(10)rmdir
rmdir [opotion]…directory…
-p:刪除某個目錄后,如果其父目錄為空,則一并刪除之:
eg:rmdir /a/b/c 如果刪除c后b目錄為空則刪除b,如果刪除b后a目錄為空則刪除a
-v:顯示過程
(11)more和less
分屏查看命令:more和less
more命令
more file
特點:翻屏至文件尾部后自動退出
less命令
less file
特點:翻屏至文件尾部后不會退出,按q退出
(12)install
install命令和cp命令類似,都可以將文件/目錄拷貝到指定的地點。但是,install允許你控制目標文件的屬性。
install [opotion]… [-T] SOURCE DEST
install [opotion]… SOURCE… DIRECTORY
install [opotion]… -t DIRECTORY SOURCE…
常見的opotion選項:
-d:所有參數都作為目錄處理,而且會創建指定目錄的所有主目錄
eg:install -d a/b/c 與 mkdir -p a/b/c 相同
-D: 創建<目的地>前的所有主目錄,然后將<來源>復制至 <目的地>
eg: install -D x a/b/c 與 mkdir a/b && cp x a/b/c 相同
-m: –mode=模式 自行設定權限模式
二、bash的基本特性
(1)命令歷史:shell進程會其會話中保存此前用戶提交執行過的命令
history
定制history的功能,可通過環境變量實現:
HISTSIZE:shell進程可保存的命令歷史的條數
HISTFILE:持久存儲的文件
HISTFILESIZE:持久存儲歷史命令的文件大小
-c 情空命令歷史
-d offset 刪除指定命令歷史
-w 把歷史命令寫入文件
-r 從文件讀取命令歷史到列表中
調用歷史命令
!# 調用歷史#號命令
!! 調用上個命令
!string 調用最近string開頭的命令
調用上一條命令的最后一個參數
快捷鍵 esc,.
字符串 !$
控制命令歷史記錄的方式:
環境變量:HISTCONTROL
ignoredups:忽略重復的命令
ignorespace:忽略以空白字符開頭的命令
ignoreboth:以上兩者同時生效
(2)命令補全:
shell程序在接受到用戶執行的請求,分別完成之后,最左側的字符串會被當作命令:
命令處理機制:
查找內部命令
根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名
給定的打頭字符串如果唯一標識某個命令程序文件,則直接補全
不能唯一標示某命令程序文件,再敲擊tab健一次,會給出列表
(3)路徑補全:
在給定的起始路徑下,以對路徑的打頭字符串逐一匹配起始路徑下每個文件:
tab:
如果能唯一標示,則直接補全
否則,再一次tab,給出列表
(4)命令行展開:
~:自動展開為用戶的家目錄,或指定的用戶的家目錄:
{}: 可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑
(5)命令的執行狀態結果
命令執行的狀態結果:
bash通過狀態的返回來輸出此結果:
成功:0
失敗:1-255
命令的執行完成之后,其狀態返回值保存與bash的特殊標量$?中
命令正常的執行時,有的還回有命令返回值:
根據命令及其功能不同,結果各不相同:
(6)bash的基于特性:引用
強引用:''
弱引用:""
命令引用:“
(7)bash基礎特性:快捷鍵
ctrl+a:跳轉至命令行首
ctrl+e:跳到命令行尾
ctrl+u: 刪除行首至光標所在處之間的所有字符
ctrl+k:刪除行尾至光標所在處之間的所有字符
ctrl+l:清屏,相當于clear
三、命令行展開聯系練習:
1、創建/tmp目錄下的:a_c,a_d,b_c,b_d
mkdir -p {a,b}_{c,d}
2、創建/tmp/mylinux目錄下的:
../mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
mkdir -pv {bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
四、文件的元數據:
(1)文件的元數據包括文件大小,數據塊大小,文件類型,設備號,inode節點號,權限,屬主屬組,安全上下文,atime,mtime,ctime。
stat [opotion]…[file]
stat -L file 跟隨符號鏈接到真正的文件或目錄
stat -f /bin 顯示該文件系統的狀態
touch 修改文件的時間戳
語法:touch [OPTION]… FILE…
-a:僅修改文件的訪問時間戳(atime)
-c:當需要修改的文件不存在時不創建文件
-m:僅修改文件的修改時間戳(mtime)
-t:修改時間戳
eg: touch -t 201612112205.10 test
五、定義命令別名及引用另一個命令的執行結果:
alias 定義別名
alias la=‘ls -a’
可以通過alias命令進行當前虛擬終端下定義的命令別名,如果需要需要定義該用戶的命令別名,將命令寫入改用戶家目錄下的~/.bashrc下,如果需要定義系統的命令別名/etc/bashrc下
引用命令
~]$ echo $(date)
~]$ echo `date`
六、練習
(1)顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可能有其他字符)的文件或目錄。
ls /var/1*[[:digit:]]*[[:lower:]]
(2)顯示/etc目錄下,以任意的數字開頭,且以非數字結尾的文件或目錄。
ls /etc/[[:digit:]]*[^[:digit:]]
(3)顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度任意字符的文件或目錄。
ls /etc/[^[:alpha:]][[:alpha:]]*
(4)在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
touch tfile-$(date +%Y-%m-%d-%H-%M-%S)
(5)復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
cp -r /etc/p*[^[:digit:]] /tmp/mytest1/
(6)復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
cp -r /etc/*\.d /tmp/mytest2
(7)復制/etc目錄下所有以1或m或n開頭,以.conf結尾的文件到/tmp/mytest3中
cp /etc/{1,m,n}*\.conf /tmp/mytest3
原創文章,作者:N25_隨心,如若轉載,請注明出處:http://www.www58058.com/63149
贊~總結的還是比較詳細的,前面的命令能簡單說下怎么使用會更好點~~加油~