學習筆記(3)

1.* 匹配零個或多個字符(通配符中)

2.ls 的-d選項不僅僅可以顯示指定目錄的信息,還可以用來表示不遞歸子文件夾。

  # ls -dl /etc 顯示/etc目錄的信息

  # ls -d /etc/* 顯示/etc下面的文件和文件夾,並且文件夾不遞歸顯示

  # ls -d /etc/*/ 只顯示/etc下面的文件夾

3.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄

  注意小寫字母[a-z]: 匹配的範圍 a A b B ...y Y z,所以匹配小寫字母用[[:lower:]],匹配整個字母可以使用[a-Z]

  # ls -d /var/l*[0-9]*[[:lower:]]

  顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄

  # ls -d /etc/[[:digit:]]*[^[:digit:]]

  顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄

  # ls -d /etc/[^[:alpha:]][a-Z]* (ls -d /etc/[^[:alpha:]][a-zA-Z]*)

  顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數字,其它爲任意字符的文件或目錄

  # ls -d /etc/rc[0-6]*

  顯示/etc目錄下,所有以.d結尾的文件或目錄

  # ls -d /etc/*.d

  顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

  # ls -d /etc/[mnrsp]*.conf

  只顯示/root下的隱藏文件和目錄

  # ls -d /root/.[^.]*

  只顯示/etc下的非隱藏目錄

  # ls -d /etc/[^.]*/

注意:

  ls -d /etc/{m,n,r,p}*.conf 此種寫法會有報錯,因爲一旦沒有m,n,r,p中的某個字符,則會出現找不到文件或目錄的報錯,而[mnrp]則會查看是否有含有其中字母開頭的文件,沒有也不報錯,正常寫法是: ls -d /etc/[mnrp]*.conf

4.系統用戶是用來對守護進程獲取資源進行權限分配

5.useradd 創建用戶的默認選項配置文件: /etc/default/useradd

6./etc/sudoers 對所有的用戶均爲只讀,包括root用戶,但root用戶對任何文件均可讀寫,但執行權限要看是否有x權限 因爲該配置文件有自身的語法規則,放置造成錯誤無法使用sudo命令,所以只能visudo來編輯

7.usermod -L zhanglei 鎖定zhanglei賬戶意味着不能夠通過ssh直接登錄,但是可以使用su切換至該用戶

8.使用man 7 glob 查看通配符幫助手冊,7爲雜項,1爲普通用戶命令,8爲系統管理員命令,5爲系統配置文件

9.將windows上傳到linux環境中出現亂碼的文本(windows中默認的是ANSI格式),通過 #iconv -f gb2312 win.txt -o win3.txt

10.bc命令可以將8進制(16進制)的數轉換成10進制

  ibase=8(ibase=16) obase(outbase) ibase(inputbase)

11./etc/DIR_COLORS 可以查看顏色編碼,修改PS1顏色的時候可以參考

12.echo '- - -' > /sys/class/scsi_host/host2/scan 掃描新安裝的硬盤設備,也可以通過重啓來識別新安裝的硬盤設備

13.cd - 使用的是$OLDPWD變量的值,可以通過修改OLDPWD的值來驗證

