Linux学习之路-基础命令、管道、软连接【3】---20171120
一、linux 簡單命令總結
1、基礎命令
ls?命令(list):列出指定目錄下的內容
???????[root@Centos6~]#which?ls???????alias?ls='ls?--color=auto'??????別名
??????????????????????????/bin/ls??????物理地址
? ? ls [OPTION]... [FILE]...
常用參數: ?-a ?--all:顯示所有文件,包括.和..在內所有隱藏的文件
? ? ? ? ? ? -A ?--almost-all:顯示所以文件,不包括.和..在內的
? ? ? ? ? ? -l ?use a long listing format使用長格式,顯示屬性信息
? ? ? ? ? ? -h ?--human-readable:對數值做單位換算
? ? ? ? ? ? -d ?僅查看目錄自身屬性
? ? ? ? ? ? -R ?recursive,目錄遞歸通過
? ? ? ? ? ? -r ?reverse,降序(逆序)顯示
? ? ? ? ? ? -i ?顯示文件的inode號碼
? ? ? ? ? ? -1 ?文件分行顯示
? ? ? ? ? ? -S ?按從大到小排序
? ? ? ? ? ? ? ? –t ?按mtime排序
? ? ? ? ? ? ? ? –u ?配合-t選項,顯示并按atime從新到舊排序
? ? ? ? ? ? ? ? –U ?按目錄存放順序顯示
? ? ? ? ? ? ? ? –X ?按文件后綴排序
lscpu?命令 :查看計算機cpu信息
???????Architecture:??????????x86_64
???????CPU?op-mode(s):????????32-bit,?64-bit
???????Byte?Order:????????????Little?Endian
???????CPU(s):????????????????2??----->這是cpu的個數
???????On-line?CPU(s)?list:???0,1?
???????Thread(s)?per?core:????1
???????Core(s)?per?socket:????1
???????Socket(s):?????????????2
???????NUMA?node(s):??????????1
???????Vendor?ID:?????????????GenuineIntel
???????CPU?family:????????????6
???????Model:?????????????????42
???????Model?name:????????????Intel(R)?Core(TM)?i5-2435M?CPU?@?2.40GHz???
???????CPU?MHz:???????????????2394.609
???????BogoMIPS:??????????????4789.21
???????L1d?cache:?????????????32K
???????L1i?cache:?????????????32K
???????L2?cache:??????????????256K
???????L3?cache:??????????????3072
lsblk?命令 :?查看塊設備信息
??????NAME?????MAJ:MIN?RM??SIZE?RO?TYPE?MOUNTPOINT
??????sr0???????11:0????1??3.7G??0?rom??/media/CentOS_6.9_Final
??????sda????????8:0????0??200G??0?disk?????----->??硬盤信息情況
??????├─sda1???8:1????0????1G??0?part?/boot
??????├─sda2???8:2????0?48.8G??0?part?/
??????├─sda3???8:3????0?19.5G??0?part?/app
??????├─sda4???8:4????0????1K??0?part?
??????└─sda5???8:5????0????2G??0?part?[SWAP]
lsusb?命令 :查看usb設備
???????Bus?001?Device?001:?ID?1d6b:0002?Linux?Foundation?2.0?root?hub
???????Bus?002?Device?001:?ID?1d6b:0001?Linux?Foundation?1.1?root?hub
???????Bus?002?Device?002:?ID?0e0f:0003?VMware,?Inc.?Virtual?Mouse
???????Bus?002?Device?003:?ID?0e0f:0002?VMware,?Inc.?Virtual?USB?Hub
???????Bus?002?Device?005:?ID?0e0f:0008?VMware,?Inc.
df??命令(report file system disk space usage) :查看磁盤使用狀態
? ? ? ? ? ? df [OPTION]... [FILE]...
? ? ? ? ? ? 常用參數:-h:human-readable,單位換算,易于人讀
? ? ? ? ? ? ? ? ? ? ? -l:查看本地磁盤文件系統
? ? ? ? ? ? ? ? ? ? ? -i:查看inode使用情況而非blocks
???????[root@Centos6~]#df?-i????????Filesystem??????Inodes??IUsed???IFree?IUse%?Mounted?on
????????/dev/sda2??????3203072?134233?3068839????5%?/
????????tmpfs???????????125514??????4??125510????1%?/dev/shm
????????/dev/sda3??????1281120?????13?1281107????1%?/app
????????/dev/sda1????????65536?????38???65498????1%?/boot
????????/dev/sr0?????????????0??????0???????0?????-?/media/CentOS_6.9_Final
free?命令 :顯示系統中可用和已用內存的數量
? ? ???free [-b | -k | -m | -g | -h] [-o] [-s delay ] [-c count ] [-a] [-t] [-l] [-V]
? ? ? ?常用參數:-b開關顯示以字節為單位的內存量
? ? ? ? ? ? ? ? ?-k開關(默認設置)dis-以千字節播放
? ? ? ? ? ? ? ? ?-m開關以兆字節顯示它
? ? ? ? ? ? ? ? ?-g開關顯示它以千兆字節為單位
? ? ? ? ? ? ? ? ?-h開關顯示所有輸出字段自動縮放到最短(三數字)表示,包括單位。這使得這些值是可讀的
? ? ? ? ? ? ? ? ?-l開關顯示詳細的低和高內存統計信息
?????????[root@Centos6~]#free?-h????????????????????????total???????used???????free?????shared????buffers?????cached
???????????Mem:??????????980M???????427M???????553M???????424K????????62M???????178M
???????????-/+?buffers/cache:???????186M???????793M
???????????Swap:?????????2.0G?????????0B???????2.0G
cat?命令(concatinate):連接文件并在標準輸出上打印
? ? ???cat [OPTION]... [FILE]...
? ? ?常用參數 :? -A 顯示所有?相當于-vET
? ? ? ? ? ? ? ? ? -b?非空的輸出行數
? ? ? ? ? ? ? ? ? -E 顯示結束符,在每行的末尾顯示$
? ? ? ? ? ? ? ? ? -n 對顯示出的行進行編號
? ? ? ? ? ? ? ? ? -s 擠壓空白抑制重復空行輸出
? ? ? ? ? ? ? ? ? -T 顯示標簽?顯示TAB字符為^I
? ? ??如果沒有FILE,或者FILE是 - 讀取標準輸入
??????????[root@Centos6~]#cat?/proc/swaps??----->?查看虛擬內存信息???????????Filename????????????????????????????????Type????????????Size????Used????Priority
???????????/dev/sda5???????????????????????????????partition???????2097148?0???????-1
echo?命令 :回顯命令、顯示字符
? ? ?[SHORT-OPTION]... [STRING]...
? ? 常用參數: -n:不自動附加換行符;即都在一行顯示;
? ? ? ? ? ? ? ?-e:啟用轉義符,使能轉義符\;
? ? ? ? ? ? ? ? ? ? ?\a 發出警告聲
? ? ? ? ? ? ? ? ? ? ?\b 退格鍵
? ? ? ? ? ? ? ? ? ? ?\c 最后不加上換行符號
? ? ? ? ? ? ? ? ? ? ?\n 換行且光標移至行首
? ? ? ? ? ? ? ? ? ? ?\r 回車,即光標移至行首,但不換行
? ? ? ? ? ? ? ? ? ? ?\t 插入tab
? ? ? ? ? ? ? ? ? ? ?\\插入\字符
? ? ? ? ? ? ? ? ? ? ?\0nnn 插入nnn(八進制)所代表的ASCII字符
? ? ? ? ? ? ? ? ? ? ? ? ? echo -e '\033[43;31;5mmagedu\033[0m'
? ? ? ? ? ? ? ? ? ? ?\xHH插入HH(十六進制)所代表的ASCII字
? ? ? ? ? ? ? ? 顯示變量,沒有賦值內容為空
????????????[root@Centos6~]#echo?$PATH??????????????/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
????????????[root@Centos6~]#echo?$ABC
????????????????????????????????????????????????????----->?$ABC?變量沒有賦值,所以為空
????????????[root@Centos6~]#
? ? ? ? ? ? ? ? bash是弱類型的編程語言,不嚴格區分數據類型,意味著把所有數據統統當做字符串處理
? ? ? ? ? ? ? ? ? ? 字符串類型的數據可不加引號
? ? ? ? ? ? ? ? 引號有三種類型:'' 、"" 、?``
? ? ? ? ? ? ? ? ? ? 引號:字符串引用符號
? ? ? ? ? ? ? ? ? ? ? ? '' 單引號:強引用;其內部的變量不會替換
? ? ? ? ? ? ? ? ? ? ? ? "" 雙引號:弱引用;其內部的變量會被替換為普通字符
? ? ? ? ? ? ? ? ? ? ? ? `` 反引號:命令引用符號
who?命令 :?顯示登錄當前系統的用戶
? ? ? ? ? ?[OPTION]... [ FILE | ARG1 ARG2 ]
? ? ?常用參數: ?-a ?顯示詳細信息,相當于-b -d --login -p -r -t -T -u同時用的效果
? ? ? ? ? ? ? ? ?-r ?僅顯示運行級別
? ? ? ? ? ? ? ? ?-b ?僅顯示系統本次的啟動時間
???????????[L@Centos6/root]$who?-a????????????????????system?boot??2017-11-20?18:30
????????????????????run-level?3??2017-11-20?21:06???????????????????last=5
???????????LOGIN??????tty3?????????2017-11-20?18:30??????????????2201?id=3
???????????LOGIN??????tty2?????????2017-11-20?18:30??????????????2199?id=2
???????????LOGIN??????tty4?????????2017-11-20?18:30??????????????2204?id=4
???????????LOGIN??????tty5?????????2017-11-20?18:30??????????????2206?id=5
???????????LOGIN??????tty6?????????2017-11-20?18:30??????????????2208?id=6
??????????????????????tty1?????????2017-11-20?21:06??????????????2250?id=:0????term=0?exit=0
??????????????????????pts/0????????2017-11-20?21:06?????????????????0?id=/0????term=0?exit=0
???????????root?????+?tty1?????????2017-11-21?02:14?05:58????????4562
???????????root?????+?pts/0????????2017-11-21?02:15???.??????????4596?(192.168.27.1)
w?命令:顯示登錄的用戶及正在執行的命令
? ? ? ? ?[options] user [...]
? ???常用參數:?-f --from:只顯示從哪來的
? ? ? ? ? ? ? ?-i --ip-addr:只顯示ip地址,不顯示主機名
????????????[root@Centos6~]#w?????????????08:09:11?up?13:39,??2?users,??load?average:?0.00,?0.00,?0.00
?????????????USER?????TTY??????FROM??????????????LOGIN@???IDLE???JCPU???PCPU?WHAT
?????????????root?????tty1?????-?????????????????02:14????5:54m??0.05s??0.05s?-bash
?????????????root?????pts/0????192.168.27.1??????02:15????0.00s??0.32s??0.04s?w
whoami?命令:顯示當前有效的用戶ID(su命令切換用戶時可用)
????????????[L@Centos6/root]$whoami?????????????L
alias?命令:定義或顯示別名
? ? ? ? ?[-p] [name[=value] ... ]
? ? ? ? ?alias NAME='VALUE'
在命令行中定義的別名,僅對當前shell進程有效
如果想永久有效,要定義在配置文件中
??? ? ? 僅對當前用戶:~/.bashrc
? ? ? ? 對所有用戶有效:/etc/bashrc
???????????[L@Centos6/root]$alias?????????????alias?l.='ls?-d?.*?--color=auto'
?????????????alias?ll='ls?-l?--color=auto'
?????????????alias?ls='ls?--color=auto'
?????????????alias?vi='vim'
?????????????alias?which='alias?|?/usr/bin/which?--tty-only?--read-alias?--show-dot?--show-tilde'
hash?命令 : 緩存表
系統初始hash表為空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到后會將這條命令的路徑記錄到hash表中
當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,
如果不存在,將會去PATH路徑下尋找。利用hash緩存表可大大提高命令的調用速率
? ? ?hash常見用法 :?hash 顯示hash緩存
? ? ? ? ? ? ? ? ? ? ? hash –l 顯示hash緩存,可作為輸入使用
? ? ? ? ? ? ? ? ? ? ? hash –p path name 將命令全路徑path起別名為name
? ? ? ? ? ? ? ? ? ? ? hash –t name 打印緩存中name的路徑
? ? ? ? ? ? ? ? ? ? ? hash –d name 清除name緩存
? ? ? ? ? ? ? ? ? ? ? hash –r 清除緩存
???????????[L@Centos6/root]$hash????????????hits????command
??????????????2????/usr/bin/who
??????????????1????/usr/bin/whoami
??????????????1????/usr/bin/man
??????????????1????/usr/bin/info
備注:在別人機器上做了壞事別忘記清空hash表
history?命令 :已用過的命令歷史列表
? ? ? ? ?[-c] [-d offset] [n]
? ? ? ??history -anrw[filename]
? ? ? ??history -psarg[arg...]
? ? ? ? ?常用參數:-c: 清空命令歷史
? ? ? ? ? ? ? ? ? ?-d offset: 刪除歷史中指定的第offset個命令
? ? ? ? ? ? ? ? ? ? n: 顯示最近的n條歷史
? ? ? ? ? ? ? ? ? ?-a: 追加本次會話新執行的命令歷史列表至歷史文件
? ? ? ? ? ? ? ? ? ?-r: 讀歷史文件附加到歷史列表
? ? ? ? ? ? ? ? ? ?-w: 保存歷史列表到指定的歷史文件
? ? ? ? ? ? ? ? ? ?-n: 讀歷史文件中未讀過的行到歷史列表
? ? ? ? ? ? ? ? ? ?-p: 展開歷史參數成多行,但不存在歷史列表中
? ? ? ? ? ? ? ? ? ?-s: 展開歷史參數成一行,附加在歷史列表后
快捷方法?: !n 執行history命令輸出對應序號n的命令
? ? ? ? ? ?!-n 執行history歷史中倒數第n個命令
? ? ? ? ? ?ctrl-r來在命令歷史中搜索命令
? ? ? ? ? ? ? ?(reverse-i-search)`’
? ? ? ? ? ?Ctrl+g:從歷史搜索模式退出
? ? ? ? ? ?使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令
? ? ? ? ? ?command !string:^ 從命令歷史中搜索以string 開頭的命令,并獲取它的第一個參數
? ? ? ? ? ?command !string:$ 從命令歷史中搜索以string 開頭的命令,并獲取它的最后一個參數
? ? ? ? ? ?command !string:n 從命令歷史中搜索以string 開頭的命令,并獲取它的第n個參數
? ? ? ? ? ?command !string:* 從命令歷史中搜索以string 開頭的命令,并獲取它的所有參數
? ? ? ? ? ?command !^ : 利用上一個命令的第一個參數做cmd的參數
? ? ? ? ? ?command !$ : 利用上一個命令的最后一個參數做cmd的參數
? ? ? ? ? ?command !* : 利用上一個命令的全部參數做cmd的參數
? ? ? ? ? ?command !:n : 利用上一個命令的第n個參數做cmd的參數
? ? ? ? ? ?command !n:^ 調用第n條命令的第一個參數
? ? ? ? ? ?command !n:$ 調用第n條命令的最后一個參數
? ? ? ? ? ?command !n:m 調用第n條命令的第m個參數
? ? ? ? ? ?command !n:* 調用第n條命令的所有參數
*命令歷史相關環境變量:
? ? ? ? ? ? $HISTSIZE:
? ? ? ? ? ? ? ? shell進程的緩沖區保留的歷史命令的條數;
? ? ? ? ? ? $HISTFILESIZE:
? ? ? ? ? ? ? ? 命令歷史文件可保存的歷史命令的條數;
? ? ? ? ? ? ? ? 默認均為1000;
? ? ? ? ? ? $HISTFILE:存放當前用戶的命令歷史文件,默認為~/.bash_history
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?存放在/etc/profile 或~/.bash_profile
? ? ? ? ??$HISTTIMEFORMAT="%F %T" 顯示時間
??????????????????[L@Centos6/root]$HISTTIMEFORMAT="%F?%T"??????????????????[L@Centos6/root]$history
??????????????????????1??2017-11-21?08:11:22lsblk
??????????????????????23??2017-11-21?08:46:17HISTTIMEFORMAT="%F?%T"
??????????????????????24??2017-11-21?08:46:20history
? ? ? ? ? $HISTIGNORE="str1:str2*:…" 忽略str1命令,str2開頭的歷史
? 控制命令歷史的記錄方式:
? ? ? ? 環境變量:HISTCONTROL
? ? ? ? ? ? ? ? ? ignoredups默認,忽略重復的命令,連續且相同為“重復”
??????????????????[L@Centos6/root]$echo?$HISTCONTROL????????????????????ignoredups
? ? ? ? ? ? ? ? ? ignorespace忽略所有以空白開頭的命令
? ? ? ? ? ? ? ? ? ignoreboth相當于ignoredups, ignorespace的組合
? ? ? ? ? ? ? ? ? erasedups刪除重復命令
? ? ? ? ? ? ? ? ?export 變量名="值“
2、bash?特性
? ? ??bash的特性之一:命令別名
? ? ??bash的特性之二:命令歷史
? ? ? ? shell進程會保存期會話中用戶曾經執行過的命令;命令通過其“命令歷史”文件來持久保存此前執行過的命令;每個用戶都有其自己專用的命令歷史文件;
? ? ? ? shell登錄后會讀取命令歷史文件,把以前的舊命令都載入進來,而用戶登錄后執行的新命令會在該shell的緩沖區中;當shell正常退出時,會把緩沖區中的新命令追加到命令歷史文件中;
? ? ? ? 意外退出可能不會保存歷史命令;本次登錄的進程運行過的命令保存在緩沖中,開機前的命令保存在命令歷史文件中;
? ?
? ? ? ? 重復前一個命令,有4種方法:重復前一個命令使用上方向鍵,并回車執行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按!! 并回車執行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?輸入!-1 并回車執行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按Ctrl+p 并回車執行
? ? ? !:0 執行前一條命令(去除參數)
? ? ? Ctrl + n 顯示當前歷史中的下一條命令,但不執行
? ? ? Ctrl + j 執行當前命令
? ? ? !string 重復前一個以“string”開頭的命令
? ? ? !?string 重復前一個包含string的命令
? ? ? !string:p僅打印命令歷史,而不執行
? ? ? !$:p 打印輸出!$ (上一條命令的最后一個參數)的內容
? ? ? !*:p打印輸出!*(上一條命令的所有參數)的內容
? ? ? ^string刪除上一條命令中的第一個string
? ? ? ^string1^string2將上一條命令中的第一個string1替換為string2
? ? ? !:gs/string1/string2將上一條命令中所有的string1都替換為string2
? ? ??
?要重新調用前一個命令中最后一個參數:
? ? ? !$ 表示
? ? ? Esc, .(點擊Esc鍵后松開,然后點擊. 鍵)
? ? ? Alt+ .(按住Alt鍵的同時點擊. 鍵)
? ? ? ??
? bash特性之三:快捷鍵
? ? ??Ctrl + l?清屏,相當于clear命令
? ? ??Ctrl + o?執行當前命令,并重新顯示本命令
? ? ? Ctrl + s 阻止屏幕輸出,鎖定
? ? ? Ctrl + q 允許屏幕輸出
? ? ??Ctrl + c?終止命令
? ? ? Ctrl + z 掛起命令
? ? ??Ctrl + a?光標移到命令行首,相當于Home
? ? ??Ctrl + e?光標移到命令行尾,相當于End
? ? ? Ctrl + f 光標向右移動一個字符
? ? ? Ctrl + b 光標向左移動一個字符
? ? ? Alt + f 光標向右移動一個單詞尾
? ? ? Alt + b 光標向左移動一個單詞首
? ? ? Ctrl + xx 光標在命令行首和光標之間移動
? ? ??Ctrl + u?從光標處刪除至命令行首
? ? ??Ctrl + k?從光標處刪除至命令行尾
? ? ??Alt + r?刪除當前整行
? ? ? Ctrl + w 從光標處向左刪除至單詞首
? ? ? Alt + d 從光標處向右刪除至單詞尾
? ? ? Ctrl + d 刪除光標處的一個字符
? ? ? Ctrl + h 刪除光標前的一個字符
? ? ? Ctrl + y 將刪除的字符粘貼至光標后
? ? ? Alt + c 從光標處開始向右更改為首字母大寫的單詞
? ? ? Alt + u 從光標處開始,將右邊一個單詞更改為大寫
? ? ? Alt + l 從光標處開始,將右邊一個單詞更改為小寫
? ? ? Ctrl + t 交換光標處和之前的字符位置
? ? ? Alt + t 交換光標處和之前的單詞位置
? ? ? Alt + N 提示輸入指定字符后,重復顯示該字符N次
注意:Alt組合快捷鍵經常和其它軟件沖突
gnome-terminal
? ? ?應用程序->附件->終端
? ? ?支持多個“標簽”shell的圖形化終端模擬器
? ? ?Ctrl-Shift-n 創建新窗口
? ? ?Ctrl-Shift-q關閉當前窗口
? ? ?Ctrl-Shift-t 創建一個標簽頁
? ? ?Ctrl-Shift-w 關閉一個標簽頁
? ? ?Ctrl-PaUp/PgUn切換到下一個/前一個標簽頁
? ? ?Ctrl-Shift-c 復制選中的文本
? ? ?Ctrl-Shift-v 把文本粘帖到當前光標處
bash ?I/O重定向和管道基礎特性
? ? ?程序:指令+數據
? ? ? ? 讀入數據:Input
? ? ? ? ? ? 可用于輸入的設備:文件;鍵盤設備、文件系統上的常規文件、網卡設備、鼠標、硬盤
? ? ? ? 輸出數據:Output
? ? ? ? ? ? 可用于輸出的設備:文件;顯示器、文件系統上的常規文件、網卡設備
? ? ?fd(file descriptor) :打開的文件都有一個fd: file descriptor (文件描述符)
?Linux給程序提供三種I/O設備
? ? ?標準輸入(STDIN)-0默認接受來自鍵盤的輸入
? ? ?標準輸出(STDOUT)-1默認輸出到終端窗口
? ? ?標準錯誤(STDERR)-2默認輸出到終端窗口
?I/O重定向:改變默認位置
? ? ? ? ? ? ? ??
? ? STDOUT(輸出)和STDERR(錯誤)可以被重定向到文件
? ? ? ?命令 ?操作符號 ?文件名
? ? ? ?支持的操作符號包括:
? ? ? ? ?> ?把STDOUT重定向到文件
? ? ? ? ?2> 把STDERR重定向到文件
? ? ? ? ?&> 把所有重定向都輸入到指定文件中(包含錯誤、正確全部)
? ? ? ? ?> ?文件內容會被覆蓋 ? ? ? ? ??COMMAND > /PATH/TO/SOMEFILE
? ? ? ? ?>> 原有內容基礎上,追加內容 ??COMMADN >> /PATH/TO/SOMEFILE
? ? ? ? ?2> 覆蓋重定向錯誤輸出數據流 ??COMMAND 2> /PATH/TO/SOMEFILE
? ? ? ? ?2>> 追加重定向錯誤輸出數據流 ?COMMAND 2>> /PATH/TO/SOMEFILE
? ? ??? shell的功能開關
? ? ? ? ? ?set -C 禁止將內容覆蓋已有文件,但可追加
? ? ? ? ? ?>| file 強制覆蓋
? ? ? ? ? ?set +C 允許覆蓋
? ? ? ?標準輸出和錯誤輸出各自定向至不同位置
? ? ? ? ? ?COMMAND > /path/to/file.out2> /path/to/error.out
? ? ? ?合并標準輸出和錯誤輸出為同一個數據流進行重定向
? ? ? ? ?&> 覆蓋重定向
? ? ? ? ?&>> 追加重定向
? ? ? ? ?COMMAND > /path/to/file.out2>&1 (順序很重要)
? ? ? ? ?COMMAND >> /path/to/file.out2>&1
? ? ? 1>&2 ? ?對的變成錯誤的
? ? ? 2>&1 ? ?錯的變成正確的
? ? ? ( ) : 合并多個程序的STDOUT
? ? ? ? ? ? ?(cal2007;cal2008)> all.txt
>?命令 :創建新的文件或者情況文件內容
? ? ? ? ?> 符號可以創建新的文件,如果創建文件已存在,將把文件內容全部清空
? ? ? ? ?故創建新的文件這個符號要慎用,盡量用touch命令創建新的文件
? ? ? ? ?但在生產中,如果有大的文件存在,在刪除前可以先用 > 來清空在刪除文件
touch?命令 :?更改文件時間戳
? ? ?[OPTION]... FILE...
? ? ?常用參數:-a 僅改變atime和ctime
? ? ? ? ? ? ? ?-m 僅改變mtime和ctime
? ? ? ? ? ? ? ?-t?指定atime和mtime的時間戳 ?[[CC]YY]MMDDhhmm[.ss]?
? ? ? ? ? ? ? ?-c 如果文件不存在,則不予創建
? ? ? ? ? ??
stat?命令(display file or file system status) :?顯示文件或文件系統狀態
? ? ??顯示內容包括:文件路徑、文件大小、文件占用block、每個IO block大小
? ? ? ? ? ? ? ? ? ? 文件類型、文件所在設備的主/次設備號
? ? ? ? ? ? ? ? ? ? 文件的inode、文件被硬鏈接次數
? ? ? ? ? ? ? ? ? ? 文件權限、文件的屬主UID、文件的屬組GID
? ? ? ? ? ? ? ? ? ? 環境(SELinux)
? ? ? ? ? ? ? ? ? ? access time:atime,文件最近一次被訪問的時間;
? ? ? ? ? ? ? ? ? ? modify time:mtime,文件最近一次被修改(內容)的時間(即數據);只要數據變了元數據一定會變
? ? ? ? ? ? ? ? ? ? change time:ctime,文件最近一次改動的時間(元數據)
? ? ? stat [OPTION]... FILE...
? ? ? ? ? ? ? ? 文件的數據組成部分:
? ? ? ? ? ? ? ? 元數據(metadata):存放于文件系統中的inode里;
? ? ? ? ? ? ? ? 數據(data):存放在data blocks里
cp?命令 (copy) :復制文件和目錄
? ? ? ? ? ? 單源復制:cp [OPTION]... [-T] SOURCE DEST
? ? ? ? ? ? 多源復制:cp [OPTION]... SOURCE... DIRECTORY:目標必須是目錄
? ? ? ? ? ? ? ? ? ? ? cp [OPTION]... -t DIRECTORY SOURCE...
? ? ? ? ? ? ? ? ? ? ? ? ? SRC是文件:
? ? ? ? ? ? ? ? ? ? ? ? ? 如果目標不存在:新建DEST,并將SRC中內容填充至DEST中
? ? ? ? ? ? ? ? ? ? ? ? ? 如果目標存在:如果DEST是文件:將SRC中的內容覆蓋至DEST中,基于安全,建議為cp命令使用-i選項
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中
? ? ? ? ? ? 常用參數:?-i,--interactive:交互式復制,即覆蓋目標文件之前提醒用戶確認
? ? ? ? ? ? ? ? ? ? ? ?-a,--archive:歸檔復制;備份時才會使用;相當于-dR --preserve=all;
? ? ? ? ? ? ? ? ? ? ? ?-f,force:強制覆蓋目標文件
? ? ? ? ? ? ? ? ? ? ? ?-R,-r,--recursive:遞歸復制目錄及其內容
? ? ? ? ? ? ? ? ? ? ? ?--backup=numbered 目標存在,覆蓋前先備份加數字后綴
? ? ? ? ? ? ? ? ? ? ? ?-P,--no-dereference:復制鏈接文件本身,而非默認的復制鏈接文件指向的原文件內容
? ? ? ? ? ? ? ? ? ? ? ?-d:相當于--no-dereference;復制鏈接本身(默認為復制鏈接文件的原文件內容)
? ? ? ? ? ? ? ? ? ? ? ?-u: --update 只復制源比目標更新文件或目標不存在的文件
? ? ? ? ? ? ? ? ? ? ? ?-v: --verbose?
? ? ? ? ? ? ? ? ? ? ? ?--preserve[=ATTR_LIST]:mode: 權限
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ownership: 屬主屬組
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?timestamp
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?links
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?xattr
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?context
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?all
注意:僅管理員有權限復制時保留屬主和屬組屬性;
mv?命令(move (rename) files) : ?移動文件、文件夾或者重命名
? ? ? ? ? ? ? ? 單源移動:mv [OPTION]... [-T] SOURCE DEST
? ? ? ? ? ? ? ? 多源移動:mv [OPTION]... SOURCE... DIRECTORY
? ? ? ? ? ? ? ? ? ? ? ? ? mv [OPTION]... -t DIRECTORY SOURCE...
注意:原文件目錄與目標文件目錄相同時,為rename;否則為move
? ? ? ? ? ? ? ?不區分目錄和文件,直接move
? ? ? ? ? ? ? ?常用選項:
? ? ? ? ? ? ? ? ? ? ? -i,--interactive:交互式復制,移動時,如果目標文件存在時提示用戶確定是否覆蓋(僅root用戶)
? ? ? ? ? ? ? ? ? ? ? -f,force:強制移動(相當于先刪除原文件,在復制新文件過來),覆蓋前不提示
? ? ?rm?命令 (remove files or directories):刪除一切(跑路命令)
? ? ? ? ? ? ?[OPTION]... FILE...
? ? ? ? ? ? ?即能刪除文件又能刪目錄,但刪目錄時要用遞歸-r選項
? ? ? ? ? ? ?常用選項:
? ? ? ? ? ? ? ? ?-r, -R, --recursive:遞歸刪除目錄及其內容
? ? ? ? ? ? ? ? ?-f,force:強制刪除,不提示確認
? ? ? ? ? ? ? ? ?-i,--interactive:交互式,提示確認
? ? ? ? ? ??rm -rf /* ?自殺的方法(?最好玩的命令)
? ? ? ? ? ? 建議在生產環境中,要自建回收站!禁用rm直接操作。
? ? ? ? ? ? ? ? ? ? ?把rm定義為mv的別名,可以刪除文件及目錄,但不可以加 -r 選項
?????????[root@Centos7~]#alias?rm=`mv?-t?/app/recycle`mkdir?命令 :創建目錄
? ? ? ? ?[OPTION]... DIRECTORY...
? ? ? ? ?常用參數:-p ?存在不報錯,且可自動創建所需的各目錄
? ? ? ? ? ? ? ? ? ?-v ?--verbose:顯示創建過程
? ? ? ? ? ? ? ? ? ?-m ?--mode=MODE:直接給定目標目錄的權限
rmdir?命令 :(remove directory)只能刪除空目錄
? ? ? ? [OPTION]... DIRECTORY...
? ? ? ? ?常用參數:?-p ? 遞歸刪除父空目錄
? ? ? ? ? ? ? ? ? ? -v ? 顯示詳細信息
? ? ? ? ? ? ? ? ? ?rm-r 遞歸刪除目錄樹
tree?命令?從標準輸入讀取并寫入標準輸出和文件-顯示目錄樹
? ? ? ? [OPTION]... [FILE]...
? ? ?常用參數:-a ?使用追加輸出重定向,而非默認的覆蓋輸出
? ? ? ? ? ? ? ? ? ?-d ?只顯示目錄
? ? ? ? ? ? ? ? ? ?-L level:指定顯示的層級數目
? ? ? ? ? ? ? ? ? ?-P pattern: 只顯示由指定pattern匹配到的路徑
? ? ? ? ? ? ? ? ? ?-o filename:保存在文件中
? ? ?文件通配符bash?的特性??glob(globbing):
? ? ? ? ?man 7 golb 幫助文檔
? ? ? ? ?glob:文件名通配;在于快速引用多個符合條件的文件;文件名整體匹配度檢測;
? ? ? ? ?* 匹配零個或多個字符
? ? ? ? ?? 匹配任何單個字符
? ? ? ? ?~ 當前用戶家目錄
? ? ? ? ?~mage 用戶mage家目錄
? ? ? ? ?~+ 當前工作目錄
? ? ? ? ?~- 前一個工作目錄
? ? ? ? ?[0-9] 匹配數字范圍
? ? ? ? ?[a-z] 字母
? ? ? ? ?[A-Z] 字母
? ? ? ? ?[wang] 匹配列表中的任何的一個字符
? ? ? ? ?[^wang] 匹配列表中的所有字符以外的字符
? ? ? ? ? ? []:匹配指定集合內的任意單個字符;
? ? ? ? ? ? [abc]:單個含有a或b或c;
? ? ? ? ? ? [a-z],[A-Z]:單個字母不區分大小寫;
? ? ? ? ? ? [0-9]:單個數字;
? ? ? ? ? ? [a-z0-9]:單個數字或字母;
? 預定義的字符類:man 7 glob
? [:digit:] ?任意數字,相當于0-9
? [:lower:] ?任意小寫字母
? [:upper:] ?任意大寫字母
? [:alpha:] ?任意大小寫字母
? [:alnum:] ?任意數字或字母
? [:blank:] ?水平空白字符
? [:space:] ?水平或垂直空白字符
? [:punct:] ?標點符號
? [:print:] ?可打印字符
? [:cntrl:] ?控制(非打印)字符
? [:graph:] ?圖形字符
? [:xdigit:] ?十六進制字符
tr?命令 :(translate or delete characters)替換、壓縮或刪除字符
? ? ? ? ? [OPTION]... SET1 [SET2]
? ? ? ? ? 常用參數:-c ?-C --complement:取字符集的補集,取代所有不屬于第一字符集的字符;
? ? ? ? ? ? ? ? ? ? -d ?--delete:刪除所有屬于第一字符集的字符,刪除所有屬于第一字符集的字符;
? ? ? ? ? ? ? ? ? ? -s ?--squeeze-repeats:把連續重復的字符以單獨一個字符表示,把連續重復的字符以單獨一個字符表示;
? ? ? ? ? ? ? ? ? ? -t ?--truncate-set1:將第一個字符集對應字符轉化為第二字符集先刪除第一字符集較第二字符集多出的字符。
? ? ? ? ? ? ?使用 < 來重定向標準輸入,某些命令能夠接受從文件中導入的STDIN
? ? ? ? ? ? ? ? ? ? ?tr‘a-z’‘A-Z’< /etc/issue 該命令會把/etc/issue中的小寫字符都轉換成寫寫字符
? ? ? ? ? ? ? ? ? ? ?tr–d abc < /etc/fstab ?刪除fstab文件中的所有abc中任意字符
? ? ? ? ? ? ? ? ? ? ?cat > file
? ? ? ? ? ? ? ? ? ? ?mage
? ? ? ? ? ? ? ? ? ? ?wangxiaochun
? ? ? ? ? ? ? ? ? ? ?按ctrl+d離開,可以使用文件來代替鍵盤的輸入
? ? ? ? ? ? ? ? ? ? ?Cat > filea< fileb
? ? ? ? ? ? ?使用“<< 終止詞”命令從鍵盤把多行重導向給STDIN
? ? ? ? ? ?直到終止詞位置的所有文本都發送給STDIN
? ? ? ? ? ?有時被稱為就地文本(heretext)
? ? ? ? ? ? ?mail-s"PleaseCall"admin@magedu.com<<END
? ? ? ? ? ? ?>HiWang,
? ? ? ? ? ? ?>
? ? ? ? ? ? ?>Pleasegivemeacallwhenyougetin.Wemayneed
? ? ? ? ? ? ?>todosomemaintenanceonserver1.
? ? ? ? ? ? ?>
? ? ? ? ? ? ?>Detailswhenyou'reon-site
? ? ? ? ? ? ?>Zhang
? ? ? ? ? ? ?>END
管道(使用符號“|”表示)用來連接命令
? ? ? ? ?命令1 | 命令2 | 命令3 | …
? ? ? ?將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN
? ? ? ?STDERR默認不能通過管道轉發,可利用2>&1 或|& 實現
? ? ? ?最后一個命令會在當前shell進程的子shell進程中執行用來
? ? ? ?組合多種工具的功能
? ? ? ? ?ls | tr 'a-z' 'A-Z'
tee?命令:從標準輸入讀取并寫入標準輸出和文件
? ? ? ? ?tee -?read from standard input and write to standard output and files
? ? ? ? ? ? ? tee [OPTION]... [FILE]...
? ? ? ? ? ? ? ? ? -a:使用追加輸出重定向,而非默認的覆蓋輸出;
? ? ? ? ? ? ? ? ? ? ? ?COMMAND | tee /PATH/TO/SOMEFILE
? ? ? ? ? ? ? ? ? ? ? ?使輸出即輸出到文件一份,又輸出到屏幕上一份;
??????????[root@Centos6/app]#which?cat?|?tee?/app/f1???????????/bin/cat
??????????[root@Centos6/app]#cat?f1
???????????/bin/cat
more?命令 :分頁查看文件
? ? ?more [options] file [...]
? ? ?-d: 顯示翻頁及退出提示
less?命令 :一頁一頁地查看文件或STDIN輸出
? ? ?less file[...]
? ? ?less命令是man命令使用的分頁器
? ? ?/ 文本搜索文本
? ? ?n/N 跳到下一個或上一個匹配
? ? ? ? ?ls-l/etc|less
mail:通過電子郵件發送輸入
? ? ?用戶郵箱在/var/spool/mail/目錄下
? ? ? ? ?echo"testemail"|mail-s "test"user@example.com
lpr:把輸入發送給打印機
? ? ?echo"testprint"|lpr-Pprinter_name
- 符號?
示例:
將/home 里面的文件打包,但打包的數據不是記錄到文件,而是傳送到stdout,經過管道后,
將tar -cvf-/home 傳送給后面的tar -xvf-, 后面的這個-則是取前一個命令的stdout,因此,
就不需要使用臨時file了
tar -cvf-/home | tar -xvf-
二、inode(index node)索引節點
? ? 表中包含文件系統所有文件列表
? ? 一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據)
? ? 包括:文件類型,權限,UID,GID
? ? ? ? ??鏈接數(指向這個文件名路徑名稱個數)
? ? ? ? ? 該文件的大小和不同的時間戳
? ? ? ? ? 指向磁盤上文件的數據塊指針
? ? ? ? ? 有關文件的其他數據
inode 表結構如圖:
inode 表如圖:
cp和inode
? ? cp命令,分配一個空閑的inode號,在inode表中生成新條目,在目錄中創建一個目錄項,
? ? ? ? ? ? 將名稱與inode編號關聯,拷貝數據生成新的文件
rm和inode?
? ? rm命令,鏈接數遞減,從而釋放的inode號可以被重用,把數據塊放在空閑列表中
? ? ? ? ? ? 刪除目錄項,數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋。
mv和inode
? ? 如果mv命令的目標和源在相同的文件系統,作為mv命令,用新的文件名創建對應新的目錄項
? ? 刪除舊目錄條目對應的舊的文件名,不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!
? ? 如果目標和源在一個不同的文件系統,mv相當于cp和rm
硬鏈接
? ? ?指向同一個inode的多個文件路徑
? ? ?特性:
? ? ? ? ? ? ?a ? 目錄不支持硬鏈接
? ? ? ? ? ? ?b ? 硬鏈接不能跨文件系統;因為不同文件系統的inode是獨立管理的,
? ? ? ? ? ? ? ? ?編號也是從0開始的,所以不能跨文件系統引用文件的inode編號
? ? ? ? ? ? ?c ? 創建硬鏈接會增加inode引用計數;
? ? ?? 創建硬鏈接會增加額外的記錄項以引用文件,對應于同一文件系統上一個物理文件
? ? ? ?每個目錄引用相同的inode號,創建時鏈接數遞增
? ? ? ?刪除文件時:rm命令遞減計數的鏈接,文件要存在,至少有一個鏈接數
? ? ? ?當鏈接數為零時,該文件被刪除
? ? ? ?不能跨越驅動器或分區
? ? ? ?語法:
? ? ? ? ? ?ln filename [linkname]
? ? ? ? ? ? ? ? ? ? -v:verbose,顯示過程;
? ? ? ? ? ? ? ? ? ? -s:創建符號鏈接;
軟鏈接(符號鏈接)
? ? ?指向一個文件路徑的另一個文件路徑;inode的號不同;
? ? ? ? ?特性:
? ? ? ? ? ? a ? 符號鏈接與原文件是兩個各自獨立的文件,各有自己的inode;對原文件創建符號鏈接不會增加inode引用計數
? ? ? ? ? ? b ? 支持對目錄創建符號鏈接,且可以跨文件系統;
? ? ? ? ? ? c ? 刪除符號鏈接文件,不影響原文件,但刪除原文件,符號鏈接文件指定的路徑即不存在,此時會變成無效的鏈接;
? ? ? ? ? ? ? ? ln -s src link_file
? ? ? ? ? ? ? ? ? ?-v:verbose,顯示過程;
注意:符號鏈接文件的大小是其指向文件的路徑字符串的字節數;
軟和硬鏈接區別
? a ?本質不同:
? ? ?硬鏈接是同一個文件,軟鏈接不是同一個文件
? b ?刪除
? ? ?硬鏈接不影響,軟鏈接失效
? c ?創建
? ? ?硬鏈接數加1,軟鏈接數不變
? d ?跨分區
? ? ?硬鏈接不可以,軟鏈接可以
? e ?目錄
? ? ?硬鏈接不可以為目錄,軟鏈接可以
id?命令 :打印真實有效的用戶和組ID
?id [OPTION]... [USER]
? ? ???常用參數:-Z, - 上下文只打印當前用戶的安全上下文
? ? ? ? ? ? ? ? ? -g,--group只打印有效的組ID
? ? ? ? ? ? ? ? ? -G,--groups?打印所有組ID
? ? ? ? ? ? ? ? ? -n,--name?打印一個名字,而不是一個數字,為-ug
? ? ? ? ? ? ? ? ? -r,--real用-ugG打印真實的ID而不是有效的ID
? ? ? ? ? ? ? ? ? -u,--user?只打印有效的用戶ID
? ? ? ? ? ? ? ? ? -z, - 零?使用NUL字符分隔條目,而不是空格;
?????????[root@Centos7/]#id?L??????????uid=1000(L)?gid=1000(L)?groups=1000(L)
個人總結內容雜亂,總結信息為個人理解及老師課件內容,請勿見怪!!
轉載于:https://blog.51cto.com/exia00linux/2044544
總結
以上是生活随笔為你收集整理的Linux学习之路-基础命令、管道、软连接【3】---20171120的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot 出现A compo
- 下一篇: ERROR 1819 (HY000) Y