软连接和硬连接
- 硬链接 (ln ):对一个文件其多个文件名(不同名称)
- 软连接(ln -s):原始文件一般用相对路径,相对路径一定相对于软链接文件的路径
- List item
- 硬连接和软连接的区别:
1.是否是同一文件(影视,软不是)
2.能否跨分区
3.链接数增长
4.inode number 是否相同
5.原始文件删除,链接文件是否可以访问?
6.大小?
7.支持目录?(硬链接不支持目录)
8.相对路径?(软连接支持文件夹,硬不支持) - touch命令
-a 仅改变atime和ctime
-m 仅改变mtime和ctime
-t 指定atime和mtime的时间戳
-c 如果文件不存在,则不予以创建
文件重定向和管道
- linux中 “>”表示覆盖原文件内容(文件的日期也会自动更新),“>>”表示追加内容(会另起一行,文件的日期也会自动更新)。
- rename 用字符串替换的方式批量改变文件名
- cp 文件名{,.bak}(文件备份)
- reset 这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空
- file:查看文件内容(比cat好)
- 把输出和错误重新定向到文件
1.支持的操作符包括:“>”,“2>”,"&>".
2.使用">"文件内容会被覆盖。set -C可禁止内容覆盖原有文件;set +C允许覆盖。 - tr命令可以对来自标准输入的字符进行替换、压缩和删除
- 单行重定向: cat>f1
- 多行重定向: cat > f1 <<EOF
- 管道(|):将命令一的标准输出作为命令二的标准输入
例子:whoami | tr ‘a-z’ ‘A-Z’
errocmd 2>&1 | tr ‘a-z’ ‘A-Z’(前面是错误命令)
errocmd |& tr ‘a-z’ ‘A-Z’(前面是错误命令) - SDTERR默认不能通过管道转发,可利用2》&1或者|&实现
- less 一页一页的查看输出
ls -l /etc | less - mail 通过电子邮件发送输入(mail -s “” +要发送到的目录 以.结束)
echo “test email” | mail -s “test” user@example.com - lpr:把输入发送给打字机
- tee :重定向到多个目标
命令1 | tee [-a] 文件名 | 命令2(把命令1的STDOUT保存在文件中,作为命令2的输入)(-a追加)
文件查找和压缩
- locate命令:搜索文件(无法找出刚创建的文件,依赖数据库)
-i 不区分大小写搜索
-n N 只列举前N个匹配项目
-r 使用正则表达式 - find命令:搜索文件(速度略慢)
1.语法:find [option][查找路径] [查找条件] [处理动作]
2.查找路径:找到具体目标路径
3.查找条件:指定的查找标准,默认找出指定路径下的所有文件
4.处理动作:对符合条件的文件做操作,默认输出至屏幕 - find查找条件
1.指搜索层级: -maxdepth level 最大搜索目录深度,指定目录为第一级;
-mindepth level 最小搜索深度
2.先处理目录内文件,在处理目录: -depth
3.根据文件名和inode查找:-name “文件名称”:支持使用glob
–iname “文件名称”:不区分大小写字母
–inum n 按inode号的文件
–links n 链接数为n的文件 - 根据文件类型查找
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件 - 文件或空目录
–empty
find/app -type d -empty
Linux用户和组管理
- 查看用户相关的id信息
id [option]… [user]:-u:显示UID
-g:显示GID
-G:显示用户所属的组的ID
-n:显示名称,需配合ugG使用 - 设置密码
passwd [options] username
gpasswd -a 增加
gpasswd -d 删除
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登陆修改密码
-f:强制操作
-n:指定最短使用期限
-x:最大使用期限
-w:提前多少天开始警告
-i:非活动期限 - 用户添加命令
useradd [选项] 用户名
-u UID :手工指定用户的UID;
-d 家目录:手工指定用户的家目录;
-c 用户说明:手工指定用户的用户说明;
-g 组名:手工指定用户的初始组;
-G 组名:指定用户的附加组
-s shell:手工指定用户登陆的shell,默认是/bin/bash - usermod:修改用户信息
- userdel:删除用户
- change:修改用户密码状态
-l :列出用户的详细密码状态
-d 日期:修改密码最后一次的更改日期 shadow3字段
-m 天数:两次密码修改间隔(4字段)
-M天数:密码有效期(5字段)
-W天数:密码过期前警告天数(6字段)
-I(i天数):密码过后宽限天数(7字段)
-E(日期):账号失效时间(8字段 - groupadd:组添加命令
- groupmod:修改组属性
- groupdel:删除组
- groupmems:修改和查看组成员
- chown:修改文件所属主
- chgrp:修改文件所属组
- chmod:修改文件权限
- vipw 和vigr:编辑文件并有检查功能
- su su - 完全切换和不完全切换
Linux文本处理,正则表达式和Vim
- 文本查看命令:cat,tac,rev
- more:分页查看文件
- less:一页一页的查看文件或者STDIN输出
- 显示文本前后内容
1.head [option]…[file]…
(1)-c#:指定获取前#字节
(2)-n#:指定获取前#行
(3)-#:指定行数
2.tail [option]…[file]…
(1) -c#:指定获取后#字节
(2)-n#:指定获取后#行
(3)-#:指定行数 - 按行列抽取文本cut和和并文件paste
1.cut [option]…[file]…
(1)-d:指明分隔符,默认为tab
(2)-c:按字符切割 - 收集文本统计数据wc
-l:只计数行数
-w:只计数单词总数
-c:只计数字节总数
-m:只计数字符总数
-L:显示文件最长行的长度 - 文本排序sort
sort [options] files
-r:执行反方向整理
-R:随机排序
-n:执行按数字大小整理
-f:忽略字符串的字符大小写
-u:选项删除输出中的重复行 - uniq命令:从输入中删除相接的重复行
-c:显示每行重复出现的次数
-d:仅显示重复过的行
-u:仅显示不曾重复的行 - 文本处理三剑客
1.grep常用命令
grep root passwd 搜索passwd文件中的root
grep “^root” passwd 搜索passwd文件中以root开头的
grep “root$” passwd 搜索passwd文件中以root结尾的
grep -i root passwd 忽略大小写搜索passwd文件
grep -Ei “root|ROOT” passwd 同时匹配多个条件
2.sed
sed [option] command file
(1)Command:
a :新增行, a 的后面可以是字串,而这些字串会在新的一行出现(目前的下一行);
c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行;
d :删除行,因为是删除,所以 d 后面通常不接任何参数,直接删除地址表示的行;
i :插入行, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;
s :替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示法
(2)option:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自stdin的数据一般都会被列出到终端上。加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
3.awk报告生成器 - getent:帮助用户administrative databases中查找相关信息
Vim
- vim [option]…[file]
+#:打开文件后,让光标处于第#行的行首,+默认行尾
+/PATTERN:打开文件后,直接让光标处于第一个被pattern匹配到的行的行首
-b file:二进制方式打开文件
-a file1 file2:比较多个文件
-m file:只读打开文件 - vim三种主要模式(esc退出)
命令模式:默认模式,移动光标,剪切粘贴文本
插入模式或编辑模式:修改文本
扩展命令模式:保存,退出等 - 插入模式
i ##光标所在位置插入
I ##光标所在行的行首插入
A ##光标所在行行尾插入
a ##光标所在字符的下个字符插入
s ##删除光标所在字符插入
S ##删除光标所在行插入
o ##光标所在行的下一行插入
O ##光标所在行的上一行插入 - 关闭文件
:q #退出,在打开文件后没有对文件做任何修改时可使用
:wq #退出保存,在对文件修改后并保存内容时使用
:q! #强制退出,在对文件做修改后要放弃修改时使用
:wq! #强制退出保存,在对属于自己的文件或你时root用户时使用 - 命令光标跳转
h:左移光标一个字符
l:右移光标一个字符
k:光标上移一行
j:光标下移一行
^:光标移动至行首
0 数字"0",光标移至文章的开头
G 光标移至文章的最后
$ 光标移动至行尾 - 命令模式翻屏操作
Ctrl+f 向前翻屏
Ctrl+b 向后翻屏
Ctrl+d 向前翻半屏
Ctrl+u 向后翻半屏 - vi命令
i 在光标位置前插入字符
a 在光标所在位置的后一个字符开始增加
o 插入新的一行,从行首开始输入
ESC 从输入状态退至命令状态
x 删除光标后面的字符
#x 删除光标后的#个字符
X(大写X) 删除光标前面的字符
#X 删除光标前面的#个字符
dd 删除光标所在的行
#dd 删除从光标所在行数的#行
yw 复制光标所在位置的一个字
#yw 复制光标所在位置的#个字
yy 复制光标所在位置的一行
#yy 复制从光标所在行数的#行
p 粘贴
u 取消操作
cw 更改光标所在位置的一个字
#cw 更改光标所在位置的#个字