学习笔记(4)

1. shell脚本中打印输出内容时,若使用下面的格式要注意下面的EOF前面没有空格

cat  <<EOF

"**************************************************************************************"

"** This script can help your restart weblogic service and clear your weblogic cache. **"

"**************************************************************************************"

"Usage: ./RestartWeblogic_test.sh "

EOF

2.xargs 可以处理参数过长的问题,如 ls file* | xargs rm   如果file开头的文件过多时,可以逐个删除

  [root@centos6 zhanglei]#touch file{1..400000}

  -bash: /bin/touch: Argument list too long

  此时可以使用 echo file{1..400000} | xargs rm    xargs可以逐个删除每个file

3.在tty的虚拟终端里面只需要使用Alt + f1(f2,f3) 就可以切换终端,无需使用Ctrl+Alt+f1(f2,f3),在图形化界面里需要使用Ctrl + Alt + f1(f2,f3)

4.ctrl + c 关闭图形化程序startx是在pts伪终端关闭的,而不是tty,图形化程序与运行5级别有区别,5级别会运行一下其他的图形化服务

5.使用vi编辑器打开多个文件可使用qall 全部关闭并且不保存,也可以使用wqall 全部保存并关闭

6.# sed -n '1~2p' /etc/passwd    打印奇数行,~2标示步进数,从第1行开始

7.# sed -n '2~2p' /etc/passwd   打印偶数行,从第2行开始

8.watch -d -n 1 'ls -/home/zz'  实时查看zz某个目录下变化情况,每一秒输出一行

9.rename 'hhh' 'HHH' file*   将file开头的文件名中包含的hhh修改成HHH

10.paste a b   将多个文件的内容合并,并用tab分隔符隔开

11.paste -d'+' a b  将多个文件的内容合并,并指定分割符为+号

12.cmd 2>all.log 1>&2  (cmd >all.log 2>&1) 两种写法均表示将正确重定向和错误重定向全部输出至文件 

13.tr -c 'abc' '123'  将非abc的字符全部转成最后一个替换字符3

14 tr 'a-z' 'A-Z' file 将file中的小写字母转成大写 

   tr 'abc' '1234'   将abc每个字符文件替换成123,4忽略

   tr -d 'abc'   删除字符集中存在的abc字符

   tr -dc 'abc'  删除字符集中的非abc的字符

   tr -s 'abc'   压缩字符集中连续的字符如aaa,bbb,cccc

15.cat > linux.txt 输入内容至linux.txt文件,但是会清空源文件中的内容,若不相清空文件需要使用多行重定向 cat > linux.txt <<EOF 不保存退出使用Ctrl + c,保存退出使用 Ctrl + d

16.hexdump -C 1.txt 换行符对照ASCII码,可以通过ASCii码对照表查看特殊字符对应的10进制

17.tr -d '\15(\r)' < win.txt > win2.txt ,tr不修改原文件,保留修改的后的内容需要使用重定向输出

   tr -d '\r' < win.txt |cat -A  查看修改的后的文本内容

18.tr '\n' '\t' < linux.txt  将文本内容的回车修改为水平制表符

19.tr -s ' ' < win3.txt   将文件中的内容多个空格压缩成一个

   df |tr -s ' ' ':'| cut -d: -f1 将输出的内容压缩空格后将单个空格以:号替换,并打印:号分隔的第一列

20.tr -s ' ' ':' < df.log  压缩字符集中的空格,并用:号分割

21.cat > f2 清空原文件,使用的是单行重定向,输入过程中每一行会根据输入回车来更新文件

22.<<EOF  多行重定向,输入的标记EOF左右无空格,通过输入内容是否为标记符来判断输入内容是否完成,遇到标记符后才进行多行输入至文件

   cat > A.txt <<EOF  只有在输入EOF之后才会将内容输出至文件并保存

   mail -s "call" admin@localhost <<END(<file.txt 可以通过文件内容作为mail正文)

   mail -s "call" amdin@localhost   提示输入正文,输入.号表示输入正文结束并发送邮件

   cat > f2 <<EOF 不会覆盖原文件的内容,EOF结束标记的左右不能有空格,否则不算EOF结束符

23.tr 'a-z' '[:upper:]' 不能混合使用,只能[:lower:] [:upper:] 或 'a-z' 'A-Z'

