Linux的基础指令全解:零基础认识Linux到简单开发应用

Linux的基础指令全解

前言

依据笔者使用Linux开发经验,详细汇总主要命令使用方法及使用过程
学习掌握该部分汇总代码,有助于实现Linux基础的环境开发及部署任务
Linux的基础指令——看这一篇就够了
希望能帮助在Linux学习路上的你走得更远



一. 基础知识



基础知识涵盖应用上最基础的内容,是必须掌握项
本文中基础知识已根据笔者检索及自身理解尽可能简略的描述
可能存在不恰当的描述及理解望各位学者指正

本文基于Ubuntu 18.04.5 LTS (GNU/Linux 4.14.0-xilinx-v2018.3 aarch64)内核调试


Ⅰ.认识路径


1.绝对路径

定义:目录下的绝对位置
示例: /root/workspace/GUI_m3u8_c++/base
表示:从根目录至目标文件夹base文件夹的完整路径
绝对路径即表示在任意一个文件夹中执行该文件夹相关命令时,文件路径内容保持不变


2.相对路径

定义:目录下的相对位置
示例: ../GUI_m3u8_c++/base(以当前位于/root/workspace/driver文件夹中)
表示:从当前目录索引相对位置至目标文件夹base文件夹的完整路径
相对路径即表示在任意一个文件夹中执行该文件夹相关命令时,文件路径需要根据目标文件夹对于当前文件夹的相对位置改变内容


Ⅱ.认识执行逻辑


1.bash(shell)

在 Linux 中,shell 是一种命令解释器,可以实现人机交互,让用户与操作系统进行交互。Bash 是 Linux 下常用的一种 shell 解释器,它支持命令行编辑、历史记录、自动补全等功能,适用于交互式环境和批量处理等任务。而 .sh 文件通常被称为 shell 脚本文件或 Bash 脚本文件,可以用于编写自动化操作脚本

标准术语:
shell术语最普通的解释就是:用户用来输入命令的任何程序
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本
Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell


2.命令执行逻辑

Linux所有内置命令(以下统称本地命令)均可通过bash(shell)执行,本地命令执行不需要输入命令脚本文件所在地址。
其脚本文件已经通过打包添加到全局变量PATH中,即当bash执行指令时,会自动从全局变量PATH中索引命令路径并执行


3.文件执行逻辑

文件执行的命令同为bash,不过当需要执行用户自定义脚本或所有未被添加入全局变量PATH.sh文件时,需要手动索引到脚本文件所在路径。(一般有两种方式:①给定文件所在地址并执行②cd到文件所在位置并在当前文件夹中执行)


Ⅲ.认识文件权限


从应用层面来看,一般不需要深入了解执行和处理的权限细节。如若涉及到文件的读写、修改和赋予权限等操作,需要了解一定程度上的相关专业术语,这里简单介绍读写文件修改和赋予

以MobaXterm修改权限方式为例

界面中出现
(1)访问用户

User:主用户(文件所有者)——所有者
Group:用户组(具有相同权限特征的用户集)——所属组
Other:其他用户(除上述两者外的其他访问者)——其他用户

(2)Permissions

r:Read——读文件
w:Write——写文件
x:Execute——执行

(3)数字形式表示权限

r:4
w:2
x:1

在 Linux/Unix 操作系统中,文件访问权限由用户、用户组和其他组三个方面进行控制。为了表示这些访问权限,可以使用数字或字母进行定义。

数字权限是按照文件所有者(user)、文件所属组(group)和其他用户(other)三个方面用数字表示文件权限的方式。每个数字又由 4、2 和 1 三种数字相加组成,分别代表读取权限、写入权限和执行权限。例如,“755”表示文件所有者具有读取、写入和执行权限,文件所属组和其他用户只具有读取和执行权限

数字相加后没有重叠项,即通过数字大小即可识别是哪种模式(例:755 = (4+2+1)(4+1)(4+1))

字母权限则是用字母表述文件权限的一种方式,其中包括三种基本权限:r(read)w(write)x(execute)。此外还有三个特殊权限:s(setuid/setgid)t(sticky)+(添加权限)。每个基本权限和特殊权限与一个字符对应,如“rwxr-xr-x”表示文件所有者拥有读取、写入和执行权限,文件所属组和其他用户只有读取和执行权限

数字权限中将每一组权限的“r”、“w” 和“x”分别用 421 表示,可方便地区分不同权限。数字权限的设置也可以通过与操作符和加法来组合不同权限以实现更灵活的权限控制

UserGroupOther
rwxrwxrwx
421421421

Ⅳ.认识IP地址


1.IP地址:

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。(互联网协议地址)

目前常用IP地址有IPV4/IPV6 若不考虑安全性,二者本质上仅区别为地址空间大小
在Linux中需要注意静态IP(分为默认静态IP可变静态IP)和动态IP的使用,对于联网过程非常重要


2.子网掩码:

子网掩码用于与IP地址作与运算,(按位)与运算后结果将用于表示该网络的网络号网络号即表示同一IP网段下的网络编号


3.网关

网关可以理解为网络的关口、港口,是将不同网段连接起来的一种通讯接口。
当两个网络处在不同网段时,要想允许两者通信,需要设置合适的网关,实现数据包的收发
想象对于整个互联网,通过一个主机的IP如何连接到世界各地的客机。由此需要实现数据收发转换的接口——网关


4.IP网段

引用网络号的定义,两个网络号相同的网络即处在同一网段下
只有处在同一网段下的网络才能相互通信(通过IP地址交换数据)


5.DNS

DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址(IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址(IP address)的表,以解析消息的域名(域名可以理解为方便人类记忆的IP地址形式,通过解析域名获得其IPV4地址,解析域名的过程就需要由DNS服务器来完成)。


6.端口号

端口一般有物理端口逻辑端口两种。物理端口即硬件接口,表示通过该接口传输同一类型数据,其他类型数据将不会通过该接口传输,实现了物理层面的传输分割。逻辑接口同理,在软件层面上实现分割传输,通过分配端口号实现各程序分别运行,故连接过程中对于端口号的选择非常重要,选择正确的端口号才能实现逻辑接口的信息传输


Ⅵ.特殊字符(Special Character)


特殊字符表示变量的前缀
常见特殊字符有如下几种

1. "|":管道符

"|":管道符,用于将一个命令的输出作为另一个命令的输入
ls | grep .py

该命令会列出当前目录下所有含有 .py 关键字的文件和目录
即通过上述命令查找当前文件夹中的所有 .py文件(即python文件)
注:不包含子目录中文件
(关于grep和ls命令详情参见:grep命令/详情参见:ls命令)


2. ">":输出重定向符

">":输出重定向符,用于将命令的输出写入文件中,覆盖原有内容
echo "Hello, world!" > example.txt

该命令会将 “Hello, world!” 写入当前目录一名为 “example.txt” 的文件中
当不存在该文件时,则会自主生成名为 “example.txt” 的文件并写入内容
(关于echo命令的使用详情参见:echo命令)

ls > example.txt

该命令会将 ls 命令输出至终端的内容写入当前目录一名为 “example.txt” 的文件中
当不存在该文件时,则会自主生成名为 “example.txt” 的文件并写入内容
(关于ls命令的使用详情参见:ls命令)


3. ">>":输出追加符

">>":输出重定向符,用于将命令的输出写入文件中,追加到原有内容的末尾
echo "Hello, world!" >> example.txt

同输出重定向符">"
当不存在该文件时,则会自主生成名为 “example.txt” 的文件并写入内容
(关于echo命令的使用详情参见:echo命令)

ls >> example.txt

同输出重定向符">"
当不存在该文件时,则会自主生成名为 “example.txt” 的文件并写入内容
(关于ls命令的使用详情参见:ls命令)


4. "<":输入重定向符

"<":输入重定向符,用于从文件中读取数据作为命令的输入
cat < filename.py

cat 命令从 filename.py 文件中读取输入,并将其输出到终端上


5. "&":后台运行符

"&":后台运行符,用于使命令在后台运行而不占用终端,通常与其他符号一起使用
sleep 10 &

&控制sleep在后台运行 10 秒。在这个过程中,用户可以继续在终端上输入其他命令,而不必等待 sleep 命令完成。当 sleep 命令完成后,系统将在终端上显示相关信息,以提示用户(一般需要Enter一下)


6. ";":分号符

";":分号符,用于在一行中依次执行多个命令

(1)依次执行分行输出:

echo "Hello"; echo ","; echo "world";
>>Hello
>>,
>>world

(2)依次执行,添加-n参数去除换行符,将输出结果显示在同一行

echo -n "Hello"; echo -n ","; echo "world";
>>Hello,world

7. "$":变量替换符

"$":变量替换符,用于引用环境变量或脚本中定义的变量
variable="world"
echo "Hello, $variable!"

先定义变量variable=“world”
再通过"$":变量替换符调用该变量


8."()":子shell符号

"()":代表子shell符号,用于将一组命令放到新的shell中执行
(ls && echo "list success") || (echo "list failed")
(ls -l \directory && echo "list success") || (echo "list failed")

9. "*":多字通配符

"*":通配符,表示任意字符或字符串(用于匹配多个字符)

(1)显示所有文件名以.py字符为结尾的文件

ls *.py

(2)显示所有文件名包含ve字符的文件

ls *ve*

10. "?":单字通配符

"?":代表通配符,用于匹配单个字符

(1)匹配文件中单个字符

ls ca?.py

(2)匹配文件中已知数目的任意多个字符(多个?连用)

ls ???.py

11. "&&":逻辑与

"&&":代表逻辑与符号,用于当第一个命令执行成功后才执行第二个命令
ls -l && echo "list success"

12. "||":逻辑或

"||":代表逻辑或符号,用于当第一个命令执行失败后才执行第二个命令
ls -l \directory || echo "list failed"


二. Linux命令集



Ⅰ. Linux常用命令


1.CD(change directory)

切换当前目录为指定目录

cd <dirname>
相对路径示例
cd路径标识功能(切换至) cd [directory]
..上一级目录cd ..
/根目录[所在文件]cd /[directory]
./当前目录[所在文件]cd ./[directory]
../上一级目录[所在文件]cd ../[directory]
~用户主目录cd ~
-上一工作目录cd -
~+当前工作目录(同.)cd ~
~-上一工作目录(同-)cd -

注释:
1.cd ~表示切换至当前用户的home目录,即切换至用户的个人主目录。~表示当前用户HOME目录的路径,等价于$HOME环境变量
2.相对路径可以嵌套使用,如../路径和..路径嵌套:cd ../..,表示回到目录前两级目录
3.cd -用于切换至上一工作目录,即切换至上一指针所指目录。例如当前处于[directory]目录中,使用cd ..,来到上一级目录后再调用cd -即回到原目录[directory]


2.echo(echo)

输出指定的字符串或变量

  1. 输出自定义内容

(1)输出字符

echo "Hello, world!"
>>Hello, world!

(2)输出变量

string="Hello, world!"
echo $string
>>Hello, world!
  1. 禁止输出末尾换行符
echo -n Hello,;echo world!
>>Hello, world!
  1. 转义功能

(1)开启转义功能

echo -e "Hello,\n\tworld!"
>> Hello,
>>      world!

其中\n表示换行符,\t表示制表符
值得注意的是,一般情况下只有当你调用-e选项时才会执行字符转义
默认情况下仍为输出字符串内容而不开启转义功能

echo "Hello,\n\tworld!"
>> Hello,\n\tworld!

(2)禁用转义功能

echo -E "Hello,\n\tworld!"
>>Hello,\n\tworld!

由于默认状态下禁用转义字符,故一般在多个命令嵌套中使用-E选项

以下列举常见转义字符

  • \a:警告字符
  • \b:退格符
  • \f:换页符
  • \n:换行符
  • \r:回车
  • \t:水平制表符(tab)
  • \v:垂直制表符
  • \\:反斜杠
  • \":双引号
  • \':单引号
  • \?:问号
  • \0:空字符(NUL)
  • \nnn:1到3位八进制数,代表该数对应的ASCII字符(n是0~7之间的数字)
  1. 与特殊字符配合使用实现其余功能
    (结合上述特殊符号使用详情参见:Ⅵ.特殊字符(Special Character))

3.grep(global regular expression print)

条件搜索指定字符串或正则表达式,输出符合条件的全部行内容

  1. 搜索指定文件中的某个字符串:
grep "string" filename.py
>>**************string**************
>>...

上述命令实现搜索 filename.py 文件中所有包含字符串 “string” 的行,并全部输出到终端上.例:

  1. 搜索指定目录下所有文件中的某个字符串:
grep "string" /root/workspace/*
>>**************string**************
>>...

上述命令将在 /root/workspace/ 目录下所有文件中搜索包含字符串 “string” 的行,并输出到终端上.

值得注意的是如果 /root/workspace/ 该目录下包含子文件夹或其他子目录,该命令不会显示出其子目录或文件夹中所有包含字符串 “string” 的行,而是输出其子目录绝对路径并显示告知(但仍会显示该文件夹下同级目录文件中包含字符串 “string” 的行).

1.下述目录中仅包含文件夹(或包含文件中不存在包含字符串 “string” 的行).例:

2.下述文件夹中同时包含文件及文件夹.例:

  1. 搜索指定目录及其子目录下所有文件中的某个字符串:
grep "string" -r /root/workspace/*
>>**************string**************
>>...

区别于2.
考虑到搜索需求的不同,3.实现了搜索指定目录及其子目录中所有文件中包含 “string” 的行

实际上更常用2.命令;对于3.命令,在未知文件容量的情况下可能会输出过量无效信息
同时对于需要查找全目录下的某字符串更普适的方法为先输出包含该字符的所有文件或文件夹,再cd至最远目标路径下通过2.命令查找该行,从而避免过多无效信息的输出

  1. 搜索包含中文的文件
grep -P "[\x{4e00}-\x{9fa5}]" filename.py
>> # 文件路径及文件名
   # 1. 读取摄像头
   #目前使用file文件大小限定
   # 2. 获取图像的属性(宽和高,),并将其转换为整数
   # 3. 创建保存视频的对象,设置编码格式,帧率,图像的宽高等
    ...

注释:
-P参数表示使用 Perl 兼容正则表达式
[\x{4e00}-\x{9fa5}] 表示中文字符的Unicode范围,即\x{4e00}\x{9fa5}之间的所有字符(包括汉字、标点符号等)
• 查找特定中文字符时,在正则表达式中使用普通的中文字符即可,无需像查找全部中文字符那样使用Unicode转义序列

输出如下:

(1) 搜索特定中文字符

值得注意的是,若需要搜索特定中文字符,可通过正则表达式直接搜索字符而无需转换Unicode
例如搜索文件中的字符 “是你呀星途”

grep -P "是你呀星途" filename.py
>> # generated by "是你呀星途"
   # 你没看错就是我 -line"是你呀星途"
   # 欸别走,接着往下看下去呗 -line"是你呀星途"

(2)或是如下指令:

grep -E "是你呀星途" filename.py
>> # generated by "是你呀星途"
   # 你没看错就是我 -line"是你呀星途"
   # 欸别走,接着往下看下去呗 -line"是你呀星途"

(1)(2)输出结果完全相同

  1. 特定搜索
grep '\bc' filename.py
>>************  c******** c***
>>...

上述命令中的\b表示单词边界,用来避免匹配单词内部的字符
'\bc'即表示检索文件中所有以c开头的单词所在的行
'c\b'即表示检索文件中所有以c结尾的单词所在的行
除上述特定搜索方式外,还包括:

  1. '\wc'表示检索以c为结尾字符的字符串(\w 表示任意单词字符);
    (注意区别于单词,其作用为将查找文件中包含c的字符,并组成一字符串,将c作为该字符串的末尾显示出来)
  2. '^c'表示检索以c为开头的单词(^表示匹配行首)
  3. 'c$'表示检索以c为结尾的单词($表示匹配行末)

值得注意的是,如果正则表达式中包含特殊字符(如 $、*、( 等),需要进行转义才能正确匹配。


4.cat(concatenate)

显示文件的内容、将多个文件连接起来或者创建新文件

  1. 查看文件内容:
cat filename.py
  1. 连接多个文件:
cat filename_1.txt filename_2.txt

同时将filename_1.txt和filename_2.txt两份文件按顺序输出至终端上

cat filename_1.txt filename_2.txt > mergefiles.txt

同时将filename_1.txt和filename_2.txt两份文件按顺序合并后写入mergefiles.txt文件中
使用重定向输出符">"实现将
(详情参见:重定向输出符)

  1. 创建文件并通过终端写入内容
cat > newfile.txt
  1. 输出内容编号
cat -n filename.py

-n参数会将各行进行编号,同时输出至终端每行的行首


5. find(find)

在指定目录及其子目录中根据不同条件搜索文件

find -<option> "filename"
指令介绍完整指令
find(可选)参数功能(限制作用域)示例
-name匹配文件名find -name "*.py"
-size匹配文件大小find ./ -size 3M
-type匹配文件类型find . -type f
-mtime匹配文件访问时间find -mtime -3
-atime匹配文件修改时间find -atime -3
-ctime匹配文件状态修改时间find -ctime -3
-exec对匹配到文件执行指定命令find . -type f -name "*.py" -exec chmod 755 '{}' +
-print在标准输出中打印出每个匹配到的文件路径find . -type f -name "*.py" -print

注释

  1. 路径选择

如下给出几种限定文件名作用域的find命令

find -name "*.py"
find . -name "*.py"
find ../ -name "*.py"
find ./[directory] -name "*.py"

上述命令限定了find命令对于文件路径的作用域,若不选择路径,则默认从当前路径下查找,其中..././[directory]均为路径作用域

  1. -size选项限制文件大小
    对于文件大小的搜索,一般限定为查找大于或小于特定值的文件,需要使用特殊符号-+来限定:
find -size 3M
find -size -3M
find -size +3M
find -size +3M -size -6M

:不加符号代表精确匹配如3M
-:添加-符号代表仅搜索小于特定值文件如-3M
+:添加+符号代表仅搜索大于特定值文件如+3M
+-联用:连续两次调用-size选项限制在一定大小区间内搜索文件如:

find -size +3M -size -6M

以Kb为单位文件使用K结尾,使用Mb为单位文件使用M为结尾

  1. -type选项限制文件类型
    当需要限定查找的类型例如:查找文件目录或是查找文件(或多类型查找)时,通过设置-type选项可达到自己的需求
find . -type f
find . -type d
find . -type l
find / -type b

其参数包括:

  • -type f: 查找普通文件(regular file)
  • -type d: 查找目录(directory)
  • -type l: 查找目录(symbolic link)
  • -type b: 查找块设备文件(block special file)
  • -type c: 查找字符设备文件(character special file)
  • -type p: 查找命名管道(named pipe,也称为 FIFO)
  1. -mtime/-atime/-ctime
    用于查找时间限制的文件
find -mtime -3
#表示访问三天内修改的所有文件
find -ctime -3
#表示查找三天内创建的所有文件
find -atime -3
#表示访问三天内访问过的所有文件
find . -type f -mtime -3 -size -3M
#整合调用,查找三天内修改过的小于3m的文件(非文件夹)
  1. -exec参数调用其他命令作用于搜索到结果
find . -type f -name "*.py" -exec chmod 755 '{}' +
#通过占位符来引用find 命令查找到的文件名,使用 \; 或 + 来表示命令的结束

6. date(date)

显示或设置系统日期和时间

date -<option>

有如下<option>选项:

  • %FORMAT: 格式化输出的日期和时间
  • -d "DATE": 将指定日期时间作为参数,输出将其转换为对应的Unix的时间戳值
  • -u: 将输出的时间转换为UTC时间
  • -s "DATE": 设置保存系统时间
  • -I [UNIT]: 显示当前日期,可选参数UNIT为显示精度。支持三种精度格式:年(y)、月(m)和日(d)
  • -R: 将时间转换为RFC 2822格式的时间字符串并输出
  • -v: 对日期时间进行加减计算
  • --iso-8601[=TIMESPEC]: 以ISO 8601标准格式显示时间,可选参数TIMESPEC为时间精度格式

由于date命令主要用于保证编译和其他调用时间戳过程需要设置精确的时间参数(以及其他命令调用date参数)
故一般仅调用-s参数:

简单使用方法:

date -s 23:02:41
#设置当前时间为23:02:41而不修改其他值

7. update/upgrade

更新系统/系统文件

apt-get update && sudo apt-get upgrade

两种命令作用相同

apt-get update wpasupplicant
#以更新或下载安装wpasupplicant包为例
apt-get upgrade wpasupplicant
#以更新或下载安装wpasupplicant包为例

该命令主要作用为更新系统/系统文件(无参数为全包更新)

命令功能:

  1. 更新软件包:将系统中已安装的软件包更新到最新版本,包括增加新的功能和修复已知
    漏洞
  2. 更新索引缓存:更新软件包管理器的软件包索引或缓存,确保其包含最新的软件包信息
  3. 更新文件系统:使用fsckbadblocks命令扫描并修复文件系统上的错误或损坏
  4. 更新系统内核:下载最新的内核源代码并编译安装,优化系统内核

Ⅱ. Linux基本信息检索命令


1.LS(list directory contents)

列举指定目录下内容

ls -<option>
指令介绍完整指令
ls(可选)参数功能(显示信息)ls -[o]
无参数列举当前目录下所有文件和子目录名称ls
-l列举文件和子目录详情ls -l
-a列举当前目录下的所有文件,包括隐藏文件或目录(以点号开头的文件或目录)ls -a
-t按照时间参数远近升序排序(由远及近)并列举文件,以最新文件在前ls -t
-r按照时间参数远近降序排序(由近及远)并列举文件,以最后生成文件在前ls -r
-R递归列出当前目录和所有子目录中的文件和子目录,也可以使用ls --recursive命令ls -R

注释:

1.ls -l 表示列举文件和子目录详情,其中包括文件名、文件类型、文件按权限、文件所有者、大小、创建时间等

查看该输出:

(1)右边蓝标字符串(Desktop等)表示文件或目录的名称
(2)数字 2 表示链接(link)数,表示已有多少个硬链接指向该文件或目录
(3)root 和 root 分别表示该文件或目录的所有者和所属组
(4)4096 表示文件或目录的大小(以字节为单位),如果是目录则为其所含文件的总大小。
(5)drwxr-xr-x 是 Linux 系统中用来表示文件或目录权限的一种表现形式(通常由10个字符组成)。其中 d (首字符)表示该项为目录;
接下来的九个字符依访问用户的不同分成三组(详情参见:认识文件权限),前三个字符 rwx 表示所有者对该文件或目录的权限;接下来的三个字符 r-x 表示所属组对该文件或目录的权限;最后的三个字符 r-x 表示其他用户(非所有者和非所属组成员)对该文件或目录的权限。如果没有相应的权限,则相应位置的字符将被替换为 -

值得注意的是,该命令直接调用时默认查看当前目录下的文件信息详情,可限定命令作用域,当限定命令作用域时,该命令只输出限定作用于下的文件详情信息,如:

ls -l /root/workspcae/[directory]

2.pwd(print work directory)

打印工作目录

pwd 

用于显示当前工作目录的绝对路径



Ⅲ. Linux文件管理命令


1. cp(copy)

复制文件或目录

cp filename.py /workspace/test/
#复制filename.py文件到/workspace/test/路径文件夹下
cp -r [directory] /workspace/test/
#复制[directory]目录及其内容到/workspace/test/路径文件夹下
短选项长选项描述
-a--archive复制文件或目录,保留链接、文件属性,并复制目录下的所有内容;等同于-dpR参数组合
-b--backup=CONTROL创建备份文件,若目标文件已经存在,添加一个备份拓展名;备份文件的类型由选项CONTROL指定,默认为none
-f--force强制复制文件或目录,不询问
-i--interactive复制文件或目录前先询问是否覆盖
-n--no-clobber不覆盖已经存在的文件,不进行复制操作
-p--preserve保留文件属性,包括所有权、访问时间、修改时间和权限
-R--recursive递归复制整个目录及子目录;若要拷贝目录下所有内容,必须使用此选项
-s--symbolic-link复制符号链接本身而非链接的目标文件
-S--suffix=SUFFIX为备份拓展名设置指定的拓展名
-t--target-directory=DIRECTORY将文件或目录复制到目标目录中
-T--no-target-directory复制多个源文件时,将目标视为一个普通文件而不是目录
-u--update仅复制源文件更新且文件大小不同或者目标文件不存在的文件
-v--verbose显示详细信息
----help显示帮助信息
----version显示版本信息

下述为cp命令详细选项(--help)

Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.
  -a, --archive                same as -dR --preserve=all
      --attributes-only        don't copy the file data, just the attributes
      --backup[=CONTROL]       make a backup of each existing destination file
  -b                           like --backup but does not accept an argument
      --copy-contents          copy contents of special files when recursive
  -d                           same as --no-dereference --preserve=links
  -f, --force                  if an existing destination file cannot be
                                 opened, remove it and try again (this option
                                 is ignored when the -n option is also used)
  -i, --interactive            prompt before overwrite (overrides a previous -n
                                  option)
  -H                           follow command-line symbolic links in SOURCE
  -l, --link                   hard link files instead of copying
  -L, --dereference            always follow symbolic links in SOURCE
  -n, --no-clobber             do not overwrite an existing file (overrides
                                 a previous -i option)
  -P, --no-dereference         never follow symbolic links in SOURCE
  -p                           same as --preserve=mode,ownership,timestamps
      --preserve[=ATTR_LIST]   preserve the specified attributes (default:
                                 mode,ownership,timestamps), if possible
                                 additional attributes: context, links, xattr,
                                 all
      --no-preserve=ATTR_LIST  don't preserve the specified attributes
      --parents                use full source file name under DIRECTORY
  -R, -r, --recursive          copy directories recursively
      --reflink[=WHEN]         control clone/CoW copies. See below
      --remove-destination     remove each existing destination file before
                                 attempting to open it (contrast with --force)
      --sparse=WHEN            control creation of sparse files. See below
      --strip-trailing-slashes  remove any trailing slashes from each SOURCE
                                 argument
  -s, --symbolic-link          make symbolic links instead of copying
  -S, --suffix=SUFFIX          override the usual backup suffix
  -t, --target-directory=DIRECTORY  copy all SOURCE arguments into DIRECTORY
  -T, --no-target-directory    treat DEST as a normal file
  -u, --update                 copy only when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -x, --one-file-system        stay on this file system
  -Z                           set SELinux security context of destination
                                 file to default type
      --context[=CTX]          like -Z, or if CTX is specified then set the
                                 SELinux or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit

By default, sparse SOURCE files are detected by a crude heuristic and the
corresponding DEST file is made sparse as well.  That is the behavior
selected by --sparse=auto.  Specify --sparse=always to create a sparse DEST
file whenever the SOURCE file contains a long enough sequence of zero bytes.
Use --sparse=never to inhibit creation of sparse files.

When --reflink[=always] is specified, perform a lightweight copy, where the
data blocks are copied only when modified.  If this is not possible the copy
fails, or if --reflink=auto is specified, fall back to a standard copy.

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable.  Here are the values:

  none, off       never make backups (even if --backup is given)
  numbered, t     make numbered backups
  existing, nil   numbered if numbered backups exist, simple otherwise
  simple, never   always make simple backups

As a special case, cp makes a backup of SOURCE when the force and backup
options are given and SOURCE and DEST are the same name for an existing,
regular file.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/cp>
or available locally via: info '(coreutils) cp invocation'

 ***********************************************************
 ***********************************************************
 
用法: cp [选项]... [-T] 源文件 目标文件
或者: cp [选项]... 源文件... 目录
或者: cp [选项]... -t 目录 源文件...
将源文件复制到目标文件,或将多个源文件复制到目录。

长选项的强制参数对于短选项也是强制的。
-a, --archive                等同于 -dR --preserve=all
--attributes-only        只复制文件属性,不复制文件数据
--backup[=CONTROL]       对每个已存在的目标文件进行备份
-b                           类似于 --backup,但不接受参数
--copy-contents          递归复制特殊文件的内容
-d                           等同于 --no-dereference --preserve=links
-f, --force                  如果无法打开一个已存在的目标文件,则删除它并重试(当 -n 选项同时使用时忽略此选项)
-i, --interactive            在覆盖之前询问用户是否确认覆盖(覆盖之前会先忽略之前的 -n 选项)
-H                           在源文件中跟随命令行符号链接
-l, --link                   创建硬链接而不是复制文件
-L, --dereference            总是跟随源文件中的符号链接
-n, --no-clobber             不覆盖已存在的文件(覆盖之前会先忽略之前的 -i 选项)
-P, --no-dereference         从不跟随源文件中的符号链接
-p                           等同于 --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]   尽可能保留指定的文件属性(默认为 mode、ownership、timestamps),其他属性: context, links, xattr, all
--no-preserve=ATTR_LIST  不保留指定的文件属性
--parents                在目录树结构下使用完整的文件名
-R, -r, --recursive          递归复制目录及其子目录中的内容
--reflink[=WHEN]         控制克隆/写时复制的操作。参见下方
--remove-destination     在每次尝试打开已存在的目标文件之前先删除它(与 --force 相反)
--sparse=WHEN            控制稀疏文件的创建。参见下方
--strip-trailing-slashes  移除每个源文件参数的尾部斜杠
-s, --symbolic-link          创建符号链接而不是复制文件
-S, --suffix=SUFFIX          覆盖默认的备份后缀(~)
-t, --target-directory=DIRECTORY  将所有源文件参数复制到目录中
-T, --no-target-directory    将 DEST 视为普通文件
-u, --update                 当源文件更新时间比目标文件新,或者目标文件不存在时才进行复制
-v, --verbose                显示正在进行的操作
-x, --one-file-system        仅保留在同一文件系统上的文件
-Z                           将目标文件的 SELinux 安全上下文设置为默认类型
--context[=CTX]          类似于 -Z,或者如果指定 CTX 则将 SELinux 或 SMACK 的安全上下文设置为 CTX
--help     显示此帮助信息并退出
--version  输出版本信息并退出

默认情况下,cp 会使用粗略的启发式方法检测源文件是否为稀疏文件,并在目标文件也是稀疏文件时使其成为稀疏文件。这是通过使用 --sparse=auto 选项选择的行为。指定 --sparse=always 以创建稀疏的目标文件,当源文件包含足够长的连续空字节时。使用 --sparse=never 来禁止创建稀疏文件。

当指定 --reflink[=always] 时,执行轻量级复制,只有数据块在被修改时才会被复制。如果不可能进行该操作,则复制失败。如果指定了 --reflink=auto,则回退到标准复制。

备份后缀为“~”,除非使用 --suffix 或 SIMPLE_BACKUP_SUFFIX 来设置。版本控制方法可以通过 --backup 选项或 VERSION_CONTROL 环境变量进行选择。以下是可选值:

none, off       不进行备份(即使给出了 --backup)
numbered, t     进行编号备份
existing, nil   如果存在编号备份,则进行编号备份,否则进行简单备份
simple, never   总是进行简单备份

作为特殊情况,当给出 -f 和 --backup 选项,并且源文件与目标文件参数相同且为已存在的常规文件时,cp 从源文件创建一个备份。

GNU Coreutils 在线帮助文档:http://www.gnu.org/software/coreutils/
完整文档请参见:http://www.gnu.org/software/coreutils/cp,或在本地使用 info '(coreutils) cp invocation' 命令查看。

2. mv(move)

移动或重命名文件或目录

mv filename.py /workspace/test/
#实现将文件filename.py移动至/workspace/test/路径文件夹中
mv oldfname.txt newfname.txt
#实现将oldfname旧文件名替换成newfname新文件名
短选项长选项描述
-b--在执行覆盖前,为目标文件创建一个备份
-f--force不提示用户直接强制覆盖目标文件而进行操作
-i--interactive如果目标文件已经存在,则要求用户确认是否进行覆盖操作
-n--no-clobber不覆盖任何已存在的文件,即使源文件比目标文件新
-S--为目标文件设置备份名称的拓展名
-u--update只有在源文件比目标文件新或者目标文件不存在时才进行操作
-v--verbose显示操作的详细信息
----help显示帮助信息
----version显示版本信息

下述为mv命令详细选项(--help)

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.
      --backup[=CONTROL]       make a backup of each existing destination file
  -b                           like --backup but does not accept an argument
  -f, --force                  do not prompt before overwriting
  -i, --interactive            prompt before overwrite
  -n, --no-clobber             do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
      --strip-trailing-slashes  remove any trailing slashes from each SOURCE
                                 argument
  -S, --suffix=SUFFIX          override the usual backup suffix
  -t, --target-directory=DIRECTORY  move all SOURCE arguments into DIRECTORY
  -T, --no-target-directory    treat DEST as a normal file
  -u, --update                 move only when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -Z, --context                set SELinux security context of destination
                                 file to default type
      --help     display this help and exit
      --version  output version information and exit

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable.  Here are the values:

  none, off       never make backups (even if --backup is given)
  numbered, t     make numbered backups
  existing, nil   numbered if numbered backups exist, simple otherwise
  simple, never   always make simple backups

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/mv>
or available locally via: info '(coreutils) mv invocation'

 ***********************************************************
 ***********************************************************
 
用法:mv [选项]... [-T] 源文件 目标文件
或 mv [选项]... 源文件... 目标目录
或 mv [选项]... -t 目标目录 源文件...

将源文件重命名为目标文件,或者将源文件移动到目标目录。

必要选项对于短选项也是必要的。

--backup[=CONTROL]         对每个现有的目标文件都进行备份
-b                         和--backup一样,但不带参数
-f, --force                在覆盖前不提示
-i, --interactive          覆盖前提示
-n, --no-clobber           不覆盖已存在的文件
如果指定多个 -i,-f,-n,则只有最后一个起作用。
--strip-trailing-slashes   从每个源文件中去除任何尾随斜杠
-S,--suffix=SUFFIX        覆盖默认备份后缀
-t,--target-directory=DIRECTORY  将所有源文件移动到目标目录
-T,--no-target-directory  把DEST视为普通文件
-u, --update               只有当源文件较新或目标文件不存在时才移动
-v, --verbose              解释正在进行的操作
-Z,--context              将目标文件的 SELinux 安全上下文设置为默认类型
--help                     显示此帮助信息并退出
--version                  输出版本信息并退出

默认情况下备份后缀为'~',除非使用 --suffix 或 SIMPLE_BACKUP_SUFFIX 设置。

可以通过 --backup 选项或 VERSION_CONTROL 环境变量来选择版本控制方法。以下是选项:

none, off       不进行备份(即使给出了--backup)
numbered, t     进行编号的备份
existing, nil   如果存在编号备份则进行编号备份,否则进行简单备份
simple, never   总是进行简单备份

GNU 核心实用程序在线帮助:http://www.gnu.org/software/coreutils/
完整的文档见:http://www.gnu.org/software/coreutils/mv
或使用 info '(coreutils) mv invocation' 在本地查看。

3. rm(remove)

删除文件或目录

rm filename.py
#删除文件filename.py
rm -r [directory]
#删除文件目录[directory]及其内容
短选项长选项描述
-f--force忽略不存在的文件,不给出提示
-i--interactive进行交互式删除操作,删除前逐一询问确认
-r--recursive将指定目录及其子目录递归删除
-v--verbose显示指令执行过程
-I--ignore-missing忽略不存在的文件和参数错误
-R--recursive,--r将指定目录及其子目录递归删除,删除时不提示
----help显示帮助信息
----version显示版本信息

下述为rm命令详细选项(--help)

Usage: rm [OPTION]... [FILE]...
Remove (unlink) the FILE(s).

  -f, --force           ignore nonexistent files and arguments, never prompt
  -i                    prompt before every removal
  -I                    prompt once before removing more than three files, or
                          when removing recursively; less intrusive than -i,
                          while still giving protection against most mistakes
      --interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
                          always (-i); without WHEN, prompt always
      --one-file-system  when removing a hierarchy recursively, skip any
                          directory that is on a file system different from
                          that of the corresponding command line argument
      --no-preserve-root  do not treat '/' specially
      --preserve-root   do not remove '/' (default)
  -r, -R, --recursive   remove directories and their contents recursively
  -d, --dir             remove empty directories
  -v, --verbose         explain what is being done
      --help     display this help and exit
      --version  output version information and exit

By default, rm does not remove directories.  Use the --recursive (-r or -R)
option to remove each listed directory, too, along with all of its contents.

To remove a file whose name starts with a '-', for example '-foo',
use one of these commands:
  rm -- -foo

  rm ./-foo

Note that if you use rm to remove a file, it might be possible to recover
some of its contents, given sufficient expertise and/or time.  For greater
assurance that the contents are truly unrecoverable, consider using shred.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/rm>
or available locally via: info '(coreutils) rm invocation'

 ***********************************************************
 ***********************************************************
 
使用方法:rm [选项]... [文件]...
删除(unlink)FILE(S)。

-f, --force           忽略不存在的文件和参数,不要提示
-i                    在每次删除之前提示
-I                    在删除超过三个文件或递归删除时提示一次。比-i less intrusive,并且仍然对大多数错误提供保护。
--interactive[=WHEN]  根据 WHEN 提示:never、once (-I) 或 always (-i)。如果没有 WHEN,就始终提示。
--one-file-system  递归删除层次结构时,跳过任何与相应命令行参数所在的文件系统不同的目录。
--no-preserve-root  不将'/'视为特殊情况。
--preserve-root   不删除'/'(默认)
-r, -R, --recursive   递归删除目录及其内容
-d, --dir             删除空目录
-v, --verbose         解释正在进行的操作
--help     显示此帮助信息并退出
--version  输出版本信息并退出

默认情况下,rm 不会删除目录。 使用 --recursive(-r 或 -R)选项来连同所有内容一起删除每个列出的目录。

要删除名称以 '-' 开头的文件,例如 '-foo',请使用以下命令之一:
rm -- -foo
rm ./-foo

请注意,如果使用 rm 删除文件,则可能会恢复其中的某些内容,如果具备足够的专业知识和/或时间。 为了更好地保证内容无法恢复,请考虑使用 shred。

GNU 核心实用程序在线帮助:http://www.gnu.org/software/coreutils/
完整的文档见:http://www.gnu.org/software/coreutils/rm
或者在本地使用 info '(coreutils) rm invocation' 查看。

4. mkdir(make directory)

创建新目录

mkdir [directory]
#创建目录[directory]
mkdir -p workspace/[directory]
#递归创建目录和子目录
短选项长选项描述
-m--mode=MODE设置新目录的权限模式
-p--parents递归创建目录,如果父级目录不存在则一并创建
-v--verbose显示创建新目录的详细信息
----help显示帮助信息
----version显示版本信息

下述为mkdir命令详细选项(--help)


Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.

Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
or available locally via: info '(coreutils) mkdir invocation'

 ***********************************************************
 ***********************************************************
 
使用方法:mkdir [选项]... 目录...
如果它们不存在,则创建目录(们)。

长选项的强制参数对于短选项也是强制的。
-m, --mode=MODE   设置文件模式(如chmod中所述),而不是a=rwx - umask
-p, --parents     如果已存在,则不报错,并根据需要创建父目录
-v, --verbose     为每个已创建的目录打印一条消息
-Z                   将每个已创建的目录的SELinux安全上下文设置为默认类型
to the default type
--context[=CTX]  类似于-Z,如果指定了CTX,则将SELinux或SMACK安全上下文设置为CTX
--help     显示此帮助信息并退出
--version  输出版本信息并退出

GNU核心实用程序在线帮助: http://www.gnu.org/software/coreutils/
完整文档: http://www.gnu.org/software/coreutils/mkdir
或通过info '(coreutils) mkdir invocation'本地获取。

5. rmdir(remove directory)

删除空目录

rmdir [directory]
#删除空目录[directory]
rmdir -p [directory_1]/[directory_2]/[directory_3]
#递归删除空目录[directory_1]/[directory_2]/[directory_3]
短选项长选项描述
-p--parents递归删除父目录中不包含子目录或文件的空目录,同时删除父目录
-v--verbose显示当前删除目录
----ignore-fail-on-non-empty忽略非空目录删除失败的错误信息
----help显示帮助信息
----version显示版本信息

下述为rmdir命令详细选项(--help)

Usage: rmdir [OPTION]... DIRECTORY...
Remove the DIRECTORY(ies), if they are empty.

      --ignore-fail-on-non-empty
                  ignore each failure that is solely because a directory
                    is non-empty
  -p, --parents   remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is
                    similar to 'rmdir a/b/c a/b a'
  -v, --verbose   output a diagnostic for every directory processed
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/rmdir>
or available locally via: info '(coreutils) rmdir invocation'

 ***********************************************************
 ***********************************************************
 
使用方法:rmdir [选项]... 目录...
如果它们是空的,则删除目录(们)。

  --ignore-fail-on-non-empty
              忽略仅因目录非空而产生的每个失败
-p, --parents   删除目录及其祖先;例如,“rmdir -p a/b/c”类似于“rmdir a/b/c a/b a”
-v, --verbose   对处理的每个目录输出诊断信息
--help     显示此帮助信息并退出
--version  输出版本信息并退出

GNU核心实用程序在线帮助: http://www.gnu.org/software/coreutils/
完整文档: http://www.gnu.org/software/coreutils/rmdir
或通过info '(coreutils) rmdir invocation'本地获取。

6. touch(touch)

创建新文件或更新时间戳(修改或创建文件)

touch -a filename.py
#只更新文件的访问时间(atime),不改变修改时间(mtime)
touch -m filename.py
#只更新文件的修改时间(mtime),不改变访问时间(atime)
短选项长选项描述
-a--time=atime只更新文件的访问时间,而不更新修改时间
-c--no-create不创建任何文件
-d--date=time使用指定的日期时间而不是当前时间
-f--force如果文件不存在,则不会创建新文件,而是忽略该错误
-m--time=mtime只更新文件的修改时间,而不更新访问时间
-r--reference=file使用 file 文件的时间戳作为这些被 touch 的文件的时间戳
-t--time=time使用指定的时间而不是当前时间。时间格式为: [[CC]YY]MMDDhhmm[.ss]
-h--no-dereference不会解决符号链接,而是会修改符号链接的时间戳
-v--verbose在更改每个文件的时间戳之前打印文件名
----help显示帮助信息
----version显示版本信息

下述为touch命令详细选项(--help)

Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h
is supplied.

A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
      --time=WORD        change the specified time:
                           WORD is access, atime, or use: equivalent to -a
                           WORD is modify or mtime: equivalent to -m
      --help     display this help and exit
      --version  output version information and exit

Note that the -d and -t options accept different time-date formats.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/touch>
or available locally via: info '(coreutils) touch invocation'

 ***********************************************************
 ***********************************************************
 
使用方法:touch [选项]... 文件...
更新每个文件的访问时间和修改时间为当前时间。

如果提供了-c或-h选项,那么不存在的文件参数将被创建为空文件。

文件参数字符串为“-”时,touch会处理得特殊一些,它将更改与标准输出关联的文件的时间戳。

长选项的必选参数对于短选项也是必选的。
-a                     仅更改访问时间
-c, --no-create        不要创建任何文件
-d, --date=STRING      解析STRING并使用它代替当前时间
-f                     (被忽略)
-h, --no-dereference   影响每个符号链接而不是与之相关联的任何引用文件(仅在可以更改符号链接的时间戳的系统上有用)
-m                     仅更改修改时间
-r, --reference=FILE   使用此文件的时间而不是当前时间
-t STAMP               使用[[CC]YY]MMDDhhmm[.ss]代替当前时间
--time=WORD        更改指定的时间:
WORD是access、atime或use:等同于-a
WORD是modify或mtime:等同于-m
--help             显示此帮助信息并退出
--version          输出版本信息并退出

请注意,-d和-t选项接受不同的日期/时间格式。

GNU核心实用程序在线帮助: http://www.gnu.org/software/coreutils/
完整文档: http://www.gnu.org/software/coreutils/touch
或者通过info '(coreutils) touch invocation'本地获取。

Ⅳ. Linux网络连接管理命令


1. ifconfig(interface configuration)

配置网络接口和查看网络状态

ifconfig -<option> <interface> <parameters>

有如下<option>选项:
1. 信息显示

  • v: 显示详细网络信息(一般情况下和直接使用ifconfig命令输出结果相同)
  • -a: 显示所有接口信息,包括未启动的接口(信息输出相比-v更加详细)
  • -s: 以简洁的形式输出接口信息

2. 接口配置

  • up: 启用指定接口
  • down: 禁用指定接口
  • <interface>: 指定要配置的网络接口
  • <parameters>:为接口配置网络参数(主要参数有如下四种)
  • inet <IP地址> : 为接口配置 IPv4 地址
  • netmask <子网掩码>: 为接口配置 IPv4 子网掩码
  • broadcast <广播地址>: 为接口配置广播地址
  • hw <MAC地址>: 为接口配置物理地址(即 MAC 地址)
    启用名为eth0的网络接口并设置其IPv4地址为192.168.137.11,子网掩码为 255.255.255.0,广播地址为 192.168.137.255
  1. 信息显示
ifconfig -s
#按列表形式简约格式化输出接口信息
  1. 接口配置
ifconfig eth0 192.168.137.11 netmask 255.255.255.0 broadcast 192.168.137.255 up && ifconfig eth0
#实现配置接口网络参数并在执行成功后输出eth0接口的信息参数

注释:

  1. ifconfig -s命令输出格式如下图所示

其中各项参数及含义如下

  • Iface:网络接口名称。
  • MTU:最大传输单元(Maximum Transmission Unit);它是指在不进行分片的情况下,该接口能够发送的最大数据包大小;通常情况下,MTU 的默认值是 1500 字节
  • RX-OK:接收成功的数据包数量
  • RX-ERR:在接收数据包时发生错误的数量
  • RX-DRP:由于缓冲区已满等原因而丢弃的接收数据包数量
  • RX-OVR:接收缓冲区溢出时发生的丢包数量
  • TX-OK:成功发送的数据包数量
  • TX-ERR:在发送数据包时出错的数量
  • TX-DRP:由于缓冲区已满等原因而丢弃的发送数据包数量
  • TX-OVR:发送缓冲区溢出时出现的丢包数量
  • Flg:表示网络接口状态标志的字符串,包括 UP(接口启用)、DOWN(接口禁用)、BROADCAST(支持广播地址)、RUNNING(接口正在运行)、MULTICAST(使用多播地址)等

更详细的ifconfig命令介绍参见此处


2. ping(Packet Internet Groper)

测试网络连接

ping baidu.com
短选项长选项描述
-aAudible每当接收到一个 ICMP 回应信息时,发出一声警告声
-AAdaptive根据网络状况,调整 ICMP 回应信息的发送速率
-bBroadcast使用广播地址发送 ICMP 回应信息。
-cCount发送指定数目的 ICMP 请求信息
-DTimestamp同时打印出每个 ICMP 回应信息的时间戳
-dDebug显示发送和接收的 ICMP 数据包的详细内容
-FRecordRoute设置记录 IP 包路由并返回数据报文
-fFlood快速连续发送大量 ICMP 请求信息,测试网络负载能力
-hHelp显示 ping 命令的帮助信息
-IInterface关联指定的网络接口发送 ICMP 请求信息。
-iInterval设置发送 ICMP 请求信息的间隔时间(单位为秒)。
-lPreload设置在每个 ICMP 请求信息中发送的数据字节数。
-LLoose使用松散的源路由模式发送 ICMP 请求信息。
-mLimit设置 ICMP 请求信息的生存时间(TTL)值。
-M-L,在发送 ICMP 请求信息时使用松散源路由模式。
-nNumeric使用 IP 地址直接访问目标主机,不尝试解析主机名。
-OTimestamp每个 ICMP 请求信息中都携带时间戳
-pPattern在每个 ICMP 请求信息中使用指定的数据模式
-qQuiet只显示关键信息,不显示错误或警告信息
-RRecordRoute在返回的 ICMP 回应信息中记录包路由
-rRouterAlert要求路由器在转发 ICMP 请求信息时进行警报
-SSourceAddress设置本地主机的源 IP 地址
-sSize设置 ICMP 数据包的大小(单位为字节)
-tTimeout设置等待 ICMP 回应信息的超时时间(单位为秒)
-UUDPSocket使用 UDP 套接字而不是 ICMP 报文发送数据包
-vVerbose显示详细的命令执行过程
-VVersion显示 ping 命令的版本信息
-WTimeout设置等待 ICMP 回应信息的超时时间(单位为毫秒)
-wWait以指定时间内最后一个收到的回应作为统计数据中的 TTL 值

值得注意的是:PowerShell中ping命令和Linux中ping参数有较大区别

以下列举不同shell中执行的ping参数(通过查看--help标定)

(1)PowerShell

用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
            [-4] [-6] target_name

选项:
    -t             Ping 指定的主机,直到停止。
                   若要查看统计信息并继续操作,请键入 Ctrl+Break;
                   若要停止,请键入 Ctrl+C。
    -a             将地址解析为主机名。
    -n count       要发送的回显请求数。
    -l size        发送缓冲区大小。
    -f             在数据包中设置“不分段”标记(仅适用于 IPv4)。
    -i TTL         生存时间。
    -v TOS         服务类型(仅适用于 IPv4。该设置已被弃用,
                   对 IP 标头中的服务类型字段没有任何
                   影响)。
    -r count       记录计数跃点的路由(仅适用于 IPv4)。
    -s count       计数跃点的时间戳(仅适用于 IPv4)。
    -j host-list   与主机列表一起使用的松散源路由(仅适用于 IPv4)。
    -k host-list    与主机列表一起使用的严格源路由(仅适用于 IPv4)。
    -w timeout     等待每次回复的超时时间(毫秒)。
    -R             同样使用路由标头测试反向路由(仅适用于 IPv6)。
                   根据 RFC 5095,已弃用此路由标头。
                   如果使用此标头,某些系统可能丢弃
                   回显请求。
    -S srcaddr     要使用的源地址。
    -c compartment 路由隔离舱标识符。
    -p             Ping Hyper-V 网络虚拟化提供程序地址。
    -4             强制使用 IPv4。
    -6             强制使用 IPv6。

(2)Linux

用法: ping [OPTION...] HOST ...
向网络主机发送 ICMP ECHO_REQUEST(回显请求)数据包

控制 ICMP 请求类型的选项:
--address              发送 ICMP_ADDRESS 数据包(仅限 root 用户)
--echo                 发送 ICMP_ECHO 数据包(默认值)
--mask                 等同于 --address
--timestamp            发送 ICMP_TIMESTAMP 数据包
-t, --type=TYPE            发送 TYPE 类型的数据包

所有请求类型都适用的选项:

-c, --count=NUMBER         发送 NUMBER 个数据包后停止
-d, --debug                设置 SO_DEBUG 选项
-i, --interval=NUMBER      在发送每个数据包之间等待 NUMBER 秒
-n, --numeric              不解析主机地址,直接使用 IP 地址
-r, --ignore-routing       直接向附加网络上的主机发送数据包
--ttl=N                指定生存时间(TTL)为 N
-T, --tos=NUM              将服务类型(TOS)设置为 NUM
-v, --verbose              输出详细信息
-w, --timeout=N            在 N 秒后停止
-W, --linger=N             等待响应的秒数

仅适用于 --echo 请求的选项:

-f, --flood                快速连续发送大量数据包(仅限 root 用户)
--ip-timestamp=FLAG    设置 FLAG 类型的 IP 时间戳,可以是 "tsonly" 或 "tsaddr"
-l, --preload=NUMBER       在正常发送模式之前尽可能快地发送 NUMBER 个数据包(仅限 root 用户)
-p, --pattern=PATTERN      使用给定的模式(十六进制)填充 ICMP 数据包
-q, --quiet                不输出任何信息
-R, --route                记录路由
-s, --size=NUMBER          发送 NUMBER 个字节的数据

-?, --help                 显示帮助信息
--usage                显示短的用法信息
-V, --version              显示程序版本

长选项的必选或可选参数也是对应的短选项的必选或可选参数

标有(仅限 root 用户)的选项仅适用于超级用户

注释:

在WindowsPowerShell中可使用如下命令

ping -a 192.168.137.11
#通过本机对主机发出请求并解析主机名

实现对 IP 地址为 192.168.137.11 的主机进行 ping 测试,并尝试解析该主机的主机名
其中-a选项表示尝试解析 IP 地址对应的主机名。如果解析成功,命令行输出 ping 测试结果以及主机名,否则输出未知主机名或者超时信息等


3. route(IP Routing Table Management Utility)

IP路由表管理工具

route

具有如下功能

  • route: 显示当前系统的路由表
  • route add: 添加一条新的路由表项
  • route del: 删除一条已有的路由表项
  • route change: 修改一条已有的路由表项
  • route flush: 清空当前系统的路由表

具有如下-<option>

  • route -n: 以数字格式显示路由表
  • route -v: 显示更详细的路由表信息。
  • route -A:指定使用哪种地址族(IPv4或IPv6)。
  • route -C: 打印缓存中的路由信息。
  • route -e: 在ARP缓存中查找网关的MAC地址。
  • route -F: 清空当前所有路由表,并设置默认路由为本地。
  • route -h: 显示帮助信息。
  • route -nA inet: 以数字格式显示IPv4路由表。
  • route -nA inet6: 以数字格式显示IPv6路由表。
  1. 信息显示

(1) 以表格形式显示路由信息

route -n
>>Kernel IP routing table
  Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  0.0.0.0         192.168.137.1   0.0.0.0         UG    601    0        0 eth0
  192.168.137.0   0.0.0.0         255.255.255.0   U     601    0        0 eth0

其中

  1. Destination:表示目标网络或主机地址
  2. Gateway:表示网关地址。如果该地址为空,则说明本机可以直接访问目的地址
  3. Genmask:表示子网掩码,用于判断目标网络地址
  4. Flags:
    • U (Up):表示该路由是活动的
    • G (Gateway):表示该地址为网关地址
    • H (Host):表示该地址为主机地址
    • D (Dynamic):表示该路由是动态生成的
    • M (Modified):表示该路由在缓存中
    • R (Reject):表示该路由被丢弃
  5. Metric:表示该路由的跳数
  6. Ref:表示该路由被多少个路由表项引用
  7. Use:表示路由被使用的次数
  8. Iface:表示发送数据包的接口

(2)显示更详细信息

route
route -v

相比于上述两个命令,route -n命令需要检索的内容偏少,故加载速度快
对于不需要输出详细路由信息的环境下选用route -n更符合查看信息的需求

  1. 网络管理

(1) 将 IP 地址前缀为 10.0.0.0/8 的流量路由到本地 IP 地址为 192.168.1.1 的网关

route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1

(2)删除 IP 地址前缀为 10.0.0.0/8 的路由

route del -net 10.0.0.0 netmask 255.0.0.0

(3)将 IP 地址前缀为 10.0.0.0/8 的流量路由到本地 IP 地址为 192.168.1.2 的网关

route change -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2




4. ssh(Secure Shell)

与远程主机建立加密连接

ssh username@remote_host
短选项长选项描述
-p--port指定远程服务器上的 SSH 端口,默认值为 22
-i--port指定一个私钥文件作为密码验证方式,而不是输入密码
-l--login-name指定登陆远程服务器的用户名,默认使用本地用户名
-C--compression简写,开启压缩功能,在传输数据时会进行压缩,可以提高传输速度
-X/-x--x11-forwarding开启/关闭 X11 转发功能,允许在远端服务器上运行图形界面程序
-v/-vv/-vvv--verbose开启 SSH 连接调试模式(-v/-vv/-vvv三种模式对应输出的信息详细程度不同)

对于ssh的使用,通常不会跨越以登录为基础的门槛
(1)即毋庸置疑最常用的ssh使用仅为登陆时使用:

ssh username@remote_host

(2)其中 username 为登录的用户名,remote_host 为服务器的 IP 地址或域名。若服务器开启了非默认端口,可以使用 -p 参数指定端口号

ssh -p 22 username@remote_host

(3)在输入上述ssh命令后,会提示输入密码进行身份验证。密码输入时不会有任何字符显示在屏幕上,输入完毕后按回车执行登录
例如:

ssh root@192.168.137.11

登陆后显示登录信息及相关系统信息


5.nmcli(Network Manager Command-Line Interface)

网络连接和设备管理工具

nmcli device status
#显示当前系统中所有网络接口的状态信息
nmcli device set wlx002511006343 managed yes
#将指定的接口(wlx002511006343)设置为NetworkManager管理的接口。managed是一个布尔值,用于启用或禁用设备被NetworkManager管理的状态
选项描述
1. 连接管理nmcli con add创建一个新的连接配置文件
nmcli con edit编辑一个连接配置文件
nmcli con delete删除一个连接配置文件
nmcli con up启用一个连接
nmcli con down禁用一个连接
nmcli con modify修改一个连接的属性
nmcli con show显示一个或所有连接的详细信息
nmcli dev disconnect断开当前活动的连接
nmcli dev wifi connect连接一个 WiFi 网络
2. 网络管理nmcli radio wifi on/off打开/关闭无线网络
nmcli device status显示设备的状态
nmcli device show显示所有设备信息
nmcli device set配置设备属性
3. DNS和主机名管理nmcli general hostname显示当前主机名
nmcli general hostname new_hostname更改当前主机名
nmcli con modify eth0 ipv4.dns 114.114.114.114将 DNS 服务器更改为 8.8.8.8
nmcli con modify eth0 ipv4.ignore-auto-dns yes禁用 DHCP 自动分配 DNS

注c、con皆为connection的缩写

以下列举使用nmcli命令配置网络的全过程(动态/静态分配)

注意执行命令前需要保证该接口已激活,无法连接到该接口一般是由于没激活或驱动配置出错

  1. 查看当前已连接过(包括曾经连接上的内容)网络列表
nmcli c show
#查看已有连接列表
NAME            UUID                                  TYPE      DEVICE
edgeboard_eth0  316c7a64-7b4f-43ff-8f85-ffdd8e0e7461  ethernet  eth0
CUMT_LY         fcb258b6-0c6f-4315-ad2e-0c31e95815ef  wifi      --

从已有连接中选择需要配置的网络(或创建新的网络信息/或通过无线网卡接口创建个人热点等)

  1. 启用设备被NetworkManager管理的状态
nmcli device set wlx002511006343 managed yes
#将指定的接口(wlx002511006343)设置为NetworkManager管理的接口。managed是一个布尔值,用于启用或禁用设备被NetworkManager管理的状态
  1. 设置IPv4地址

(1)设置IPv4地址(本地:默认不改变ip/静态)

 nmcli c modify edgeboard_eth0 ipv4.addr '192.168.137.126/24'
#修改名为 edgeboard_eth0 的网络连接配置文件,将该连接使用的IPv4地址设置为 192.168.137.126/24,其中 "/24" 指定了子网掩码

(2)设置IPv4地址(无线接口:默认改变ip/动态)

 nmcli c modify CUMT_LY ipv4.addr '192.168.137.126/24'
#修改名为 CUMT_LY 的无线网络连接配置文件,将该连接使用的IPv4地址设置为 192.168.137.126/24,其中 "/24" 指定了子网掩码

(3)设置IPv4地址(无线接口:默认改变ip/强制静态)

 nmcli c modify CUMT_LY ipv4.addr '192.168.137.126/24' ipv4.method manual
#修改名为 CUMT_LY 的网络连接配置文件,将该连接使用的IPv4地址设置为 192.168.137.126/24,其中 "/24" 指定了子网掩码,并将该连接的IP地址分配方式设置为手动分配(即静态分配)
  1. 设置IPv4网关
nmcli c modify edgeboard_eth0 ipv4.gateway 192.168.137.255
#修改名为 edgeboard_eth0 的网络连接配置文件,将该连接使用的IPv4网关设置为 192.168.137.255
  1. 设置网络DNS
nmcli connection modify edgeboard_eth0 ipv4.dns '114.114.114.114'
#修改名为 edgeboard_eth0 的网络连接配置文件,将该连接使用的IPv4 DNS服务器设置为 114.114.114.114
  1. 更新/启用网络配置
nmcli c up edgeboard_eth0
#启动名为 edgeboard_eth0 的网络连接

6. wpa_supplicant/wpa_cli(Wireless Protected Access supplicant/wpa_supplicant command-line interface)

无线网络连接配置和管理工具

wpa_supplicant -i wlx7cb23226cf5b -c /etc/wpa_supplicant.conf > /dev/null & 
#实现在名为wlx7cb23226cf5b的无线网络接口上,使用/etc/wpa_supplicant.conf文件配置WPA/WPA2的supplicant进程,并将其放入后台运行
wpa_cli -i wlx7cb23226cf5b scan 
#在名为wlx7cb23226cf5b的无线网络接口上执行扫描操作(扫描可用无线网络)

下述为wpa_supplicant/wpa_cli命令详细选项(--help)

usage:
  wpa_supplicant [-BddhKLqqstuvW] [-P<pid file>] [-g<global ctrl>] \
        [-G<group>] \
        -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
        [-b<br_ifname>] [-e<entropy file>] [-f<debug file>] \
        [-o<override driver>] [-O<override ctrl>] \
        [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
        [-m<P2P Device config file>] \
        [-p<driver_param>] [-b<br_ifname>] [-I<config file>] ...]

drivers:
  nl80211 = Linux nl80211/cfg80211
  wext = Linux wireless extensions (generic)
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)
options:
  -b = optional bridge interface name
  -B = run daemon in the background
  -c = Configuration file
  -C = ctrl_interface parameter (only used if -c is not)
  -d = increase debugging verbosity (-dd even more)
  -D = driver name (can be multiple drivers: nl80211,wext)
  -e = entropy file
  -f = log output to debug file instead of stdout
  -g = global ctrl_interface
  -G = global ctrl_interface group
  -h = show this help text
  -i = interface name
  -I = additional configuration file
  -K = include keys (passwords, etc.) in debug output
  -L = show license (BSD)
  -m = Configuration file for the P2P Device interface
  -N = start describing new interface
  -o = override driver parameter for new interfaces
  -O = override ctrl_interface parameter for new interfaces
  -p = driver parameters
  -P = PID file
  -q = decrease debugging verbosity (-qq even less)
  -s = log output to syslog instead of stdout
  -t = include timestamp in debug messages
  -T = record to Linux tracing in addition to logging
       (records all messages regardless of debug verbosity)
  -u = enable DBus control interface
  -v = show version
  -W = wait for a control interface monitor before starting
example:
  wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
  
 ***********************************************************
 ***********************************************************
 
使用方法:
wpa_supplicant [-BddhKLqqstuvW] [-P<pid文件>] [-g<全局控制>] 

[-G<组>] 

-i<接口名> -c<配置文件> [-C<控制接口>] [-D<驱动程序>] [-p<驱动参数>] 

[-b<bridge接口名>] [-e<熵文件>] [-f<调试文件>] 

[-o<覆盖驱动程序>] [-O<覆盖控制接口>] 

[-N -i<接口名> -c<配置文件> [-C<控制接口>] [-D<驱动程序>] 

[-m<P2P设备配置文件>] 

[-p<驱动参数>] [-b<bridge接口名>] [-I<配置文件>] ...]

可用的驱动程序:
nl80211 = Linux nl80211/cfg80211
wext = Linux无线扩展(通用)
wired = 有线以太网驱动程序
none = 无驱动程序(RADIUS服务器/WPS ER)

选项:
-b = 可选的bridge接口名
-B = 后台运行守护进程
-c = 配置文件
-C = 控制接口参数(仅在没有指定-c时使用)
-d = 增加调试信息的详细度(-dd更详细)
-D = 驱动程序名称(可以指定多个驱动程序:nl80211,wext)
-e = 熵文件
-f = 将日志输出到调试文件而不是标准输出
-g = 全局控制接口
-G = 全局控制接口组
-h = 显示此帮助文本
-i = 接口名
-I = 附加配置文件
-K = 在调试输出中包含密钥(密码等)
-L = 显示许可证(BSD)
-m = P2P设备接口的配置文件
-N = 开始描述新接口
-o = 覆盖新接口的驱动程序参数
-O = 覆盖新接口的控制接口参数
-p = 驱动程序参数
-P = PID文件
-q = 减少调试信息的详细度(-qq更少)
-s = 将日志输出到syslog而不是标准输出
-t = 在调试消息中包含时间戳
-T = 记录到Linux跟踪记录中,除了日志记录外还记录所有消息
-u = 启用DBus控制接口
-v = 显示版本号
-W = 等待控制接口监视器启动后再开始运行

示例:
使用nl80211驱动程序、wlan0接口和/etc/wpa_supplicant.conf配置文件启动wpa_supplicant的命令如下:

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf

其中-D选项指定了驱动程序,-i选项指定了接口名称,-c选项指定了配置文件路径

wpa_cli交互模式:

其中直接输入wpa_cli命令后,会进入wpa_cli的交互模式,此模式下可以输入各种Wi-Fi相关的命令,例如连接Wi-Fi网络、查看Wi-Fi状态等。(当处于交互模式时,屏幕上不会输出任何内容,只有在输入命令并按下回车键后,才会显示相应的命令结果)

进入wpa_cli交互模式后,可以使用以下命令来管理WiFi网络:

  • help:列出可用的命令
  • status:查看当前网络连接状态
  • scan:执行WiFi扫描以查找可用网络
  • add_network:添加一个新的WiFi连接配置
  • set_network:设置指定网络的连接配置参数
  • enable_network:开启指定网络连接,以连接到该WiFi网络
  • disable_network:禁用指定的网络连接
  • remove_network:删除指定的网络连接配置
  • list_networks:列出所有已配置的网络连接
  • select_network:选择要使用的网络连接,以连接到该WiFi网络
  • disconnect:断开当前连接的WiFi网络
  • reconfigure:重新配置wpa_supplicant进程连接的所有网络连接
  • save_config:保存当前连接和配置信息到配置文件

进入交互模式中

以匹配无线网络"智创空间联合实验室"为例:

>add_network
0
#add_network添加网络编号为0
>set_network 0 ssid "智创空间联合实验室"
#set_network 0 ssid "SSID名称"
OK
>set_network 0 psk "********"
#set_network 0 psk "SSID密码"
OK
>save_config
#save_config一般linux发行版本ubuntu中默认支持自动保存,在下一次登陆时会自动连接上最后一次连接的网络

实现连接到无线网络"智创空间联合实验室"


Ⅴ. Linux权限管理命令


1.sudo(Superuser Do)

在Linux和Unix系统中允许普通用户以超级用户(root)身份执行命令或者其他操作

sudo -<option> 
sudo mkdir 

具有如下-<option>

  • -l:显示当前用户在 sudoers 文件中所拥有的权限
  • -v:请求输入密码以重新认证身份
  • -k:注销当前用户并清除凭据缓存
  • -K:清除凭据缓存而无需注销当前用户
  • -s--shell:使用目标用户的 shell 来执行命令
  • -H--set-home:设置目标用户的 HOME 环境变量为目标用户的家目录
  • -P--preserve-groups:保留当前用户所属的所有用户组
  • -b--background:以后台进程的方式运行命令
  1. 显示当前用户在 sudoers 文件中所拥有的权限
sudo -l
>>Matching Defaults entries for root on EdgeBoard:
      env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

  User root may run the following commands on EdgeBoard:
      (ALL : ALL) ALL
  1. 注销当前用户并清除凭据缓存
sudo -k

sudo -k 命令用于清除用户在 sudo 缓存中的账户密码凭据。通常情况下,使用 sudo 命令时,第一次成功验证密码后,密码会被缓存15分钟,此时用户可以在不需要重新验证密码的情况下再次使用 sudo 命令执行其他命令

使用 sudo -k 命令可以立即清除 sudo 缓存中的凭据,要求下次使用 sudo 命令必须重新进行身份验证。依此有效阻止未授权的用户通过 sudo 命令获取管理员特权,从而提高系统的安全性和稳定性

  1. 清除凭据缓存而无需注销当前用户
sudo -K
  1. 保留当前用户所属的所有用户组
sudo -P -u userb groups
  1. 以后台进程的方式运行命令,并将标准输出和标准错误输出重定向到文件
sudo -b -u userb command > out.log 2> err.log
  1. 赋予管理员权限

sudo 命令可以将普通用户提升为超级用户,从而获得执行需要管理员权限的命令的能力
若某个普通用户需要在系统中进行某项具有特权的操作
如修改配置文件、更改系统设置等,也可以使用 sudo 命令来获取必要的权限

(1)添加新用户

sudo useradd <username>

可以添加新用户并设置用户权限

(2)更改文件权限

sudo chmod 755 <file_path>

可以使用管理员权限更改文件的权限

(3)创建新文件目录

sudo mkdir /[dirname]

可以使用管理员权限创建新的文件目录

(4)查看系统日志

sudo tail -f /var/log/syslog

可以使用管理员权限实时查看系统日志

(5)列出目录内容

sudo ls -l /root

可以使用管理员权限列出受保护的目录内容

(6)杀死进程

sudo kill <process_id>

可以使用管理员权限杀死指定进程

(7)修改网络配置

sudo vi /etc/network/interfaces

可以使用管理员权限修改网络配置文件

(8)查看系统内存使用情况

sudo free -m

可以使用管理员权限查看系统内存使用状况

(9)查看系统磁盘使用情况

sudo df -h

可以使用管理员权限查看系统磁盘使用状况

(10)给用户添加 Sudo 权限

sudo adduser <user_name> sudo

可以使用管理员权限给用户添加 Sudo 权限


2. chmod(Change Mode)

更改文件或目录权限

chmod -<option> filename.py
chmod Permissions filename.py

具有如下 -<option>选项

  • -R:递归地修改文件夹及其子文件夹中的文件权限。
  • -f:忽略不存在的文件或者目录并不显示错误信息。
  • -c:只有在修改了权限时才输出提示信息。

chmod命令
执行方式分两种(对应文件权限定义方式)
执行作用域分两种(对文件、对目录)
对应四种命令方式

  1. 数字权限
chmod xxx file/filedir
#xxx表示权限的三位数字x的范围为1~7

(1)对文件

chmod xxx file
#xxx表示权限的三位数字x的范围为1~7
chmod 777 ./filename.py
#将当前目录下的 filename.py 文件权限设置为所有用户可读、写和执行

(2)对目录(文件夹)

chmod xxx filedir
#xxx表示权限的三位数字x的范围为1~7
chmod 755 /workspcae/filedir
#将 /workspace/filedir 的权限设置为所有者可读写执行,其他用户只能读和执行该文件或目录
  1. 字母权限
chmod [ugoa][-+=][rwx] file/filedir
#[ugoa][-+=][rwx]中 u、g、o、a 分别表示文件所有者、群组用户、其他用户和所有用户;+、-、= 分别表示添加权限、移除权限和设置权限;r、w、x 分别表示读取、写入和执行权限

(1)对文件

chmod [ugoa][-+=][rwx] file
#[ugoa][-+=][rwx]中 u、g、o、a 分别表示文件所有者、群组用户、其他用户和所有用户;+、-、= 分别表示添加权限、移除权限和设置权限;r、w、x 分别表示读取、写入和执行权限
chmod u+x ./filename.py
#将文件 filename.py 的权限设置为只添加所有者的执行权限

(2)对目录(文件夹)

chmod [ugoa][-+=][rwx] filedir
#[ugoa][-+=][rwx]中 u、g、o、a 分别表示文件所有者、群组用户、其他用户和所有用户;+、-、= 分别表示添加权限、移除权限和设置权限;r、w、x 分别表示读取、写入和执行权限
chmod u+x /workspace/filedir/
#将文件目录 /workspace/filedir/ 的权限设置为只添加所有者的执行权限

对于需要文件目录内所有文件同时赋予权限需要添加-R参数执行递归调用



Ⅵ.Linux系统管理命令


1. PS(Process Status)

显示运行中的进程

ps

具有如下 -<option>选项

  • -a: 显示除控制终端以外的所有进程
  • -x: 显示没有控制终端的进程
  • -e: 显示所有进程,等价于 -A 选项
  • -f: 显示完整的进程信息,包括进程的 UID、PID、PPID、C、STIME、TTY 等等
  • -u: 显示进程的用户和其他信息,如 ps -u binjie 所显示的是列表中单独显示 binjie 的进程
  • -p: 指定进程 ID 显示进程信息
  • --sort: 对显示的进程信息进行排序,支持多种排序方式:
    • %cpu: 按照 CPU 占用率排序
    • %mem: 按照内存占用率排序
    • +start_time: 按照启动时间从早到晚排序
    • -start_time: 按照启动时间从晚到早排序
  1. 列出当前终端下所有的进程信息
ps
  1. 列出在当前系统下所有正在执行的进程信息
ps aux
  1. 以标准格式打印进程信息
ps -ef
  1. 列出指定用户运行的所有进程信息
ps -u username
  1. 按照 CPU 占用率从高到低排序显示进程信息
ps -aux --sort=-%cpu
  1. 按照内存占用率从高到低排序显示进程信息
ps -aux --sort=-%mem

2. top(Table of Processes)

实时监测系统性能

top
  • -d seconds:指定刷新的时间间隔
  • -u username:只显示属于指定用户名的进程
  • -p pid1,pid2,…,仅显示指定pid的进程
  • -H:将每个进程的线程也显示出来
  • -b:以批处理模式运行top,以便将结果输出到文件中

运行top命令后会实时输出两个区域:

  1. 系统总览区域:

系统总览区

  1. 当前时间( - ):15:11:48
  2. 系统运行时间(up):1小时15分钟
  3. 登录用户数(user):1
  4. 系统平均负载(load average):1.00, 1.00, 1.00(分别代表1分钟、5分钟、15分钟的平均负载)
  5. 进程信息:
    Tasks: 146 total, 1 running, 108 sleeping, 0 stopped, 1 zombie(分别代表进程总数、正在运行的进程数、睡眠中的进程数、已停止的进程数、僵尸进程数)
  6. CPU使用情况:
    这里显示的是各类CPU使用的百分比,分别为%us、%sy、%ni、%id、%wa、%hi、%si、%st。这些参数的含义分别是:用户态CPU占用时间、内核态CPU占用时间、优先级较低的进程占用CPU时间、CPU空闲时间、CPU等待I/O操作时间、CPU处理硬件中断的时间、CPU处理软件中断的时间、虚拟机被剥夺CPU使用权的时间。
  7. 内存使用情况:KiB Mem和KiB Swap分别表示物理内存和交换空间的信息,包括总共的大小、已经使用的大小和空闲的大小。
  1. 进程信息列表:
    进程区

从左至右内容列表首行

  • PID:进程ID。
  • USER:进程所有者。
  • PR:进程优先级(PR=NI+20)。
  • NI:进程的nice值。
  • VIRT:进程占用的虚拟内存大小。
  • RES:进程占用的物理内存大小。
  • SHR:进程使用的共享内存大小。
  • S:进程状态(S=sleep,R=run,Z=zombie)。
  • %CPU:进程占用CPU使用的比例。
  • %MEM:进程占用物理内存的百分比。
  • TIME+:进程占用CPU的时间。
  • COMMAND:进程所对应的命令。

3. service(System V init scripts)

System V init脚本管理工具(系统管理工具)

service < option > | --status-all | [ service_name [ command | --full-restart ] ]

对于不同的发行版本,service的选项可能不同
对于service最常用的功能即为修改服务进程(或以控制启动关闭服务为主)

  1. 列举全部服务信息
service --status-all

服务列表
注释:

[ + ] 或者 [ - ] 表示服务的启动状态,[ + ] 表示已经启动,[ - ] 表示未启动

apport:Ubuntu错误报告程序,用于自动收集程序奔溃信息以便向Ubuntu开发人员报告问题
avahi-daemon:网络服务发现程序,用于在局域网中寻找和联系其他服务
bluetooth:蓝牙服务
cron:定时任务服务
dbus:进程间通信服务,类似于Windows下的RPC
haveged:随机数生成器
hwclock.sh:硬件时钟设置脚本
kmod:Linux内核模块工具
lightdm:轻量级桌面显示管理器
lxdm:LXDE桌面的显示管理器
network-manager:网络管理器,用于连接网络、配置网络参数等
nmbd 和 smbd:Samba服务,提供文件共享功能
ntp:网络时间同步服务
plymouth 和 plymouth-log:用于在系统启动时显示开机画面和日志信息
pppd-dns:PPP拨号连接中的DNS解析服务
procps:进程管理工具
resolvconf:DNS解析配置工具
rsync:远程文件同步工具
rsyslog:系统日志管理工具
saned:扫描仪服务,用于在局域网中使用共享扫描仪
ssh:SSH服务
udev:硬件设备管理服务
x11-common:X Window System的共有文件
xinetd:超级守护程序,用于管理其他服务
  1. 服务进程管理
service servicename [option]

具有如下option选项

  • start:启动服务
  • stop:停止服务
  • restart:重启服务
  • status:显示服务状态
  • 以网络管理服务(network-manager)为例

(1)启动网络管理

service network-manager start

(2)停止网络管理

service network-manager stop

(3)重启网络管理

service network-manager restart

(4)查看网络管理服务状态

service network-manager status

状态显示




三. Linux常用基础快捷键



tabctrl + cupdownctrl + zctrl + d
自动补全终止当前任务回看上一条指令回看下一条指令暂停当前指令
使用fg命令恢复
退出当前
载入用户
ctrl + lctrl + actrl + ectrl + leftctrl + rightctrl + f
选择新行执行
当前键入指令
光标移至行首光标移至行尾光标移至前一
分隔符后
光标移至后一
分隔符前
光标向右移动
单位字符
ctrl + shift + upctrl + shift + downctrl + shift + cctrl + shift + vctrl + shift + fctrl + b
命令行整体向上
移动(长按/短按)
命令行整体向下
移动(长按/短按)
复制所选内容粘贴所选内容查找内容光标向左移动
单位字符

表格中第一行快捷键为基础必备快捷键

快捷键详解:

  1. tab 能够实现自动补全命令及路径,其主要用于自动补全路径
    自动补全路径,前提为该路径存在于键入的当前目录中。
    且当遇到自动补全路径出现字符冲突时会将所有冲突的文件夹打出,
    仅需键入到不出现冲突位(无重位字符)时再自动补全路径即可(对于自动补全命令同理)

(1)自动补全命令

(2)自动补全路径

  1. ctrl + c 会终止当前任务并载入新的命令行
    当运行程序出现死循环或卡死时,可通过 ctrl + c 终止当前状态并重启命令行

  2. up/down 为方向选择键,可以选择上一条/下一条输入指令。同时还可通过 left/right 左右移动键来控制光标所在位置移动到前/后一个分隔符后/前

  3. ctrl + d 表示从当前登录的用户中退出,例如当前使用WindowsPowerShell登录树莓派(linux)中的某一个用户,使用 ctrl + d 来退出当前登录用户,退回到WindowsPowerShell默认指向路径或当前所在路径
    值得一提的是,该快捷键与logout命令相映射,功能上完全相同

以如下登录退出EdgeBoard为例

  1. Linux中和Windows系统定义的复制粘贴操作不同(大部分与windows系统相对应功能的快捷键在Linux中都需要添加shift来执行)
    (1)Linux中使用 ctrl + shift + c 来复制所选内容
    使用 ctrl + shift + v 来复粘贴复制内容
    (2)Linux中使用 ctrl + shift + f 来查找内容
    (3)Linux中使用 ctrl + shift + up 来向上移动页面
    使用 ctrl + shift + up 来向下移动页面


引用

[1]: 百度百科:Bash
[2]: 百度百科:unix shell
[3]: Linux中文手册
[4]: UbuntuManual
[5]: linux命令大全 | 菜鸟教程
[6]: Top 50+ Linux Commands You MUST Know | DigitalOcean
[7]: HOSTINGER TUTORIALS
[8]: A - Z Linux Commands - Overview with Examples
[9]: 百度百科:IP地址


文章内容较多,引用可能出现纰漏
如包含引用而未书名,请及时提出
作者会及时更改,共同创建完好的学习生态


  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是你呀星途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值