重定向
1、cd -切换至以前的工作目录
~+表示当前目录;~-表示上一次的目录
2、重定向
标准输入(STDIN )-0 默认接受来自键盘的输入
标准输出(STDOUT )-1 默认输出到终端窗口
标准错误(STDERR )-2 默认输出到终端窗口
> 把STDOUT 重定向到文件
2> 把STDERR 重定向到文件
&> 把所有输出重定向到文件
( ) :合并多个程序的STDOUT
( cal 2007 ; cal 2008 ) > all.txt
举例:
标准输出和错误输出各自定向至不同位置:
COMMAND > /path/to/file.out 2> /path/to/error.out
标准输出和错误输出定向至相同位置:
COMMAND > /path/to/file.out 2>&1
COMMAND >> /path/to/file.out 2>>&1
3、tr命令
tr – 转换和删除字符
vtr [OPTION]... SET1 [SET2]
v 选项:
-c 或——complerment :取字符集的补集
-d 或——delete :删除所有属于第一字符集 的字符
-s 或—squeeze-repeats :把连续重复的字符以单独一个字符表示
-t 或--truncate-set1 :将第一个字符集对应字符转化为第二字符集对应的字符
在使用tr命令时,可以通过输入重定向进行文件的输入,无需手动进行键盘的输入。例如:tr “a-z” “A-Z” < /etc/issue
使用“<< 终止词”命令从键盘把多行重导向给STDIN,直到 终止词 位置的所有文本都发送给STDIN,有时被称为就地文本(heretext)
例子:$ mail -s "Please Call" admin@magedu.com <<END
> Hi Wang,
>
> Please give me a call when you get in. We may need
> to do some maintenance on server1.
>
> Details when you're on-site,
> Zhang
> END
4、|管道
管道(使用符号“| ”表示)用来连接命令,符合linux的思想,利用许多小程序完成大的复杂的程序。
命令1 | 命令2 | 命令3 | …
(1)将命令1 的STDOUT 发送给命令2 的STDIN ,命令2的 的
STDOUT 发送到命令3 的STDIN,以此循环下去
(2)STDERR 默认不能通过管道转发,可利用2>&1 或 或 |& 实现,命令为:ls /error 2&1 | tr “a-z” “A-Z”或者ls /error |& tr “a-z” “A-Z”
(3)最后一个命令会在当前shell 进程的子shell 进程中执行用来,我们执行复杂命令可通过连接多个命令实现。例如: less :一页一页地查看输入:
$ ls -l /etc | less
mail: : 通过电子邮件发送输入:
$ echo "test email" | mail \
-s "test" user@example.com
vlpr :把输入发送给打印机
$ echo "test print" | lpr -P printer_name
结合使用tee命令,既可以使用导入至下一个命令执行,又可以显示在屏幕上。例如: ls |tee f4|tr “a-z” “A-Z ”
知识点小结:
(1)链接数=文件“名字数”
(2)cp -f相当于删除并覆盖
(3)uname -r显示内核信息
(4)两条命令的重定向需要将两个命令括起来。
tee echo ls |tee filename
(5)set +C取消锁定,允许覆盖
set -C锁定。禁止将内容覆盖至原文件,但可追加强制覆盖 >|
(6)chsh -s /bin/bash wang 改shell类型
(7)getent passwd 用户名:root:x:0:0:root:/root:/bin/bash
(8)whoami 得到的结果:root
who am i 得到的结果:root pts/0 2016-08-01 08:34 (10.1.44.1)
(9)生成随机数的命令:openssl rand -base64 22
(10)linux w 命令
详解功能说明:显示目前登入系统的用户信息。
语法:w [-fhlsuV][用户名称]
linux w 命令补充说明:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行linux w 命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
linux w 命令参数:
-f 开启或关闭显示用户从何处登入系统。
-h 不显示各栏位的标题信息列。
-l 使用详细格式列表,此为预设值。
-s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
-u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。
-V 显示版本信息。
用户组管理
一、 用户
1、UID
Linux 用户:Username/UID
v 管理员:root, 0
v 普通用户:1-65535
系统用户:1-499 (CENTOS6 ), 1-999
对守护进程获取资源进行权限分配
登录用户:500 (CENTOS6 )+, 1000+
交互式登录
2、密码
/etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)
/etc/shadow:用户密码及相关属性
3、用户管理
(1)useradd用户创建
useradd [options] LOGIN
-u UID : [UID_MIN, UID_MAX] 定义在/etc/login.defs
-o 配合-u 选项,不检查UID 的唯一性
-g GID :指明用户所属基本组,可为组名,也可以GID
-c "COMMENT" :用户的注释信息
-d HOME_DIR: 以指定的路径( 不存在) 为家目录
-s SHELL : 指明用户的默认shell 程序
可用列表在/etc/shells 文件中
-G GROUP1[,GROUP2,...] :为用户指明附加组,组必须事先存
在
-N 不创建私用组做主组,使用users 组做主组
-r: 创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000
默认值设定:/etc/default/useradd 文件中
显示或更改默认设置:
useradd -D
useradd –D -s SHELL
(2)usermod 用户属性修改
usermod [OPTION] login
-u UID: 新UID
-g GID: 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加
组将会被覆盖;若保留原有,则要同时使用-a 选项,表示append; ;
-s SHELL :新的默认SHELL; ;
-c 'COMMENT' :新的注释信息;
-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移
动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m 选项
-l login_name: 新的名字;
-L: lock 指定用户, 在/etc/shadow 密码栏的增加 !
-U: unlock 指定用户,将 将 /etc/shadow 的 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;
(3)userdel用户删除
userdel [OPTION]... login
-r: 删除用户家目录;
4、用户组管理
v 群组名称:就是群组名称
v 群组密码:通常不需要设定,密码是被记录在/etc/gshadow
v GID的 :就是群组的 ID。不创建更安全
v 以当前组为附加组的用户列表(
v 组管理员列表:组管理员的列表,更改组密码和成员
(1)groupadd创建组
groupadd [OPTION]... group_name
-g GID: 指明GID 号;[GID_MIN, GID_MAX]
-r: 创建系统组;
CentOS 6: ID<500
CentOS 7: ID<1000
(2)groupmod用户组属性修改
组属性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID;
(3)groupdel用户组删除
groupdel GROUP
(4)更改和查看组成员
groupmems [options] [action]
options:
-g, --group groupname 组 更改为指定组 ( 只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
v groups [OPTION].[USERNAME]... 查看用户所属组列表
本文转自 ping9527 51CTO博客,原文链接:http://blog.51cto.com/babyhanggege/1832860,如需转载请自行联系原作者