目录



一.查看命令补充


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:  变化时间 文件的元数据发生变化;比如权限,所有者等等