vim文本编辑器;管道和文件重定向;用户和组管理

第二周知识总结

  第二周主要学习了文本编辑工具vim,vim支持强大的文本编辑功能,需要掌握其常用的一些功能,标准IO和管道,,以及用户组和权限管理。

一.文本编辑工具vim

1.文本编辑工具

vi: Visual editor,  文本编辑器
文本:ASCII, Unicode
文本编辑种类:行编辑器:sed
全屏编辑器:nano, vi,vim

2.模式编辑器

三种主要模式:
1.命令(Normal)模式:
默认模式,移动光标,剪切/粘贴文本
2.插入(Insert)或编辑模式:修改文本
3.扩展命令(extended command )模式:保存,退出等
Esc键 退出当前模式,
Esc键 Esc键 总是返回到命令模式

3.常用命令

1.关闭文件
1.1.扩展命令模式:
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
1.2.命令模式
ZZ 保存退出
ZQ 不保存退出
2.扩展命令模式
按“:”进入Ex模式
2.1.创建一个命令提示符: 处于底部的屏幕左侧
2.2.常见命令
w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
q 退出
q! 不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
3.命令模式命令
3.1.行间移动:
#G 或者扩展命令模式下:# 跳转至由第#行
G 最后一行
1G, gg 第一行
句间移动:) 下一句 ( 上一句
段落间移动:} 下一段 { 上一段
3.2.字符编辑:
x 删除光标处的字符
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
J 删除当前行后的换行符
替换命令(r, replace)
r 替换光标所在处的字符
R 切换成REPLACE模式
3.3.删除命令:
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw
de
db
#COMMAND
dd:删除光标所在的行
#dd 多行删除
D:从当前光标位置一直删除到行尾,等同于d$
4.扩展命令模式
4.1.地址定界
/pattern/ 匹配pattern的行
 /pat1/,/pat2/
从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/
/pat/,$
 使用方式:后跟一个编辑命令
dy
w file: 将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容
4.2.查找和替换
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
在扩展命令模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可
以使用“&”引用前面查找时查找到的整个内容

修饰符:
i 忽略大小写
g 全局替换,默认情况下,每一行只替换第一次出现
gc 全局替换,每次替换前询问
 查找替换中的分隔符/可替换为其它字符
[email protected]/[email protected]/[email protected]
s#/boot#/#i

二.标准IO和管道

1.标准输入和输出

1.1.打开的文件都有一个fd: file descriptor (文件描述符)

?Linux给程序提供三种 I/O 设备
?标准输入(STDIN)-0 默认接受来自键盘的输入
?标准输出(STDOUT)-1 默认输出到终端窗口
?标准错误(STDERR)-2 默认输出到终端窗口
?I/O重定向:改变默认位置

1.2. 把输出和错误重新定向到文件

STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
\> 把STDOUT重定向到文件
2\> 把STDERR重定向到文件
&> 把所有输出重定向到文件
\> 文件内容会被覆盖
set -C 禁止将内容覆盖已有文件,但可追加
\>| file 强制覆盖
set +C 允许覆盖
\>> 原有内容基础上,追加内容

1.3. 把输出和错误重新定向到文件

2> 覆盖重定向错误输出数据流
?2>> 追加重定向错误输出数据流
?标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out
?合并标准输出和错误输出为同一个数据流进行重定向
&> 覆盖重定向
&>> 追加重定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)
COMMAND >> /path/to/file.out 2>&1
? ():合并多个程序的STDOUT
( cal 2007 ; cal 2008 ) > all.txt

2.tr命令

