文章目录
用户切换
- linux是多用户的、多进程的操作系统,通常多个用户之间需要来回切换;
- su,switch user 命令
- 参数 - , 切换用户,同时切换工作目录(为目标用户的家目录)
- 参数 -c cmd,切换到目标用户,执行一条指令,然后切回原用户;
- 参数 -m -p ,保持原用户的环境变量;
- 参数 -l,重新登录该用户;
- 参数 user,需要切换的用户
- 命令案例
# 切换到 jack 用户
su jack # 不切工作路径
su - jack # 切换工作路径和环境变量
# lauf 用户下 切到root(同时切工作路径) 执行pwd, 然后切回lauf
su -c pwd - root
# 需要输入root密码
# 切换到root账户
sudo -s # 输入当前用户的密码
su root # 输入root 密码
流编辑器sed
- stream editor, 简称sed;
- 将文件或者标准输入内容放入模式(内存)空间,进行编辑,然后输出;
- 选项
- -n 抑制流编辑器的输出;
- -i 原位修改,加 [后缀]时进行备份;默认不在源文件中修改
- -e 表达式
- -r 扩展的正则表达式
- -f 执行脚本文件 myscript.sh,将表达式写在脚本中,用脚本来处理文件;
- -l 行的长度
- 表达式
- s 替换,将匹配的内容替换为指定内容;
- d 删除,删除匹配到的行;若删除部分字符,用替换;
- a 增加,增加内容;
- i 插入,插入内容;
- c 替换,将匹配到的行整体替换为指定内容;
- p 打印,打印输出;
- = 输出行号;
# 处理文件,将一个或者多个文件的内容,读入模式空间,逐行处理;
sed -n -e 'expression1' -e 'expression2' file1 file2
# 打印a.txt的内容
sed -n -e 'p' a.txt
# 打印a.txt的指定行
sed -n -e '1,${p}' a.txt
sed -n -e '1,3p' a.txt
# 打印a.txt的内容,并输出行号
sed -n -e '1,${=;p}' a.txt
# 输出非注释的行
sed -n -e '/^#/!{=;p}' a.txt
# 输出非注释、非空行、不匹配jack的行
sed -n -e '/^#/!{/^$/!{/jack/!{=;p}}}' a.txt
# 替换
# 准备文件b.txt,如下图
sed -n -e 's/name/name111/p'