1.统计当前 Linux 系统中可以登录计算机的账户有多少个
#!/bin/bash
# 统计当前 Linux 系统中可以登录计算机的账户有多少个
#方法 1:
grep "bash$" /etc/passwd | wc -l
#grep "bash$" /etc/passwd表示以bash结尾的行
#wc -l:统计行数
#方法 2:
awk -f: '/bash$/{x++}end{print x}' /etc/passwd
#-f: 指定分隔符为:
#//内为正则表达式
#x++每当发现一个以bash结尾的行,就给x加1
#end打印所得到的值
2.统计/var/log 有多少个文件,并显示这些文件名
#!/bin/bash
# 统计/var/log 有多少个文件,并显示这些文件名
# 使用 ls 递归显示所有,再判断是否为文件,如果是文件则计数器加 1
cd /var/log
sum=0
for i in `ls -r *`
#ls -r:递归
do
if [ -f $i ];then
let sum++
echo "文件名:$i"
fi
done
echo "总文件数量为:$sum"
3.自动为其他脚本添加解释器信息
#!/bin/bash
# 自动为其他脚本添加解释器信息#!/bin/bash,如脚本名为 test.sh 则效果如下:
# ./test.sh abc.sh 自动为 abc.sh 添加解释器信息
# ./test.sh user.sh 自动为 user.sh 添加解释器信息
# 先使用 grep 判断对象脚本是否已经有解释器信息,如果没有则使用 sed 添加解释器以及描述信息
if ! grep -q "^#!" $1; then #!为事件提示符
#grep -q用于if逻辑判断,如果找到了返回0,否则返回1
sed '1i #!/bin/bash' $1
#!/bin/bash是指此脚本使用/bin/bash来解释执行
sed '2i #Description: '
fi
# 因为每个脚本的功能不同,作用不同,所以在给对象脚本添加完解释器信息,以及 Description 后还希望
# 继续编辑具体的脚本功能的描述信息,这里直接使用 vim 把对象脚本打开,并且光标跳转到该文件的第 2 行
vim +2 $1
4.将文件中所有的小写字母转换为大写字母
#!/bin/bash
# 将文件中所有的小写字母转换为大写字母
# $1是位置参数,是你需要转换大小写字母的文件名称
# 执行脚本,给定一个文件名作为参数,脚本就会将该文件中所有的小写字母转换为大写字母
tr "[a‐z]" "[A‐Z]" < $1
5.非交互自动生成 SSH 密钥文件
#!/bin/bash
# 非交互自动生成 SSH 密钥文件
# ‐t 指定 SSH 密钥的算法为 RSA 算法;
#‐N 设置密钥的密码为空;
#‐f 指定生成的密钥文件>存放在哪里
rm -rf ~/.ssh/{known_hosts,id_rsa*}
ssh‐keygen -t RSA -N '' -f ~/.ssh/id_rsa