tr 转换和删除字符
?tr [OPTION]... SET1 [SET2]
?选项:
-c –C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
[:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符
[:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符
[:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母
[:xdigit:]:十六进制字符

3.管道

管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
?将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的
STDIN
?STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
?最后一个命令会在当前shell进程的子shell进程中执行
?组合多种工具的功能
ls | tr ‘a-z’ ‘A-Z’
less :一页一页地查看输入
ls -l /etc | less
?mail: 通过电子邮件发送输入
echo "test email" | mail -s "test" [email protected]
?bc:算术运算
echo "2^3" |bc

三.用户组和权限管理

1.组的类别

 Linux组的类别
用户的主要组(primary group)
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,私有组
用户的附加组(supplementary group)
一个用户可以属于零个或多个辅助组

2.用户和组的配置文件

Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性

3.用户和组的管理命令

3.1.用户创建:useradd

useradd [options] LOGIN
-u UID
-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
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户

3.2.用户属性修改

usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被
覆盖;若保留原有,则要同时使用-a选项
-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.3.修改用户密码

3.3.1.设置密码

passwd [OPTIONS] UserName: 修改指定用户的密码
?常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码

3.3.2.修改密码

chage [OPTION]... LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-l 显示密码策略

3.4.组管理命令

3.4.1.groupadd [OPTION]... group_name

-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组

3.4.2.修改和删除组

组属性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
?组删除:groupdel
groupdel GROUP

3.4.2.更改组密码

组密码:gpasswd
?gpasswd [OPTION] GROUP
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
?newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码

3.4.2.更改组密码

groupmems [options] [action]
options: -g, --group groupname 更改为指定组 (只有root)
actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
?groups [OPTION].[USERNAME]... 查看用户所属组列表

3.5.文件权限

3.5.1.修改文件属主和属组

修改文件的属主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法说明:
OWNER
OWNER:GROUP
:GROUP,冒号也可用 . 替换
-R: 递归
chown [OPTION]... --reference=RFILE FILE...
?修改文件的属组:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归

3.5.2.文件权限

文件:
r 可使用文件查看类工具获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程
目录:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件
x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X 只给目录x权限,不给文件x权限
文件权限操作命令:chmod
文件权限(rwx|X)

修改文件权限
chmod [OPTION]... OCTAL-MODE FILE...
-R: 递归修改权限
?chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + - ?chmod [OPTION]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE的修改为同RFILE

3.6.文件特殊权限

3.6.1.可执行文件上SUID权限

  任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有
执行权限
?启动为进程之后,其进程的属主为原程序文件的属主
?SUID只对二进制可执行程序有效
?SUID设置在目录上无意义
?权限设定:
chmod u+s FILE...
chmod u-s FILE...

3.6.2.SGID权限

3.6.2.1.可执行文件上SGID权限

  任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有
执行权限
?启动为进程之后,其进程的属组为原程序文件的属组
?权限设定:
chmod g+s FILE...
chmod g-s FILE...

3.6.2.2.目录上的SGID权限

  默认情况下,用户创建文件时,其属组为此用户所属的主组 ?一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件
所属的组为此目录的属组
?通常用于创建一个协作目录
?权限设定:
chmod g+s DIR...
chmod g-s DIR...

3.6.3.Sticky 位

  具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限
或拥有权
?在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
?sticky 设置在文件上无意义
?权限设定:
chmod o+t DIR...
chmod o-t DIR...

3.7.访问控制列表

3.7.1.ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
ACL生效顺序:所有者,自定义用户,自定义组,其他人
为多用户或者组的文件和目录赋予访问权限rwx
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -m g:admins:rw file| directory
setfacl -x u:wang file |directory
setfacl -b file1 清除所有ACL权限
getfacl file1 | setfacl --set-file=-  file2 复制file1的acl权限给file2

3.7.2.mask

mask只影响除所有者和other的之外的人和组的最大权限
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective
Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效
setfacl -m mask::rx file
--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含
UGO的设置,不能象-m一样只是添加ACL就可以

原文地址:https://blog.51cto.com/14451166/2426433

时间: 2024-10-10 18:53:21

vim文本编辑器;管道和文件重定向;用户和组管理的相关文章

Linux命令-vim文本编辑器|文件查找

一.vim文本编辑器 vi      vim      emacs   gedit ---------------------------------------------------------------------------------------- [[email protected] Desktop]# whereis vi vi: /bin/vi /usr/share/man/man1p/vi.1p.gz/usr/share/man/man1/vi.1.gz [[email pr

vim 文本编辑器、shell脚本:

vim 文本编辑器:    三种主要模式:        命令模式(默认):移动光标,剪切/粘贴文本        插入(编辑)模式:修改文本 输入i 进入插入模式        扩展模式:保存,退出等        快键           i: insert, 在光标所在处输入        I:在当前光标所在行的行首输入        a: append, 在光标所在处后面输入        A:在当前光标所在行的行尾输入        o: 在当前光标所在行的下方打开一个新行      

Linux命令行下的vim文本编辑器

Linux命令行下的vim文本编辑器 vim文本编辑器是一个非常强大的工具,可以做很多事情,比如新建文件,打开文件,编辑文件,保存文件,同时打开多个文件等.下面总结一些常用的vim 编辑器命令: 1. 进入vim编辑器的方式:(进入vim编辑器时,默认的模式是“命令模式”) 在终端输入 vi:进入vim编辑器 vi filename:进入vim编辑器,新建了一个filename文件,光标定位到文件的第一行 vi在工作时,会在当前目录下创建.swp的临时文件,该临时文件也称为交换文件 当vi结束对

vim 文本编辑器

Linux VIM文本编辑器 vim概述 Linux提供了一系列功能强大的编辑器,如vi和ASCIItext,Unicode 是linux系统的第一个全屏幕交互式编辑器.vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interface"的缩写,vim是vi IMproved(增强版的vi).在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim.vim有3种工作模式,分别是命令行模式.插入模式.底行模式.  命令行模式: 最初进入的一

Vim 文本编辑器的基本使用

Vim文本编辑器是Linux/Unix系统下最常用的工具之一,通过该工具可以很方便的建立.修改.编辑文档或者程序文件,其作用类似与windows系统下的记事本或者notepad++,因此熟练掌握该工具的使用对于使用linux系统是非常有必要的.通过本文记录Vim编辑器的基本使用方法,用以强化记忆或者以备以后复习.(cat与<<EOF结合也可以实现编辑器的部分功能,可以生成和编辑文档:cat >log.txt <<EOF) 主要参考资料有: 1.<鸟哥的Linux私房菜&

linux综合顺练(涉及管道,正则,重定向、用户及组管理、权限管理等相关知识点)

一.概述   本博文是对前边总结的知识点的一个综合利用,涉及的知识点比较广泛,涉及的大概有"bash特性之管道","bash特性之重定向","grep命令与正则表达式的利用","linux下用户与组管理","linux下权限管理"等.下面给出上边提到知识点之前的博客链接: bash的重定向和管道相关知识点:http://blog.51cto.com/9657273/2172717 文件基础管理类命令汇总:h

Linux系统 vi/vim文本编辑器

Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件.vim或者vi文本编辑是Linux下最常用的编辑器.vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了很多实用的功能. 大多数的linux/unix 发行版本中都使用

linux中vim文本编辑器

vim文本编辑器 1:vim文本编辑器是什么? Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件.  (来自百度百科) 2:vim 编辑文件 vim 文件名    #保存后即可建立一个文件 3:vim 的四种模式 (1)正常模式:主要用来浏览和修改文本内容的,一般的,打开Vim都是正常模式.在任何模式下,只要按下 Esc 键就可以返回正常模式. (2)插入模式:插入模式则用来向文本中添加内容的 -------------- gg

vim文本编辑器和yum的搭建

rpm -ivh  软件名-版本信息-.rpm  (安装软件)   rpm -q 软件名   (查看软件是否安装)   rpm -e 软件名    (卸载转件)   因为rpm有依赖关系而yum刚好解决此问题        使用vim创建/修改文本文件     vim文本编辑器      命令模式  (i)插入模式  (ctrl+:)末行模式      在末行模式下,输入:wq 保存并退出                    输入:q! 强制退出      vim 命令模式下   (数字)+y

vim文本编辑器基本命令

今天给大家介绍vim文本编辑器中的一些基本命令和命令实例.·本章介绍1.基本概念2.三种模式基本操作 ------------概念简介----------- Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件.Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体. 文本编辑器的作用创建和修改文本文件维护Linux系统中的各种配置文件 Linux中最常用的文本编辑器vi:类UNIX操作系统的默认文本编