1、/dev/null
在Unix和类Unix操作系统(包括Linux)中,/dev/null是一个特殊的文件,被称为“空设备”或“空设备文件”。这个文件会丢弃所有写入到它的数据,就好像一个黑洞一样。当你读取/dev/null时,它立即返回一个文件结束(EOF)标记。
在命令行操作中,/dev/null常常被用来丢弃不需要的输出。例如,如果你运行一个命令,但是并不关心这个命令的输出,你就可以将输出重定向到/dev/null,这样命令的输出就会被丢弃,不会显示在终端或者写入到其他文件。
例如,在command > /dev/null这个命令中,>符号表示重定向,即将command命令的标准输出(通常就是命令的运行结果)重定向到/dev/null,从而丢弃这个输出。
同样,你也可以使用2> /dev/null来丢弃错误输出,或者使用&> /dev/null来丢弃所有输出(包括标准输出和错误输出)。
在Unix和类Unix的shell中,2和&是特殊的符号,用于在重定向时指定要重定向的数据流。它们的含义如下:
1:表示标准输出(stdout)2:表示标准错误输出(stderr)
当你执行一个命令时,有两种主要的输出流:标准输出(stdout)和标准错误输出(stderr)。标准输出通常包含命令的主要结果,而标准错误输出则包含了错误信息。2>就是将标准错误输出重定向到某个文件。
&: 在重定向中,&表示“所有的”。所以,&>表示将所有的输出(包括标准输出和标准错误输出)都重定向到某个文件。
例如,command 2> /dev/null会将command的错误输出丢弃,而command &> /dev/null则会将command的所有输出都丢弃。
2、查询用户和创建用户
查询一个用户是否存在:id root
查看上一次的返回结果:$?
$ id root
uid=0(root) gid=0(root) 组=0(root)
$ echo $?
0
$ id cat
id: "cat": no such user
$ echo $?
1
上面的例子可以看出,root用户是存在的,返回值是0,cat用户不存在,返回值是1.
shell中,"非"的逻辑运算符为 "!" ,那么,用逻辑运算公式表示上面的两句话,如下
! true = false
! false = true [ ! false ] 返回 true。
"非"是比较容易理解的,在shell中,"与"和"或"有两种表达方式。
在shell中,"与"的运算符为"-a",同时,"与"的逻辑运算符也可以用"&&"表示。
在shell中,"或"的运算符为"-o",同时,"或"的逻辑运算符也可以用"||"表示。
useradd命令是Linux系统中用于创建新用户的命令。它的作用是在系统中创建一个新的用户账号,并指定该用户的相关属性和配置。
通过useradd命令,管理员可以在Linux系统中添加新的用户账号。每个用户账号都有一个唯一的用户名和用户ID(UID),用于标识该用户在系统中的身份。创建用户账号时,可以指定用户名、UID、所属组、主目录、登录Shell等属性。
用户账号创建后,可以使用passwd命令为该账号设置密码。
#!/bin/bash
for USER in user{1..5}; do
if ! id $USER &>/dev/null; then
PASS=$(echo $RANDOM | md5sum | cut -c 1-8)
useradd $USER
echo $PASS | passwd --stdin $USER &> /dev/null
echo -e "$USER\t$PASS" >> user_file
echo "$USER create success"
else
echo "$USER already exists"
fi
done
$ sudo ./create_user.sh
user1 create success
user2 create success
user3 create success
user4 create success
user5 create success
$ cat user_file
user1 0b4a30a9
user2 6f50f8f3
user3 3065da62
user4 6ea3fb44
user5 92680ee2