文件的有关操作

第7-8次课:文件的有关操作

查找文件:find、locate、grep

find

find:在目录结构中查找文件,遍历硬盘
find [路径] [参数] [关键字]

参数:

-name:按照名字查找

-user:文件属主来查找

-group:文件所属组来查找

-nogroup:查找无有效所属组的文件

-nouser:查找无有效属主的文件

-type:按照文件类型查找
常用:find 路径 -name 名字规划
find 路径 -mtime 时间数字(+表示距现在n天前,-表示n天内,n表示中现在n天)

支持通配符 *,?,[ ]三种通配符

locate

locate:查找符合条件的文件。locate命令要比find快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新
locate [参数] [关键字]
参数:
-d <数据库文件> 设置locate命令查找的数据库,取代默认的数据库
-w 匹配整个路径
-c 只显示找到的条目数量
练习: locate passwd
在默认数据库内,查找passwd文件

grep

grep 选项 匹配模式 文件名
-i 忽略大小写 -v 取反匹配 -w匹配单词 --color显示颜色 -r 递归查找 -n 顺便输出行号 -c 显示有多少行被匹配到
练习:在/etc/passwd文件中,显示包括root的行,不区分大小写,并用颜色显示。
答案:grep -i --color root /etc/passwd
练习:显示/usr/bin目录下,文件内容包含lib的文件
答案:grep –ir lib /usr/bin
与其它命令联合使用
练习:显示/usr/bin目录下包含lib名字的文件
答案:ls –l /usr/bin |grep lib

几个文件的常见操作

新建文件:touch

  • touch 文件名

  • 新建文件为空

压缩相关

  • 使用gzip|bzip2压缩文件
    • -d表示解压缩
      注意:只能压缩文件,不能压缩目录
  • Windows常见压缩格式
    • rar zip
  • Linux常见压缩格式
    • gzip bzip2 compress, 它们兼容rar zip
  • 常用压缩及解压缩工具
    • 压缩工具 解压缩工具 文件扩展名
      gzip gunzip .gz
      bzip2 bunzip2 .bz2
      zip unzip .zip
  • 打包是指将多个文件或者目录打包成一个大文件,归档后的文件按照一定的格式储存到磁盘上,新格式的文件大小比压缩之前所有文件大小总和要小。

tar命令解包与打包

  • -c创建打包文件
    -x解包
    -t查看打包文件的内容
  • -delete从打包文件中删除文件
  • -r追加文件至打包
  • -C指定解包的路径
  • -f立即接打包的文件名
  • -j打包后通过bzip2格式压缩
  • -z打包后通过gzip格式压缩
  • -v显示文件名

查看帮助:help、man

语法 : help 命令名 man 命令名
功能 : 显示某个命令的格式用法

help命令专门用于显示内建命令的格式用法。内建命令是shell的内部来实现的,而不能为外部程序所调用。
Man(manual)命令可以显示系统手册页中的内容,这些内容大多数都是对命令的解释信息。(空格键翻页,q键退出)可以通过/关键字快速定位。
不喜欢看英文的同学,切换到中文:LANG=”zh_CN.UTF-8”
例如:man pwd
help pwd

查找执行文件绝对路径:whereis、which

Whereis 命令

用来寻找命令的可执行文件所在的位置

同时可查找到相关的man文件

-b 只查找二进制文件
-m 只查找命令的联机帮助手册部分
-s只查找源代码文件
例:whereis –b cd
whereis cd

用来获取命令简介
-例:whatis cd

which

  • 查找文件的绝对路径

获取命令简介:whatis

  • whatis cd

按照指定的大小和个数的数据块来复制或者转换文件:dd命令

按照指定的大小和个数的数据块来复制或者转换文件。
例:请在/opt/test/test目录下创建一个文件,名字为shen
例:请在/opt/test/test目录下创建一个文件,名字为shen,大小为500M
例:将本地的/etc/passwd整盘备份到/tmp/passwd_bak
例:修复硬盘(慎用):dd if=/dev/sda of=/dev/sda

任务3 几个信息系统命令(P36)

dmesg
free
date
cal
clock

补充: Linux组合命令-shell相关

查看shell的种类:cat、echo

cat

cat /etc/shells

Linux支持的Shell都记录在/etc/Shells文件中,可以使用cat命令来查看支持的Shell。
cat /etc/shells

echo

查看当前使用的是何种Shell,可用echo命令查询Shell环境变量:
echo $SHELL

更改shell

更改使用的Shell:
sh 切换到sh
bash 切换到bash

在一般情况下,执行exit命令会注销用户。但如果从默认的Shell切换到其他的Shell后,在切换后使用exit命令不会注销系统,而只会跳离当前的Shell,并回到上一层的Shell。

Shell种类分两大类:bsh和ksh、csh

​ 第一类诞生于贝尔实验室, 如bsh, ksh第二类诞生于加州伯克利,如csh。

shell特点

CentOS默认的shell是bash。
Shell同时兼具以下各种特点 :

  1. 交互式处理
  2. 对已有的命令进行适当组合,构成新的命令
  3. 命令补全功能
  4. 查阅历史记录
  5. 别名功能
  6. 后台处理
  7. 灵活使用数据流,提供通配符、输入/输出重定向、管道线等机制,方便模式匹配、I/O处理和数据传输。
    特殊字符及控制组合键

shell命令提示符

# 表示当前用户为系统超级管理员用户,即root用户,拥有最高管理权限

$ 表示当前用户为普通用户,只有很少的管理权限,默认登录的用户为普通用户

shell常用特殊符号

