总第82篇
本篇继续梳理Linux
学习过程中必须掌握的基本命令。
1.文本文件编辑命令
Linux
系统中一切皆是文件,而对于服务程序进行配置自然也是编辑配置文件,因此要熟练地掌握文本文件编辑相关的命令。
cat
命令
cat
命令用于查看内容较少的纯文本文件,其格式为cat [命令参数] [文件]
。其常用的操作如下:
## 显示行号地方式查看文件内容
# cat -n hello.conf
## cat 后面不带参数或参数为-,则调用标准输入并显示
# cat -
more
命令
more
命令用于查看内容较多时的纯文本文件,其格式为more [命令参数] 文件
。 more
命令会在最下面使用百分比的形式来提示你已经阅读了多少文件内容,还可以用空格
或回车
来翻页。
head
命令
head
命令用来查看纯文本文件的前N
行,其格式为head [命令参数] [文件]
。 其一般的用法如下:
## 查看文件hello.conf的前50行
# head -n 50 hello.conf
tail
命令
tail
命令用于查看纯文本文件的后N
行或持续刷新内容,其格式为tail [命令参数] [文件]
。 这个命令最强悍的功能是可以持续刷新一个文件的内容。其常用的操作如下:
## 查看文件hello.conf的最后50行
# tail -n 50 hello.conf
## 查看最新的日志文件
# tail -f 文件名
tr
命令
tr
命令用于替换文本文件中的字符,其格式为tr [原始字符] [目标字符]
。
这个命令非常有且,比如有时我们需要将整个文件中的英文小写全部换成大写,就可以用如下操作实现:
## 将hello.conf中所有英文全部替换成大写
# cat hello.conf | tr [a-z] [A-Z]
wc
命令
wc
命令用于统计指定文本的行数、字数、字节数,其格式为wc [命令参数] 文件
。
在Linux
系统中,etc/passwd
中存放的是系统账户信息,要统计当前系统中有多少个用户,可以使用命令wc -l /etc/passwd
查询,是不是非常棒~~~~~
stat
命令
stat
命令用于查看文件的具体存储信息和时间信息,其格式为stat [命令参数] 文件名称
。 具体的参数信息可以用命令man stat
查看。
cut
命令
cut
命令用于按“列”提取文本字符,其格式为cut [命令参数] 文本文件
。如下图示例出了提取当前系统的所用用户名:
diff
命令
diff
命令用于逐行比较多个文本文件的差异,其格式为diff [命令参数] 文本文件1 文本文件2
。 详细用法可以参考man diff
文档。
2. 文件目录管理命令
touch
命令
touch
命令用于创建空白文件或设置文件时间,其格式为touch [命令参数] 文件
。其对应的几个时间参数如下表所示:
参数 | 说明 |
---|---|
-a | 仅修改“访问时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改 atime 和 mtime |
其常用的操作如下图所示,我们先创建一个hello
文件,写入一句话,然后查看文件的详细信息,再用touch
命令修改文件的时间。
mkdir
命令
mkdir
命令用于创建空白的目录,其格式为mkdir [命令参数] 目录
。 它还可用参数-p
递归创建嵌套目录。其一般的操作如下:
##创建目录workspace
# mkdir workspace
## 递归创建目录
# mkdir -p aa/bb/cc/dd
cp
命令
cp
命令用于复制文件或目录,其格式为cp [命令参数] 源文件 目标文件
。 对于Linux
系统中文件的复制操作,分为三种情况:
1)若目标文件是目录,则会将源文件复制到此目录中;
2)若目标文件也是普通文件,则会询问是否要覆盖它;
3)若目标文件不存在,则执行正常的复制操作;
其主要的参数如下表所示:
参数 | 说明 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为链接文件,保留链接文件的属性 |
-r | 递归复制(用于目录) |
-i | 若目标文件存在,询问是否覆盖 |
-a | 相当于-pdr(上述参数) |
mv
命令
mv
命令用于剪切文件或将文件重命名,其格式为 mv [命令参数] 源文件 [目标路径 | 目标文件名]
。 剪切不同于复制,它会将源文件删除掉,若在同一目录进行剪切操作,就相当于重命名。
rm
命令
rm
命令用于删除文件或目录,其格式为rm [命令参数] 文件
。
在Linux
系统中,删除文件时,系统会向你询问,若不想反复确认,可以用rm -f 文件名
的方式强制删除。若想删除一个目录,要用rm -r 目录名
递归删除,否则删除不掉。
dd
命令
dd
命令是一个重要而有特色的一个命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容,其格式为dd [命令参数]
。 其主要的参数如下表所示:
参数 | 说明 |
---|---|
bs | 设置每个块的字节数大小 |
if | 输入的文件名称 |
of | 输出的文件名称 |
count | 要复制的块的个数 |
其常用的操作如下:
## 从/dev/zero设备中取出一个大小100M的数据块,保存为result_file文件
# dd if=/dev/zero of=result_file count=2 bs=50
## 将光驱设备中的光盘制作成iso镜像文件
# dd if=/dev/cdrom of=software_install.iso
file
命令
file
命令用来查看文件的类型,其格式为 file [命令参数] 文件名
。因为在Linux
系统中,文本、目录、设备,所有这些全部统称为文件,故不能光看后缀就来判断文件类型,要用file
命令来查看。
3. 打包压缩与搜索命令
tar
命令
tar
命令用于对文件打包压缩或解压,其格式为tar [命令参数] [文件]
。 其常用的参数如下表所示:
参数 | 说明 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压过程 |
-f | 目标文件名(必须放在参数的最后一位) |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
对于压缩包后缀为.tar.gz
的文件,一般用tar -czvf 目录名
来压缩,用tar -xzvf 目录名
来解压。 其操作示例如下:
## 打包/etc目录下的文件为.tar.gz
# tar -czvf etc.tar.gz /etc
## 创建一个空目录
# mkdir hello
## 将其解压到hello目录
# tar -xzvf etc.tar.gz -C /hello
grep
命令
grep
命令用于在文本中执行关键词搜索, 其格式为grep [命令参数] PATTERN [文件]
。
grep
命令中用途最广泛的文本搜索匹配工具,虽然有很多参数,但大多数基本上用不到,这里列出几个常用的参数如下表:
参数 | 说明 |
---|---|
-b | 将可执行文件(binary)当作文本文件来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写匹配 |
-n | 显示行号 |
-v | 反向选择,仅列出没有关键词的行 |
例如,在Linux
系统中,/etc/passwd
文件保存着所有的用户信息,而一旦用户的登陆终端被设置为/sbin/nologin
,则不再允许登陆系统,因此,我们可以用如下命令查找出当前系统中不允许登陆系统的所有用户信息。
## 查找出当前系统中不再允许登陆的用户信息
# grep -n /sbin/nologin /etc/passwd
find
命令
find
命令用于按指定条件来查找文件, 其格式为find [查找路径] 寻找条件 操作
。
在Linux
系统中,搜索工作一般都是通过find
命令来完成的,它可以使用不同的文件特性作为寻找条件,一旦匹配成功则默认将信息显示到屏幕上。其常用的参数如下表所示:
参数 | 说明 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限 |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(n 同上) |
-ctime -n +n | 匹配修改文件权限的时间(n 同上) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 ! f2 | 匹配比f1文件新但比f2旧的文件 |
--type b/d/c/p/l/f | 匹配文件类型(字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+10MB为查找超过10MB的文件,-10MB为查找小于10MB的文件) |
-prune | 忽略某个目录 |
-exec ...... {} | 对搜索结果做进一步处理 |
例如,获取目录/etc
中以host
开头的文件列表,结果如下图所示:
再例如,在全系统中搜索权限中包括suid
权限的所有文件,其结果如下图所示:
对于上面参数表中最后一个参数-exec
,它是将搜索结果交由后面的命令做进一步处理,类似于管道符技术,这里列举一个示例:
## 搜索系统中归属agro用户的文件,并复制到/home/test目录
# find / -user agro -exec cp -a { } /home/test/
其中,{ }
表示搜索出的每一个文件,并且命令的结尾必须是。
本文到此结束!下篇继续!
如果对你有帮助,请随手 点赞 或 赞赏!关注本专栏,更多干货与你分享。
=======================================================
欢迎【关注、私信 @武三郎】。我们一起交流一起进步。