vim文本编辑器
命令模式
dd
:删除(剪切)光标所在整行
ndd
:删除(剪切)从光标开始的n行
yy
:复制光标所在整行
n
yy
:复制从光标处开始的n行
n
:显示搜索命令定位的下一个字符串
N
:显示搜搜命令定位到的上一个字符串
u
:撤销上一步操作
p
:将之前删除(dd)或复制(yy)过来的数据粘贴到光标后面
?
work
:查找work。从下往上搜索work这个字符串。
/
work
:查找work。从上往下搜索work这个字符串。
输入模式
a
:在光标所在字符后插入
i
:在光标所在字符前插入
o
:在光标下插入新行
A
:在光标所在行尾插入
I
:在光标所在行首插入
末行模式
:q
:退出
:w
:保存
:q!
:强制退出(不保存)
:wq!
:强制保存退出
:set
nu
:显示行号
:set
nonu
:隐藏行号
:行号
:定位到该行
:命令
:执行该命令
:整数
:跳转到该行
:
n1
,
n2
s
/word1
/word2
/gc
:从n1行到n2行的字符串,将word1替换为word2。gc表示是否确认替换的询问肯定回答。
定位
gg
:到第一行
G
:到最后一行
nG
:到n行
$
:行尾
0
:行首
查找
eg:例如要查找
/boot
因为
/
有特殊含义,所以需要使用\
将其转换为一个普通字符
:
?
\/boot
eg:例如查找特殊单词
io
\<io\>
向上查找
:?
向下查找
:/
查找后定位到下一个字符(
n
),上一个字符(N
)
替换
:n1,n2s/word1/word2
将n1到n2行的字符串中的word1替换为word2
替换前询问是否替换
:n1,n2s/word1/word2/gc
恢复
撤销快捷键:Ctrl
+r
vim崩溃恢复:
if(vim.崩溃==true){ 恢复文件(.xxxx.swp){ R; } }
文件系统架构
文件通配符
只能匹配非隐藏文件
快速创建多个文件
touch 文件名{num1..num2}
实例:Practice
目录管理
创建目录
mkdir
文件夹名称
嵌套创建目录
mkdir
-p
dirA
/
dirB
mkdir
-p
dirA
/
dir{x,y}
复制文件cp
如果复制文件夹,需要添加参数 -r
如果存在同名文件,需要添加参数-i
删除文件rm
删除目录 -r
全部删除 -f
移动文件mv
-i
交互式操作,如果文件存在,出现覆盖情况会先询问,要求用户回答以避免误操作覆盖文件
-f
禁止交互式操作,覆盖也不会给出提示
归档管理tar
gzip
tar
-c
创建压缩文件
-x
解压
-t
查看压缩包内文件
-z
用Gzip压缩或者解压
-j
用bzip2压缩或者解压
-v
显示压缩或者解压的过程
-f
目标文件名
-p
保留原始属性与权限
-P
使用绝对路径来压缩
-C
解压到指定目录
创建压缩包 tar -zcvf fileName filePwdAndName
解压 tar -zxvf fileName
gzip
-c
把压缩后的文件输出到标准输出设备,不去更动原始文件
-d
将压缩文件解压
-数字
压缩效率是介于1-9的数值,预设值为6,指定越大的数值,压缩率越高
Linux文件安全模型
用户组
相同特征的用户集合。用户组作为用户容器,方便管理用户
文件类型 | 文件属主 | 同组用户 | 其他用户 |
d(目录文件) |
r(读) w(写) x(执行) |
||
-(非目录文件) |
链接数:可来到该文件的所有路径
用户名:
组名:
文件大小:
文件修改日期:
文件名:
字符设备:一个字节一个字节读写(鼠标,键盘,LED设备等)
修改所属用户和用户组chown
只能有用户本身或超级用户才能去修改文件的权限
chown [参数] 属主[:组] 文件或者目录
同时修改目录及其子目录所属用户和用户组
chown -R root:root 文件夹名称
读取4,写入2,执行1
所有者、用户组,公共
修改文件或者目录的权限 chmod
chmod g- rx,o- rx 文件夹名称
u
:所属用户
g
:用户组
o
:公共
-
:减去权限
+
:增加权限
=
:赋予新的权限(覆盖旧的权限)
r
:4
w
:2
x
:1
组、用户组、存储文件
/etc/passwd
内容包括:用户名 | 用户ID | 用户主组ID | 家目录 | 用户Shell
字段意义:(书上也有)
序号 | 说明 | 备注 |
1 | 用户组名 | |
2 | 组密码 | 没有太大作用,一般都显示“x”字符(实际密码存放在:/etc/gshadow 文件夹中) |
3 | GID | 用户组ID,GID是用户组的唯一标识 |
4 | 组中附加用户 | |
/ect/shadow
字段 | 说明 | 备注 |
用户名 | ||
加密密码 | ||
密码最后一次修改日期 | ||
两次密码修改间隔时间 | ||
密码有效期 | ||
密码修改到期前的警告天数 | ||
密码过期后的宽限天数 | ||
账号失效时间。留空则永不失效 | ||
/ect/gshadow
/ect/gshadow 是 ect/passwd的影子文件,二者互补
useradd命令
作用:添加用户。默认创建与用户同名的组
-u
UID
-d
家目录
-g
用户组
-b, --base-dir BASE_DIR 指定新账户的家目录;
-c, --comment COMMENT 新账户的 GECOS 字段;
-d, --home-dir HOME_DIR 新账户的主目录;
-D, --defaults 显示或更改默认的 useradd 配置;
-e, --expiredate EXPIRE_DATE 新账户的过期日期;
-f, --inactive INACTIVE 新账户的密码不活动期;
-g, --gid GROUP 新账户主组的名称或ID;
-G, --groups GROUPS 新账户的附加组列表;
-h, --help 显示此帮助信息并推出;
-k, --skel SKEL_DIR 使用此目录作为骨架目录;
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值;
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库;
-m, --create-home 创建用户的主目录;
-M, --no-create-home 不创建用户的主目录;
-N, --no-user-group 不创建同名的组;
-o, --non-unique 允许使用重复的 UID 创建用户;
-p, --password PASSWORD 加密后的新账户密码;
-r, --system 创建一个系统账户;
-R, --root CHROOT_DIR chroot 到的目录;
-s, --shell SHELL 新账户的登录 shell;
-u, --uid UID 新账户的用户 ID;
-U, --user-group 创建与用户同名的组;
-Z, --selinux-user SEUSER 为SELinux 用户映射使用指定 SEUSER。
id
id 用户名
查询用户信息
usermod
修改组
添加扩展组
usermod -G 扩展组 用户名
usermod -u {ID} -g {初始组} -G {扩展组} {用户名}
passwd
-l 锁定用户,禁止登陆
-u 解锁
-S 查看状态
echo '密码' | passwd --stdin 用户名
userdel
-r 删除和用户相关的目录例如用户家目录
groupadd
创建用户组
-r :系统用户组
让渡用户权限
1./etc/sudoers
文件类型:文本文件
打开方式:visudo
2.字段
字段 | 说明 |
1 | 授权给用户或者用户组。①不以%开头的表示“被授权的用户”,eg:root | ②以%开头的表示“被授权用户组”,eg:wheel |
2 | 允许登陆的主机。 |
3 | 授权哪些用户或用户组的权限 |
4 | 执行指定指令时是否需要输入当前用户密码(不需要 则写:NOPASSWD: ) |
5 | 授权给用户的命令。多个命令逗号(英文输入状态下)隔开 |
注意事项:
1.命令要使用绝对路径(可以通过
whereis
查询命令路径)
<用户名> <权限> <切换sudo时是否需要输入密码> 添加记录
重定向和管道
一、输入输出重定向
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可以从其他文件或命令中输入
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕
错误输出重定向(STDERR,文件描述符2):默认输出到屏幕
文件描述符是一个非负整数,用于指代被打开的文件,所有与文件读写相关的系统调用都是通过文件描述符调用起来的。
符号 | 作用 | 备注 |
命令 > 文件 | 标准输出重定向到一个文件中(会清空原有文件数据) | 命令 1> 文件 |
命令 2> 文件 | 错误输入重定向到一个文件中(会清空原有文件数据) | |
命令 >> 文件 | 标准输出重定向到一个文件中(会追加到原有文件数据后) | 命令 1>> 文件 |
命令 2>> 文件 | 错误输出重定向到一个文件中(会追加到原有文件数据后) | |
命令 >> 文件 2>&1 | ||
命令 &>> 文件 |
标准输入错误重定向到回收站:命令 2>/dev/null
输入重定向
统计文本文件行数
wc -l < stderr.txt
-l
-w
-c
二、简单过滤器命令
查
more
head -行数 文件名(顺序) tail -行数 文件名(倒叙)
替换
tr 原始字符 目标字符
提取
cut 参数 文本
用“列”提取文本字符
按列搜索,要用-f 参数设置需要查看的列数,-d设置间隔符号
排序
sort -r /etc/passwd | sort
去重
uniq 消除连续重复的行
sort 文件名 | uniq sort 文件名 | uniq -c
三、管道命令符
序号 | 字段 |
1 | 远程主机IP |
2 | 远端用户标识(已废弃) |
3 | 远程用户名 |
4 | 请求时间 |
5 | 请求第一行(典型格式:请求方法/访问资源协议) |
6 | 状态代码(显示客户端的请求是否成功) |
7 | 发送字节数(服务器发送给客户端的总字节数) |
8 | 请求来源 |
9 | 客户端浏览器识别信息 |