Linux文本处理3剑客:
- grep:文本过滤
- sed:文本替换
如 sed -I ‘s/字符1/字符2/‘ 文件名 表示把文件中字符串1全部改成字符串2
- awk:文本截取(截取第几列 如截取第2列 awk ‘{print $2}’)
bc:Linux里的计算器(Linux里面2的3次方表示为 2^3)quit退出
也可以这么用:echo 60+50|bc 输出结果为110
为什么重新登录,发现历史命令又多了?
.bash_history 文件是保存再用户的家目录下的,里面保存的是这个用户上次登录Linux系统的时候,使用过的命令
怎么永久删除历史命令?
history -c 清除历史命令
rm -rf .bash_history 删除保存历史命令的文件
查找类的命令:
which:查找可执行文件(Linux命令)(显示为绿色文件就是可执行文件)并显示所在的位置
/bin 是一个链接文件 指向/usr/bin 用来存放二进制文件 可执行命令
/bin 目录:专门给机器识别的目录 二进制文件
一般的Linux命令都是二进制文件,而且是可以运行的
PATH变量:which命令在Linux系统里查找命令的时候,会固定的到某些文件夹去寻找
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
所有文件夹都以冒号隔开
which查找命令的时候会从path变量定义的路径里,从左边第一个文件夹开始查找,如果找到了,就不往下走,如果没有找到,往第2个文件夹里找,以此类推
Linux回到path变量指定的路径(文件夹)里查找命令
我们自己编写的程序,要让Linux系统知道,如何处理?
- 将你的程序复制到path变量指定的文件夹下就可以了
- PATH= (二进制路径):$PATH (改变path变量)—》临时修改 临时有效
- 如果永久有效的修改PATH变量的值?
修改/etc/profile 在第一行添加 PATH= (二进制路径):$PATH
(对所有的用户都生效 都知道你的程序安装的路径了)
shell编程里等号左右不能有空格
gcc编译器:将c语言的代码翻译成二进制(机器可以认识的语言)
Linux里的命令很多都是二进制的程序—》c语言写的—》编译二进制文件—》可执行文件
/usr :unix系统资源 :安装的程序就是系统的资源
unix 出现的比Linux较早 也是一个操作系统
unix分支版本:
IBMàAIXàIBM 制造的服务器上
SunàSolaris
HPàhp unix
加州大学伯利克分校àBSD
Linux是山寨的一个叫minix的系统
环境变量:是影响所有的用户的变量
shell编程里 变量区分大小写
whereis:可以查询民命令的存放路径 同时还会告诉我们的man手册的路径(寻找路径和which一样都是去PATH变量指定的路径下去找)
whereis 命令
如何知道一个命令是从哪个软件包安装过来的?
yum privides 命令:查询命令是由哪个软件包提供的
仓库:是一个集中存放软件的地方
BaseOS:这个仓库里存放的都是centos系统基础软件
chown:更改文件拥有者
如:chown 用户:小组 文件名 :把这个文件的拥有者和组改了
stat 文件名:查看文件的状态
文件的三个时间:
最近访问时间:access time àatime
vim不行 只要读取里面的内容 例如cat
最近更改时间:modify timeàmtime
改动文件的属性:拥有者 组 权限 大小 时间 名字 如chown 更改拥有者
最近改动时间 :change timeàctime
更改文件里的内容 如:vim 增加内容三个时间都改了
touch:如果文件存在就是修改时间 三个时间都改
updated:手动更新创建数据库文件
locate:属于模糊查找
/var/lib/mlocate/mlocate.db:是locate的查询的数据库文件‘
第一次使用的时候需要updatedb更新
不能查找到最新新建的文件,所以需要手动的更新一下数据库,locate它不是到整个Linux更目录下查找的,是到自己的一个数据库文件里查找
Linux系统会自动每天更新一次,执行一次updatedb
查找:
- 精确查找:必须要一模一样 不能多 也不能少
- 模糊查找:只要文件名包含就可以了
which和whereis
只能查找Linux里的命令 精确查找 在PATH变量指定的路径查找
locate(查找有滞后性 查找出来的内容不是最新的数据)
可以查找命令和普通的文件或者文件夹 模糊查找 到自己的数据库里查找
范围:整个/目录下(整个系统里查找)
man的使用:
/字符:查找字符
N 上一个符合条件的
n下一个符合条件的
which whereis locate都是根据名字查找
find:
对象:文件和文件夹
范围:/
时效性:实时
条件:
- 名字 -name 文件名:按照名字查找 区分大小写
-iname 文件名:按照名字查找 不区分大小写
- 时间
-mtime 按文件更改时间查找(以24小时为一个单位)
+7 七天前 (7个24小时前)
-7 七天内 (7个24小时内)
7 刚好往前7天(刚好7个24小时前)
-mmin 以1分钟为一个单位 用法和-mtime一样
-newer 文件名:查找比这个文件更新的文件
- 大小 -size +10M:查找大于10M -10M 小于10M 10M 等于10M
- 类型(Linux系统里的7种文件类型):-type
d 文件夹(目录)
f 普通的文件
l 链接文件
c 字符设备文件
b 块设备文件
s socket文件
p 管道文件
-user 用户名:查找属于这个用户的文件
查找符合条件的文件有多少个?
find 条件 | wc -l
find条件的组合:
-a 逻辑与 默认为逻辑与 -a的优先级比-o高
-o 逻辑或
-not 逻辑非 取反(也就是 ! )如 !-size +3M 查找大小小于3M的
find非得改变优先级:加括号 括号要转义 \( 框起来内容\)
\ 转义字符: 转换到字符最原始的含义
元字符:有特殊作用的字符 *? $
5.常用动作
动作:
查找出来文件或者文件夹后,可以删除,复制,移动等操作
-exec :
find 条件 -exec 命令 {} \;
{}代表前面的find命令查找到的符合条件的文件 理解为一个存放文件的地方 看为容器
\;表示-exec选项执行的命令的结束标志
-ok 比exec多了确认环节 不推荐使用
目录深度:
-maxdepth 查找目录的深度
-maxdepth 1 查找当前目录下的符合条件的文件 往下继续查找就是数字继续增加