基础命令

一、文件和目录操作指令

在 Linux 系统里,路径是用来找到文件和目录的 “路线图”,绝对路径和相对路径是两种表示路径的方式,就好像你要去某个地方,有不同的指路方法一样。

根据以下命名进行练习,并尝试看懂它的输出结果,比较输出的结果有什么不同。命令加上-h 或者 --help 参数可以查看命令的帮助文档。如下示例:

ls -h 
ls --help

绝对路径:

绝对路径是从根目录 “/” 开始,完整地描述了文件或目录在文件系统中的位置,无论你当前在哪个目录,都能通过绝对路径准确无误地找到目标。打个比方,根目录 “/” 是一个城市的中心广场,从这里出发,沿着特定的街道和门牌号(目录和文件名),一直走到你要去的地方,这个完整的路线就是绝对路径。例如 “/home/user/Documents/file.txt”,“/home” 是 “/” 下的一个目录,“user” 是 “/home” 下的子目录,“Documents” 是 “/home/user” 下的子目录,“file.txt” 就在 “/home/user/Documents” 这个目录里。不管你当前在系统的哪个角落,只要按照这个绝对路径,都能找到 “file.txt” 文件。

相对路径:

相对路径是相对于你当前所在的目录来表示文件或目录的位置,就像你站在某个地方,描述从这里到目标地点的路线。如果你在 “/home/user” 目录下,“Documents/file.txt” 就是一个相对路径,它表示在当前 “/home/user” 目录下的 “Documents” 子目录里的 “file.txt” 文件。相对路径依赖于你当前的位置,不同的当前位置,相对路径所表示的实际文件可能不同。比如,你在 “/home” 目录下,“user/Documents/file.txt” 才是指向同一个文件的相对路径。相对路径就像是给熟悉周围环境的人指路,告诉他从当前位置出发,该怎么走能到目的地,这样更简洁方便。但如果当前位置变了,相对路径也要跟着变。

(一)ls 指令:查看目录内容

ls是 “list” 的缩写,用来显示指定目录下的内容。

直接输入ls,显示当前目录下的内容。

ls -l   :  显示当前目录下内容的详细信息。
ls -la  :  显示详细信息并列出隐藏文件。
ls -lha :  以人类适读单位显示详细信息及隐藏文件。
ls -lt  :  按时间排序显示内容。
ls -R   :  递归显示当前目录中的所有文件和子目录。
ls -l [dir name]    :  显示指定目录下的详细信息。

练习:

ls -alh /var/log
# total 是当前目录下的文件大小总和,开头首个字符代表文件类型
# 目录(d)、普通文件(-)、链接(l)、块设备文件(b)、字符设备文件(c)、套接字文件(s)、FIFO 文件(p)
# 先了解文件类型,后面的内容再详细讲解
total 948K
ls -al /var/log
total 948
total 952K
drwxrwxr-x  10 root      syslog          4.0K Mar 14 10:16 .
drwxr-xr-x  13 root      root            4.0K Mar 10 00:55 ..
lrwxrwxrwx   1 root      root              39 Feb 24 18:42 README -> ../../usr/share/doc/systemd/README.logs
-rw-r--r--   1 root      root             736 Feb 24 18:45 alternatives.log
-rw-r-----   1 root      adm                0 Mar 10 00:56 apport.log
drwxr-xr-x   2 root      root            4.0K Mar 14 09:15 apt
drwxr-xr-x   2 root      root            4.0K Mar 14 10:16 apt_copy

...
...
...

(二)cd 指令:切换目录

cd是 “change directory” 的缩写,用于切换当前所在的目录。

cd ~    :  回到自己的主目录。
cd .    :  切换到当前目录(基本无实际作用)。
cd ..   :  回到上一级目录。
cd ...  :  回到上上一级目录。
cd -    :  回到上一次的目录。
cd [dir name]   :  切换到特定目录。

(三)cp 指令:复制文件或文件夹

cp是 “copy” 的缩写,用于复制文件或者文件夹。

