第三章 从命令行管理文件
文件命名规则:
(1)不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的
(2)文件名不能超过255个字符
(3)区分大小写file File FILE fIle
(4)目录也是文件,在同一路径下,两个文件不能同名
3.1 创建、删除普通文件
创建普通文件:touch
格式:touch [OPTION]... FILE... touch的两种用法:
1、如果文件已存在,更新文件的三个时间,stat可以查看文件的详细信息
atime access time 看了一下内容 cat
mtime modify time 文件内容被改变了,ctime也会发生改变
ctime change time 元数据被改变,重命名
2、如果文件不存在,则表示创建文件 创建多个普通文件:
方法1:touch 文件名1 文件名2 文件名3
方法2:touch {文件名1,文件名2,文件名3}
touch {1,2}{3,4}
touch abc{1..100}
删除普通文件:rm [-f] 文件名
3.2 向普通文件添加数据
1、将输出重定向到文件 echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:“echo [字符串] [$变量]”。
这是在Linux系统中最常用的几个命令之一,但操作却非常简单,执行“echo 字符串”或“echo $变量”就可 以,其中$符号意思是提取变量的实际值,以便后续的输出操作。
例如,把指定字符串“kongd.com”输出到终端屏幕的命令为:
该命令会在终端屏幕上显示如下信息:
下面,我们使用“$变量”的方式提取出变量SHELL的值,并将其输出到屏幕上:
bash shell提示符
重定向:>
追加重定向:>>
2、读取标准输入的数据,并将其内容输出到参数: -a或--append 附加到既有文件的后面,而非覆盖它. -i或--ignore-interrupts 忽略中断信号。 --help 在线帮助。 --version 显示版本信息 管道符|:管道符左边命令的输出作为管道符右边命令的输入。 Q1、 如何在 Linux 上使用这个命令?文件的同时输出到屏幕(即想把输出保存到文件中,又想在 屏幕上看到内容):tee 文件
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
语法
参数:
-a或--append 附加到既有文件的后面,而非覆盖它.
-i或--ignore-interrupts 忽略中断信号。
--help 在线帮助。
--version 显示版本信息
管道符|:管道符左边命令的输出作为管道符右边命令的输入。
Q1、 如何在 Linux 上使用这个命令?
[command] | tee [file]
Q2、 如何确保 tee 命令追加信息到文件中?
[command] | tee -a [file]
Q3、如何让 tee 写入多个文件? 这非常之简单。你仅仅只需要写明文件名即可。
command] | tee [file1] [file2] [file3]
图4-1 Vim编辑器模式的切换方法
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而 每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim 中,无法直接从输入模式切换到末行模式。Vim编辑器中内置的命令有成百上千种用法。
命令模式下的常用命令——光标移动
命令模式下的常用命令——复制、粘贴、删除
命令模式下的常用命令—— 文件内容查找
命令模式中的基本操作——撤销编辑及保存退出
末行模式中的基本操作——保存文件及退出vi编辑器
末行模式中的基本操作——打开新文件或读入其他文件内容
末行模式中的基本操作——文件内容替换
3.3 浏览普通文件内容
1.查看文本文件的内容——cat命令
命令格式:cat [选项] 文件名列表
说明:文件名可使用通配符
常用选项:
-n——对输出内容中的所有行标注行号。
-b——对输出内容中的非空行标注行号。
2.分页查看文件内容——more和less命令
命令格式: more | less [选项] 文件名
常用选项:
-数字——仅适用于more命令,用来指定分页显示时每页的行数。
+num——指定从文件的第num行开始显示。
-c——从顶部清屏然后显示文件内容。
-N——仅适用于less命令,其作用是在每行前添加输出行号。
交互操作方法:
按Enter键向下逐行滚动
按空格键向下翻一屏、按b键向上翻一屏
文件末尾时more会自动退出,less 按q键退出
参数 作用 -b 将可执行文件(binary)当作文本文件(text)来搜索 -c 仅显示找到的行数 -i 忽略大小写 -n 显示行号 -v 反向选择——仅列出没有“关键词”的行 -A -A 2:搜索时显示匹配到的那一行以及下2行 -B -B 2:搜索时显示匹配到的那一行以及上2行 -C -C 2:搜索时显示匹配到的那一行以及上下2行
⒊查看文件开头或末尾的部分内容——head和tail命令
命令:head | tail [选项] 文件名 常用选项有:
-num——指定需要显示文件多少行的内容,若不指定,默认只显示十行。
-f——使tail不停地去读取和显示文件最新的内容, 以监视文件内容的变化,这样有实时监视的效果。
tail命令更多的用于查看系统日志文件,以便于观察重要的系统消息,特别是结合使用-f选项,tail会自动实时 地把打开文件中的新消息显示到屏幕上,从而跟踪日志文件末尾的内容变化,直至按【Ctrl+C】键终止显示 和跟踪。
4.检索、过滤文件内容——grep命令
功能:在指定的文件中查找并显示含有指定字符串的行。
格式:grep [选项] 要查找的字符串或条件表达式 被查找的文件名
选项:
-i——查找时忽略大小写
-v——反转查找,输出与查找条件不相符的行
在grep命令中,可以直接指定关键字串作为查找条件,也可以使用复杂的条件表达式,例如:字符“^”表示行的 开始;字符“$”表示行的结尾;如果查找的字符串中带有空格,可以用单引号或双引号括起来。又如: "^read"表示以read开始;"read$"表示以read结束;"^$"表示空行。
3.4 grep命令
grep命令用于按行提取文本内容,语法格式为:“grep [参数] 文件名称”。
表2-15 grep命令中的参数及其作用
在Linux系统中,/etc/passwd文件是保存着所有的用户信息,而一旦用户的登录终端被设置 成/sbin/nologin,则不再允许登录系统,因此可以使用grep命令来查找出当前系统中不允许登录系统的 所有用户信息:
示例:
3.5 文本排序统计
1、cut命令 cut命令用于按列提取文本内容,语法格式为:“cut [参数] 文件名称”。 系统文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的,先查看一下:
一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是如果 按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。
接下来使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列 内容:
2、uniq命令 uniq命令用于去除文本中连续的重复行,英文全称为:“unique”,语法格式为:“uniq [参数] 文件名 称”。
uniq命令全称是“unique”,中文释义是“独特的,唯一的”。该命令的作用是用来去除文本文件中连续的 重复行,中间不能夹杂其他文本行,去除了重复的,保留的都是唯一的,也就是独特的,唯一的了。
我们对两个文本内容进行操作,区别一目了然:
3、sort命令
sort命令用于对文本内容进行再排序,语法格式为:“sort [参数] 文件名称”。 有时文本里的内容顺序不正确,手动一行行的修改实在太麻烦了,那么使用sort命令就再合适不过了, 它能够对文本内容进行再次排序。这个命令千万不能只讲理论,一定要上实战,一看就懂。sort命令的 参数及其作用如表2-16所示。
表2-16 sort命令中的参数及其作用
首先,sort命令执行后默认会按照字母顺序进行排序,非常方便:
4、tr命令
Linux tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
语法
参数说明:
-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行 转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
--help:显示程序用法信息
--version:显示程序本身的版本信息
将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:
5、wc命令
wc命令用于统计指定文本文件的行数、字数或字节数,英文全称为:“word counts”,语法格式为:“wc [参数] 文件名称”。
wc命令用于统计文本的行数、字数、字节数等。wc的参数以及相应的作用如表2-14所示。
表2-14 wc命令中的参数以及作用
在Linux系统中,/etc/passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以 使用下面的命令来进行查询,是不是很神奇: