1.取时间:date1=$(date --date='2 days ago' +%Y%m%d) # 前两天的日期
2.
echo -e "You SHOULD input 2 numbers, I will cross them! \n"
read -p "first number: " firstnu
echo -e:
-e enable interpretation of backslash escapes -e加上后\起到转义作用,比如\n代表回车read -p "提示字符 " var
3.计算+-x / %:
var=$((运算内容))
[root@www scripts]# echo $(( 13 % 3 ))
4.当子程序完成后,在子程序内的各项变量或动作将会结束而不会传回到父程序中,这和函数调用中的局部变量相似。
5.
在vim编辑器下,当想多窗口编辑文档时(或者复制别的文档的东西,或是对比),则可以在当前vim的命令模式下输入:
:sp 文件名
如果不输入文件名,则另开一个当前文档。
文档间的切换:
CTRL+w+w或者CTRL+w+(j / k)
gg:去到文档顶部
G:去到文档底部
0(数字0):去到当前行的行首
$:去到当前行的行尾
6.指令之后带有选项与参数:
Shell script 的默认变量($0, $1...),(可以对比windows下的带参数的控制台程序)
/path/to/scriptname opt1 opt2 opt3 opt4
$0 $1 $2 $3 $4
这样够清楚了吧?运行的脚本档名为 $0 这个变量,第一个接的参数就是 $1 啊~所以,只要我们在 script 里面善用 $1 的话,就可以很简单的立即下达某些命令功能了!除了这些数字的变量之外,我们还有一些较为特殊的变量可以在 script 内使用来呼叫这些参数喔!
- $# :代表后接的参数『个数』,以上表为例这里显示为『 4 』;
- $@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);
- $* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字节,默认为空白键,所以本例中代表『 "$1 $2 $3 $4" 』之意。
8.添加帐号:useradd 用户名
[root@localhost ~]# useradd vbird1
使用 useradd 创建使用者账号时,其实会更改不少地方,至少我们就知道底下几个文件:
- 用户账号与口令参数方面的文件:/etc/passwd, /etc/shadow
- 使用者群组相关方面的文件:/etc/group, /etc/gshadow
- 用户的家目录:/home/账号名称
- useradd 参考档
其实 useradd 的默认值可以使用底下的方法呼叫出来:
[root@www ~]# useradd -D GROUP=100 <==默认的群组 HOME=/home <==默认的家目录所在目录 INACTIVE=-1 <==口令失效日,在 shadow 内的第 7 栏 EXPIRE= <==账号失效日,在 shadow 内的第 8 栏 SHELL=/bin/bash <==默认的 shell SKEL=/etc/skel <==用户家目录的内容数据参考目录 CREATE_MAIL_SPOOL=yes <==是否主动帮使用者创建邮件信箱(mailbox) |
- HOME=/home:用户家目录的基准目录(basedir)
用户的家目录通常是与账号同名的目录,这个目录将会摆放在此配置值的目录后。所以 vbird1 的家目录就会在/home/vbird1/ 了!很容易理解吧!
- INACTIVE=-1:口令过期后是否会失效的配置值
我们在 shadow 文件结构当中谈过,第七个字段的配置值将会影响到口令过期后,在多久时间内还可使用旧口令登陆。这个项目就是在指定该日数啦!如果是 0 代表口令过期立刻失效,如果是 -1 则是代表口令永远不会失效,如果是数字,如 30 ,则代表过期 30 天后才失效。
- EXPIRE=:账号失效的日期
就是 shadow 内的第八字段,你可以直接配置账号在哪个日期后就直接失效,而不理会口令的问题。通常不会配置此项目,但如果是付费的会员制系统,或许这个字段可以配置喔!
- SHELL=/bin/bash:默认使用的 shell 程序文件名
系统默认的 shell 就写在这里。假如你的系统为 mail server ,你希望每个账号都只能使用 email 的收发信件功能,而不许用户登陆系统取得 shell ,那么可以将这里配置为 /sbin/nologin ,如此一来,新建的使用者默认就无法登陆!也免去后续使用usermod 进行修改的手续!
SKEL=/etc/skel:用户家目录参考基准目录
这个咚咚就是指定用户家目录的参考基准目录啰~举我们的范例一为例, vbird1 家目录 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的~所以呢,未来如果我想要让新增使用者时,该用户的环境变量 ~/.bashrc 就配置妥当的话,您可以到 /etc/skel/.bashrc 去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的家目录下就会有 www那个目录了!这样瞭呼?
除了这些基本的账号配置值之外, UID/GID 还有口令参数又是在哪里参考的呢?那就得要看一下 /etc/login.defs 啦!这个文件的内容有点像底下这样:
MAIL_DIR /var/spool/mail <==用户默认邮件信箱放置目录 PASS_MAX_DAYS 99999 <==/etc/shadow 内的第 5 栏,多久需变更口令日数 PASS_MIN_DAYS 0 <==/etc/shadow 内的第 4 栏,多久不可重新配置口令日数 PASS_MIN_LEN 5 <==口令最短的字符长度,已被 pam 模块取代,失去效用! PASS_WARN_AGE 7 <==/etc/shadow 内的第 6 栏,过期前会警告的日数 UID_MIN 500 <==使用者最小的 UID,意即小于 500 的 UID 为系统保留 UID_MAX 60000 <==使用者能够用的最大 UID GID_MIN 500 <==使用者自定义组的最小 GID,小于 500 为系统保留 GID_MAX 60000 <==使用者自定义组的最大 GID CREATE_HOME yes <==在不加 -M 及 -m 时,是否主动创建用户家目录? UMASK 077 <==用户家目录创建的 umask ,因此权限会是 700 USERGROUPS_ENAB yes <==使用 userdel 删除时,是否会删除初始群组 MD5_CRYPT_ENAB yes <==口令是否经过 MD5 的加密机制处理
要注意的是,系统给予一个账号 UID 时,他是 (1)先参考 UID_MIN 配置值取得最小数值; (2)由 /etc/passwd 搜寻最大的 UID 数值,将 (1) 与 (2) 相比,找出最大的那个再加一就是新账号的 UID 了。我们上面已经作出 UID 为 700 的 vbird2 ,如果再使用『 useradd vbird4 』时,你猜 vbird4 的 UID 会是多少?答案是: 701 。所以中间的 505~699 的号码就空下来啦!
而如果我是想要创建系统用的账号,所以使用 useradd -r sysaccount这个 -r 的选项时,就会找『比 500 小的最大的那个 UID + 1 』就是了
使用 useradd 这支程序在创建 Linux 上的账号时,至少会参考:
- /etc/default/useradd
- /etc/login.defs
- /etc/skel/*
《鸟哥》

被折叠的 条评论
为什么被折叠?



