Linux杂记1
通配符 * ? [] [^]
命令行光标 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 协议》,转载必须注明作者和本文链接
推荐文章: