目录
一.查看命令补充
1.head
head /etc/passwd 显示/etc/passwd文件的前十行
head -3 /etc/passwd 显示/etc/passwd前三行
2.tail
tail /etc/passwd 显示/etc/passwd后十行
tail -3 /etc/passwd 显示/etc/passwd后三行
选项 | 作用 |
---|---|
-f | 动态追踪尾部变化 (日志) |
-n | 指定多少行 |
head和tail可通过管道组合使用
二.管道
“ | ” 通过管道将前面的命令执行结果传给后面
例子:查看/etc/passwd文件中第一行的内容
cat /etc/passwd | head -1
三.下载
- 将互联网的文件下载到linux服务器
选项-O 指定下载路径
wget -O ./centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo - 将linux上已有的文件下载到windows上
sz /路径 回车 - 将windows文件下载到linux
rz:直接输入命令,选择windwos的文件,即可完成上传
(不支持断点续传)
(仅支持上传文件,文件夹不行 可以将文件打成.zip压缩包即可)
(不支持上传单个文件超过4G)
四.查找
查找命令的绝对路径
为什么获取一个命令的绝对路径,因为有些命令带有别名,当我们通过相对路径执行时优先执行别名
- which
which ls
查找失败
1.根本没有此命令
2.没有下载此命令 - whereis
whereis mkdir - 环境变量
$PATH
echo $PATH
修改path是临时的 直接将文件复制到path变量中已有的路径中 则永久生效
五.过滤
文件;数据;不规则
只想查看某个特定的内容
5.1排序:
sort 默认以空格为分隔符
-k 指定按照第几列排序
-n 以阿拉布数字排列
-r 按照降序排列
-t ‘’指定分割标准
5.2行过滤:取行
grep “过滤的关键字” 文件路径
-v: 取反
-E: 扩展 = egrep
-i: 忽略大小写
-o: 只提取出关键字
-w 按照关键词提取行
^:开头
$:结尾
5.3去重
uniq 直接去重
-c 去重并显示出出现的次数
例子:sort -k 2 -n -r 1.txt | uniq -c
5.4统计
wc -l 统计文件内容中有多少行
5.6列过滤:取列
awk -F ‘’ ‘{print $x}’ 指定分隔的标准
例如:输出ip地址所在行
[root@localhost ~]# ifconfig ens33 | grep "inet " | awk '{print $2}'
5.7替换
sed
sed 's/旧/新/g' 路径
扩展:sed分组匹配
-n 取消原输出内容
-i 改变原文件
p 打印
sed -r ‘s#()()()#\1\2\3#g’ 打印分组后的(1)(2)(3)到屏幕 \1\2\3 前可以任意添加命令 随后通过 | bash 执行
在/tmp目录下有多个以A开头的文件,要求将其全部删除;
ls /tmp/ | grep "^A" | sed -r 's#(.)#rm -f /tmp/\1 #g' | bash
1.尝试获取ip地址
方法一:[root@localhost ~]# ifconfig ens33 | grep "inet " | sed -r 's#(.inet)(.)(net.)#\2#g'
方法二:[root@localhost ~]# ifconfig ens33 | sed -n '/inet /p' | awk '{print $2}'
2.查看/etc/passwd文件里的第二行,要求输出结果为“/bin:x:bin:1:/sbin/nologin:bin:1”
[root@CentOS 7 ~]# sed -n '2p' /etc/passwd | sed -r 's#(.):(.):(.):(.):(.):(.):(.*)#\6:\2:\5:\3:\7:\5:\3#g'
六 vim的使用
普通模式
移动
G:跳转到行尾
gg:跳转到行首
$:跳转光标所在行尾部
^: 跳转到光标所在行首
复制
yy 复制所在行内容
nyy 复制多行
黏贴
p:粘贴到光标所在行的下一行
P:粘贴到光标所在行的上一行
删除
dd:删除光标所在的行
D: 删除光标所在的后面内容
3dd:删除多行
d+G: 删除从光标到尾部的全部
替换
r:替换某个字符
R:连续替换
撤销
u:撤销上一次的操作;可连续撤销
编辑模式
i:进入编辑模式,光标不会发生位置变化
a:进入编辑模式,光标移动到当前位置的后一位
o:进入编辑模式,光标移动到当前行的下一行
I:
A:
O:
命令模式
从普通模式进入命令模式 :进入 w:保存 q: 退出 wq:保存退出 :q! 退出不保存 :wq 强制保存并退出 shift+z+z 直接保存退出;过快不推荐
:set number 替换 类似于sed :1,5s/d/b/g 明确指定替换1-5行中所有出现的d替换成b :%s/d/b/g 将整个文件中所有的d替换成b 搜索 在普通模式下直接按 / /搜索的内容 n:下翻 N:上翻
视图模式
可视行(按行操作) shift+v 选中需要的行;然后y复制 shift+v 选中需要的行;然后d删除 可视块(块状字符操作) 添加注释:在最前面添加#注释 ctrl+v;shift+i;ESC;ESC 删除注释: ctrl+v;shift+i;d
编辑器异常退出
- 1.在编辑的过程中,会话突然关闭
- 2.将vim进程ctrl+z挂起 进入文件后按Q退出;删除.swp交换文件后进入文件即可
七.文件属性
7.1文件类型
-: 文件 d: 目录 b: 块设备 c: 字符设备 s: socket 本地进程间通讯;程序1 (插座)程序2 l: 链接文件 文件名称的后缀与文件类型是无关,所以需要借助 file命令,精准的判断一个文件究竟是什么类型 [root@localhost ~]# file 1.txt 1.txt: ASCII text
7.2链接文件
7.2.1 inode和block
用户通过文件名打开文件,实际系统内部这个过程分为三步:
首先,系统找到这个文件对应的inode编号;
其次,通过inode编号,获取inode信息;
最后,根据inode信息,找到文件数据所在的block,读出数据;
文件分为两部分存储
元数据: inode 包含了文件大小;文件时间;文件权限;文件属主和属组以及block的位置;类似于书索引
真实数据: block 真实存储数据(格式化后划分出来的)一个block大约存储4KB内容;一个100KB的文件,大约需要25个block;类似于书的内容
7.2.2 软连接
类似快捷方式;inode值不同
ln -s
作用:软件升级;代码发布
范例:在/data目录下有一个runbow-1.1站点目录;在目录下有index.html的网页文件;如果直接让用户通过/data/runbow-1.1/index.html访问;
站点目录升级后路径变化;需要通知所有用户变更路径,非常麻烦不专业;故可以通过软连接的方式给runbow-1.1目录创建一个软连接/data/runbow;
让用户通过/data/runbow/index.html访问网页;一旦站点目录升级,删除软链接并且创建新的软连接将/data/runbow映射到新的目录上;用户访问的
路径仍然为/data/runbow/index.html。
[root@localhost ~]# mkdir -p /data/runbow-1.1 创建站点目录
[root@localhost ~]# echo 123 > /data/runbow-1.1/index.html 将网站内容“123” 重定向到index.html中
[root@localhost ~]# ln -s /data/runbow-1.1/ /data/runbow 创建软连接
[root@localhost ~]# cat /data/runbow/index.html 用户通过软连接访问网站
123
此时;网站目录升级为/data/runbow-1.2版本;
[root@localhost ~]# mkdir /data/runbow-1.2 创建新的站点目录
[root@localhost ~]# echo 456 > /data/runbow-1.2/index.html 将新网站内容“456” 重定向到index.html中
[root@localhost ~]# rm -f /data/runbow && ln -s /data/runbow-1.2 /data/runbow 删除之前的软连接并且同时执行创建新的软连接
[root@localhost ~]# cat /data/runbow/index.html 用户通过新的软列接访问新的站点;对于用户而言;操作没有发生变化
456
7.2.3 硬链接
inode值相同
ln
作用:提供多个命令的执行渠道
范例:系统中的.和..
[root@localhost ~]# ll -id .
33574977 dr-xr-x---. 17 root root 4096 7月 10 10:17 .
[root@localhost ~]# ll -id /root/
33574977 dr-xr-x---. 17 root root 4096 7月 10 10:17 /root/
可以看出.和/root目录的inode值相同;指向同一个block数据;
[root@localhost ~]# ll -di ..
64 dr-xr-xr-x. 20 root root 265 7月 10 10:32 ..
[root@localhost ~]# ll -di /
64 dr-xr-xr-x. 20 root root 265 7月 10 10:32 /
..和/目录的inode值相同;也指向同一个block数据;
7.2.4 文件时间
atime: 访问时间 文件中的数据左后被访问的时间
mtime: 修改时间 文件内容修改的最后时间
ctime: 变化时间 文件的元数据发生变化;比如权限,所有者等等