
Linux常见文本编辑器
- emacs
- nano
- gedit
- kedit
- vi
- vim
- 基本模式:普通、插入、可视、选择、命令行、Ex
- 派生模式:操作符等待模式、插入普通、插入可视、插入选择、替换模式;
- 其他:Evim
vim
移动光标:
- 上下左右 或 jkhl 向上下左右移动光标;
- 0 移动到行首;
- g0 移动到光标所在行行首;
- home/end:跳转到 行首/行尾。
- :n 移动到第n行;
- gg:回到文件头部;
- G:到文件底部;
数据操作:
- 复制
- yy 或 Y:复制整行文本;
- [n]yy:复制n行文本
- y[n]w:复制一{n}个单词;
- 粘贴(分为:一行数据、一个字段)
- p:粘贴在当前行下面/粘贴在光标后面;
- P:粘贴在当前行上面/粘贴在光标前;
- 删除
- d[n]w:删除(剪切)1{n}个单词;
- [n]dd:删除(剪切)1{n}行。
- 查找
- :/word 在光标之后查找字符串word,按n向后继续搜索,shift+n向上搜索;
- :?word 在光标之前查找字符串word,按n向后继续搜索;
- 替换
- :1,5s/word1/word2/g,将文档中1-5行word1替换为word2,不加g表示只替换每行第一个word1
- %s/word1/word2/gi,将文档所有word1替换为word2,不区分大小写;
- **/表示替换光标后的第一个word,?**表示替换光标前第一个word。
- 1,5 表示1-5行;
- %表示所有行;
- i表示不区分大小写。
- 撤销和重做
- u 撤销最近的改变;
- U 撤销当前行自从光标定位在上面开始的所有改变;
- ctrl-r 重做最后一次撤销。
- 复制
一些命令
- set nu:显示行编号;
- set nonu:隐藏行编号。
- set hlsearch: 高亮所有搜索结果
保存文件并退出
- 在插入模式下按esc退出插入模式
- :w 保存
- :q 退出
- :wq 保存并退出
- :q! 强制退出
- :wq! 强制保存并退出
查看文件cat
- cat是一个文本文件查看和链接工具;
- cat filename,查看文件内容;
- cat > filename,编辑一个文件;
- cat file1 file2 > file3,将几个文件合并为一个文件;
- 一个
>
表示覆盖,两个>>
表示追加。
- 常用选项;
- -n:从1开始对所有行编号并显示在每行开头;
- -b:对非空行编号;
- -s:当有多个空行,则只输出一个空行;
- -E:在每行结尾增加**$**;
- –help:显示帮助信息;
more
选项:
- +n,从第n行开始显示;
- -n,定义屏幕大小为n行;
- -c,从顶部清屏,然后显示;
- -s,把连续的多个空行显示为一行。
操作
- Enter:向下滚动一行;
- Ctrl+F:下一页;
- 空格:下一页;
- Ctrl+B:上一页;
- b:上一页;
- =:输出当前行号;
- q:退出
less
格式:less [option] 文件;
- -f:强制打开特殊文件,如外围设备代号,目录和二进制文件;
- -g:只高亮最后搜到的关键字;
- -i:忽略索索大小写;
- -N:显示每行行号;
- -s:当有多个空行在一起时只输出一个空行;
- -o <文件名>:将less输出的内容保存到指定文件;
操作:
/或?
:向上或向下搜索字符;- b:向上一页
- 空格 或 f:向下一页
- u:向上半页
- d:向下半页;
- y:向上一行;
- Enter:向下一行;
- h:帮助页面;
- q:退出;
文件摘选head
head用来显示文件开头到标准输出;
head默认显示前10行;
命令格式:head [option]… [file]…
选项:
- -q:输出时隐藏文件名,head默认不显示文件名;
- -v:显示文件名;
- -c num:显示前num个字节;
- -n num:显示前num行。
tail
显示文件末尾到标准输入,默认为文件后10行;
格式:tail [option]… [file]…
选项:
- -f:循环读取,对于日志文件的监控有用;
- -q:不显示文件名,tail默认不显示文件名;
- -v:显示文件名;
- -c num:显示文件最后num个字节;
- -n num:显示文件最后num行;
- -s:与-f结合使用,表示每次反复的时间间隔休眠s秒;
cut
提取列或字段;
1 | cut -d: -f1 /etc/passwd # 显示/etc/passwd文件以:间隔的第一列 |
格式:cut [option]… [file]
选项:
- -b:仅显示行中指定直接范围的内容;
- -c [范围]:仅显示行中指定范围的字符;
- -d:指定字段的分隔符,默认分隔符为TAB;
- -f [范围]:显示指定第num个字段的内容,可以用逗号隔开显示多个字段;
- 范围指定:
- N:每行第N个字节,字符或字段;
- N-:每行第N个字节、字符或字段到每行的末尾;
- -M:每行的第一个字节、字符或字段到每行的第M个;
- N-M:每行的第N到第M个字节、字符或字段;
用户
- Linux是一个多用户的操作系统;
- 一个系统可以建立多个用户,多个用户可以在同一时间内登录到同一系统执行不同的任务;
- 每个用户都会分配一个uid。
用户UID
- UID指的是用户的ID,一个用户UID标识一个给定用户,UID是用户的唯一标识符;
- 通过UID也可以区分不同用户的类别;
- 超级用户:也称root,它的UID为0,超级用户拥有系统的完全控制权;
- 普通用户:也称一般用户,UID在1000-60000之间,普通用户可以对自己目录下文件进行访问,也可对经过授权的文件进行访问;
- 虚拟用户:也称系统用户,UID为1-999,虚拟用户最大的特点是不提供密码登录系统,存在的目的是方便系统的管理。
- 通过id命令可以查看不同用户的uid;
- id [option] [user_name];
- id命令会输出:用户的有效ID,用户所在组的ID和用户所在的用户组
- 有效ID:系统用于区分用户对文件有效权限的UID
- 真实ID:系统在用户登录系统时对用户进行区分的UID;
- 通常情况下,有效ID与真实ID相同。
- 参数:
- -u,-user,只输出有效的uid;
- -g,只输出有效的gid
- -n,-name,对于-ugG选项输出名字而不是数值,需要配合-ugG选项使用;
- -r,-real,输出真实ID而不是有效id,需要配合-ugG选项使用;
- id [option] [user_name];
1 | [root@localhost ~]# id yyn |
用户管理命令
创建用户 useradd
创建用户账号,保存在/etc/passwd文件中;
语法:useradd [options] user_name
这里的用户名对大小写敏感,可以出现数字、字母、下划线和减号(减号不能放在首位)。
-u,指定用户UID;
-o,允许UID重复,需要配合-u属性;
-g,指明用户所属基本组,这里可以为组名,也可为GID(组必须存在);
-d,指定用户home目录,并自动创建用户home目录;
-M,不创建家目录;
-s,指明用户的默认shell程序;
- 默认为/bin/bash。
- 另外也可以有/usr/sbin/nologin;
-D,显示或更改默认配置。
1 | [root@localhost ~]# cat /etc/passwd | tail -n3 |
修改用户 usermod
修改用户账号的各类信息。
语法:usermod [options] user_name
- -u,修改用户UID;
- -g,修改用户所属用户组;
- -l,修改用户账号名称;
- -L,锁定指定用户,让其无法登录;
- -d,修改用户home目录;
- -s,修改用户默认shell程序;
1 | [root@localhost ~]# usermod -u 1003 yyn |
删除用户 userdel
删除指定的用户以及该用户相关的文件;
默认只删除用户,不删除用户相关文件。
语法:userdel [options] user_name
- -f,强制删除用户账号,即使用户当前处于登录状态;
- -r,删除用户,同时删除与用户相关的所有文件;
- -h,显示命令帮助信息;
修改密码 passwd
passwd修改用户密码。
语法:passwd [OPTION…] user_name
- -n,设置修改密码最短天数;
- -x,修改密码最长天数;
- -w,设置用户在密码过期前多少天收到警告消息;
- -1,立即让用户密码过期;
- -i,设置密码过期多少天后禁用账户;
- -l,立即锁定一个用户;
- -u,立即解除用户锁定;
- -d,删除用户密码,若用户处于锁定状态,会进行解锁;
- -s,显示用户密码信息。
root用户可以修改任何用户的密码,普通用户只能修改自己的密码。
与密码有关的配置文件都保存在/etc/login.dfs文件中,其中包含PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_WARN_AGE。分别表示:密码最长使用天数、密码两次修改最短间隔天数,密码过期前几天提醒用户。
- 若最短间隔天数为0,则表示任何时候都可以修改密码;
示例
1 | [root@localhost ~]# cat /etc/shadow | grep yyn |
查看用户密码信息
1 | [root@localhost ~]# passwd -S yyn |
创建用户
1 | [root@localhost ~]# useradd u1 |
修改用户用户名
1 | [root@localhost ~]# usermod -l u4 u3 |
修改用户家目录
1 | [root@localhost ~]# mkdir /home/aaaww |
其他
- 使用who查看登录用户的信息;
- id,查看用户信息;
用户组
- 具有相同特性用户的逻辑集合,通过组的形式使得具有相同特性的多个用户拥有相同的权限,便于管理;
- 每个用户都拥有自己的私有组;
- 同一组内所有游湖可以共享该组下的文件;
- 每个用户组都会被分配一个gid;
用户组GID
与UID类似,GID作为唯一标识符来标示一个用户组;
- 添加用户时,默认情况下回同时建立一个与用户同名且UID和GID相同的组;
- GID与UID为0,都表示超级用户组或超级用户;
- 系统预留一些较前的GID给虚拟用户(也称为系统用户)。
可以通过id [option] [user_name]
,查看用户组gid及每个用户组拥有的用户数量;
用户组分类
- 普通用户组:可以加入多个用户;
- 系统组:一般加入的用户为系统用户;
- 私有组:也称基本组,在创建用户时,若没有指明所属用户组,则会为该用户定义一个私有的用户组,且用户组名与用户名同名。
- 私有组在有其他用户加入时,就会变成一个普通用户组。
管理命令
创建组 groupadd
创建一个新的用户组,并将新用户组信息添加到系统文件中;
语法:groupadd [options] group_name
- -f,强制创建,
- 若组已存在,则不输出错误信息;
- -g,为新用户组指定GID;
- -o,允许创建拥有重复GID的组;
- -p,为新用户组使用加密过的密码;
- -r,创建一个系统账户;
- -h,展示帮助信息;
示例
1 | [root@localhost ~]# groupadd yynGroup |
修改用户组 groupmod
修改组gid或名称;
语法:groupmod [options] group_name
- -g,指定要使用的GID;
- -o,允许重复GID;
- -n,修改组名称;
- -p,修改密码;
- -h,展示帮助信息。
示例
修改用户组GID
1 | [root@localhost ~]# id yyn |
删除用户组 groupdel
删除用户组;
若用户组存在一些用户,需要先删除用户,才能删除用户组;
语法:groupdel [options] group_name
- -f,强制删除,可以解决一些无法删除的组;
- 如:一些私有组。
- -h,展示帮助信息;
关联用户和组 gpasswd
gpasswd添加或删除用户到组中。
语法:gpasswd [option] group_name
- -a,向组group中添加用户user;
- -d,从组group中删除用户;
- -M,向组添加多个成员;
- -A user1,…,设置组的管理员(可以有多个);
- -r,删除组密码;
- -R,限制用户登入组,只有组成员擦可以用newgrp加入该组;
- -Q,要chroot进的目录
示例
1 | [root@localhost ~]# gpasswd -a yyn yynGroup |
用户与组的关联文件
/etc/passwd:用户账号信息文件;
[root@localhost ~]# tail -1 /etc/passwd u2:x:1005:1005::/home/aaa:/bin/bash
1
2
3
4
5
6
7
8
9
10
11
12
- 用户名:密码:UID:GID:备注信息:HOME目录:默认SHELL
- /etc/shadow:用户账号信息加密文件;
- 存储密码信息;
- 只有root用户具有读权限;
- ```shell
[root@localhost ~]# tail -1 /etc/shadow
u2:!:19289:0:99999:7:::用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前警告天数:密码宽限时间:账号失效时间:保留字段
密码字段为!或*,表示用户当前无法登录;
用户组关联文件
/etc/group:组信息文件;
每一行记录代表一个用户组;
一个组中可以有多个用户,一个用户可以属于不同的组;
[root@localhost ~]# tail -1 /etc/group yynGroup:x:2235:yyn
1
2
3
4
5
6
7
8
9
10
- 组名:组密码:GID:组内用户列表
- /etc/gshadow:组信息加密文件;
- 保存组加密信息,如用户组管理密码;
- ```shell
[root@localhost ~]# tail -1 /etc/gshadow
yynGroup:!::yyn组名:组密码:用户组管理员:用户组附加用户
示例
向用户组添加用户。
1 | [root@localhost ~]# gpasswd -M u1,u2,yyn yynGroup |
指定GID,修改GID
1 | [root@localhost ~]# groupadd -g 1234 yynGroup2 |
文件权限
权限
权限时操作系统用来限制对资源访问的一种机制,权限分为:读、写、执行;
在Linux系统中,每个文件或目录都具有特定的访问权限,所属用户及所属组;
一个文件或目录有三种权限:文件属主的访问、用户组成员访问和系统中任何用户访问;
1 | [root@localhost ~]# ls -l |
连结数
- 若是一个文件,则表示当前文件的连结数量;
- 若是一个目录,则表示目录下的子目录数量,其中另包含“.”和”..”两个;
文件容量
- 对于一个文件,则表示文件字节大小;
- 对于一个目录,则表示目录符的大小,不包含其中的文件;
文件名
- 不同类型文件有不同颜色;
- 白色,普通文件;
- 蓝色,目录文件;
- 绿色,可执行文件;
- 青色,软链接文件;
- 红色,压缩文件;
- …
文件类型
- -:普通文件,除去其他6种类型文件;
- d:目录
- b:块设备文件,可随机存取装置;
- c:字符设备文件 -> 键盘、鼠标等一次性读取装置;
- l:符号链接文件;
- p:命名管道文件(piep)
- s:套接字文件(socket)
b和c一般出现在/dev目录下;
权限位说明
drwxr-xr-x
文件类型 | 属主权限 | 属组权限 | 其他用户权限 | |
---|---|---|---|---|
位置 | 0 | 1 2 3 | 4 5 6 | 7 8 9 |
表示 | d | r w x | r - x | r - x |
描述 | 目录文件 | 读 写 执行 | 读 写 执行 | 读 写 执行 |