在shell中经常用到一些特殊符号,称为文件名扩展符或通配符
(1)*表示任意一个字符或多个字符组成的字符串。
例子: ls –l /bin/b* 查看/bin/目录下所有以b开头的文件及文件夹的详细信息
(2)“ ?”:表示任意单个字符
例子: ls –l /bin/e?
表示查看e开头,长度为2的文件及文件夹的详细信息。
(3) []: 指定范围。
ls [a-c]: 查看当前目录下文件名为a,b,c的文件或文件夹
(4)!: 排除符号,需要与[]联合使用。
ls [!a-c]: 查看文件名不是a,b,c,文件名长度为1个字母的文件和文件夹。
(5) 分割符号。用于一行中输入多个命令。
例子: ls ;ls -l

(6) `: 命令替代符号。这个符号总是成对出现,它们包含的内容在shell中表示一条命令,并且会被执行。
例子: echo `ls -l`
显示ls –l命令的结果
对比 echo ‘ls -l’
显示字符串ls -l

交互式处理

从用户登录系统开始,Shell就会出现不同的提示符,并且等待用户输入命令。
在接收来自用户输入的命令后,Shell会根据不同的命令来执行;在执行完毕后,Shell会将结果返回给用户,并且再次回到提示符号,等待用户下一次的输入。
这个模式会一直持续下去,直到用户执行exit或按Ctrl+D组合键注销Shell才会结束。

  • 所谓“命令补全”,是指用户输入命令时,有时不需要输入完整的命令,系统会自动找出最符合的命令名称,这种功能可以节省经常输入长串命令的时间。
    输入命令的前几个字母,然后按“TAB”键,系统会发出警报声,再按一次“TAB”,系统会列出匹配的命令。
    例:ca
    按两次TAB

查阅历史记录:history

  • Linux将当前用户输入的历史命令保存在一个文件中,保存的数目由环境变量HISTSIZE决定。
    输入history,并按“Enter”键后,可以列出以往的命令。
    如果希望查阅最近的历史命令,可以使用

  • history n命令,其中n表示最近的n条命令。

  • 使用!n 来执行第n条历史命令。

  • !!表示重复上一个命令

  • !ls表示执行最后一次以ls开头的命令
    使用上下箭头也可以选择历史命令

别名功能:alias、unalias(取消)

Linux中的别名功能是指用户可以自行定义较为简单的字符串来取代复杂命令。
alias d=‘ls -l’
以后只要输入d,就等同于ls -l
如果不希望继续使用先前定义的别名,可使用unalias命令来取消此命名。
unalias d

输入/输出重定向:>、>>

Unix/Linux系统把标准输入、标准输出以及标准错误三种设备作为文件看待。
使用“ls –l /dev/std*”查看标准文件,其中stderr为标准错误文件,stdin为标准输入文件,stdout为标准输出文件。这三个文件分别链接到目录/proc/self/fd下的三个以数字0,1,2命名的文件。其中stdout和stderr都关联到显示器,而stdin关联到键盘。

输出重定向

  • 输出重定向符号“>”和“>>”
    • “>”:重定向写入目标文件或设备中,并覆盖掉之前内容
    • “>>”:以追加方式写入,不会对原有内容产生影响

一般来说,如果要执行一个命令,通常都是通过文件输入数据,经过处理后,再将数据输出到屏幕。如果命令执行错误,则将错误消息输出到屏幕。
例如,ls命令是将结果输出到屏幕,即stdout。而stdout是一种文件,如果我们用其他普通文件来代替stdout,就可以将ls的结果输出到普通文件中保存起来。这就是文件的重定向(Redirect)。
所谓重定向,也就是将某个命令执行后原本应出现在屏幕上的数据,传输到其他地方,例如文件或设备(如打印机)。这对于数据的存储尤其重要。

  • 输出重定向:stdout被重定向,用符号“>”或“>>”表示。其中“>”表示将左边命令的结果输出到右边的文件,若文件已存在则覆盖原有文件,没有则创建新文件。而“>>”的区别是,若文件已存在则将内容添加到文件的末尾。

  • 错误重定向:stderr被重定向,用符号“2>”或“2>>”。
    错误信息通常也是输出到屏幕上的,但它和正确信息的输出是不同的。

  • 总结:输出重定向的基本指令书写格式为:
    指令 >/2>/>> 设备或文件
    重定向的意义:
    当屏幕输出的信息很重要,需要保存的时候;
    一些命令的执行结果,需要保存的时候;
    一些命令执行时,已经知道可能会出错,不希望看到;

输入重定向

输入重定向符号“ <”,输入重定向:stdin被重定向,用符号“<”。
简单的说,就是将原本需要由键盘输入的数据,通过文件来读入。在实际中用途较少。
<<的作用
它表示“结束输入的字符”
cat > catfile <<end
则当输入了“end”后,该次输入就终止了。而不需要用Ctrl+D来结束。这对于编程时非常有用。
举例:cat <<表示结束的符号
。。。。。
表示结束的符号
利用我们所学的知识,写一最简单的脚本。查看日期,在屏幕上输出一行信息。

管道 |

管道是一种特殊的文件,可以进行读和写,可以搭建两个文件之间通信的桥梁。管道可以将多个命令集合在一起,以执行一个较复杂的作业。除了第一个和最后一个命令之外,每个命令的输入都是前一个命令的输出,而每个命令的输出也将成为下一个命令的输入。

在这里插入图片描述

管道举例

1、alias | grep ls
2、ip a s |grep 192.168.*
3、ls -l /root |more
4、systemctl status sshd |grep active
5、grep abc* /etc/passwd |wc -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值