cp [file] [new_file] :  复制文件,等同于cp -f [file][new_file]。
cp -r [dir] [new_dir]    :  复制文件夹。
cp -i [file] [new_file]  :  复制时若目标文件存在则询问是否覆盖。
cp -f [file] [new_file]  :  复制时若目标文件存在则直接覆盖。
cp -b [file] [new_file]  :  复制时若目标文件存在则备份。
cp -f --backup=numbered [file] [file]    :  将文件备份,备份后缀为数字。

练习操作, 进入/var/log, 查看目录下的内容

sudo -i
cd /var/log
ls -al

拷贝文件

#为auth.log 文件拷贝一个副本文件,命名为auth.log.copy
cp auth.log auth.log.copy
#查看auth.log.copy 文件是否存在
ls -al

拷贝目录

#为apt 目录拷贝一个副本目录,命名为apt_copy
cp -r apt apt_copy
#查看apt_copy 目录是否存在
ls -al

使用 cp -i 再复制一遍 auth.log

#为auth.log 文件拷贝一个副本文件,命名为auth.log.copy
cp -i auth.log auth.log.copy
#因为auth.log.copy 文件已存在,会询问是否覆盖此文件,如果覆盖,文件内容可能会变,谨慎操作
#查看auth.log.copy 文件是否存在
ls -al

使用 cp -f 再复制一遍 auth.log

#为auth.log 文件拷贝一个副本文件,命名为auth.log.copy
cp -f auth.log auth.log.copy
#auth.log.copy 文件已存在,但不会询问,直接覆盖,文件内容可能会变,谨慎操作
#查看auth.log.copy 文件是否存在
ls -al

使用 cp -b 再复制一遍 auth.log

#为auth.log 文件拷贝一个副本文件,命名为auth.log.copy
cp -b auth.log auth.log.copy
#auth.log.copy 文件已存在,但不会询问,直接将原auth.log.copy备份为auth.log.copy~,然后覆盖
#查看auth.log.copy 文件是否存在
ls -al auth.log*
#-rw-r----- 1 syslog adm  12119 Mar 14 10:35 auth.log
#-rw-r----- 1 root   root 12119 Mar 14 10:40 auth.log.copy
#-rw-r----- 1 root   root 12119 Mar 14 10:36 auth.log.copy~

使用 cp -b 再复制一遍 auth.log

#为auth.log 文件拷贝一个副本文件,命名为auth.log.copy
cp -f --backup=numbered  auth.log auth.log.copy
#auth.log.copy 文件已存在,但不会询问,直接将原auth.log.copy备份为auth.log.copy.~1~,然后覆盖, 执行多遍则后缀数字增加
#查看auth.log.copy 文件是否存在
ls -al auth.log*
#-rw-r----- 1 syslog adm  12367 Mar 14 10:45 auth.log
#-rw-r----- 1 root   root 12367 Mar 14 10:48 auth.log.copy
#-rw-r----- 1 root   root 12367 Mar 14 10:48 auth.log.copy.~1~

(四)mv 指令:移动文件或目录,还能重命名

mv是 “move” 的缩写,可移动文件或目录,也能重命名。

