萬用字元 * ? [] [^]
命令列游標 home end ctrl+u ctrl+k ctrl+箭頭 ctrl+l
echo $HISTFILE, $HISTFILESIZE, $HISTSIZE
!100 !-5 !! !$ (esc + .) !string
$(cmd) `cmd`
mkdir -pv ./test/{x/m,y} ./test2/{a,d}_{b,c}
cp複製的檔案,屬主,屬組是當前執行cp的使用者本身
複製連結時,預設是複製連結指向的那個檔案本身
cp -a /etc /backup/etc-`date +%F` 歸檔複製
/etc/default/useradd
/etc/skel
/etc/shells
$SHELL
PATH=$PATH:/bin/go
export PATH
suid 特殊許可權位,程式的屬主為該執行檔案本身的屬主,如果本身的owner有x,則為小寫s,否則大寫S
umask 建立檔案預設的許可權=最大許可權-umask值
注意:檔案一般不給執行許可權
umask
umask 027
grep 'umask' /etc/profile /etc/bashrc
bash配置檔案 /etc/profile.d/*.sh /etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc
立即生效修改後的配置檔案 . file , source file
type set
set 檢視所有變數
set -C 禁止覆蓋重定向 (可以使用強制覆蓋 >|)
set +C 解除
stdin 0
stdout 1
stderr 2
重定向 改變標準輸入,輸出的裝置源
> >> >|
2> 2>>
&> &>>
<
ls /var > out1 2> out2
ls /var > out 2> out
ls /var &> out
cat < /etc/fstab 接受檔案並列印,一般就預設帶有stdin重定向
tr a-z A-Z < /etc/passwd
here doc
cat << END
...
END
cat >> file << EOF
...
EOF
tee 讀取stdin,寫到stdout,和檔案各一份
tee file < /etc/file2
echo xxx | tee file
管道: 前一個命令的標準輸出stdout,當前後一個命令的標準輸入stdin
cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
egrep
egrep -ivo --color pattern file...
egrep -A|B|C # ...
. 單個任意字元
* 其前面的字元任意次 .*
? 其前面的字元0次或1次
[] [^]
+ {1,}
{m,n}
^ $ ^$
\< \> \b
() \1 \2
a|b C|cat (C|c)at
練習
1. 將一個目錄下的所有檔案的檔名換成大寫?
2. 顯示一個檔案的行數,只顯示行數,不顯示額外資訊?
3. 統計/usr/bin/目錄下的檔案個數
4. 取出當前系統上所有使用者的shell,要求,每種shell只顯示一次,並且按順序進行顯示 ? 統計每種shell出現的次數?
5. 如何顯示/var/log目錄下每個檔案的內容型別?不使用萬用字元,能否實現?
6. 取出/etc/inittab檔案的第6行
7. 取出/etc/passwd檔案中倒數第9個使用者的使用者名稱和shell, 顯示到螢幕上並將其儲存至/tmp/users檔案中
8. 顯示/etc目錄下所有以pa開頭的檔案,並統計其個數;
9. 不使用文字編輯器,將alias cls=clear一行內容新增至當前使用者的.bashrc檔案中;
10. 顯示所有以數字結尾且檔名中不包含空白的檔案?
11. 匹配某檔案中 1~255之間的整數?
12. 匹配 ifconfig 顯示中的ip地址?
\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>
13. hadoop使用者臨時切換其基本組為mygroup (會涉及到給組設定密碼 gpasswd,newgrp 臨時切換,login機制,exit還原)
14. /etc/shadow 除了root,其他使用者應該是沒有任何許可權的,為什麼普通使用者還是可以修改自己的密碼,即有w許可權? suid
15. 若某使用者的umask為023,則其建立的檔案和目錄的許可權是?
目錄 754 rwx r-x rw-
檔案 643 rw- r-- -wx 實際建立檔案的許可權是 -rw-r--r-- 因為檔案預設不允許有x許可權
16. 手動新增一個使用者hive,uid,gid為5000,基本組為hive,額外組為mygroup
/etc/group /etc/passwd /etc/shadow
cp -r /etc/skel /home/hive
chown -R hive:hive /home/hive
chmod -R go= /home/hive
17. 檔名萬用字元的使用
字母a開頭,數字3結尾 a*3
以任意一個字元開頭,後跟一個y,又跟任意字元的 [a-z]y*
以非字母開頭 [^a-z]*
包含空白字元 ls *[[:sapce:]]*
以a或m開頭 ls [am]*
以數字結尾,且不包含空白 ls . | egrep '[0-9]$' | egrep -v '[[:space:]]'
包含特殊符號 ls *[[:punct:]]*
18. 手動建立一個使用者
新建一個沒有家目錄的使用者openstack
複製/etc/skel為/home/openstack
改變/home/openstack及其內部檔案的屬主屬組均為openstack
/home/openstack及其內部檔案,屬組和其它使用者沒有任何訪問許可權
19. 建立一個使用者tom,其uid為2002,基本組為distro(gid為3003),額外組為linux
20. 建立一個使用者jerry,其全名為jerry is jerry,預設shell為csh
21. 修改tom的uid為4004,基本組為linux,額外組為distro和jerry
usermod -u 4004 -g linux -G distro,jerry tom
22. 給jerry加密碼,並設定其密碼最短使用期限為2天,最長為50天
passwd -n 2 -x 50 jerry
23. 將tom的預設shell改為bash
usermod -s /bin/bash tom
chsh tom
直接改/etc/passwd
24. 新增系統使用者hbase,且不允許其登入系統
useradd -r -s /sbin/nologin hbase
25. 新增一個永久的命令別名
26. 使用者登入後,列印一段歡迎資訊
27. 設定某使用者一個永久umask
本作品採用《CC 協議》,轉載必須註明作者和本文連結