24.mail -s "help" root  此命令以.结束输入正文结束,正文可以存在变量,如$HOSTNAME,也可有命令替换,命令替换的均为发件人的信息

   mail -s "help" root 后面提示输出的正文通过.来终止输入并发送邮件

   使用mail查看邮件之后可使用q 来退出

25.管道是将前一个命令的标准输出作为后一个命令的标准输入,所以对于错误重定向需要使用2>&1 来转换才可以作为下一条命令的输入,也可以使用 |& 来实现

   ls /erro 2>&1 | tr 'a-z' 'A-Z' (|&  centos6 版本以上) 将错误重定向和正确重定向管道至tr

26.echo {1..100} | tr ' ' + |bc (seq -s + 100 |bc)  空格符号' ' 不能使用[:space:]包括回车

27.管道中的 - 替换 如: tar -cvf - | tar -xvf - 打包以后再次拆包

28.ls | tee -a ls.log |tr -d '\n' -a表示追加内容而不覆盖,使用tee命令可以在保存输出的情况下再此对输出做进一步重定向

29.mail -s "help" root <<EOF   输入mail邮件的正文并且以EOF判断正文结束并发送邮件

30.ls | tr '\n' ' ' 将ls输出的内容中的回车 转成空格符

31.cat -A win.txt   -A选项查看特殊字取符集

32.tr -t 'abcd' 'xyz' -t选项会忽略后面无匹配项的d

   tr 'abcd' 'xyz'  abc的匹配xyz,多出来的d也匹配z

33.openssl rand -base64 10 生成随机数   

   touch `openssl rand -base64 10 |tr -dc '[:alnum]' | tr '[:upper:]' '[:lower:]'`

34.wang g1 g2 g3  累加权限

35.pwunconv 密码文件回复到源文件 pwconv

36.修改文件 重新登录 获取令牌,而非source

37.init=/bin/bash 

   mount -o ...

38.chfn wang 添加用户描述

39.finger wang 查看用户的描述信息,也可以使用 # cat /etc/passwd 查看

40.用户家目录的配置文件 .bash_profile  .bashrc,配置文件来自 /etc/skel

41.cp -r  /etc/skel/.* /data/wang  此种写法会包括..,因为..会将上一层的/etc所有为的文件拷贝过去,正确的写法:cp -r /etc/skel/.[^.]* /data/wang

   注意:*号不包括隐藏文件

42.chsh -s /sbin/noglogin wang 为了安全,不能切换使用,锁定可以,系统服务使用,修改shell类型,修改的就是passwd文件

43.net accounts  windows 查看密码有效期

44.authconfig --passalgo=sha256 --update 修改密码策略其实修改的是配置文件是/etc/login.defs

45.openssl rand -base64 9 生成随机密码

46.shadow 中密码位!!表示账户锁定,删除可!!可以直接登录

47.usermod -U 账号  去!号 rhel5可以 !!双保险,centos6以后不可以

48.usermod -L 锁定可以切换,不能ssh登录

49.passwd -e  密码立马过期,登录之后换密码

50.change -d 0 用户 口令立即失效

   chage wang  chage -l wang

51./etc/default/useradd 有两个字段?

52.useradd -N fastfs  -N选项表示创建fastfs用户并且不给出主组,直接使用默认的users组(cat /etc/default/useradd)

53.附加组 /etc/group     groups root

54.id 、id root 显示会有区别,id显示的要比直接使用id root显示的信息更加详细

55.gpasswd mage

   newgrp mage

56.vipw vigr 带语法检测,防止语法错误无法开机,如没有uid为0的账户

57.pwck  grpck  语法检查  手动

   pwck -s  可以按照uid的由小到大排序/etc/passwd文件,因为后加入的用户不论uid大小均放到文件的最下面

   pwck -q  做语法检查时不输出警告信息

   grpck -s  可以按照gid的由小到大排序/etc/passwd文件

58.getent passwd(group) xixi  直接查看passwd文件中的指定行(xixi用户)

   getent group

   getent gshadow

   getent shadow

59.多服务器部署相同服务指定id号,所以可以指定创建用户的uid号

60.id 命令会输出用户的安全上下文,id root不会输出安全上下文

61.删除用户以后,用户家目录里面的文件的所属组和所属用户的变为用户的uid和gid

62.rpm -qp --scripts bind-9.9.4-37.el7.x86_64.rpm  --scripts 查看软件包安装过程中的脚本

