一、新手村报到:Linux 初印象
在当今数字化浪潮中,Linux 系统宛如一位低调却实力超凡的幕后英雄,在服务器领域占据着举足轻重的地位。从互联网巨头的数据中心,到中小企业的业务支撑,Linux 的身影无处不在,稳稳地占据了服务器操作系统市场的大半壁江山。据相关数据显示,超过 80% 的服务器都在运行 Linux 系统,像谷歌、亚马逊等行业巨头,其核心业务的稳定运行都离不开 Linux 强大的支撑 。
对于开发者而言,Linux 更是一座宝库,它拥有丰富的开发工具、庞大的开源社区以及高度的自定义性,为开发者提供了广阔的创新空间,是提升技术能力、拓展职业发展的关键技能。无论是后端开发、大数据处理,还是云计算、人工智能等前沿领域,掌握 Linux 都如同拿到了一把万能钥匙,能够帮助开发者更加高效地完成任务。
但对于刚踏入 Linux 世界的小白来说,面对那看似神秘的命令行界面,难免会感到迷茫和无从下手。别担心,今天就为大家带来一份精心整理的 Linux 小白常用命令指南,让我们一起揭开 Linux 的神秘面纱,开启高效操作的大门。
二、文件与目录操作:探索文件的 “小世界”
在 Linux 系统中,文件与目录操作是最基础也最核心的部分,就像我们在现实生活中整理房间、寻找物品一样,熟练掌握这些操作命令,能让我们在 Linux 的文件世界里如鱼得水。接下来,就为大家详细介绍一些常用的文件与目录操作命令。
(一)ls:列出目录内容
ls 命令就像是一个 “目录侦察兵”,它的基本功能是列出指定目录下的内容。比如,在终端中输入 “ls”,它会快速展示当前目录下的所有文件和子目录的名称。
而当我们加上一些参数时,它就变得更加强大。例如,“-l” 参数,就像给我们一个放大镜,以长格式显示文件和目录的详细信息,包括文件的权限、所有者、大小、修改时间等。比如,当你输入 “ls -l”,会看到类似这样的输出:
-rw-r--r-- 1 user user 1024 Jan 1 12:00 file.txt drwxr-xr-x 2 user user 4096 Jan 2 09:30 directory |
其中,第一列的 “-” 表示这是一个普通文件(如果是 “d” 则表示目录),后面的 “rw-r--r--” 分别代表文件所有者、所属组和其他用户的权限;第二列的 “1” 表示链接数;第三列和第四列分别是所有者和所属组;第五列是文件大小;第六列和第七列是修改时间和文件名。
“-a” 参数则是让 ls 变得 “无所遁形”,显示所有文件,包括隐藏文件。在 Linux 中,以 “.” 开头的文件是隐藏文件,正常情况下不会显示,使用 “ls -a” 就能将它们全部展现出来 。
还有 “-R” 参数,它就像一个 “递归探险家”,递归列出子目录内容。当你想查看一个目录及其所有子目录下的所有文件时,“ls -R” 就能派上用场。例如,在一个项目文件夹中,你可以通过这个命令快速了解整个项目的文件结构。
(二)cd:穿梭于目录之间
cd 命令是我们在 Linux 文件系统中穿梭的 “魔法飞毯”,用于切换当前工作目录。它的用法非常简单,比如要进入 “documents” 目录,只需在终端输入 “cd documents” 即可。如果要进入的是绝对路径,例如 “/home/user/Downloads”,直接输入 “cd /home/user/Downloads” 就能一步到位 。
回到上一级目录也很简单,输入 “cd..” 即可,这里的 “..” 就代表上一级目录。而如果想回到用户主目录,输入 “cd ~” 或者直接 “cd” 就可以了,“~” 符号在 Linux 中就表示用户主目录。另外,如果你想进入根目录,那就是 “cd /”,根目录是整个文件系统的起点,所有的文件和目录都从这里开始延伸。
(三)pwd:定位当前位置
pwd 命令就像是一个精准的 “定位器”,它的作用是显示当前工作目录的绝对路径。当你在 Linux 系统中进行了多次目录切换,可能会有些 “晕头转向”,这时,只需输入 “pwd”,它会立刻告诉你当前所在的位置。例如,输出 “/home/user/Desktop”,你就清楚地知道自己在用户主目录下的桌面文件夹中,避免在复杂的文件系统中迷失方向。
(四)mkdir:创建新目录
mkdir 命令是创建新目录的 “建筑师”。要创建一个名为 “new_folder” 的目录,只需在终端输入 “mkdir new_folder”,一个崭新的空目录就会出现在当前目录下。如果要创建多个目录,也很简单,比如 “mkdir dir1 dir2 dir3”,这样就可以一次性创建 dir1、dir2、dir3 三个目录 。
当我们需要创建一个多级目录,比如 “parent/child/grandchild”,而当前目录下 “parent” 目录可能都不存在时,就需要用到 “-p” 参数了。输入 “mkdir -p parent/child/grandchild”,系统会自动递归创建所有不存在的目录,非常方便。
(五)rmdir:删除空目录
rmdir 命令是专门用来删除空目录的 “清道夫”。它的特性是只能删除空目录,如果目录中有文件或子目录,使用 rmdir 命令会报错。例如,要删除名为 “empty_dir” 的空目录,输入 “rmdir empty_dir” 即可。但如果 “empty_dir” 目录下有文件,就需要先清空里面的文件,或者使用更强大的 rm 命令来删除整个目录及其内容(不过使用 rm 命令时要非常小心,因为它会直接删除文件,没有回收站的保护)。
(六)touch:创建文件或更新时间戳
touch 命令有两个主要功能,一是创建空文件,二是更新文件的时间戳。当你需要创建一个新的空文件,比如 “new_file.txt”,在终端输入 “touch new_file.txt”,这个空文件就创建好了。这在编写脚本、配置文件等场景中经常用到,先创建一个空文件,然后再进行编辑 。
而更新时间戳的功能也很实用。比如,当你想让某个文件的修改时间显示为当前时间,就可以使用 “touch” 命令。假设你有一个文件 “old_file.txt”,输入 “touch old_file.txt”,它的修改时间就会被更新为当前时间,这在一些需要根据文件时间进行排序、处理的场景中非常有用。
(七)cp:复制文件或目录
cp 命令是文件和目录复制的 “搬运工”。要复制一个文件,例如将 “source_file.txt” 复制到 “destination_folder” 目录下,输入 “cp source_file.txt destination_folder” 即可。如果要在复制的同时重命名,比如将 “source_file.txt” 复制为 “new_name.txt” 到目标目录,命令就是 “cp source_file.txt
destination_folder/new_name.txt” 。
当复制目录时,就需要用到 “-r” 参数(递归复制),因为目录可能包含多个子目录和文件。例如,要复制 “source_dir” 目录及其所有内容到 “destination_dir”,输入 “cp -r source_dir destination_dir”。另外,“-v” 参数可以显示详细的复制过程,让你清楚地看到每个文件的复制进度,比如 “cp -rv source_dir destination_dir”,它会在终端输出每个被复制文件的信息。
(八)mv:移动与重命名
mv 命令既可以移动文件或目录,也可以对它们进行重命名,是一个非常灵活的 “多功能工具”。当要移动文件时,比如将 “file.txt” 从当前目录移动到 “other_folder” 目录,输入 “mv file.txt other_folder” 即可。如果要移动多个文件,比如 “file1.txt”“file2.txt” 到 “destination_folder”,可以使用 “mv file1.txt file2.txt destination_folder” 。
重命名操作也很简单,比如将 “old_name.txt” 重命名为 “new_name.txt”,在同一目录下输入 “mv old_name.txt new_name.txt” 即可。本质上,重命名就是将文件移动到同一个目录下,只是文件名发生了改变。
(九)rm:删除文件或目录
rm 命令是删除文件和目录的 “强力粉碎机”,但使用时一定要格外小心,因为它删除的文件无法轻易恢复。要删除一个文件,比如 “unwanted_file.txt”,输入 “rm unwanted_file.txt”,系统会提示你确认是否删除,输入 “y” 即可删除。
当删除目录时,需要使用 “-r” 参数(递归删除),因为目录通常包含多个文件和子目录。例如,要删除 “old_dir” 目录及其所有内容,输入 “rm -r old_dir”。这里要特别注意,“-r” 参数会递归删除目录下的所有文件和子目录,一旦执行,后果不可逆。
还有 “-f” 参数(强制删除),它会不提示确认直接删除文件或目录,使用时千万要谨慎,避免误删重要数据。比如 “rm -rf old_dir”,这个命令会直接删除 “old_dir” 目录及其所有内容,不会有任何提示,所以在使用 “-f” 参数前,一定要再三确认要删除的对象是否正确。
三、文本处理:和文件内容 “对话”
在 Linux 系统中,文本处理是一项核心技能,无论是查看配置文件、搜索日志信息,还是对数据进行分析处理,都离不开各种文本处理命令。下面,就为大家介绍几个常用的文本处理命令,让你能够轻松地与文件内容进行 “对话”。
(一)cat:查看文件内容
cat 命令是查看文件内容的基础命令,就像一个 “文件阅读器”,它可以将文件的内容直接输出到终端。例如,要查看 “example.txt” 文件的内容,只需在终端输入 “cat example.txt”,文件的内容就会立即显示出来。
如果文件内容较多,在终端中一闪而过,难以查看时,我们可以结合管道符 “|” 和 more 或 less 命令来实现分页查看。比如 “cat example.txt | more”,这样就可以按页查看文件内容,每按一次空格键,就会显示下一页内容;而 “cat example.txt | less” 则更加灵活,不仅可以向下查看,还能通过方向键向上回翻,按 “q” 键退出查看 。
cat 命令还可以用来合并文件。比如,有 “file1.txt” 和 “file2.txt” 两个文件,输入 “cat file1.txt file2.txt > combined.txt”,就可以将这两个文件的内容合并到 “combined.txt” 文件中。此外,使用 “cat -n example.txt” 可以显示文件内容并附带行号,这在查看配置文件、脚本文件时非常有用,方便我们快速定位某一行内容。
(二)grep:搜索文本内容
grep 命令是文本搜索的 “神器”,它能够在文件中快速搜索指定的字符串,就像在图书馆中快速找到包含特定关键词的书籍一样。比如,要在 “log.txt” 文件中搜索 “error” 关键字,输入 “grep 'error' log.txt”,终端会输出所有包含 “error” 的行,帮助我们快速定位错误信息。
在实际使用中,grep 命令还有很多实用的参数。“-i” 参数可以忽略大小写,当我们不确定关键词的大小写时,这个参数就派上用场了。例如,搜索 “Linux”,无论文件中是 “Linux”“linux” 还是 “LINUX”,使用 “grep -i 'Linux' file.txt” 都能搜索到 。
“-r” 参数用于递归搜索目录下的所有文件,这在查找项目中某个关键词时非常高效。比如,在一个大型项目目录中搜索 “function_name”,输入 “grep -r 'function_name' /path/to/project”,它会遍历该目录及其所有子目录下的文件,找到所有包含该关键词的行。
“-v” 参数则是反向匹配,显示不包含指定字符串的行。比如,我们想查看 “log.txt” 中不包含 “success” 的行,输入 “grep -v'success' log.txt” 即可。
(三)sed:文本编辑小能手
sed 命令是一个强大的流编辑器,它可以对文本进行替换、删除、插入等操作,就像一个灵活的 “文本化妆师”。sed 命令最常用的操作就是替换文本。例如,要将 “example.txt” 文件中的 “old_text” 替换为 “new_text”,可以使用 “sed's/old_text/new_text/g' example.txt”,这里的 “g” 表示全局替换,即替换文件中所有出现的 “old_text”。
如果要直接修改文件内容,而不是仅输出替换结果,可以加上 “-i” 参数,即 “sed -i's/old_text/new_text/g' example.txt”。另外,sed 命令还可以结合正则表达式进行更复杂的文本处理。比如,要删除 “log.txt” 中所有以 “#” 开头的注释行,可以使用 “sed '/^#/d' log.txt” 。
(四)awk:文本处理大师
awk 命令是按字段处理文本的 “大师级” 工具,它可以对文本进行复杂的分析和处理,在处理结构化文本数据时表现尤为出色。比如,有一个以空格分隔的文本文件 “data.txt”,内容如下:
name age gender Alice 25 female Bob 30 male |
要打印出每个人的年龄,使用 “awk '{print 2}' data.txt”,这里的“2” 表示第二列,命令执行后会输出 “25” 和 “30”。
awk 命令还支持条件判断和计算。比如,要找出 “data.txt” 中年龄大于 28 岁的人,使用 “awk '2>28{print 0}' data.txt”,“0”表示整行内容,这样就会输出“Bob 30 male”这一行 。通过使用“BEGIN”和“END”关键字,awk还可以在处理文件前和处理文件后执行特定的操作。例如,“awk 'BEGIN{sum=0} {sum+=2} END {print "Total age:", sum}' data.txt”,这个命令会先初始化一个变量 “sum” 为 0,然后逐行读取文件,将第二列(年龄)的值累加到 “sum” 中,最后在处理完所有行后,输出年龄总和。
四、系统管理:掌控系统的 “脉搏”
在 Linux 系统中,系统管理命令是确保系统稳定运行、高效管理进程和服务的关键。接下来,为大家介绍一些常用的系统管理命令,帮助你更好地掌控 Linux 系统的运行状态。
(一)top:实时监控系统状态
top 命令就像是系统的 “实时监控仪表盘”,能够实时显示系统的资源使用情况,包括 CPU、内存、进程等信息 。在终端输入 “top” 命令,你会看到一个动态更新的界面,上面展示了系统的各种实时数据。
第一行显示了系统的当前时间、运行时间、登录用户数以及系统负载平均值。其中,系统负载平均值分别表示过去 1 分钟、5 分钟和 15 分钟内的系统平均负载情况,数值越低表示系统负载越轻。例如,“load average: 0.20, 0.15, 0.10”,说明过去 1 分钟系统负载相对较低,而 15 分钟内的负载也较为稳定。
第二行展示了任务信息,包括总进程数、正在运行的进程数、睡眠中的进程数、停止的进程数和僵尸进程数。比如,“Tasks: 200 total, 2 running, 198 sleeping, 0 stopped, 0 zombie”,表示当前系统共有 200 个进程,其中 2 个正在运行,198 个处于睡眠状态,没有停止和僵尸进程。
第三行及以下是关于 CPU、内存等资源的使用情况,以及每个进程的详细信息,包括进程 ID(PID)、用户、优先级、CPU 使用率、内存使用率等。例如,你可以看到某个进程的 CPU 使用率高达 80%,这可能意味着该进程正在占用大量系统资源,需要进一步分析是否存在异常。
在 top 命令界面中,还有一些常用的操作键。按下 “P” 键,会按照 CPU 使用率对进程进行排序,方便你快速找到占用 CPU 资源最多的进程;按下 “M” 键,则会按照内存使用率排序;按下 “1” 键,可以显示每个 CPU 核心的详细信息;按下 “q” 键,即可退出 top 命令界面。
(二)ps:查看进程状态
ps 命令用于查看当前进程的状态,它就像是系统进程的 “探测器”。通过 ps 命令,我们可以获取进程的详细信息,包括进程 ID、所有者、CPU 和内存使用率等。
常用的参数有 “-ef” 和 “-aux”。“-ef” 参数会以完整格式显示所有进程的详细信息,包括进程的启动时间、命令行参数等。例如,输入 “ps -ef”,会看到类似这样的输出:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:00? 00:00:01 /sbin/init root 2 0 0 08:00? 00:00:00 [kthreadd] |
其中,“UID” 表示用户 ID,“PID” 是进程 ID,“PPID” 是父进程 ID,“C” 表示 CPU 使用率,“STIME” 是进程启动时间,“TTY” 表示终端设备,“TIME” 是进程使用 CPU 的累计时间,“CMD” 是启动进程的命令。
“-aux” 参数则会以用户为主的格式显示所有用户的进程信息,包括进程的内存使用情况等。例如,“ps -aux” 的输出中会包含 “% MEM” 字段,表示进程占用的内存百分比。比如:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 193644 6536? Ss 08:00 0:01 /sbin/init |
如果我们要查找特定进程,比如查找名为 “nginx” 的进程,可以结合 grep 命令使用,如 “ps -ef | grep nginx”,这样就能快速找到所有与 “nginx” 相关的进程信息。
(三)kill:结束进程
kill 命令用于根据进程 ID 终止进程,它是系统进程的 “终结者”。当某个进程出现异常,比如占用大量资源且无法正常响应时,我们就可以使用 kill 命令来结束它。
使用 kill 命令时,需要先获取进程的 ID,可以通过 ps 命令来查找。例如,我们已经知道要终止的进程 ID 为 “1234”,那么在终端输入 “kill 1234”,系统就会向该进程发送一个终止信号,让它正常结束运行。
但有时候,进程可能无法正常响应终止信号,这时就需要使用 “-9” 参数来强制终止进程,即 “kill -9 1234”。不过,使用 “-9” 参数时一定要格外小心,因为它会直接终止进程,不会给进程任何保存数据或执行清理操作的机会,可能会导致数据丢失或系统不稳定。所以,在使用前一定要确认该进程确实需要被强制终止,并且不会对系统造成不良影响。
(四)systemctl:管理系统服务
systemctl 命令是管理系统服务的 “万能钥匙”,在现代 Linux 系统中,它被广泛用于启动、停止、重启和查看服务状态等操作。
例如,要启动 nginx 服务,只需在终端输入 “sudo systemctl start nginx”;要停止 nginx 服务,输入 “sudo systemctl stop nginx”;如果需要重启 nginx 服务,命令则是 “sudo systemctl restart nginx” 。
查看服务状态也很简单,比如查看 mysql 服务的状态,输入 “sudo systemctl status mysql”,系统会显示 mysql 服务是否正在运行,以及最近的运行日志等信息。如果服务正常运行,会看到类似 “active (running)” 的提示;如果服务未运行,会显示 “inactive (dead)”。
此外,systemctl 还可以设置服务开机自启或禁止开机自启。要设置 nginx 服务开机自启,使用 “sudo systemctl enable nginx”;要禁止开机自启,则是 “sudo systemctl disable nginx”。
(五)crontab:定时任务调度
crontab 命令是实现定时任务调度的 “时间魔法师”,它允许我们设置在特定时间自动执行某些命令或脚本。在实际应用中,定时任务非常常见,比如每天凌晨自动备份数据库、定期清理系统日志等。
使用 crontab 命令,首先需要编辑任务列表,输入 “crontab -e”,系统会打开一个文本编辑器,让我们添加或修改定时任务。任务的设置通过一个特殊的表达式来实现,这个表达式由五个字段组成,分别表示分钟、小时、日期、月份和星期几,后面跟着要执行的命令或脚本路径 。
例如,“30 2 * * * /home/user/backup.sh” 表示每天凌晨 2 点 30 分执行 “/home/user/backup.sh” 脚本;“0 0 * * 1 /home/user/clean_log.sh” 表示每周一的凌晨 0 点执行 “/home/user/clean_log.sh” 脚本,用于清理日志。
在表达式中,“” 表示所有可能的值,“/” 用于指定时间间隔,“,” 可以指定多个值。比如,“/10 * * * *
/home/user/check_status.sh” 表示每 10 分钟执行一次 “
/home/user/check_status.sh” 脚本,用于检查系统状态。
五、网络操作:连接世界的 “桥梁”
在网络连接无处不在的当下,网络操作命令是 Linux 系统中实现网络通信、管理网络连接的关键工具。通过这些命令,我们可以测试网络连通性、配置网络接口、查看网络状态以及进行远程登录和文件传输等操作。下面,就为大家介绍一些常用的网络操作命令,帮助你更好地在 Linux 系统中畅游网络世界。
(一)ping:测试网络连通性
ping 命令就像是网络世界的 “探路先锋”,主要用于测试网络连接是否正常,通过向目标主机发送 ICMP(互联网控制消息协议)回显请求数据包,并等待接收回显回复数据包,以此来验证与目标主机的连接是否畅通 。
它的基本用法非常简单,在终端输入 “ping 目标 IP 地址或域名” 即可。比如,要测试与百度服务器的连接,输入 “ping www.baidu.com”,你会看到类似这样的输出:
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data. 64 bytes from 14.215.177.39: icmp_seq=1 ttl=53 time=12.3 ms 64 bytes from 14.215.177.39: icmp_seq=2 ttl=53 time=12.5 ms 64 bytes from 14.215.177.39: icmp_seq=3 ttl=53 time=12.4 ms |
其中,“icmp_seq” 表示序号,“ttl” 是生存时间,“time” 是响应时间。通过这些信息,我们可以判断网络是否连通,以及网络延迟的情况。如果出现 “请求超时(request time out)” 的提示,则说明可能存在网络连接问题,比如目标主机被屏蔽或不在线等 。
ping 命令还有一些常用的参数。“-c” 参数用于指定发送的请求次数,比如 “ping -c 5 www.baidu.com”,表示只发送 5 个 ping 请求,然后停止;“-i” 参数可以设置发送请求之间的时间间隔,默认是 1 秒,若想设置为 0.5 秒发送一次请求,使用 “ping -i 0.5 192.168.1.1”(假设目标 IP 是 192.168.1.1);“-s” 参数能指定每个数据包的大小,默认是 56 字节,若要发送 100 字节的数据包,命令为 “ping -s 100 192.168.1.1” 。
(二)ifconfig/ip:查看和配置网络接口
在 Linux 系统中,查看和配置网络接口信息是网络操作的基础,而 ifconfig 和 ip addr 命令就像是网络接口的 “管家”,能帮助我们轻松完成这些任务。
ifconfig 命令来自于 net-tools 包,它可以显示当前系统中所有网络接口的详细信息,包括接口名称、MAC 地址、IP 地址、子网掩码、广播地址等 。例如,在终端输入 “ifconfig”,会看到类似这样的输出:
ens33: flags=4163 inet 192.168.72.10 netmask 255.255.255.0 broadcast 192.168.72.255 inet6 fe80::a5da:ff58:2c32:2b5f prefixlen 64 scopeid 0x20 ether 00:0c:29:18:b5:ff txqueuelen 1000 (Ethernet) RX packets 54379 bytes 4648603 (4.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 102028 bytes 28282331 (26.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 106 bytes 9256 (9.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 106 bytes 9256 (9.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
其中,“ens33” 是网卡名称,“UP” 表示该接口已启用,“inet” 后面是 IP 地址,“netmask” 是子网掩码,“ether” 是 MAC 地址。“lo” 是回环地址,用于本地主机的网络测试 。
如果要查看所有网络接口的信息,包括没有启动的网卡,使用 “ifconfig -a” 命令;若只想查看某个特定网卡的详细信息,比如 “ens33”,则输入 “ifconfig ens33”。此外,ifconfig 命令还可以用于配置网络接口,如激活或禁用网络接口,使用 “ifconfig 网卡名称 up/down”,例如 “ifconfig ens33 up” 表示开启 ens33 网卡;配置临时 IP 地址,“ifconfig 网络接口 IP 地址 [/ 子网掩码长度]”,如 “ifconfig ens33 192.168.72.20” 表示为 ens33 网卡设置临时 IP 地址 192.168.72.20 。
不过,在一些新的 Linux 发行版中,已经不再推荐使用 ifconfig 命令,而是推荐使用 ip 命令来进行网络配置。ip 命令提供了更多的功能和灵活性,可以更好地满足网络配置的需求 。使用 “ip addr” 命令查看网络接口信息,输出格式更加简洁明了,例如:
1: lo: link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: link/ether 00:0c:29:18:b5:ff brd ff:ff:ff:ff:ff:ff inet 192.168.72.10/24 brd 192.168.72.255 scope global dynamic noprefixroute ens33 valid_lft 86334sec preferred_lft 86334sec inet6 fe80::a5da:ff58:2c32:2b5f/64 scope link noprefixroute valid_lft forever preferred_lft forever |
使用 ip 命令配置 IP 地址等参数时,语法稍有不同。例如,为 ens33 网卡添加 IP 地址 192.168.72.20,子网掩码 255.255.255.0,命令为 “ip addr add 192.168.72.20/24 dev ens33”;启用或禁用网卡,使用 “ip link set ens33 up/down” 。
(三)netstat:查看网络状态
netstat 命令是查看网络状态的 “多面手”,它可以显示网络连接状态、端口信息、路由表等,帮助我们全面了解系统的网络情况。利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
使用 “netstat -an” 命令可以查看所有网络连接,包括 TCP 和 UDP 连接,“-a” 表示显示所有选项,“-n” 表示以数字形式显示地址和端口号,拒绝显示别名 。例如,输出结果中可能会看到:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.72.10:3306 192.168.72.1:53456 ESTABLISHED udp 0 0 0.0.0.0:5353 0.0.0.0:* |
其中,第一列 “tcp” 或 “udp” 表示协议类型,第二列和第三列分别是接收队列和发送队列中的数据量,第四列是本地地址和端口,第五列是远程地址和端口,第六列是连接状态。“LISTEN” 表示正在监听端口,等待连接;“ESTABLISHED” 表示连接已建立 。
如果要查看某个特定端口的占用情况,比如 80 端口,使用 “netstat -anpt | grep 80”,“-p” 参数显示建立相关链接的程序名,“| grep 80” 表示通过管道符筛选出包含 “80” 的行,这样就能找到占用 80 端口的进程信息 。
此外,netstat 命令还可以查看路由表,使用 “netstat -r” 命令,它会显示系统的路由信息,帮助我们了解数据包在网络中的转发路径。例如:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.72.2 0.0.0.0 UG 0 0 0 ens33 192.168.72.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 |
“Destination” 是目标网络地址,“Gateway” 是网关地址,“Genmask” 是子网掩码,“Flags” 中的 “U” 表示该路由是活动的,“G” 表示需要通过网关转发 。
(四)ssh:远程登录
ssh 命令是远程登录到其他主机的 “钥匙”,它基于安全外壳协议(SSH),为我们提供了一种安全的远程连接方式。在 Linux 系统中,通过 ssh 命令,我们可以在本地终端操作远程服务器,实现文件传输、系统管理等功能 。
它的基本语法是 “ssh [用户名 @] 目标主机地址”。例如,要以 “user” 用户身份登录到 IP 地址为 “192.168.1.100” 的远程主机,在终端输入 “ssh user@192.168.1.100”,然后输入该用户的密码,即可成功登录。如果不指定用户名,系统会默认使用当前本地用户名尝试登录 。
为了提高安全性和便捷性,我们还可以通过密钥认证登录,避免每次输入密码。配置方法如下:
- 在本地主机生成公私钥文件,在终端输入 “ssh-keygen -t rsa”,一路回车使用默认设置,即可在 “$HOME/.ssh/” 目录下生成两个文件,“id_rsa” 是私钥,“id_rsa.pub” 是公钥 。
- 将本地生成的公钥追加到远程主机的 “~/.ssh/authorized_keys” 文件中。可以使用 “ssh-copy-id 用户名 @目标主机地址” 命令,它会自动将公钥复制到远程主机的授权文件中,并设置正确的权限。例如,“ssh-copy-id user@192.168.1.100” 。
- 配置完成后,再次使用 ssh 登录远程主机时,就无需输入密码,直接通过密钥认证即可登录。不过,要确保 “~/.ssh/” 目录的权限是 700,“~/.ssh/authorized_keys” 文件权限是 600,否则可能会导致密钥认证失败 。
(五)scp:安全复制文件
scp 命令是在本地和远程主机之间安全复制文件的 “搬运工”,它基于 SSH 协议,保证了文件传输过程中的安全性。无论是上传本地文件到远程服务器,还是从远程服务器下载文件到本地,scp 命令都能轻松完成 。
从本地将文件传输到远程服务器的基本语法是 “scp [本地文件路径] [用户名 @] 目标主机地址:[远程目标路径]”。例如,要将本地的 “test.txt” 文件上传到远程主机 “192.168.1.100” 的 “/home/user/” 目录下,用户名为 “user”,命令为 “scp test.txt user@192.168.1.100:/home/user/”,然后输入远程主机的密码,即可开始上传 。
如果要上传整个目录,则需要使用 “-r” 参数,实现递归复制。比如,将本地的 “project” 目录上传到远程主机,命令为 “scp -r project user@192.168.1.100:/home/user/” 。
从远程服务器下载文件到本地的语法是 “scp [用户名 @] 目标主机地址:[远程文件路径] [本地目标路径]”。例如,从远程主机 “192.168.1.100” 的 “/var/log/” 目录下下载 “syslog” 文件到本地当前目录,用户名为 “user”,命令为 “scp user@
192.168.1.100:/var/log/syslog.”,这里的 “.” 表示当前目录 。
同样,下载目录也需要 “-r” 参数,如 “scp -r user@
192.168.1.100:/home/user/data/local/path/”,表示将远程主机上的 “/home/user/data” 目录下载到本地的 “/local/path/” 目录下 。
六、权限与所有权:文件的 “门禁系统”
在 Linux 系统中,权限与所有权就像是文件的 “门禁系统”,它严格控制着不同用户对文件和目录的访问级别,确保系统的安全性和数据的完整性。接下来,我们将详细介绍几个用于管理权限与所有权的重要命令。
(一)chmod:更改文件权限
chmod 命令是 Linux 系统中用于更改文件或目录权限的强大工具。在 Linux 系统中,文件的权限分为读(r)、写(w)和执行(x)三种,分别对应数字 4、2 和 1,每种权限又分别针对文件所有者(u)、所属组(g)和其他用户(o) 。
chmod 命令有两种常见的用法:数字表示法和符号表示法。
数字表示法通过三位八进制数字来设置权限,每位数字对应不同用户的权限。例如,“755” 表示文件所有者具有读、写、执行权限(4 + 2 + 1 = 7),所属组和其他用户具有读和执行权限(4 + 1 = 5) 。要将 “test.txt” 文件的权限设置为 “755”,在终端输入 “chmod 755 test.txt” 即可 。
符号表示法使用字母和操作符来表示权限的变化。“u” 代表文件所有者,“g” 代表所属组,“o” 代表其他用户,“a” 代表所有用户;“+” 表示添加权限,“-” 表示移除权限,“=” 表示赋予给定权限并取消其他所有权限 。比如,要给 “test.txt” 文件的所有者添加执行权限,使用 “chmod u+x test.txt”;要移除所属组的写权限,命令为 “chmod g-w test.txt” 。
(二)chown:更改文件所有者
chown 命令用于更改文件或目录的所有者,其语法为 “chown [选项] [所有者][:[组]] 文件…”。例如,要将 “/home/user1/file.txt” 文件的所有者修改为 “user2”,在终端输入 “sudo chown user2 /home/user1/file.txt” 。
如果要同时更改文件的所有者和所属组,比如将 “file.txt” 的所有者改为 “user2”,所属组改为 “group1”,命令为 “sudo chown user2:group1 file.txt” 。这里需要注意的是,一般只有超级用户(root)才能修改文件的所有者和组,如果当前用户不是超级用户,可以通过 “sudo” 命令获取临时的超级用户权限 。
(三)chgrp:更改文件所属组
chgrp 命令专门用于更改文件或目录的所属组,语法为 “chgrp [选项]… 新组名 文件…” 。例如,要将 “/home/user1/file.txt” 文件的所属组修改为 “group1”,输入 “sudo chgrp group1 /home/user1/file.txt” 。
若要递归地更改指定目录及其子目录和文件的所属组,比如将 “/home/user1/dir” 目录及其下所有文件和子目录的所属组都改为 “group1”,则使用 “sudo chgrp -R group1 /home/user1/dir” 。同样,只有超级用户或具有适当权限的用户才能更改文件和目录的所属组 。
七、压缩与解压缩:文件的 “收纳术”
在日常的文件管理中,我们常常会遇到文件数量众多、占用空间较大或者需要方便传输的情况,这时候压缩与解压缩技术就如同神奇的 “收纳术”,能帮助我们高效地管理文件。在 Linux 系统中,有多种强大的压缩和解压缩工具,下面就为大家详细介绍。
(一)tar:文件打包神器
tar 命令堪称文件打包的 “神器”,它可以将多个文件或目录打包成一个文件,方便存储和传输 。虽然 tar 本身并不具备压缩功能,但它可以与 gzip、bzip2 等压缩工具结合使用,实现文件的压缩打包。
常用参数中,“-cvf” 用于创建打包文件,其中 “-c” 表示创建,“-v” 表示显示详细过程,“-f” 表示指定文件名。例如,要将 “documents” 目录打包成 “documents.tar” 文件,在终端输入 “tar -cvf documents.tar documents”,命令执行后,会显示打包过程中添加的每个文件和目录的信息,让你清楚地知道打包的进度 。
“-xvf” 用于解包文件,“-x” 表示解包。比如,要解包 “documents.tar” 文件,输入 “tar -xvf documents.tar”,文件就会被解压到当前目录下,恢复成原来的文件和目录结构 。
当需要创建并压缩为 gz 格式的打包文件时,使用 “-zcvf” 参数,“-z” 表示使用 gzip 压缩 。例如,将 “pictures” 目录压缩打包成 “pictures.tar.gz”,命令为 “tar -zcvf pictures.tar.gz pictures”,这样就会生成一个经过 gzip 压缩的 tar 包,文件大小会明显减小 。
解压 gz 格式的打包文件则用 “-zxvf” 参数。比如,解压 “pictures.tar.gz”,输入 “tar -zxvf pictures.tar.gz”,即可将压缩包中的文件解压到当前目录 。
(二)gzip/gunzip:压缩与解压
gzip 命令专门用于压缩文件,它能将文件压缩成.gz 格式,有效减小文件大小,节省磁盘空间 。例如,有一个 “large_file.txt” 文件,在终端输入 “gzip large_file.txt”,执行后,原文件 “large_file.txt” 会被压缩成 “large_file.txt.gz”,原文件将被删除 。
如果需要保留原文件,可以使用 “-k” 参数,即 “gzip -k large_file.txt”,这样在压缩后,原文件依然存在 。
解压 gzip 压缩文件需要用到 gunzip 命令。比如,要解压 “compressed_file.gz”,在终端输入 “gunzip compressed_file.gz”,文件就会被解压,恢复成原来的文件,并且压缩文件 “compressed_file.gz” 会被删除 。同样,如果想保留压缩文件,使用 “-k” 参数,即 “gunzip -k compressed_file.gz” 。
(三)zip/unzip:常用压缩格式
zip 命令在 Linux 系统中用于压缩文件和文件夹,生成的压缩文件后缀为.zip,这种格式在 Windows 和 Linux 等系统中都广泛使用,方便不同系统之间的文件传输和共享 。
要将当前目录下的 “project” 目录及其所有文件和子目录压缩成 “project.zip”,可以使用 “-r” 参数(递归压缩),命令为 “zip -r project.zip project” 。如果只想压缩 “project” 目录下的特定文件,比如所有以 “.txt” 结尾的文件,命令可以是 “zip project_txt.zip project/*.txt” 。
unzip 命令用于解压 zip 格式的文件。比如,要解压 “project.zip” 文件到当前目录,在终端输入 “unzip project.zip” 即可 。如果想将文件解压到指定目录,比如 “
/home/user/unzipped_project”,则使用 “-d” 参数,命令为 “unzip project.zip -d
/home/user/unzipped_project” 。
此外,unzip 还有一些其他实用参数。“-l” 参数可以显示压缩文件内所包含的文件列表,比如 “unzip -l project.zip”,可以让你在不解压的情况下查看压缩包内的文件结构 ;“-n” 参数在解压缩时,如果已有同名文件,不会覆盖原有文件,避免误操作导致文件丢失 。
八、成长之路:总结与实践
通过以上内容,我们一起学习了 Linux 系统中众多实用的常用命令,涵盖了文件与目录操作、文本处理、系统管理、网络操作、权限与所有权管理以及压缩与解压缩等多个关键领域 。这些命令就像是一把把钥匙,能够帮助我们在 Linux 系统的世界里自由探索、高效操作。
然而,仅仅了解这些命令还远远不够,Linux 学习的关键在于实践。只有通过大量的实际操作,才能真正掌握这些命令的使用技巧和应用场景 。在实践过程中,你可能会遇到各种各样的问题,比如命令参数使用错误、语法格式不正确等,这都是学习过程中的正常现象。
当遇到问题时,不要慌张,也不要轻易放弃。首先,仔细检查命令的输入是否正确,参数的使用是否符合要求 。Linux 系统通常会给出详细的错误提示,认真阅读这些提示,往往能找到问题的关键所在。其次,充分利用各种资源来解决问题。Linux 拥有丰富的文档资源,比如使用 “man” 命令可以查看某个命令的详细手册页,获取命令的用法、参数说明等信息 。例如,要查看 ls 命令的手册页,只需在终端输入 “man ls”,就能得到全面的帮助。
此外,互联网也是一个强大的学习工具,遇到问题时,将错误信息或问题描述输入到搜索引擎中,往往能找到其他用户遇到类似问题时的解决方案和讨论 。像 Stack Overflow、Linux 论坛等专业社区,汇聚了众多 Linux 爱好者和专家,在这里你可以提问、交流,从他人的经验中学习。
最后,希望大家能够保持对 Linux 学习的热情和好奇心,不断在实践中探索和尝试。相信通过持续的学习和实践,你一定能够熟练掌握 Linux 系统的操作,在技术的道路上迈出坚实的步伐,开启属于自己的 Linux 技术之旅 。