From 70a3e669f64eceee788617c86e06bb2f8b07803f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=A6=E5=93=9F=E6=96=AF=E5=93=88?= <1939566992@qq.com> Date: Wed, 1 Feb 2023 15:44:39 +0000 Subject: [PATCH] add articles/20230131-elfs-riscv-linux-basic-cmd.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 咦哟斯哈 <1939566992@qq.com> --- .../20230131-elfs-riscv-linux-basic-cmd.md | 639 ++++++++++++++++++ 1 file changed, 639 insertions(+) create mode 100644 articles/20230131-elfs-riscv-linux-basic-cmd.md diff --git a/articles/20230131-elfs-riscv-linux-basic-cmd.md b/articles/20230131-elfs-riscv-linux-basic-cmd.md new file mode 100644 index 0000000..8956aec --- /dev/null +++ b/articles/20230131-elfs-riscv-linux-basic-cmd.md @@ -0,0 +1,639 @@ +> Author: Zhou zitang
+> Date: 2023/01/31
+> Revisor: Bin Meng, IosDevLog
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux)
+> Proposal: [从零开始嵌入式 Linux (RISC-V + Linux v6.x)](https://gitee.com/tinylab/riscv-linux/issues/I61K05)
+> Sponsor: PLCT Lab, ISCAS + +# Linux 常见命令 + +## 简介 + +### 背景介绍 + +泰晓社区今年开展了一系列 [RISC-V Linux 内核技术调研](https://tinylab.org/riscv-linux) 活动。几个月以来,数十位同学一起学习、交流、协作,陆续输出了上百篇分析文章,开展了近 50 次在线视频直播分享,并逐渐往上游项目社区贡献代码。 + +该活动目前的门槛相对比较高一些,主要面向有一定经验的同学。在活动开展的过程中,泰晓社区收到了很多同学的反馈,有些同学希望推荐一些门槛相对低一点的入门文章。为了满足更多社区用户的需要,泰晓社区决定启动一个《从零开始嵌入式 Linux(基于 RISC-V + Linux v6.x)》专项,该系列基于 RISC-V 处理器架构和 Linux 内核 v6.x 展开,以便帮助更多的同学快速上手。 + +该专项信息如下: + +- 提案:[从零开始嵌入式 Linux (RISC-V + Linux v6.x)](https://gitee.com/tinylab/riscv-linux/issues/I61K05) +- 仓库:https://gitee.com/tinylab/elfs +- 文章:所有文字类成果目前还是统一提交到 RISC-V Linux 仓库的 articles/ 目录下,后续可能会组织线上技术分享,上述仓库用于公开课的组织与开展。 + +欢迎感兴趣的同学们在提案后面回复认领感兴趣的章节,也可以回复提出各种需求与建议。 + +### 本文说明 + +本文主要就是带领大家一起来学习 Linux 的常用命令,并简单演示它们的用法。 + +### 实验准备 + +在本系列的第一篇文章中对实验准备进行了详细的说明,可以翻看第一篇文章进行了解。 + +## shell 程序的启动 + +要使用命令,就要先启动 Shell 程序。在泰晓社区研发的 Linux 实验盘中进入 Linux Lab shell 后,Shell 就启动了。 +普通用户的 Shell 的启动界面将会如下所示: + +``` +ubuntu@linux-lab:/labs/linux-lab$ +``` + +当然,大家也可以根据自己的喜好选用其他的 Shell 程序,不同的 Linux 发行版提供了不同的 Shell 前端(terminal)选择,不过背后的 Shell 解释程序(interpreter)不外乎 Bash、Dash、Zsh 等,该系列主要选用 Bash 作为命令行解释器,Linux Lab Shell 背后的命令行解释器就是 Bash。 + + + +### 命令的格式 + +Shell 命令是由命令名和多个选项以及参数组成的,各部分之间用空格分隔。Shell 命令严格区分大小写。 + +Shell 命令的格式如下: + +``` +命令名 [-选项···][参数···] +``` + +## 文件管理命令 + +### 目录操作基本命令 + +#### ls 命令 + +ls 命令是最常用的命令之一。用户可以利用 ls 命令查看某个目录下的所有内容。在默认情况下,显示的内容是按字母顺序排列的。 + +`ls` 单独使用时是显示当前目录下的所以文件及子目录: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS boards build cloud-lab COPYING doc hostshare Makefile prebuilt README.md README_zh.md src tftpboot TODO.md tools VERSION +``` + +`-s` 是显示每个文件的大小: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls -s +total 352 + 4 AUTHORS 0 boards 0 build 0 cloud-lab 20 COPYING 0 doc 0 hostshare 124 Makefile 0 prebuilt 88 README.md 108 README_zh.md 0 src 0 tftpboot 4 TODO.md 0 tools 4 VERSION +``` + +`-S` 是按文件的大小排序: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls -S +Makefile README_zh.md README.md COPYING TODO.md cloud-lab tools AUTHORS src boards prebuilt doc tftpboot hostshare VERSION build +``` + +`-a` 显示目录中的所有文件,包括隐藏文件: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls -a +. .. AUTHORS .board_config boards build cloud-lab COPYING doc .gdb .git .gitignore .gitmodules hostshare .labbegin .labinit Makefile prebuilt README.md README_zh.md src tftpboot TODO.md tools VERSION +``` + +`-l` 通过列表格式显示文件的详细信息: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls -l +total 352 +-rw-rw-r-- 1 ubuntu ubuntu 161 5月 1 2022 AUTHORS +drwxrwxr-x 1 ubuntu ubuntu 122 5月 1 2022 boards +drwxr-xr-x 1 ubuntu ubuntu 6 6月 27 2022 build +drwxr-xr-x 1 ubuntu ubuntu 220 11月 20 20:46 cloud-lab +-rw-rw-r-- 1 ubuntu ubuntu 18238 5月 1 2022 COPYING +drwxrwxr-x 1 ubuntu ubuntu 86 5月 1 2022 doc +drwxrwxr-x 1 ubuntu ubuntu 24 5月 1 2022 hostshare +-rw-r--r-- 1 ubuntu ubuntu 125501 6月 27 2022 Makefile +drwxrwxr-x 1 ubuntu ubuntu 112 5月 1 2022 prebuilt +-rw-r--r-- 1 ubuntu ubuntu 87979 6月 27 2022 README.md +-rw-r--r-- 1 ubuntu ubuntu 107784 6月 27 2022 README_zh.md +drwxrwxr-x 1 ubuntu ubuntu 128 5月 1 2022 src +drwxrwxr-x 1 ubuntu ubuntu 78 11月 29 23:27 tftpboot +-rw-rw-r-- 1 ubuntu ubuntu 3043 5月 1 2022 TODO.md +drwxrwxr-x 1 ubuntu ubuntu 176 5月 1 2022 tools +-rw-r--r-- 1 ubuntu ubuntu 15 6月 27 2022 VERSION + +``` + +`-t` 按文件的修改时间排序: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls -t +tftpboot cloud-lab build README.md README_zh.md VERSION Makefile src tools prebuilt doc hostshare boards TODO.md AUTHORS COPYING +``` + +`-F` 显示文件类型描述符: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls -F +AUTHORS boards/ build/ cloud-lab/ COPYING doc/ hostshare/ Makefile prebuilt/ README.md README_zh.md src/ tftpboot/ TODO.md tools/ VERSION +``` + +#### cd 命令 + +用户可以利用 cd 命令转换所在的目录。 + +`cd ..` 代表回退到上一层: + +``` +ubuntu@linux-lab:/labs/linux-lab/src/examples$ cd .. +``` + +`cd /src/examples` 代表进入到目录 /src/examples: + +``` +ubuntu@linux-lab:/labs/linux-lab$ cd /src/examples +``` + +#### pwd 命令 + +用 `pwd` 可以显示当前工作目录的绝对路径。 + +``` +ubuntu@linux-lab:/labs/linux-lab$ pwd +/labs/linux-lab +``` + +#### mkdir 命令 + +用 `mkdir` 命令创建了一个名为 dir 的新目录: + +``` +ubuntu@linux-lab:/labs/linux-lab$ mkdir dir +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS boards build cloud-lab COPYING dir doc hostshare Makefile prebuilt README.md README_zh.md src tftpboot TODO.md tools VERSION +``` + +#### rmdir 命令 + +用户使用这个命令可以删除目录 + +用 `rmdir` 命令删除了 dir 目录: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS boards build cloud-lab COPYING dir doc hostshare Makefile prebuilt README.md README_zh.md src tftpboot TODO.md tools VERSION +ubuntu@linux-lab:/labs/linux-lab$ rmdir dir +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS boards build cloud-lab COPYING doc hostshare Makefile prebuilt README.md README_zh.md src tftpboot TODO.md tools VERSION +``` + +### 文件操作基本命令 + +#### touch 命令 + +`touch` 命令是用来创建文件,如果文件名不存在,则创建一个新的空文件夹,这个文件夹不包含任何格式,大小为0。 + +用 `touch` 命令创建名为 mylife 的文件: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS COPYING hostshare prebuilt README_zh.md tftpboot tools +boards doc Makefile README.md src TODO.md VERSION +ubuntu@linux-lab:/labs/linux-lab$ touch mylife +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS COPYING hostshare mylife README.md src TODO.md VERSION +boards doc Makefile prebuilt README_zh.md tftpboot tools +``` + +#### cat 命令 + +`cat` 命令的用法有很多,基本作用是:合并文件,在屏幕上显示文件的内容。在这里我们就简单了解一下基本作用,如果对 cat 命令的其他用法感兴趣,可以自己搜索相关的资料。 + +* 显示某文件的内容: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS COPYING hostshare mylife README.md src TODO.md VERSION +boards doc Makefile prebuilt README_zh.md tftpboot tools +ubuntu@linux-lab:/labs/linux-lab$ cat mylife +hello world! +hello everyone! +``` + +* 实现文件的合并: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cat hi +hi! +ubuntu@linux-lab:/labs/linux-lab$ cat mylife +hello world! +hello everyone! +ubuntu@linux-lab:/labs/linux-lab$ cat hi mylife > hello +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cat hello +hi! +hello world! +hello everyone! +``` + +#### cp 命令 + +`cp` 命令可以实现文件的复制,类似 Windows 中的 copy 命令。 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cd src +ubuntu@linux-lab:/labs/linux-lab/src$ ls +buildroot feature modules qemu u-boot +examples linux-stable patch system +ubuntu@linux-lab:/labs/linux-lab/src$ cd .. +ubuntu@linux-lab:/labs/linux-lab$ cp mylife src +ubuntu@linux-lab:/labs/linux-lab$ cd src +ubuntu@linux-lab:/labs/linux-lab/src$ ls +buildroot feature modules patch system +examples linux-stable mylife qemu u-boot +``` + +#### rm 命令 + +`rm` 命令的作用是删除指定的文件。 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cd src +ubuntu@linux-lab:/labs/linux-lab/src$ ls +buildroot feature modules patch system +examples linux-stable mylife qemu u-boot +ubuntu@linux-lab:/labs/linux-lab/src$ rm mylife +ubuntu@linux-lab:/labs/linux-lab/src$ ls +buildroot feature modules qemu u-boot +examples linux-stable patch system +``` + +#### chmod 命令 + +`chmod` 命令是 Linux 系统中一个非常重要的命令,它可以修改文件的权限和文件的属性。 + +格式: + +``` +chmod [<文件使用者>+|-|=<权限类型>] 文件名1 文件名2 ··· +``` + +1. 文件使用者有4种类型。 + + “u”:user,文件主 + + “g”:group,文件主所在用户组 + + “o”:others,其他用户 + + “a”:all,所有用户 + +2. +、-、=的含义如下: + + +:代表增加权限。 + + -:代表取消权限。 + + =:代表赋予指定的权限,并取消其他权限(如果有)。 + +3. 权限类型有3种: r 、 w 、 x 。在 chmod 命令中,可采用这3种权限类型的组合。 + + r :代表读权限。 + + w :代表写权限。 + + x :代表可执行权限 + +利用 `chomd` 命令修改某文件的权限,具体步骤如下: + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ ls -l mylife +-rw-r--r-- 1 ubuntu ubuntu 29 1月 30 18:54 mylife +ubuntu@linux-lab:/labs/linux-lab$ chmod a-rwx mylife +ubuntu@linux-lab:/labs/linux-lab$ ls -l mylife +---------- 1 ubuntu ubuntu 29 1月 30 18:54 mylife +ubuntu@linux-lab:/labs/linux-lab$ chmod u+rwx mylife +ubuntu@linux-lab:/labs/linux-lab$ ls -l mylife +-rwx------ 1 ubuntu ubuntu 29 1月 30 18:54 mylife +ubuntu@linux-lab:/labs/linux-lab$ chmod g+r mylife +ubuntu@linux-lab:/labs/linux-lab$ ls -l mylife +-rwxr----- 1 ubuntu ubuntu 29 1月 30 18:54 mylife +ubuntu@linux-lab:/labs/linux-lab$ chmod o+r mylife +ubuntu@linux-lab:/labs/linux-lab$ ls -l mylife +-rwxr--r-- 1 ubuntu ubuntu 29 1月 30 18:54 mylife +``` +### 文件处理命令 + +#### grep 命令 + +`grep` 命令可以实现在指定的文件中查找某个特定的字符串。 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cat mylife +hello world! +hello everyone! +ubuntu@linux-lab:/labs/linux-lab$ grep hello mylife +hello world! +hello everyone! +``` + +#### head 命令和 tail 命令 + +`head` 命令可以查看文件开头部分的内容, + +`tail` 命令可以查看文件结尾部分的内容, + +可以指定要显示的行数。“-5”,指定显示前五行或者结尾五行。 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cat mylife +hello world! +hello everyone! +ubuntu@linux-lab:/labs/linux-lab$ head -1 mylife +hello world! +ubuntu@linux-lab:/labs/linux-lab$ tail -1 mylife +hello everyone! +``` + +#### wc 命令 + +`wc` 命令可以对文件的行数、单词数、字符数进行统计: + +* `-l`显示行数 + +* `-w`显示单词数 + +* `-m`显示字符数 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cat mylife +hello world! +hello everyone! +ubuntu@linux-lab:/labs/linux-lab$ wc -l mylife +2 mylife +ubuntu@linux-lab:/labs/linux-lab$ wc -w mylife +4 mylife +ubuntu@linux-lab:/labs/linux-lab$ wc -m mylife +29 mylife +``` + +#### sort 命令 + +`sort` 命令可以对文件内容或查询结果进行排序 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ cat mylife +hello world! +hello everyone! +ubuntu@linux-lab:/labs/linux-lab$ sort -t":" -k2 mylife +hello everyone! +hello world! +``` +`-t":"` 设置分隔符为冒号,`-k2`选项指定根据第二列排序 + +#### find 命令 + +`find` 命令可以查找文件或目录 + +``` +ubuntu@linux-lab:/labs/linux-lab$ ls +AUTHORS doc hostshare prebuilt src tools +boards hello Makefile README.md tftpboot VERSION +COPYING hi mylife README_zh.md TODO.md +ubuntu@linux-lab:/labs/linux-lab$ find hello +hello +``` + +#### which 命令 + +`which` 命令可以查找命令,显示该命令的绝对路径。 + +``` +ubuntu@linux-lab:/labs/linux-lab$ which ls +/usr/bin/ls +ubuntu@linux-lab:/labs/linux-lab$ which cp +/usr/bin/cp +ubuntu@linux-lab:/labs/linux-lab$ which which +/usr/bin/which +``` + +## 用户管理命令 + +### 激活 root 用户 + +激活 root 用户的方法: + +1. 以普通用户身份登录,看到命令提示符是 "$" ,表明目前为普通用户。 + +2. 执行命令 `sudo passwd root` 后要输入密码,密码正确后会需要为 root 用户设定密码。 + +3. 设定成功后,就成功激活了 root 用户。 + +4. 执行命令 `su root` 转换到 root 用户,命令提示符转为“#”,就表明转换成功了。 + +``` +ubuntu@linux-lab-host:~/Develop/cloud-lab$ sudo passwd root +[sudo] password for ubuntu: +New password: +Retype new password: +passwd: password updated successfully +ubuntu@linux-lab-host:~/Develop/cloud-lab$ su root +Password: +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# +``` + +### 重新锁定 root 用户 + +在不需要以 root 用户执行操作时,最好将 root 用户即时锁定,防止用户的不当操作破坏系统。 + +1. 先利用 `su` 命令进行用户身份的转变,从 root 用户转为 ubuntu 用户 + +2. `sudo passwd -l root` 锁定 root 用户。 + +3. 再次利用 su 命令转换到 root 用户,会发现在输人密码后仍然无法唤醒 root 用户,说明 `sudo passwd -l root` 是有效的。 + +4. 在当前的状况下,如果需要激活 root 用户,应再次按照上面演示的激活 root 的方法进行操作。 + +``` +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# su ubuntu +ubuntu@linux-lab-host:~/Develop/cloud-lab$ sudo passwd -l root +[sudo] password for ubuntu: +passwd: password expiry information changed. +ubuntu@linux-lab-host:~/Develop/cloud-lab$ su root +Password: +su: Authentication failure +``` + +### 其他用户管理命令 + +1. `sudo` 命令 + + 以超级管理员的身份执行某种操作 + +2. `passwd` 命令 + + 修改用户密码 + +3. `su` 命令 + + 转换用户 + +4. `useradd` 命令 + + 创建一个新用户 + +综合演示这几个命令,具体步骤如下: + +1. 利用 `sudo passwd root` 命令可以使用超级管理员身份更新 root 用户密码并激活root 用户。 + +2. `su root` 的作用是转换为 root 用户。 + +3. 使用 `useradd zzt` 命令可以创建普通用户 zzt 。 + +4. 使用 `passwd zzt` 命令可以为用户 zzt 设置密码。至此用户 zzt 已经创建好了。 + +5. 第9条命令 `su zzt` 转换为 zzt 。该命令执行结束后,屏幕上出现了 "$" 提示符,和前面的提示符形式不同。要想获得和上面相同的提示符,可以输入 bash 命令并按 Enter 键,随后就可以看到熟悉的提示符了。 + +``` +ubuntu@linux-lab-host:~/Develop/cloud-lab$ sudo passwd root +New password: +Retype new password: +passwd: password updated successfully +ubuntu@linux-lab-host:~/Develop/cloud-lab$ su root +Password: +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# useradd zzt +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# passwd zzt +New password: +Retype new password: +passwd: password updated successfully +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# ls +base COPYING images README.md recordings TODO.md VERSION +configs doc labs README_zh.md releasings tools +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# mkdir zzt +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# ls +base COPYING images README.md recordings TODO.md VERSION +configs doc labs README_zh.md releasings tools zzt +root@linux-lab-host:/home/ubuntu/Develop/cloud-lab# su zzt +$ bash +zzt@linux-lab-host:/home/ubuntu/Develop/cloud-lab$ +``` + +## 常用网络命令 + +### ifconfig 命令 + +`ifconfig` 命令可以查看和更改网络接口的地址和参数,仅限超级用户拥有使用权限。通常用来查看 IP 地址。 + +``` +ubuntu@linux-lab-host:~/Develop/cloud-lab$ ifconfig +br-cb818dec92ad: flags=4163 mtu 1500 + inet 172.20.19.1 netmask 255.255.0.0 broadcast 172.20.255.255 + inet6 fe80::42:32ff:feb3:91e3 prefixlen 64 scopeid 0x20 + ether 02:42:32:b3:91:e3 txqueuelen 0 (Ethernet) + RX packets 2 bytes 80 (80.0 B) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 55 bytes 6736 (6.7 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +docker0: flags=4099 mtu 1500 + inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 + ether 02:42:41:83:09:23 txqueuelen 0 (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 + +enp0s3: flags=4163 mtu 1500 + inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 + inet6 fe80::88e:3e3c:8d65:38ce prefixlen 64 scopeid 0x20 + ether 08:00:27:f6:3f:4c txqueuelen 1000 (Ethernet) + RX packets 230837 bytes 338118104 (338.1 MB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 26389 bytes 1716710 (1.7 MB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +lo: flags=73 mtu 65536 + inet 127.0.0.1 netmask 255.0.0.0 + inet6 ::1 prefixlen 128 scopeid 0x10 + loop txqueuelen 1000 (Local Loopback) + RX packets 40 bytes 3665 (3.6 KB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 40 bytes 3665 (3.6 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +veth040ee03: flags=4163 mtu 1500 + inet6 fe80::58b0:19ff:fe13:ebb7 prefixlen 64 scopeid 0x20 + ether 5a:b0:19:13:eb:b7 txqueuelen 0 (Ethernet) + RX packets 2 bytes 108 (108.0 B) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 97 bytes 11334 (11.3 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +vethaf52de9: flags=4163 mtu 1500 + inet6 fe80::6439:71ff:fe59:58cc prefixlen 64 scopeid 0x20 + ether 66:39:71:59:58:cc txqueuelen 0 (Ethernet) + RX packets 0 bytes 0 (0.0 B) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 103 bytes 11815 (11.8 KB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 +``` + +### ping 命令 + +`ping` 命令可以测试主机网络是否畅通,所有用户都拥有使用权限。 + +使用 `ping` 命令查看本机的网络状况,5 次后自动停止。 + +``` +ubuntu@linux-lab-host:~/Develop/cloud-lab$ ping -c5 127.0.0.1 +PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. +64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.137 ms +64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.062 ms +64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.071 ms +64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.052 ms +64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.044 ms + +--- 127.0.0.1 ping statistics --- +5 packets transmitted, 5 received, 0% packet loss, time 4143ms +rtt min/avg/max/mdev = 0.044/0.073/0.137/0.033 ms +``` + +## 总结 + +通过这篇文章,我们顺利地启动了 Shell ,开启了 Linux 常用命令的学习之路,并实际演示了一些常用命令的用法。 + +在后续文章中,我们将对 Linux 的其他命令进行演示,如有兴趣,且听下回分解。 + +如果对该系列感兴趣,赶紧联系我们吧,联系微信:tinylab。 + +## 参考资料 + +* Ubyntu Linux 基础教程(第2版)(微课版) + +* Linux 命令行与 shell 脚本编程大全(第4版) -- Gitee