63.useradd -D  显示cat /etc/default/useradd 中的文件内容,也可以通过指定相应的参数来修改

64.echo $RANDOM  输出随机数 (man bash) echo $[RANDOM%102+1]

65.newusers passwd 批量创建账号

66.cat pass.txt | chpasswd   批量为用户加口令,注意在pass.txt文件内容不允许有空格,创建的用户不存在/etc/skel中的模板文件

   pass.txt 内容如下:用户名和密码用冒号分隔,并且每行一条

   username1: password1

   username2: password2  


   cp -r /etc/skel/.[^.]* /home/zl1 来将模板文件拷贝至zl1中,注意要去除掉..,否则会将上级目录也拷贝至zl1目录中

   chown -R zl1:zl1 /home/zl1 将目录及目录下的文件用户属性和所属组属性全部修改成zl1

67.usermod -G "" wang (usermod -G wang wang)用于将wang账户中的附加组清空

68.id -gn wang  id -Gn wang   显示wang账户中的私有组或附加组

69.使用不完全切换需要使用当前目录的情况下可以不用切换目录,否则变成指定用户的家目录

70.su - root -c 'ls'  切换用户 并执行切换后用户的命令

71.主组在有用户存在的情况下不能删除 ,因为每一个用户必须属于一个主组

72.groupmems -l -g g1 显示组g1中有哪些用户

73.groupmems -a wang -g g1

74.gpasswd -d wang g1

75.groups username 查看username中的组,包括主组和附加组

76.userdel -r zl -r选项不仅仅删除用户的家目录还包括用户的邮件

77.authconfig --passalgo=sha256 --update 修改密码加密方法,默认是sha512(cat /etc/login.defs)

   useradd -u 1000 -c "test user" -d  /data/zl zl 创建用户之后查看 /etc/shadow文件对应的行

78.shadow 文件的格式

   zl:$5$0OAxljIs$Za5.tY3FFsS68dcF3GZ8qqaXfxdyj.yEOPjmLhlBcp4:17624:0:99999:7:3:100:

   root:用户名

   $5$0OAxljIs$Za5.tY3FFsS68dcF3GZ8qqaXfxdyj.yEOPjmLhlBcp4:经过sha256加密的密码(已经使用authconfig --passalgo=sha256 --update 修改)

    5:表示的是经过的sha256加密

    $0OAxljIs$: 两个$$之间的是salt ,即使用加密算法时添加的随机数,所以相同的密码后面的加密字符不会相同

   17624:表示上一次修改密码的时间,即为距离1970.1.1至修改时间所过去的天数

    date +%s 查看现在时间距离1970.1.1过去的秒数

    使用bc命令

    1522724532/3600/24 = 17624 便可以计算出哪一天修改的密码

   0: 表示密码使用的最短日期,如果为3,则表示密码最少要使用3天,0表示密码随时可以修改

   99999: 表示密码的最长时间 99999表示密码永远不过期

   7:表示密码即将过期的第7天发送提示信息

   3:表示密码在过期之后还可以使用3天,但3天过后账户被锁定

   100:表示多少天后账号失效

79.chfn 提示输入用户的个人信息,修改完成后可以使用cat /etc/passwd 来查看

80.chsh 可以切换shell类型,修改的就是/etc/passwd指定的shell类型

   chsh -s /bin/csh zhanglei    要是用shell类型的全路径 cat /etc/shells

81.groupdel 

82.groups 可以查看指定用户的组,包括主组和附加组

   grpous zl

83.groupmems -l -g zl 查看zl组内的成员用户

84.gpasswd 为组添加密码

85.newgrp  当用户具有多个组的时候可以使用newgrp来切换组

86.常用的配置文件路径: 

   cat /etc/skel

   cat /etc/default/useradd

   cat /etc/login.defs

87.gpasswd 为组添加密码,任何一个用户只要知道密码都可以切换至该组,如果不设置组密码则用户不能使用newgrp来切换组,但是属于同一个用户的不同组可以使用newgrp来切换且不需要密码

88.cat /etc/passwd |wc -l (sed -n '$=' /etc/passwd) 都可以计算文件的行数

89.安全3A Authentication: 认证  Authorization: 授权  Audit 审计

90.在cp拷贝所有文件的时候要注意* 号不能匹配路径汇总的隐藏文件


猜你喜欢

转载自blog.51cto.com/9980200/2104911