一、文件和目录操作指令
在 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。