mv [src_file] [dest_file]   :  将文件重命名。
mv -i [src_file] [dest_file]    :  覆盖目标文件前询问。
mv -f [src_file] [dest_file]    :  存在目标文件时直接覆盖。
mv [src_file] [dir_name]    :  将文件移动到特定文件夹。
mv [src_file] ..    :  将文件移动到上一级目录。
mv [dir_name]/* .   :  将文件夹下的所有内容移动到当前文件夹。

重命名文件

#将auth.log.copy 重命名为auth.log.copy.rename
mv auth.log.copy auth.log.copy.rename
#查询所有前缀为auth.log的文件,可以看到auth.log.copy 文件已经被重命名为auth.log.copy.rename
ls -al auth.log*

使用mv -i 重命名文件

#重新复制一份auth.log,命名为auth.log.copy
cp auth.log auth.log.copy
#将auth.log.copy 重命名为auth.log.copy.rename,因为auth.log.copy.rename文件已存在,会提示询问是否覆盖,输入yes即可覆盖
mv -i auth.log.copy auth.log.copy.rename
#查询所有前缀为auth.log的文件,可以看到auth.log.copy 文件已经被重命名为auth.log.copy.rename
ls -al auth.log*

使用mv -f 重命名文件, 文件存在也会强制覆盖,不提示

#重新复制一份auth.log,命名为auth.log.copy
cp auth.log auth.log.copy
#将auth.log.copy 重命名为auth.log.copy.rename
mv -f auth.log.copy auth.log.copy.rename
#查询所有前缀为auth.log的文件,可以看到auth.log.copy 文件已经被重命名为auth.log.copy.rename
ls -al auth.log*

练习cp 命令时,在当前目录下复制了一个apt_copy目录, 将auth.log.copy.rename 移动到apt_copy目录下

ls -al ./apt_copy
mv auth.log.copy.rename ./apt_copy
ls -al ./apt_copy

将文件移动到上一级目录

cd ./apt_copy
#查看上级目录是否存在auth.log.copy.rename
ls -al ../auth.log.copy*
mv ./auth.log.copy.rename ..
ls -al ../auth.log.copy*

将上级目录下.log 后缀的文件移动到当前目录

mv ../*.log .

(五)rm 指令:删除文件或目录

rm是 “remove” 的缩写,用于删除文件或目录。

rm [file]:删除文件,在 CentOS 8 等系统中,默认是rm -i的重命名,删除前会询问。
rm -f [file]:强制删除文件,不询问。
rm -r [dir]:删除目录及目录下所有内容。

在apt_copy目录下操作

ls -al
rm history.log
ls -al

(六)touch 指令:创建新文件或修改文件时间

touch指令可创建新文件或修改文件时间。

touch [file]:若文件不存在则创建,若存在则修改其时间。

在apt_copy目录下创建文件

ls -al
#创建一个test.file 文件
touch test.file
ls -al

在apt_copy目录下修改term.log 的时间为当前UTC时间

ls -al term.log
#修改term.log的时间
touch term.log
ls -al term.log

二、文件内容查看指令

(一)cat 指令:查看文件内容

cat是 “concatenate” 的缩写,用于连接文件并把内容打印到屏幕上。

cat [file]  :  打印文件内容到显示器。
cat -n [file]   :  打印文件的行号和内容到显示器。
cat -n [src_file] > [dest_file] :  将源文件的行号和内容输出至目标文件中。
cat [src_file_1] [src_file_2] > [dest_file] :  将两个源文件的内容输出到目标文件中。
cat /dev/null > [dest_file] :  清空目标文件内容。

在apt_copy目录下练习

cat term.log
cat -n term.log
cat -n term.log > cat_dest_file #将term.log的行号和内容输出至cat_dest_file
cat /dev/null >cat_dest_file    #清空目标文件cat_dest_file内容

(二)head 指令:查看文件开头部分

head用于查看文件开头的内容。

head -n [lines][file]:查看文件前[lines]行内容。
head -c [chars][file]:查看文件前[chars]个字符。
head [file]:查看文件前 10 行内容。

在apt_copy目录下练习

head term.log   #默认输出前10行
head -n 2 term.log #输出前2行, 空行也算一行
head -c 100 term.log #输出前100个字符

(三)tail 指令:查看文件尾部内容

tail用于查看文件尾部内容。

tail -n [lines][file]:查看文件最后[lines]行内容。
tail -c [chars][file]:查看文件最后[chars]个字符。
tail -f[file]:持续跟踪文件的增长信息。
tail[file]:查看文件最后 10 行内容。

在apt_copy目录下练习

tail term.log   #默认输出后10行
tail -n 12 term.log #输出后12行, 空行也算一行
tail -c 100 term.log #输出后100个字符

(四)more 和 less 指令:分页查看文件内容

more 和 less 是 Linux 系统中用于分页查看文件内容的实用工具,它们在查看大文件时非常有用,能避免大量内容一次性在屏幕上显示而导致难以查看。下面分别介绍它们的使用方法。

more 命令的使用方法

more 命令可以逐页显示文件内容,当内容超过一屏时,会暂停显示,等待用户操作。

基本用法:使用 more 命令后面跟上文件名,即可开始分页查看文件内容。

当文件内容显示满一屏后,会暂停显示,并在屏幕底部显示 --More--(xx%),其中 xx% 表示已经显示的文件内容比例。

常用操作:
    按 Enter 键:向下滚动一行。
    按 Space 键:向下滚动一屏。
    按 q 键:退出 more 查看。

less 命令的使用方法

less 是 more 的增强版,提供了更多的功能和更灵活的操作方式。

基本用法:同样是在命令后面跟上文件名。

常用操作:
    移动操作:
        按 Enter 键:向下滚动一行。
        按 Space 键:向下滚动一屏。
        按 b 键:向上滚动一屏。
        按 ↑ 和 ↓ 方向键:分别向上和向下滚动一行。
        按 Page Up 和 Page Down 键:分别向上和向下滚动一屏。
    搜索操作:
        按 / 键,然后输入要搜索的关键词,按 Enter 键开始搜索,会从当前位置向下查找匹配的内容。
        按 n 键:继续查找下一个匹配项。
        按 N 键:反向查找上一个匹配项。
    退出操作:按 q 键退出 less 查看。
more [file]:显示文件的第一页,按向下按钮可继续浏览。
cat [file] | more:等同于more [file]。
less[file]:功能较more更丰富,可向上翻页、搜索、跳转等。
cat [file] | less:等同于less[file]。

三、系统信息查看指令

(一)du 指令:查看目录或文件大小

du是 “disk usage” 的缩写,用于显示目录或文件的大小。

du -s   :  显示当前文件夹总大小,单位为千字节。
du -sh  :  以人类可读单位显示文件夹总大小。
du -sh [file]   :   以人类可读单位显示指定文件的大小。
du -h ./*   :  以人类可读单位显示当前文件夹下各文件的大小。

在apt_copy目录下练习

du -s
du -sh
du -sh term.log 
du -sh ./*

(二)df 指令:查看磁盘使用情况

df是 “disk free” 的缩写,用于显示文件系统的磁盘使用情况统计。

df:显示磁盘使用情况统计信息。
df -h:以人类可读单位显示文件系统的磁盘使用情况统计。

执行df,可看到类似如下输出:

Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1       10485760  5242880   5242880  50% /
tmpfs           1024000      4000   1020000   1% /tmp

执行df -h,输出会更易读:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        10G  5.0G  5.0G  50% /
tmpfs           1.0G  4.0M  1.0G   1% /tmp

(三)date 指令:显示或设定系统时间

date指令用于显示或设定系统的日期与时间。

date    :  显示系统当前时间。
date +"%Y-%m-%d"    :  以特定格式显示系统当前时间。
date -s "%Y-%m-%d HH:MM:SS" :  定系统时间。
date -r [file]  :  查看文件的修改时间。

执行date,显示当前系统时间,如 “2024-01-01 12:00:00”;

执行date +"%Y-%m-%d",可能显示 “2024-01-01”;

若要设置时间为 “2024-01-02 13:00:00”,执行date -s "2024-01-02 13:00:00"

执行date -r term.log可查看term.log的修改时间。

(四)wc 指令:统计文件字符信息

wc是 “word count” 的缩写,用于统计文件的行数、字数和字节数。

wc [file]:输出文件的行数、字数和字节数。
wc -l [file]:输出文件的行数。
wc -w [file]:输出文件的字数。
wc -c [file]:输出文件的字节数。
wc [file_1][file_2]:输出多个文件的行数、字数以及字节数,以及总的信息。

对于term.log文件,执行wc term.log,会输出行数、字数和字节数;

执行wc -l term.log只显示行数;执行wc -w text.txt只显示字数;

执行wc -c term.log只显示字节数。

四、网络测试指令

ping 指令:检测网络连通性

ping指令用于检测主机的网络连通性。

ping[主机名称或IP地址]:测试当前主机与指定主机的连通性,按Ctrl + C手动终止。
ping[主机名称或IP地址]-c[num]:仅执行[num]次测试。
ping[主机名称或IP地址]-i [second]:以固定间隔[second]秒 ping 指定主机。

执行ping baidu.com,可测试与百度服务器的连通性;

执行ping -c 5 baidu.com,只进行 5 次测试;

执行ping -i 2 baidu.com,每 2 秒向百度服务器发送一次测试数据包。

五、文件压缩解压指令

tar 指令:文件存档与解压

tar是 “tape archive” 的缩写,用于文件存档与解压。

tar -zcvf[tar_name].tar.gz [file/dir]:将文件或目录压缩为.tar.gz文件。
tar -cvf[tar_name].tar [file/dir]:将文件或目录压缩为.tar文件。
tar -jcvf[tar_name].tar.bz2[file/dir]:将文件或目录压缩为.tar.bz2文件。
tar -tzvf[tar_name].tar.gz:列出.tar.gz文件的内容。
tar -zxvf[tar_name].tar.gz:解压.tar.gz文件到当前目录。

执行‵cd /var/log` 进入/var/log目录,

若要将apt_copy目录压缩为apt_copy.tar.gz,执行tar -zcvf apt_copy.tar.gz apt_copy

若要查看apt_copy.tar.gz文件内容,执行tar -tzvf apt_copy.tar.gz

若要解压apt_copy.tar.gz,执行tar -zxvf apt_copy.tar.gz

六、系统常用指令

(一)clear 指令:清空屏幕

clear指令用于清空终端屏幕。

当终端屏幕内容较多时,执行clear,屏幕会被清空。

(二)pwd 指令:显示当前目录

pwd是 “print work directory” 的缩写,用于显示当前所在的目录。

在任意目录下执行pwd,会显示当前所在目录的路径,如/home/user。

(三)指令 --help:查看指令帮助信息

使用指令 --help可查看指定指令的帮助信息。

执行ls --help,会显示ls指令的各种参数和用法说明。

(四)reboot 指令:重启系统

reboot指令用于重启计算机系统。

在需要重启系统时,执行reboot指令,系统将重启。注意重启前需保存好未保存的工作。

(五)shutdown 指令:关机操作

shutdown指令用于关机。

shutdown -h now:立即关机。
shutdown -h [min]:[min]分钟之后关机,若[min]为空则表示 1 分钟后关机。
shutdown -c:取消所预约的关机操作。

若要立即关机,执行shutdown -h now

若要 5 分钟后关机,执行shutdown -h 5

若已设置关机,想取消,执行shutdown -c

七、任务处理相关指令

(一)Ctrl+C:停止当前任务

在终端运行命令时,按Ctrl + C组合键可停止当前正在运行的任务。

执行ping baidu.com时,按Ctrl + C可停止测试。

(二)Ctrl+Z:暂停当前任务

按Ctrl + Z组合键可暂停当前正在运行的任务。

用less查看大文件时,按Ctrl + Z可暂停查看。

###(三)fg N:恢复被挂起的任务

用Ctrl + Z暂停任务后,使用fg N(N为任务编号)可恢复被挂起的任务。

暂停任务后,执行jobs查看任务编号,假设编号为 1,执行fg 1可恢复该任务运行。

(四)jobs:查看后台任务 ID

jobs指令用于查看当前有哪些后台任务在运行以及它们的 ID。

在后台运行一些任务后,执行jobs,可看到类似如下输出:

[1]+  Stopped                 less large_file.txt
[2]-  Running                 backup_script.sh &

显示有两个后台任务,编号分别为 1 和 2。