文件查找命令
locate 根据本地数据库进行查找
yum install mlocate -y 下载软件包
updatedb 需要更新数据库
locate -r hostname$ 支持正则,需要 + -r
which 查找命令的绝对路劲(注意是命令,用的最多)
whereis 查找文件
type 查看命令类型
type -a 查看内置命令的绝对路径
find 查找文件
find / -type f -name "hostname"(f代表普通文件)
文件上传与下载
curl 通过url的方式进行文件传输
curl -o 路径名 指定下载路径
wget 下载软件包
wget -O 路径名 指定下载路径
本地上传与下载命令
yum install -y lrzsz 下载软件包
rz 上传,支持上传4g以下的
rz -E 出现名称相同进行重命名,名称规则加正整数(0~255)
sz 下载
字符处理命令
sort 排序
sort -t 指定分隔符,默认以空白字符为分隔符
-k 指定列数,默认第一列
-n 以数字大小方式进行排序
-r 倒序
sort -t ':' -rnk2 file.txt 以:分割,按第二列数字倒序排
unip 去重,统计,只能去重重复相邻的行
unip -c 统计次数
cut 取列,默认以tab键为分隔符
cut -d 指定分隔符
-f 指定取出的列
-c 取指定的字符
wc 统计
wc -l 统计文件行数
-c 统计文件字节数
-w 统计文件列数
tr 替换
tr -d 删除字符
tr 'a' 'b' 将a替换成b
tr -d a 将a删除
tr 'a' 'b' < file.txt 直接操作文件
sed
sed 擅长替换,增删改查
选项
-i 替换
-n 取消默认输出
-r 支持扩展正则
-i.bak 先备份后替换
p 打印
d 删除
s 替换
g 全局
a 追加
i 插入
$ 结尾
查
sed -n '11,20p' services 取出第11行到20行
sed -n '20p' services 取出单行
sed -n '11p;20p' services 取出11行和20行
sed -n '/root/p' passwd 过滤字符
sed -n '/root|halt/p' passwd 过滤过个字符
删
sed '5d' test.txt 删单行
sed '3,5d' test.txt 删连续的多行
sed '3d;5d' test.txt 删不连续的多行
sed '/oldboy/d' test.txt 根据字符串删
改
sed 's#oldboy#oldgirl#g' test.txt
sed -i 's#oldboy#oldgirl#g' test.txt 真正替换文件内容(加 -i)
sed -i.bak 's#oldboy#oldgirl#g' test.txt 先备份后修改(源文件在test.txt.bak中)
sed '1,3s#jason#egon#g' test.txt 将第一行和第三行进行修改
增
sed '2aegon' test.txt 将egon追加到第二行后面
sed '3iegon' test.txt 插在第三行前面
sed '$aegon' test.txt 插在最后面
sed '1iegon' test.txt 插在最前面
临时关闭selinux
setenforce 0
永久关闭selinux
sed '7s#enforcing#disabled#g' /etc/sysconfig/selinux -i
awk
选项
NR 取行
-F 指定分隔符
$n 取某列
$NF 最后一列
$0 表示整行内容
! 去反
取行
awk 'NR==1' passwd 取出第一行(NR行数)
awk 'NR==1,NR==3' passwd 取出第一道第三行
awk 'NR==1;NR==3' passwd 取出第一和第三行
awk 'NR>=1 && NR<=3' passwd 取出第一到第三行(并)
awk 'NR<3 || NR>3' passwd 除了第三行(或)
过滤
awk '/root/' passwd 过滤
awk '/root|halt/' passwd 过滤多个
awk '!/\/sbin/\/nolog/' passwd 取反
取列
awk -F '[:]' '{print $2}' passwd -F指定分隔符,$2取第二列
文件属性
-rw-r--r--. 1 root root 17 Aug 15 21:13 123.txt
-rw-r--r--. 类型和权限 - 文件类型
1 表示硬连接的数量
root 属主
root 属组
17 文件大小
Aug 15 21:13 最后的修改时间
123.txt 文件名
文件类型
- 普通文件
d 目录
l 软链接文件
b 块设备
c 字符设备
s 套接字文件
p 管道文件
find / -type p -ls 查看p(管道)文件类型
file 查看文件的类型
扩展名
txt
log
sh
py
html
php
conf
zip
tar.gz
cfg
链接文件
用户数据:数据块,数据的真实存放位置,block
元数据:文件属性信息,inode
软链接:一个快捷方式,存放了原文件的路径和文件名
ln -s nginx-1.16 nginx 创建软链接
rm -f nginx && ln -s nginx-1.17 nginx 版本升级
rm -f nginx && ln -s nginx-1.16 nginx 版本回退
软链接和源文件属于不同的类型的文件
软链接文件中存放的是源文件的路径
软链接可以跨区创建,文件目录都可以创建
删除源文件,软链接文件存在,但会失效
主要用于企业版升级、代码上线、目录找不到
硬链接
ln 123.txt f.link 创建硬链接文件
硬链接文件跟源文件inode号是相同的
只能对文件创建硬链接,不能对目录创建
软链接和硬链接的区别:
概念上:软链接相当于Windows上面的快捷方式,硬链接就是给源文件加一个入口
创建上:ln命令默认创建硬链接,只能对文件创建,ln命令加上选项-s创建软链接,可以跨区创建
删除上:删除软链接文件,对源文件和硬链接文件没有影响;删除硬链接文件,对源文件和软链接没有影响;删除源文件,硬链接没有影响,软链接失效,成红底白字闪烁状;只有 删除源文件和硬链接文件,文件才会被真正删除
命令执行过程(扩展)
hash表
hash 查看命令缓存
hash -d name 删除指定命令缓存
hash -r 清空hash表
vim文件编辑器
命令模式(普通模式)
编辑模式
末行模式(底行模式)
命令模式
光标移动,删除,复制,粘贴
l 当前光标向右移动一个字符,nl移动多个
h 当前光标向左移动一个字符,nh移动多个
j 当前光标向下移动一个字符,nj移动多个
k 当前光标向上移动一个字符,nk移动多个
^ 当前光标移动到当前行的行首
$ 当前光标移动到当前行的行尾
G 移动到文件的行尾
gg 移动到文件的行首
ngg 跳转到某行(n表示数字),nG
dd 删除当前光标所在行
ndd 删除当前光标所在行向下多少行,包含当前行
dG 删除当前光标向下的所有内容
p 在当前行的下一行粘贴,粘贴多次就是np
P(大写) 在当前行的上一行粘贴,粘贴多次就是np
yy 复制当前行
nyy 复制当前行向下多少行,包含当前行
r 单个替换当前光标所在位置进行替换
R 多个替换
u 撤销
Ctrl+r 回滚(回滚撤销)
de/dw 删除当前光标向后的一组字符
D 删除当前所在光标向后的所有内容
x/delete 从当前光标所在位置从前向后删除一个
X 从当前光标所在位置从后向前删除一个
Ctrl+f 向下翻页
Ctrl+b 向上翻页
编辑模式
i 在当前光标所在字符前插入字符
I 在当前光标所在行的行首插入字符
a 在当前光标所在字符后插入字符
A 在当前光标所在行的行尾插入字符
o 在当前行向下另起一行进行编辑
O 在当前行向上另起一行进行编辑
C(大写) 删除当前光标所在位置向后的当前行内容,并进入编辑模式
ce/cw 删除当前光标所在行的位置一组字符串,并进入编辑模式
s 删除当前所在字符,并进入编辑模式
S 删除当前所在行,并进入编辑模式
esc 退出编辑模式
末行模式
:w 保存
:q 退出
:wq 保存退出
:x 保存退出
ZZ 保存退出
/ 搜索(n向下查找,N向上查找)
:n 数字,跳转到某行
:nd 删除某行
:n,md 删除从n行到m行
:w /root/test.txt 把当前文件的内容保存到一个新的文件中
:r /root/test.txt 从某个文件读入内容进入该文件
:10r /root/test.txt 从某个文件读入内容进入该文件放在第10行后面
替换
:%s#old#new#g 全局替换
:1,4s#old#new#g 1到4行进行替换
视图模式
批量添加
光标移动到要添加内容的第一行或最后一行
Ctrl+v 进入可视块模式
使用光标选中添加的位置
shift+i 进入编辑模式
输入要添加的内容,只输入一行就行了
按esc退出
批量删除
光标移动到要删除内容的上面,第一行或最后一行
Ctrl+v 进入可视块模式
选中要删除的内容
按d/x删除
esc退出
批量删除行(移动,剪切)
光标移动到要删除行的上面,第一行或最后一行
shift+v 进入可视行模式
选中要删除的内容
d 删除
批量复制行
光标移动到要复制行的上面,第一行或最后一行
shift+v 进入可视行模式
选中要复制的内容
yy 复制
p 粘贴
vim工作方式
vim打开一个文件,进入的是命令模式
在编辑文件的时候,系统会生成一个临时文件
在退出文件之后,系统会自动删除临时文件
vim故障
在编辑文件时非正常退出
再次进入时,会提示警告
解决:
vim -r 文件名
保存退出
删除临时文件
rm -r .services.swp
vim变量
:set nu 显示行号
:set list 给每行的结尾加个标识符
:set ic 搜索时忽略大小写
:set nonu 取消行号
:set nolist 取消标识符
:noh 取消高亮
vim配置文件(个人)
cat .vimrc
set nu
vim配置文件(全局)
/etc/vimrc
文件比对
diff 不推荐使用
vimdiff 推荐使用
vimdiff 文件名1 文件名2 退出按两次退出
vimdiff -o 文件名1 文件名2 水平分割
vim打开多个文件
vimdiff -o 文件名1 文件名2 水平分割
vimdiff -O 文件名1 文件名2 垂直分割
切换文件时,使用Ctrl+ww