这个系列的Linux教程主要参考刘遄老师的《Linux就该这么学》。用的系统是RHEL8,如果遇见一些命令出现问题,请首先检查自己的系统是否一致,如果不一致,可网上查一下系统间某些命令之间的差异。
目前设计的这个Linux学习系列的目录如下:(会陆续更新~)
- Linux 学习系列一:Linux的简单介绍以及命令行的基本操作
- Linux 学习系列二:Linux中的常用命令
- Linux 学习系列三:管道符、重定向与环境变量
- Linux 学习系列四:光速掌握Vim,效率提升神器
- Linux 学习系列五:Shell命令脚本的基本语法
- Linux 学习系列六:用户身份与文件权限
- …
\quad
\quad
Linux中的常用命令
常用系统工作命令
echo
echo
:用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]
”。
lucky@LAPTOP-G2DIO3FV:~$ echo hello world
hello world
lucky@LAPTOP-G2DIO3FV:~$ echo $SHELL
/bin/bash
这个命令其实类似print()
函数。
date
date
: 用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]
”。
只需在date
命令中输入以“+
”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年-月-日”的格式打包成“backup-2022-09-21.tar.gz”,命令如下:。
lucky@DESKTOP-VQ8KID4:~$ echo backup-`date "+%Y-%m-%d"`.tar.gz
backup-2022-09-21.tar.gz
date
命令中的参数以及作用:
参数 | 作用 |
---|---|
%t | 跳格[Tab 键] |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
单独使用date
,表示按照默认格式查看当前系统时间。
lucky@LAPTOP-G2DIO3FV:~$ date
Tue Jun 7 21:36:56 CST 2022
按照“年-月-日 小时:分钟:秒
”的格式查看当前系统时间
lucky@LAPTOP-G2DIO3FV:~$ date "+%Y-%m-%d %H:%M:%S"
2022-06-07 21:37:56
今天是今年的第几天?
lucky@LAPTOP-G2DIO3FV:~$ date "+%j"
158
reboot
reboot
:用于重启系统,其格式为reboot
。 注意:由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启。
poweroff
poweroff
:用于关闭系统,其格式为poweroff
。 该命令与reboot
命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑。
设置多少秒之后自动关机:
shutdown -s -t 3600 # 自动关机
wget
wget
:用于在终端中下载网络文件,格式为“wget [参数] 下载地址
”
wget
命令的参数以及作用:
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
下载文件用法:
wget + http://......
ps
ps
:用于查看系统中的进程状态,格式为“ps [参数]
”。 ps
命令与管道符技术搭配使用,可以用来抓取与某个指定服务进程相对应的PID号码。
ps
命令的常见参数以及作用:
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
在 Linux 系统中,有 5 种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自 含义如下所示。
- R(运行):进程正在运行或在运行队列中等待。
- S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
- D(不可中断):进程不响应系统异步信号,即便用
kill
命令也不能将其中断。 - Z(僵死):进程已经终止,但进程描述符依然存在,直到父进程调用
wait4()
系统函数后将进程释放。 - T(停止):进程收到停止信号后停止运行。
查看进程状态:
lucky@LAPTOP-G2DIO3FV:~$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1756 1076 ? Sl 20:14 0:00 /init
root 206 0.0 0.0 2112 364 ? Ss 21:17 0:00 /init
root 207 0.0 0.0 2112 372 ? R 21:17 0:00 /init
lucky 208 0.0 0.0 10040 5056 pts/0 Ss 21:17 0:00 -bash
lucky 246 0.0 0.0 10856 3356 pts/0 R+ 21:52 0:00 ps -aux
上面每一列代表的意思:
USER | 进程的所有者 |
---|---|
PID | 进程ID号 |
%CPU | CPU占用率 |
%MEM | 内存占用率 |
VSZ | 虚拟内存使用量(单位是KB) |
RSS | 占用的固定内存量(单位是KB) |
TTY | 所在终端 |
STAT | 进程状态 |
START | 被启动的时间 |
TIME | 实际使用CPU的时间 |
COMMAND | 命令名称与参数 |
top
top
:用于动态地监视进程活动与系统负载等信息,其格式为top
。 top
命令相当强大,能够动态地查看系统运维状态,相当于加强版的Windows任务管理器。
下面是top
的输出:
lucky@LAPTOP-G2DIO3FV:~$ top
top - 22:38:11 up 2:23, 0 users, load average: 0.00, 0.00, 0.00
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7632.9 total, 7376.6 free, 126.3 used, 130.0 buff/cache
MiB Swap: 2048.0 total, 2046.2 free, 1.8 used. 7313.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 1756 1076 1020 S 0.0 0.0 0:00.02 init
206 root 20 0 2112 364 0 S 0.0 0.0 0:00.00 init
207 root 20 0 2112 372 0 S 0.0 0.0 0:00.04 init
208 lucky 20 0 10040 5056 3344 S 0.0 0.1 0:00.07 bash
247 lucky 20 0 10872 3712 3200 R 0.0 0.0 0:00.00 top
top
命令执行结果的前5行为系统整体的统计信息,其所代表的含义如下:
- 第 1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5分钟、15 分钟内的平均值,数值越小意味着负载越低)。
- 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
- 第 4 行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
- 第 5 行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
注意:第 3 行中的数据均为 CPU 数据并以百分比格式显示,例如“
100.0 id
”意味着有 100% 的 CPU 处理器资源处于空闲。
pidof
pidof
: 用于查询某个指定服务进程的PID值,格式为“pidof [参数] [服务名称]
”。 每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。
查询本机上 sshd 服务程序的 PID:
lucky@LAPTOP-G2DIO3FV:~$ pidof sshd
2156
kill
kill
: 用于终止某个指定PID的服务进程,格式为“kill [参数] [进程 PID]
”。
用pidof
命令可以把查询到的PID所代表的进程终止掉,这种操作的效果等同于强制停止sshd服务。
lucky@LAPTOP-G2DIO3FV:~$ kill 2156
这与下面的命令是等价的:
systemctl stop sshd
killall
killall
:用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [进 程名称]
”。
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用killall
命令来批量结束某个服务程序带有的全部进程。
系统状态检测命令
ifconfig
ifconfig
:用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]
” 。
使用 ifconfig
命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为 MAC 地址), 以及 RX、TX 的接收数据包与发送数据包的个数及累计流量。
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.130 netmask 255.255.255.0 broadcast 192.168.15.255
inet6 fe80::9588:b084:5e74:df68 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:86:7c:0a txqueuelen 1000 (Ethernet)
RX packets 870 bytes 921625 (900.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 403 bytes 34129 (33.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 84 bytes 5040 (4.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 84 bytes 5040 (4.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:60:55:33 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- ens160:网卡名称
- 192.168.15.130:IP地址
- 00:0c:29:86:7c:0a:MAC地址
- RX:收到的数据包大小 (累计的)
- TX:发送出去的数据包大小
uname
uname
: 用于查看系统内核与系统版本等信息,格式为“uname [-a]”。
lucky@LAPTOP-G2DIO3FV:~$ uname -a
Linux LAPTOP-G2DIO3FV 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
lucky@LAPTOP-G2DIO3FV:~$ uname
Linux
要查看当前系统版本的详细信息,则需要查看 os-release
文件,其命令以及相应的结果如下:
lucky@LAPTOP-G2DIO3FV:/etc$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
uptime
uptime
:用于查看系统的负载信息,格式为uptime
。这个命令可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况;负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。
lucky@LAPTOP-G2DIO3FV:~$ free -h
total used free shared buff/cache available
Mem: 7.5Gi 118Mi 7.2Gi 0.0Ki 135Mi 7.1Gi
Swap: 2.0Gi 0B 2.0Gi
free
free
:用于显示当前系统中内存的使用量信息,格式为“free [-h]
”。-h
参数以更人性化的方式输出当前内存的实时使用量信息。
lucky@LAPTOP-G2DIO3FV:~$ free -h
total used free shared buff/cache available
Mem: 7.5Gi 118Mi 7.2Gi 0.0Ki 135Mi 7.1Gi
Swap: 2.0Gi 0B 2.0Gi
who
who
:用于查看当前登入主机的用户终端信息,格式为“who [参数]
”。这个命令可以快速显示出所有正在登录本机的用户的名称以及他们正在开启的终端信息。
last
last
: 用于查看所有系统的登录记录,格式为“last [参数]
”。
lucky@DESKTOP-VQ8KID4:~$ last
wtmp begins Wed Sep 21 16:48:53 2022
history
history
: 用于显示历史执行过的命令,格式为“history [-c]
”。执行 history
命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。如果觉得1000不够用,还可以自定义/etc/profile
文件中的HISTSIZE
变量值。在使用 history
命令时,如果使用-c
参数则会清空所有的命令历史记录。 还可以使用“!编码数字
”的方式来重复执行某一次的命令。
lucky@LAPTOP-G2DIO3FV:~$ history
1 ls
2 ls -l
3 ifconfig
4 cd /
5 ls
6 cd home
7 cd ...
8 cd ..
9 ls
10 ls help
11 ls --help
12 man ls
13 man 1 ls
14 history
15 clear
16 ls
17 clear
lucky@LAPTOP-G2DIO3FV:~$ !3
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.21.188.16 netmask 255.255.240.0 broadcast 172.21.191.255
inet6 fe80::215:5dff:fe74:1132 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:74:11:32 txqueuelen 1000 (Ethernet)
RX packets 180 bytes 216132 (216.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 133 bytes 11154 (11.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sosreport
sosreport
:用于收集系统配置及架构信息并输出诊断文档,格式为sosreport
。当 Linux 系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,亦或让他们能提前了解某些复杂问题。将收集好的资料压缩文件以及校验码,将其发送给技术支持人员即可。
工作目录切换命令
pwd
pwd
:命令用于显示用户当前所处的工作目录,格式为“pwd [选项]
”。
lucky@LAPTOP-G2DIO3FV:~$ pwd
/home/lucky
cd
cd
:切换工作目录
- “
cd -
”命令返回到上一次所处的目录 - “
cd..
”命令进入上级目录 - “
cd ~
”命令切换到当前用户的home目录 - “
cd ~username
”切换到其他用户的home目录
ls
ls
:用于显示目录中的文件信息,格式为“ls [选项] [文件]
”。
ls -a
:看到全部文件(包括隐藏文件)。ls -l
:可以查看文件的属性、大小等详细信息。ls -al
:可查看当前目录中的所有文件并输出这些文件的属性信息。
lucky@LAPTOP-G2DIO3FV:/$ ls -al
total 1436
drwxr-xr-x 19 root root 4096 Jun 8 21:31 .
drwxr-xr-x 19 root root 4096 Jun 8 21:31 ..
lrwxrwxrwx 1 root root 7 Mar 25 05:40 bin -> usr/bin
drwxr-xr-x 2 root root 4096 Mar 25 05:47 boot
drwxr-xr-x 8 root root 2760 Jun 8 21:31 dev
drwxr-xr-x 97 root root 4096 Jun 8 21:31 etc
drwxr-xr-x 3 root root 4096 Jun 7 20:14 home
-rwxr-xr-x 3 root root 1392928 Apr 5 20:23 init
lrwxrwxrwx 1 root root 7 Mar 25 05:40 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Mar 25 05:40 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 Mar 25 05:40 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 Mar 25 05:40 libx32 -> usr/libx32
drwx------ 2 root root 16384 Apr 11 2019 lost+found
drwxr-xr-x 2 root root 4096 Mar 25 05:40 media
drwxr-xr-x 5 root root 4096 Jun 7 20:14 mnt
drwxr-xr-x 2 root root 4096 Mar 25 05:40 opt
dr-xr-xr-x 217 root root 0 Jun 8 21:31 proc
drwx------ 2 root root 4096 Mar 25 05:42 root
drwxr-xr-x 7 root root 140 Jun 8 21:31 run
lrwxrwxrwx 1 root root 8 Mar 25 05:40 sbin -> usr/sbin
drwxr-xr-x 6 root root 4096 Mar 25 05:42 snap
drwxr-xr-x 2 root root 4096 Mar 25 05:40 srv
dr-xr-xr-x 11 root root 0 Jun 8 21:31 sys
drwxrwxrwt 2 root root 4096 Jun 8 21:31 tmp
drwxr-xr-x 14 root root 4096 Mar 25 05:41 usr
drwxr-xr-x 13 root root 4096 Mar 25 05:42 var
隐藏文件的文件名都是以 “.” 开头的
如果想要查看目录属性信息,则需要额外添加一个-d
参数。例如,可使用如下命令查看 /etc
目录的权限与属性信息:
lucky@LAPTOP-G2DIO3FV:/$ ls -ld /etc
drwxr-xr-x 97 root root 4096 Jun 8 21:31 /etc
文本文件编辑命令
cat
cat
:用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]
”。
cat -n ..
:显示行号
lucky@LAPTOP-G2DIO3FV:~$ cat -n main.cpp
1 #include<iostream>
2 using namespace std;
3
4 int main(){
5 cout << "hello world!" << endl;
6 return 0;
7 }
more
more
:用于查看纯文本文件(内容较多的),格式为“more [选项]文件
”。
用空格键或回车键向下翻页。
less
less
命令的功能是用于分页显示文件内容。分页显示的功能与more
命令很相像,但more
命令只能从前向后浏览文件内容,而less
命令则不仅能从前向后(PageDown键),还可以从后向前(PageUp键)浏览文件内容,更加灵活。例如,要查看一个定义了系统中全部用户身份的文件,输入以下命令:
[lucky@wz ~]$ less /etc/passwd
常用参数:
-b | 设置缓冲区的大小 |
---|---|
-e | 当文件显示结束后自动退出 |
-f | 强制打开文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示阅读进度百分比 |
-N | 显示每行的行号 |
-o | 将输出的内容在指定文件中保存起来 |
-s | 显示连续空行为一行 |
分页显示指定命令的输出结果:
[lucky@wz ~]$ history | less
如果文件内容多于一页,那么我们可以上下滚动文件。less
程序最常使用的键盘命令列举如下。
命令 | 行为 |
---|---|
Page UP or b | 向上翻滚一页 |
Page Down or space | 向下翻滚一页 |
UP Arrow | 向上翻滚一行 |
Down Arrow | 向下翻滚一行 |
G | 移动到最后一行 |
1G or g | 移动到开头一行 |
/charaters | 向前查找指定的字符串 |
n | 向前查找下一个出现的字符串,这个字符串是之前所指定查找的 |
h | 显示帮助屏幕 |
q | 退出 less 程序 |
head
head
:用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]
”。
head -n 15 read.txt 查看文件前15行
例如,查看文件前15行:
head -n 15 read.txt
tail
tail
:用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]
”。
例如,查看文件后15行:
tail -n 15 read.txt
实时查看最新文件:
tail -f read.txt
tr
tr
: 用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]
”。
一个例子,将文件内容所有小写字母换成大写字母。(先使用cat
命令读取待处理的文本,然后通过管道符(后面会讲)把这些文本内容传递给tr
命令进行替换操作即可)
cat anaconda-ks.cfg | tr [a-z] [A-Z]
wc
wc
: 用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本
”。 wc
的参数以及相应的作用如下:
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
在 Linux 系统中,passwd
是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询:
lucky@LAPTOP-G2DIO3FV:~$ wc -l /etc/passwd
31 /etc/passwd
stat
stat
:令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称
”。命令 stat o2z.txt
会显示出文件的三种时间状态:Access、Modify、Change。
lucky@wz ~]$ stat o2z.txt
File: o2z.txt
Size: 522 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 1093879 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ lucky) Gid: ( 1000/ lucky)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2022-01-19 06:08:53.880309472 -0500
Modify: 2022-01-19 06:08:09.908304874 -0500
Change: 2022-01-19 06:08:09.909304875 -0500
Birth: -
- A time 最后一次查看文件内容的时间
- M time 最后一次修改文件内容的时间
- C time 最后一次修改文件属性信息的时间 (权限变更)
cut
cut
: 用于按“列”提取文本字符,格式为“cut [参数] 文本
”。
- 使用
-f
参数来设置需要看的列数; - 使用
-d
参数来设置间隔符号。
passwd
在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出用户名信息,即提取以冒号为间隔符号的第一列内容:
[lucky@wz ~]$ cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
geoclue
rtkit
pulse
qemu
usbmuxd
unbound
rpc
gluster
chrony
libstoragemgmt
pipewire
setroubleshoot
saslauth
dnsmasq
radvd
clevis
cockpit-ws
sssd
colord
gdm
rpcuser
gnome-initial-setup
sshd
insights
avahi
tcpdump
lucky
diff
diff
:用于比较多个文本文件的差异,格式为“diff [参数] 文件
”。 主要用于判断文件是否被篡改。
- 使用
--brief
参数来确认两个文件是否不同; - 使用
-c
参数来详细比较出多个文件的差异之处。
为了实验,编写两个文件:
[lucky@wz ~]$ cat diff_A.txt
hello world
hello xiaoming
hi
[lucky@linuxprobe ~]$ cat diff_B.txt
hello world!
hello
hihi
使用diff
来比较这两个文件的差异:
[lucky@wz ~]$ diff --brief diff_A.txt diff_B.txt
Files diff_A.txt and diff_B.txt differ
[lucky@wz ~]$ diff -c diff_A.txt diff_B.txt
*** diff_A.txt 2022-06-09 07:37:45.101395727 -0400
--- diff_B.txt 2022-06-09 07:38:09.969031421 -0400
***************
*** 1,3 ****
! hello world
! hello xiaoming
! hi
--- 1,3 ----
! hello world!
! hello
! hihi
文件目录管理命令
touch
touch
: 用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]
” 。
touch
命令的参数及其作用
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改 atime 与 mtime |
修改时间:
[lucky@wz ~]$ ls -l diff_A.txt
-rw-rw-r--. 1 lucky lucky 30 Jun 9 07:37 diff_A.txt
[lucky@wz ~]$ touch -d "2017-05-05 13:58" diff_A.txt
[lucky@wz ~]$ ls -l diff_A.txt
-rw-rw-r--. 1 lucky lucky 30 May 5 2017 diff_A.txt
mkdir
mkdir
:用于创建空白的目录,格式为“mkdir [选项] 目录
” 。
- 结合
-p
参数来递归创建出具有嵌套叠层关系的文件目录。
[lucky@wz ~]$ mkdir -p gaga/gaga
[lucky@wz ~]$ cd gaga/gaga
[lucky@wz gaga]$
cp
cp
: 用于复制文件或目录,格式为“cp [选项] 源文件 目标文件
”。
在 Linux 系统中,复制操作具体分为 3 种情况:
- 如果目标文件是目录,则会把源文件复制到该目录中;
- 如果目标文件也是普通文件,则会询问是否要覆盖它;
- 如果目标文件不存在,则执行正常的复制操作。
cp
命令的参数及其作用
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r 为上述参数) |
cp 源文件 目标文件
cp -r 源目录 目标目录
mv
mv
: 用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]
” 。
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,就是对其进行重命名。
mv 源文件 目标文件名
rm
rm :用于删除文件或目录,格式为“rm [选项] 文件
”。 在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm
命令后跟上-f
参数来强制删除。另外,想要删除一个目录, 需要在 rm
命令后面一个-r
参数才可以,否则删除不掉。
rm 文件名
rm -f 文件名 // 强制删除
rm -rf 目录 // 强制删除目录
rm -rf / //千万不要输!
dd
dd
: 用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]
” 。
dd
命令的参数及其作用
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
用dd
命令从/dev/zero
设备文件中取出一个大小为 560MB 的数据块,然后保存成名为 560_file
的文件。
dd if=/dev/zero of=560_file count=1 bs=560M
在 Linux 系统中可以直接 使用 dd
命令来压制出光盘镜像文件,将它编程一个可立即使用的 iso 镜像:
dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
file
file
: 用于查看文件的类型,格式为“file 文件名
” 。在 Linux 系统中,由于文本、目录、设备等所有这些一切都统称为文件,但是我们不能单凭后缀就知道具体的文件类型,这时就需要使用file
命令来查看文件类型了。
lucky@DESKTOP-VQ8KID4:~$ file three.py
three.py: ASCII text
lucky@DESKTOP-VQ8KID4:~$ cp three.py three.sh
lucky@DESKTOP-VQ8KID4:~$ file three.sh
three.sh: ASCII text
打包压缩与搜索命令
tar
tar
: 用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]
” 。 在 Linux 系统中,常见的文件格式比较多,其中主要使用的是.tar
或.tar.gz
或.tar.bz2
格式。
tar
命令的参数及其作用
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用 Gzip 压缩或解压 |
-j | 用 bzip2 压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
-f
参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。
常用组合命令:
tar czvf 压缩包.tar.gz 文件名 // 压缩
tar xzvf 压缩包 // 解压
grep
grep
: 令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]
” 。 grep
命令是用途最广泛的文本搜索匹配工具。
-n
参数用来显示搜索到信息的行号;-v
参数用于反选信息(即没有包含关键词的所有信息行)
使用:
grep 关键词 文件名
grep -n 关键词 文件名 // 显示行号
例子:在 Linux 系统中,/etc/passwd
文件是保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin
,则不再允许登录系统,因此可以使用 grep
命令来查找出当前系统中不允许登录系统的所有用户信息:
grep /sbin/nologin /etc/passwd
find
find
: 用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作
”。 在 Linux系统中,搜索工作一般都是通过find
命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。
find
命令中的参数以及作用:
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限(mode 为完全匹配,-mode 为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前) |
-atime -n +n | 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件 f1 新但比 f2 旧的文件 |
–type b/d/c/p/l/f | 匹配文件类型(后面的参数依次表示块设备、目录、字符设备、管道、 链接文件、文本文件) |
-size | 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件) |
-prune | 忽略某个目录 |
-exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令(类似与管道符) |
find / -user lucky
find / -name fstab // 寻找文件