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”分别用 4、2 和 1 表示,可方便地区分不同权限。数字权限的设置也可以通过与操作符和加法来组合不同权限以实现更灵活的权限控制
User | Group | Other | ||||||
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
Ⅳ.认识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)输出字符
echo "Hello, world!"
>>Hello, world!
(2)输出变量
string="Hello, world!"
echo $string
>>Hello, world!
- 禁止输出末尾换行符
echo -n Hello,;echo world!
>>Hello, world!
- 转义功能
(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之间的数字)
- 与特殊字符配合使用实现其余功能
(结合上述特殊符号使用详情参见:Ⅵ.特殊字符(Special Character))
3.grep(global regular expression print)
条件搜索指定字符串或正则表达式,输出符合条件的全部行内容
- 搜索指定文件中的某个字符串:
grep "string" filename.py
>>**************string**************
>>...
上述命令实现搜索 filename.py 文件中所有包含字符串 “string” 的行,并全部输出到终端上.例:
- 搜索指定目录下所有文件中的某个字符串:
grep "string" /root/workspace/*
>>**************string**************
>>...
上述命令将在 /root/workspace/ 目录下所有文件中搜索包含字符串 “string” 的行,并输出到终端上.
值得注意的是如果 /root/workspace/ 该目录下包含子文件夹或其他子目录,该命令不会显示出其子目录或文件夹中所有包含字符串 “string” 的行,而是输出其子目录绝对路径并显示告知(但仍会显示该文件夹下同级目录文件中包含字符串 “string” 的行).
1.下述目录中仅包含文件夹(或包含文件中不存在包含字符串 “string” 的行).例:
2.下述文件夹中同时包含文件及文件夹.例:
- 搜索指定目录及其子目录下所有文件中的某个字符串:
grep "string" -r /root/workspace/*
>>**************string**************
>>...
区别于2.
考虑到搜索需求的不同,3.实现了搜索指定目录及其子目录中所有文件中包含 “string” 的行
实际上更常用2.命令;对于3.命令,在未知文件容量的情况下可能会输出过量无效信息
同时对于需要查找全目录下的某字符串更普适的方法为先输出包含该字符的所有文件或文件夹,再cd至最远目标路径下通过2.命令查找该行,从而避免过多无效信息的输出
- 搜索包含中文的文件
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)输出结果完全相同
- 特定搜索
grep '\bc' filename.py
>>************ c******** c***
>>...
上述命令中的
\b
表示单词边界,用来避免匹配单词内部的字符
'\bc'
即表示检索文件中所有以c开头的单词所在的行
'c\b'
即表示检索文件中所有以c结尾的单词所在的行
除上述特定搜索方式外,还包括:
'\wc'
表示检索以c为结尾字符的字符串(\w
表示任意单词字符);
(注意区别于单词,其作用为将查找文件中包含c的字符,并组成一字符串,将c作为该字符串的末尾显示出来)'^c'
表示检索以c为开头的单词(^
表示匹配行首)'c$'
表示检索以c为结尾的单词($
表示匹配行末)- …
值得注意的是,如果正则表达式中包含特殊字符(如 $、*、( 等),需要进行转义才能正确匹配。
4.cat(concatenate)
显示文件的内容、将多个文件连接起来或者创建新文件
- 查看文件内容:
cat filename.py
- 连接多个文件:
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文件中
使用重定向输出符">"
实现将
(详情参见:重定向输出符)
- 创建文件并通过终端写入内容
cat > newfile.txt
- 输出内容编号
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 '{}' + | ||
在标准输出中打印出每个匹配到的文件路径 | find . -type f -name "*.py" -print |
注释
- 路径选择
如下给出几种限定文件名作用域的find命令
find -name "*.py"
find . -name "*.py"
find ../ -name "*.py"
find ./[directory] -name "*.py"
上述命令限定了find命令对于文件路径的作用域,若不选择路径,则默认从当前路径下查找,其中.
、../
、./[directory]
均为路径作用域
- -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为结尾
- -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)
- -mtime/-atime/-ctime
用于查找时间限制的文件
find -mtime -3
#表示访问三天内修改的所有文件
find -ctime -3
#表示查找三天内创建的所有文件
find -atime -3
#表示访问三天内访问过的所有文件
find . -type f -mtime -3 -size -3M
#整合调用,查找三天内修改过的小于3m的文件(非文件夹)
- -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包为例
该命令主要作用为更新系统/系统文件(无参数为全包更新)
命令功能:
- 更新软件包:将系统中已安装的软件包更新到最新版本,包括增加新的功能和修复已知
漏洞- 更新索引缓存:更新软件包管理器的软件包索引或缓存,确保其包含最新的软件包信息
- 更新文件系统:使用
fsck
或badblocks
命令扫描并修复文件系统上的错误或损坏- 更新系统内核:下载最新的内核源代码并编译安装,优化系统内核
Ⅱ. 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
- 信息显示
ifconfig -s
#按列表形式简约格式化输出接口信息
- 接口配置
ifconfig eth0 192.168.137.11 netmask 255.255.255.0 broadcast 192.168.137.255 up && ifconfig eth0
#实现配置接口网络参数并在执行成功后输出eth0接口的信息参数
注释:
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
(使用多播地址)等
2. ping(Packet Internet Groper)
测试网络连接
ping baidu.com
短选项 | 长选项 | 描述 |
---|---|---|
-a | Audible | 每当接收到一个 ICMP 回应信息时,发出一声警告声 |
-A | Adaptive | 根据网络状况,调整 ICMP 回应信息的发送速率 |
-b | Broadcast | 使用广播地址发送 ICMP 回应信息。 |
-c | Count | 发送指定数目的 ICMP 请求信息 |
-D | Timestamp | 同时打印出每个 ICMP 回应信息的时间戳 |
-d | Debug | 显示发送和接收的 ICMP 数据包的详细内容 |
-F | RecordRoute | 设置记录 IP 包路由并返回数据报文 |
-f | Flood | 快速连续发送大量 ICMP 请求信息,测试网络负载能力 |
-h | Help | 显示 ping 命令的帮助信息 |
-I | Interface | 关联指定的网络接口发送 ICMP 请求信息。 |
-i | Interval | 设置发送 ICMP 请求信息的间隔时间(单位为秒)。 |
-l | Preload | 设置在每个 ICMP 请求信息中发送的数据字节数。 |
-L | Loose | 使用松散的源路由模式发送 ICMP 请求信息。 |
-m | Limit | 设置 ICMP 请求信息的生存时间(TTL)值。 |
-M | 同-L ,在发送 ICMP 请求信息时使用松散源路由模式。 | |
-n | Numeric | 使用 IP 地址直接访问目标主机,不尝试解析主机名。 |
-O | Timestamp | 每个 ICMP 请求信息中都携带时间戳 |
-p | Pattern | 在每个 ICMP 请求信息中使用指定的数据模式 |
-q | Quiet | 只显示关键信息,不显示错误或警告信息 |
-R | RecordRoute | 在返回的 ICMP 回应信息中记录包路由 |
-r | RouterAlert | 要求路由器在转发 ICMP 请求信息时进行警报 |
-S | SourceAddress | 设置本地主机的源 IP 地址 |
-s | Size | 设置 ICMP 数据包的大小(单位为字节) |
-t | Timeout | 设置等待 ICMP 回应信息的超时时间(单位为秒) |
-U | UDPSocket | 使用 UDP 套接字而不是 ICMP 报文发送数据包 |
-v | Verbose | 显示详细的命令执行过程 |
-V | Version | 显示 ping 命令的版本信息 |
-W | Timeout | 设置等待 ICMP 回应信息的超时时间(单位为毫秒) |
-w | Wait | 以指定时间内最后一个收到的回应作为统计数据中的 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) 以表格形式显示路由信息
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
其中
- Destination:表示目标网络或主机地址
- Gateway:表示网关地址。如果该地址为空,则说明本机可以直接访问目的地址
- Genmask:表示子网掩码,用于判断目标网络地址
- Flags:
- U (Up):表示该路由是活动的
- G (Gateway):表示该地址为网关地址
- H (Host):表示该地址为主机地址
- D (Dynamic):表示该路由是动态生成的
- M (Modified):表示该路由在缓存中
- R (Reject):表示该路由被丢弃
- Metric:表示该路由的跳数
- Ref:表示该路由被多少个路由表项引用
- Use:表示路由被使用的次数
- Iface:表示发送数据包的接口
(2)显示更详细信息
route
route -v
相比于上述两个命令,route -n
命令需要检索的内容偏少,故加载速度快
对于不需要输出详细路由信息的环境下选用route -n
更符合查看信息的需求
- 网络管理
(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
命令配置网络的全过程(动态/静态分配)
注意执行命令前需要保证该接口已激活,无法连接到该接口一般是由于没激活或驱动配置出错
- 查看当前已连接过(包括曾经连接上的内容)网络列表
nmcli c show
#查看已有连接列表
NAME UUID TYPE DEVICE
edgeboard_eth0 316c7a64-7b4f-43ff-8f85-ffdd8e0e7461 ethernet eth0
CUMT_LY fcb258b6-0c6f-4315-ad2e-0c31e95815ef wifi --
从已有连接中选择需要配置的网络(或创建新的网络信息/或通过无线网卡接口创建个人热点等)
- 启用设备被NetworkManager管理的状态
nmcli device set wlx002511006343 managed yes
#将指定的接口(wlx002511006343)设置为NetworkManager管理的接口。managed是一个布尔值,用于启用或禁用设备被NetworkManager管理的状态
- 设置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地址分配方式设置为手动分配(即静态分配)
- 设置IPv4网关
nmcli c modify edgeboard_eth0 ipv4.gateway 192.168.137.255
#修改名为 edgeboard_eth0 的网络连接配置文件,将该连接使用的IPv4网关设置为 192.168.137.255
- 设置网络DNS
nmcli connection modify edgeboard_eth0 ipv4.dns '114.114.114.114'
#修改名为 edgeboard_eth0 的网络连接配置文件,将该连接使用的IPv4 DNS服务器设置为 114.114.114.114
- 更新/启用网络配置
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
:以后台进程的方式运行命令
- 显示当前用户在 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
- 注销当前用户并清除凭据缓存
sudo -k
sudo -k 命令用于清除用户在 sudo 缓存中的账户密码凭据。通常情况下,使用 sudo 命令时,第一次成功验证密码后,密码会被缓存15分钟,此时用户可以在不需要重新验证密码的情况下再次使用 sudo 命令执行其他命令
使用 sudo -k 命令可以立即清除 sudo 缓存中的凭据,要求下次使用 sudo 命令必须重新进行身份验证。依此有效阻止未授权的用户通过 sudo 命令获取管理员特权,从而提高系统的安全性和稳定性
- 清除凭据缓存而无需注销当前用户
sudo -K
- 保留当前用户所属的所有用户组
sudo -P -u userb groups
- 以后台进程的方式运行命令,并将标准输出和标准错误输出重定向到文件
sudo -b -u userb command > out.log 2> err.log
- 赋予管理员权限
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命令
执行方式分两种(对应文件权限定义方式)
执行作用域分两种(对文件、对目录)
对应四种命令方式
- 数字权限
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 的权限设置为所有者可读写执行,其他用户只能读和执行该文件或目录
- 字母权限
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
: 按照启动时间从晚到早排序
- 列出当前终端下所有的进程信息
ps
- 列出在当前系统下所有正在执行的进程信息
ps aux
- 以标准格式打印进程信息
ps -ef
- 列出指定用户运行的所有进程信息
ps -u username
- 按照 CPU 占用率从高到低排序显示进程信息
ps -aux --sort=-%cpu
- 按照内存占用率从高到低排序显示进程信息
ps -aux --sort=-%mem
2. top(Table of Processes)
实时监测系统性能
top
-d
seconds:指定刷新的时间间隔-u
username:只显示属于指定用户名的进程-p
pid1,pid2,…,仅显示指定pid的进程-H
:将每个进程的线程也显示出来-b
:以批处理模式运行top,以便将结果输出到文件中
运行top命令后会实时输出两个区域:
- 系统总览区域:
- 当前时间( - ):15:11:48
- 系统运行时间(up):1小时15分钟
- 登录用户数(user):1
- 系统平均负载(load average):1.00, 1.00, 1.00(分别代表1分钟、5分钟、15分钟的平均负载)
- 进程信息:
Tasks: 146 total, 1 running, 108 sleeping, 0 stopped, 1 zombie(分别代表进程总数、正在运行的进程数、睡眠中的进程数、已停止的进程数、僵尸进程数)- CPU使用情况:
这里显示的是各类CPU使用的百分比,分别为%us、%sy、%ni、%id、%wa、%hi、%si、%st。这些参数的含义分别是:用户态CPU占用时间、内核态CPU占用时间、优先级较低的进程占用CPU时间、CPU空闲时间、CPU等待I/O操作时间、CPU处理硬件中断的时间、CPU处理软件中断的时间、虚拟机被剥夺CPU使用权的时间。- 内存使用情况:KiB Mem和KiB Swap分别表示物理内存和交换空间的信息,包括总共的大小、已经使用的大小和空闲的大小。
- 进程信息列表:
从左至右内容列表首行
- 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最常用的功能即为修改服务进程(或以控制启动关闭服务为主)
- 列举全部服务信息
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:超级守护程序,用于管理其他服务
- 服务进程管理
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常用基础快捷键
tab | ctrl + c | up | down | ctrl + z | ctrl + d |
---|---|---|---|---|---|
自动补全 | 终止当前任务 | 回看上一条指令 | 回看下一条指令 | 暂停当前指令 使用fg命令恢复 | 退出当前 载入用户 |
ctrl + l | ctrl + a | ctrl + e | ctrl + left | ctrl + right | ctrl + f |
选择新行执行 当前键入指令 | 光标移至行首 | 光标移至行尾 | 光标移至前一 分隔符后 | 光标移至后一 分隔符前 | 光标向右移动 单位字符 |
ctrl + shift + up | ctrl + shift + down | ctrl + shift + c | ctrl + shift + v | ctrl + shift + f | ctrl + b |
命令行整体向上 移动(长按/短按) | 命令行整体向下 移动(长按/短按) | 复制所选内容 | 粘贴所选内容 | 查找内容 | 光标向左移动 单位字符 |
表格中第一行快捷键为基础必备快捷键
快捷键详解:
tab
能够实现自动补全命令及路径,其主要用于自动补全路径。
自动补全路径,前提为该路径存在于键入的当前目录中。
且当遇到自动补全路径出现字符冲突时会将所有冲突的文件夹打出,
仅需键入到不出现冲突位(无重位字符)时再自动补全路径即可(对于自动补全命令同理)
(1)自动补全命令:
(2)自动补全路径:
-
ctrl + c
会终止当前任务并载入新的命令行
当运行程序出现死循环或卡死时,可通过ctrl + c
终止当前状态并重启命令行 -
up/down
为方向选择键,可以选择上一条/下一条输入指令。同时还可通过left/right
左右移动键来控制光标所在位置移动到前/后一个分隔符后/前 -
ctrl + d
表示从当前登录的用户中退出,例如当前使用WindowsPowerShell登录树莓派(linux)中的某一个用户,使用ctrl + d
来退出当前登录用户,退回到WindowsPowerShell默认指向路径或当前所在路径
值得一提的是,该快捷键与logout
命令相映射,功能上完全相同
以如下登录退出EdgeBoard为例
- 在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地址
文章内容较多,引用可能出现纰漏
如包含引用而未书名,请及时提出
作者会及时更改,共同创建完好的学习生态