14.man命令幫助中無括號引用的也是必須有的(如:Centos6:#shutdown --help),與<>引用的參數相同

15.ls 顯示按字母的順序排序,數字順序高於字符

16.ls -l 顯示的時間是修改時間(mtime),元數據是修改的是ctime

17.ls --time=ctime (--time=atime) filename

18.系統讀數據會修改元數據的atime,可優化系統讓其讀數據不修改元數據atime,可以提高系統性能的5%

19.顯示當前目錄下的所有目錄  #ls -d */

20.? 通配的是一個字符,漢字也是一個字符,所以使用 ls ? 會顯示單個漢字爲名稱的文件 

21.cd ~-可用於訪問或切換剛剛離開目錄下的文件或文件夾如: cat ~-/test,查看上次目錄的文件內容

22.[a-D] 包含aAbBcCdD ,[a-Z]包含所有大小寫所有字符,[a-zA-Z] 也可表示所有的字符

23.[[:upper:]], [:upper:]表示的是A-Z,僅tr中使用 tr 'a-z' 'A-Z' < file,所以[[:upper:]] 取出的是文件名包含的所有大寫字母

24.ls -d .* 顯示當前目錄的隱藏文件,也可以使用l.

25.ls -R .[^.]* 顯示當前目錄隱藏文件

   ls -ad .[^.]* 只顯示隱藏文件

26.touch 原有文件修改所有時間(atime mtime ctime)

27.touch -c 選項可以用來刷新原有文件的時間但不創建文件,如刷新當前文件的所有文件時間,可以touch -c *

28.touch `date -d '-1 day' +%F`.log 創建日期爲昨天的文件

29.普通用戶注意設置cp的別名,避免誤操作,vi ~.bashrc 添加alias cp='cp -i'

30.cp -f  刪除源文件重新創建新文件,普通用戶覆蓋所有者爲root用戶的文件,如在/home/zhanglei 家目錄下的root創建的test文件,可以使用cp -f 使用其他文件覆蓋,目錄下面 的文件是否能夠刪除或重命名與文件權限無關,與所在的目錄的權限有關

31.cp -d source dest 保留原來的鏈接,不加-d選項直接拷貝鏈接指向的文件,可用來拷貝軟連接

32.cp --bakcup 可以避免誤備份同名文件夾

33.alias cp='cp -i --bakcup=numbered' 使用--backup=numbered 可防止覆蓋原有的同名備份

34.alias baketc='cp -av /etc/ /app/backup`date +%F`'

35.cp -a /root/ /app/rootdir

36.cp -a /dev/sda /data  複製設備文件,不加-a選項複製內容,使用-p選項無效,只能使用-a選項

37.rename 實現文件的批量改名,如rename "conf" "conf.bak" file*

   rename ".bak" "" file*

38.lsblk 查看系統中的磁盤設備,及磁盤下的分區,sr0爲光盤設備,sda爲磁盤設備,sda0,sda1爲sda磁盤下的分區

   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  100G  0 disk   磁盤設備

├─sda1   8:1    0 1000M  0 part /boot 磁盤下的分區

├─sda2   8:2    0 48.8G  0 part /data

├─sda3   8:3    0  9.8G  0 part /

├─sda4   8:4    0    1K  0 part 

└─sda5   8:5    0    2G  0 part [SWAP]

對於新創建的磁盤需要使用 echo '- - -' > /sys/class/scsii_host/host2/scan 來掃描出新加入的磁盤設備

39.通過df -T 可以查看文件系統類型

40.lsof |grep deleted 查看進程使用的已刪除文件,最好使用> 重定向來刪除文件

41.mv 也可以移動文件夾 

42.cp 強制覆蓋使用\cp rm 也可以使用\rm 刪除,不能刪除掛載點,但是會刪除下面的文件

43.rm -rf /data /*   多輸入一個空格導致錯誤執行rm -rf /* 

44.alias rm='mv -vt /data' 設置rm命令別名,放置誤操作,同時可以在~/.bash_logout中寫 rm -rf /tmp/*

45.killall vim 殺進程

46.tree -L 1 -d /boot  

47.rmdir -p /data/dir1/dir2/dir3 逐級刪除由後至前查看是否爲空,爲空則刪除

48.mkdir -pv /testdir/dir1/{x/{a,b},y/{a,b}}

49.mkdir -pv /test/dir2/{x/{a,b},y}

50.mkdir -pv /test/{dir{3,4},5/dir{6,7}}

51.每一個分區的inode編號是唯一的,不同分區的inode編號可能相同

52.系統默認最小塊大小爲4KB,是分配文件的最小單位,12個指針 每個指針塊所需的指針佔用4個字節

53.df -i 查看每個分區的可使用的節點(inode)編號總數

54.echo file{1..40000} |xagrs touch(ls,rm) 創建(列出,刪除)大批量文件,xargs可以解決參數過多的問題

   直接使用touch 創建文件會報參數過多的錯誤

55.文件夾的元數據中的指針存儲的是文件名與inode之間的映射

56.刪除文件只是刪除元數據區的數據,數據區內容標識爲可用,所以刪除數據空間沒釋放便可以解釋

57.shred -zvu -n 6 hosts -z表示最後一次用0填充,使用6此隨機數填充,-u 刪除文件,-z顯示處理文件的過程

58.鏈接數 創建硬鏈接鏈接數會增加,硬鏈接不能跨分區,軟連接可以跨分區,不允許創建文件夾的硬鏈接,軟連接可以創建目錄鏈接

59.原文件名  目錄下的. 子目錄下的..  文件夾的默認鏈接數爲2 ,對於一級目錄爲文件夾名及文件夾下的. 具有相同的inode號,可以使用

   ls -dli 目錄名  查看目錄的inode信息

   ls -li 目錄名   查看當前目錄下面的.的inode號

60.軟連接的大小是鏈接指向源文件的字節數,創建軟連接要相對軟鏈接的路徑,不能相對當前路徑

61.硬鏈接:一個文件多個名字

   軟鏈接:一個文件對應快捷方式,不同文件

   1.鏈接數

   2.跨分區

   3.目錄鏈接

   4.原始文件和鏈接文件的關係

   5.文件大小

62.readlink 查看軟連接指向的原始文件

63.程序發佈的文件夾可以使用創建鏈接的方式

   # ln -s nginx1.1.0 nginx 將源文件的nginx-1.10 創建軟鏈接nginx,如果有新版本nginx1.12 可以使用rm -f nginx(鏈接名) 刪除鏈接,再使用ln -s nginx-1.1.2 nginx

   # rm -f nginx(鏈接名)     

   # ln -s nginx-1.12 nginx

64.軟連接可以爲長路徑名創建快捷方式

65.hexdump -C  filename -n 100 ,Linux系統是通過文件內容的頭部文件來辨別系統類型,可以使用file filename 來查看,windows是通過文件後綴來識別文件類型

66.ll /proc/$$/fd  查看當前進程所打開的文件描述符(fd:file descriptor)

67.exec 8<>/data/hosts 手動指定文件描述符號

68.exec 8&- 刪除fd

69.ls > /dev/pts/5 可以用來傳輸提醒信息,與wall類似,如wall "System will shutdown now", 惡作劇可以玩一下 echo "rm -rf /*" > /dev/pts/1 會在提示符後顯示,效果絕對逼真

70.history 2> /path/to/file 無錯誤也會覆蓋原文件

71.ls /error /data >all.log 2>&1(&>) 注意次序問題

   ls /error /data 2>&1 >all.log     2>&1:把錯誤重定向變成正確重定向進而輸出至終端,>all.log並且將正確的輸出重定向至all.log文件

   (ls /error /data 2>&1) >all.log   由於存在括號,所以將錯誤輸出重定向轉成正確輸出重定向,並將兩個重定向的輸出至文件all.log

   ls /error /data >all.log 2>&1     將錯誤輸出重定向和正確輸出均重定向至all.log 文件

72.cmd 2>log >&2    將錯誤重定向重定向至log文件,將正確重定向的輸出轉成錯誤重定向輸出至log文件,即將錯誤和正確的重定向輸出均輸出至文件log

   cmd 2>&1 >log     將命令的錯誤重定向轉成正確重定向輸出至終端,將正確的出定向的內容輸出至log文件,可以使用(cmd 2>&1 )>log 將正確重定向和錯誤重定向全部輸出至文件

73.>| 強行覆蓋  ,使用# set -C關閉>符號覆蓋文件,使用 # set +C 開啓>符號覆蓋文件,在關閉>符號覆蓋文件的情況下,可以使用>|強行覆蓋文件

74.多個命令重定向使用(),如:#(ls;pwd) > all.log

75.使用>>創建空文件更安全,並且不修改時間,> link_file 可以刪除軟連接指向的原文件,重定向分區不會刪除分區內容

76.cat < /etc/hosts 使用標準輸入輸出文件內容

77.cat < f1 >f1 會清空文件f1 ,cat <f1 >>f1 無線循環輸入至f1文件,cat < f1 >f2 可以將f1文件中的內容刪除至f2

78.在使用cp命令時,對於目錄軟連接的拷貝要加上名字後面的斜線,否則拷貝過去的就是軟連接

   如Centos7中:cp -r /bin /tmp/ 該命令會將文件的快捷方式拷貝過去而不是鏈接指向的文件夾

     Centos7中:cp -r /bin/ /tmp/ 該命令會將軟連接指向的/usr/bin的文件夾備份至/tmp中

79.刪除軟連接時注意不要加後面的斜線,因爲補全功能會自動加/,加/會報錯

80.創建軟鏈接的時候,原文件使用相對路徑要相對於後面的鏈接文件的路徑,而不能相對於當前路徑,可以理解爲原文件即使是在當前路徑下也要使用相對路徑通過根路徑開始找到原文件

81.cmd 2>&1 >1.log  此命令的會先將正確的輸出至1.log,然後將錯誤的轉成正確的輸出打印至屏幕,因爲2>&1 前面並沒有1的輸出重定向所以打印至終端

82.cmd >1.log 2&>1  此命令會將爭取的輸出至1.log,然後將錯誤的輸出重定向轉成正確的重定向並再一次通過正確重定向輸出至1.log

83.(cmd 2>&1)>1.log 此命令會由於有括號的存在會先執行括號裏面重定向,然後將正確的和錯誤的重定向輸出都輸出至1.log文件

以上3個命令可以總結出 命令是先執行正確的輸出,然後再執行錯誤的輸出,並且只能後面的重定向可以再次使用前面的,前面的不能使用後面的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章