Ubuntu系统目录结构

b2ce1528c5820489cd5862332c56a3de.linux_

基础命令

1 目录与文件操作

1.1 pwd

显示当前所在的目录

1.2 ls

显示当前目录下的文件

1)  ls
    直接ls,则显示当前所在目录的内容
​
2)  ls  目录名
    如:ls /home,则指定显示/home的内容
    如:ls ~    ,则指定显示/home/book的内容
​
3)  ls  选项
    或:ls  选项   目录名
    常用的选项:
        -l(long的缩写),显示目录下文件的更详细的信息(文件权限、文件最后修改时间、文件大小)
        -a(all的缩写),显示了隐藏文件
        -h(human-able的缩写),将文件大小以K(KB)、M(MB)、G(GB)来表示

1.3 cd

切换路径

cd  ~切换到当前用户的家目录
cd .  切换到当前路径
cd .. 切换到上一级路径
cd ../.. 切换到上上级路径(其中:在linux中路径分隔符为斜杠/)
cd -  切换到上一次的路径

1.4 mkdir

新建目录

1)  mkdir   目录名
        mkdir dir0   创建了dir0这个目录
 
2)  mkdir -p  父目录/子目录
        mkdir -p  dir1/dir2
        -p(parents的缩写)
        连续创建多级目录(父目录和子目录),如果父目录不存在,则需要加入-p参数。

1.5 rmdir

删除目录

rmdir  目录名
    注意:rmdir不能删除非空目录(非空目录:该目录下面有子目录或者文件)

1.6 touch

新建文件

Tips:
1)  同一目录无法创建同名的文件
2)  linux的文件名是区分大小写的,如file1和File1是不同文件。这一点跟windows不同。

1.7 mv

修改文件(目录)名、移动路径

1)  mv  旧文件名   新文件名    ====>修改文件名
    如:mv file1 filea将当前目录的文件file1改名为filea
    
2)  mv  旧目录名   新目录名    ====>修改目录名
    如:mv dir1 dira将当前目录下的目录dir1改为dira
    
3)  mv  文件名     目录名      ====>移动路径
    如:mv filea dira将当前目录下filea移动到dira子目录
    如:mv filea  ~  将当前目录下filea移动家目录
    如:mv ~/filea  ..将家目录下的fila移动到上一个路径

1.8 cp

复制文件(目录)

1)  cp  源文件名   目标文件名
    举例:
    cp File1  file2将当前目录下的文件File1拷贝成file2
​
2)  cp  源文件名   目标目录名
    举例:
    cp file2 dira/将当前目录下的文件file2拷贝到dira子目录
    
2)  cp  源目录名   目标目录名    
    举例:
    cp -r dira dirb复制dira目录下的所有内容到dirb
    其中,-r参数时递归复制
    
    cp -i file2 dira如果dira目录下面有同名的file2,加入-i参数就会
    要求你确认是否覆盖同名的文件

1.9 rm

删除文件(目录)

常用选项:
    -i(interactive(交互)的缩写),删除文件(目录)之前,要求你确认是否同意删除
    -r(recursive(递归)的缩写),递归删除指定目录下的子目录和文件
    -f(force(强制)的缩写),强制删除   
​
举例:
    rm File1       删除当前目录下的文件File1
    rm -i file2    删除文件file2,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除
    rm -r dira     删除目录dira
    rm -ir dirb    删除目录dirb,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除  
​
注意:
    删除文件(目录)前,确定该文件(目录)是否可以被删除。

1.10 cat

将文件内容显示到终端中

举例:
	cat file1          将file1的内容打印到标准输出中(默认标准标准输出指向终端)
	cat file1 file2    将file1和file2的内容串联并依次全部打印到标准输出中
    cat -n file1       显示内容并在内容前显示行号。

1.11 more

逐页显示文本文件的内容。它可以帮助你在终端中浏览长篇文本文件,以便一次显示一页内容,然后等待用户按键继续显示下一页。

基本语法:

more [选项] 文件名

常用的选项包括:

  • -d:显示每一页之前给出一个提示,提示用户按键继续显示下一页。

  • -f:强制显示文件内容,并且不尝试进行分页。

  • -l:忽略换行符,将每一行作为一整页进行显示。

  • -p:通过正则表达式搜索文件内容,并从匹配处开始显示。

  • -s:将连续多个空行压缩成一个空行进行显示。

  • -u:禁用对字母大小写的敏感性。

more file.txt				# 显示文件内容并逐页浏览
more -d file.txt			# 显示文件内容,并在每一页之前给出提示
more -l file.txt			# 忽略换行符,将每一行作为一整页进行显示
more -p "keyword" file.txt	# 搜索文件内容并从匹配处开始显示
more -u file.txt			# 禁用对字母大小写的敏感性
在 more 的浏览模式下,可以使用以下按键进行导航:

空格键:显示下一页内容。
Enter 键:显示下一行内容。
q 键:退出 more 命令。

1.12 less

less命令也是用于浏览文本文件的工具,类似于more命令,但提供了更多的功能和灵活性。

基本语法:

less [选项] 文件名

常用的选项包括:

  • -N:显示行号。

  • -i:忽略搜索时的字母大小写。

  • -F:在只显示一个屏幕内容时,自动退出。

  • -S:折行显示长行,而不是水平滚动。

  • -r:显示转义字符,例如将制表符显示为\t

  • -q:禁止显示"提示 -- 仍有更多"的信息。

  • -e:在文件末尾显示"END"。

  • -X:不清除屏幕上的内容,而是在屏幕上滚动显示文件内容。

  • -P pattern:在打开文件后,从匹配的行开始显示。

less file.txt				# 显示文件内容并逐页浏览
less -N file.txt			# 显示文件内容并显示行号
less -P "keyword" file.txt	# 搜索文件内容并从匹配处开始显示
less -i file.txt			# 忽略搜索时的字母大小写
less -S file.txt			# 折行显示长行,而不是水平滚动

less的浏览模式下,可以使用以下按键进行导航:

  • 空格键:显示下一页内容。

  • Enter 键:显示下一行内容。

  • b 键:显示上一页内容。

  • / 键:进行搜索(输入关键字后按 Enter 键)。

  • q 键:退出less命令

1.13 head

head命令用于显示文件的开头部分,默认情况下显示文件的前10行。

基本语法:

head [选项] 文件名

常用的选项包括:

  • -n NUM:显示文件的前NUM行内容。例如,head -n 5 file.txt将显示文件file.txt的前5行。

  • -c NUM:显示文件的前NUM个字节。例如,head -c 100 file.txt将显示文件file.txt的前100个字节。

  • -q:不显示文件名。当处理多个文件时,使用该选项可以禁止在输出中显示文件名。

  • -v:显示文件名。当处理多个文件时,使用该选项可以在输出中显示文件名。

  • -z:当文件以压缩格式(如gzip)存储时,使用该选项来解压缩后再显示内容。

head file.txt				# 显示文件的前10行
head -n 5 file.txt			# 显示文件的前5行
head -c 100 file.txt		# 显示文件的前100个字节
head -v file1.txt file2.txt # 显示多个文件的前10行,并在输出中显示文件名

head命令还可以与其他命令配合使用,例如使用管道符|将另一个命令的输出作为head命令的输入,从而限制输出的行数或字节数。

1.14 tail

tail命令用于显示文件的末尾部分,默认情况下显示文件的最后10行。

基本语法:

head [选项] 文件名

常用的选项包括:

  • -n NUM:显示文件的末尾NUM行内容。例如,tail -n 5 file.txt将显示文件file.txt的最后5行。

  • -c NUM:显示文件的末尾NUM个字节。例如,tail -c 100 file.txt将显示文件file.txt的最后100个字节。

  • -f:监视文件的变化,并实时显示新增的内容。当文件有新内容追加时,tail命令会自动刷新并显示新增的内容。

  • -q:不显示文件名。当处理多个文件时,使用该选项可以禁止在输出中显示文件名。

  • -v:显示文件名。当处理多个文件时,使用该选项可以在输出中显示文件名。

  • -F:类似于-f选项,但在文件被删掉或重命名后,tail命令会尝试重新打开文件。

tail file.txt				# 显示文件的最后10行
tail -n 5 file.txt			# 显示文件的最后5行
tail -c 100 file.txt		# 显示文件的最后100个字节
tail -f file.txt 			# 监视文件的变化,并实时显示新增的内容
tail -v file1.txt file2.txt # 显示多个文件的最后10行,并在输出中显示文件名

tail命令也可以与其他命令配合使用,例如使用管道符|将另一个命令的输出作为tail命令的输入,从而限制输出的行数或字节数。

1.15 ln

ln命令用于创建链接(链接文件或目录)。链接是指在文件系统中创建一个指向另一个文件或目录的引用。Linux中有两种类型的链接:硬链接(Hard Link)和符号链接(Symbolic Link)。

基本语法:

ln [选项] 目标文件 链接名称

常用的选项包括:

  • -s:创建符号链接。使用该选项可以创建一个指向目标文件或目录的符号链接。

  • -f:强制创建链接。如果链接名称已经存在,使用该选项可以强制创建链接,覆盖已存在的链接。

  • -n:在符号链接的目标文件不存在时,不进行解引用。通常,符号链接会尝试解引用目标文件,如果目标文件不存在,则链接会失效。使用该选项可以保持链接的原始状态。

ln 目标文件 链接名称			# 创建一个硬链接
ln -s 目标文件 链接名称			# 创建一个符号链接
ln -f 目标文件 链接名称			# 创建一个强制链接(如果链接名称已存在)
ln -s -n 目标文件 链接名称		# 创建一个符号链接,并保持原始状态(即使目标文件不存在)

需要注意的是,硬链接只能链接到同一文件系统中的文件,而符号链接可以链接到任何位置。符号链接是一个特殊类型的文件,它包含了指向目标文件或目录的路径信息。

1.16 tree

用于以树状结构显示文件和目录的层级关系。它可以递归地列出指定目录下的所有文件和子目录,并以树状结构展示它们之间的关系。

tree命令并不包含在内置命令中,需要apt-get install tree来安装

基本语法:

tree [选项] [目录]

如果不指定目录,默认情况下,tree命令会在当前目录下递归地显示文件和子目录的树状结构。

常用的选项包括:

  • -a:显示所有文件和目录,包括隐藏文件和目录。

  • -L level:限制显示的层级数。例如,tree -L 2将只显示目录的层级结构,最多显示到第二级子目录。

  • -d:只显示目录,不显示文件。

  • -f:显示完整的路径名称。

  • -i:不显示树状图连接线。

  • -P pattern:只显示匹配指定模式的文件和目录。

  • -I pattern:不显示匹配指定模式的文件和目录。

tree							# 显示当前目录下的文件和目录树
tree /path/to/directory			# 显示指定目录下的文件和目录树
tree -L 2 /path/to/directory	# 显示指定目录下的文件和目录树,只显示到第二级子目录
tree -d /path/to/directory		# 显示指定目录下的目录树,不显示文件
tree -P "*.txt" /path/to/directory	# 显示指定目录下的文件和目录树,只显示匹配指定模式的文件和目录

tree命令可以帮助你更好地了解文件和目录之间的结构关系,特别是在处理大量文件和目录时非常有用。

1.17 wc

用于统计文件中的字节数、字数和行数。它是一个简单而实用的命令行工具。

基本语法:

wc [选项] 文件

常用的选项包括:

  • -l:统计行数。

  • -w:统计字数。

  • -c:统计字节数。

  • -m:统计字符数。这个选项在某些系统中可能不可用。

  • -L:显示文件中最长行的长度。

wc 文件名				# 统计文件的行数、字数和字节数
wc -l 文件名			# 只统计文件的行数
wc -w 文件名			# 只统计文件的字数
wc -c 文件名			# 只统计文件的字节数
wc -L 文件名			# 显示文件中最长行的长度

wc命令非常有用,可以帮助你快速了解文件的基本信息,例如文件的大小、文本的长度等等。

1.18 od

用于以不同的进制格式(如八进制、十六进制等)显示文件的内容。它可以帮助你以可读的方式查看文件的二进制表示。

基本语法:

od [选项] 文件

常用的选项包括:

  • -a:以可打印字符的形式显示文件的内容。

  • -t type

    :指定输出的数据类型。常见的类型包括:

    • c:以字符形式显示。

    • d:以十进制形式显示。

    • o:以八进制形式显示。

    • x:以十六进制形式显示。

    • f:以浮点数形式显示。

  • -N count:限制显示的字节数。

  • -j skip:跳过指定的字节数后再开始显示。

od -o 文件名			# 以八进制形式显示文件的内容
od -x 文件名			# 以十六进制形式显示文件的内容
od -c 文件名			# 以字符形式显示文件的内容
od -a 文件名			# 以可打印字符的形式显示文件的内容
od -N 100 文件名		# 限制显示的字节数

od命令对于查看二进制文件的内容或者分析文件的结构非常有用。它可以帮助你以不同的进制形式查看文件的内容,从而更好地理解文件的内部表示。

1.19 du

用于估算文件或目录的磁盘使用情况。它可以帮助你查看文件或目录所占用的磁盘空间大小。

基本语法:

du [选项] [文件或目录]

常用的选项包括:

  • -h:以人类可读的格式显示文件大小,例如使用K、M、G等单位。

  • -s:只显示总计大小,不显示详细信息。

  • -c:显示总计大小,并在最后一行显示总计大小。

  • -k:以千字节为单位显示文件大小。

  • -m:以兆字节为单位显示文件大小。

du						 # 查看当前目录下所有文件和子目录的磁盘使用情况
du 目录路径				  # 查看指定目录的磁盘使用情况
du -h 文件或目录			 # 以人类可读的格式显示文件或目录的磁盘使用情况
du -s 文件或目录			 # 只显示总计大小,不显示详细信息
du -c 文件或目录			 # 显示总计大小,并在最后一行显示总计大小

du命令可以帮助你了解文件或目录所占用的磁盘空间大小,对于查找磁盘空间占用较大的文件或目录非常有用。

1.20 df

用于显示文件系统的磁盘空间使用情况。它可以帮助你查看磁盘分区的使用情况,包括已用空间、可用空间和文件系统的挂载点。

基本语法:

df [选项] [文件或目录]

常用的选项包括:

  • -h:以人类可读的格式显示磁盘空间大小,例如使用K、M、G等单位。

  • -T:显示文件系统类型。

  • -i:显示索引节点(inode)的使用情况。

  • -a:显示所有文件系统,包括系统保留的文件系统。

  • -l:只显示本地文件系统,不显示网络文件系统。

  • -x 文件系统类型:排除指定类型的文件系统。

df						# 显示所有文件系统的磁盘空间使用情况
df -h					# 以人类可读的格式显示磁盘空间使用情况
df 文件或目录			# 显示指定文件或目录所在的文件系统的磁盘空间使用情况
df -T					# 显示文件系统类型和磁盘空间使用情况

df命令非常有用,可以帮助你了解磁盘空间的使用情况,以及各个文件系统的挂载点和类型。

1.21 scp

在本地和远程主机之间安全传输文件的命令行工具。它基于SSH协议,确保了数据传输的安全性。 基本语法:

scp [options] [source] [destination]
  • source:是要复制的文件或目录的路径。

  • destination:是目标路径,可以是本地路径,也可以是远程主机上的路径。

常用的选项:

  • -r: 递归地复制整个目录。

  • -P: 指定SSH连接使用的端口号。

  • -C: 启用压缩,以加快传输速度。

  • -v: 详细模式,显示传输过程中的详细信息。

  • -q: 静音模式,不显示传输过程中的信息。

  • -p: 保留原文件的修改时间、访问时间和权限。

用法:

1. 将文件从本地复制到远程主机
scp localfile.txt username@remotehost:/path/to/destination
2. 从远程主机复制文件到本地
scp username@remotehost:/path/to/file localfile.txt
3. 在两个远程主机之间复制文件
scp username1@remotehost1:/path/to/file username2@remotehost2:/path/to/destination

注意事项:

  • 使用scp时,需要确保SSH服务在远程主机上运行,并且你有足够的权限进行文件传输。

  • 在使用scp命令时,可能会提示输入远程主机用户的密码,确保你知道正确的密码。

  • 为了确保数据安全,建议总是在安全的网络环境下使用scp进行文件传输。

2 终端屏幕清空

2.1 clear

刷新屏幕,保留历史命令操作记录

说明:此命令本质上只是让终端向后翻一页,
当向上滚动鼠标时,还是可以看到之前命令的操作记录

2.2 reset

重新初始化屏幕,清除历史命令操作记录

3 帮助命令

3.1 man、info、--help

查看帮助及命令选项含义

1)	man使用的最多
    ls 常用选项为-l、-a、-h
    可以通过man   ls来查看这些选项的含义。

    举例:
        man   man  查看man手册的说明
        man  ls    当没有指定使用那一页,默认使用第1页
        man 1 ls
        man 1 gcc  gcc是一个应用程序,在linux中一般使用gcc编译器来编译c/c++语言的程序
        open/write/read/close等等都是系统调用
        man 2 open   查看系统调用open的man手册说明
    注意:
        man手册的9册内容的侧重点,最好记一下。
	
2)	info 
    如info ls、 info gcc

3)	--help
    如ls --help

4 查找搜索命令

4.1 find

在指定目录及其子目录中搜索文件和目录。find命令可以根据多种条件来查找文件,例如文件名、文件类型、文件大小、修改时间等。

基本语法:

find [路径] [选项] [表达式]

其中,路径指定要搜索的目录路径,默认为当前目录。选项用于指定搜索的条件和行为,表达式用于进一步过滤搜索结果。

常用的选项和表达式包括:

  • -name:按文件名进行匹配搜索。

  • -type:按文件类型进行匹配搜索,如普通文件(f)、目录(d)、符号链接(l)等。

  • -size:按文件大小进行匹配搜索,可以使用+-来指定大于或小于某个大小。

  • -mtime:按文件的修改时间进行匹配搜索,可以使用+-来指定相对的天数。

  • -exec:对搜索结果执行指定的命令。

  • -print:打印搜索结果。

# 在当前目录及其子目录中搜索名为file.txt的文件
find . -name "file.txt"

# 在/home目录下搜索所有类型为普通文件且大小大于1MB的文件
find /home -type f -size +1M

# 在/var/log目录下搜索最近7天内修改过的以.log为扩展名的文件,并将结果输出到result.txt文件
find /var/log -name "*.log" -mtime -7 -print > result.txt

4.2 grep

使用grep命令来查找文件中符合条件的字符串

基本语法

grep [选项] 模式 [文件]

其中,模式是要搜索的文本或正则表达式模式,文件是要搜索的文件名。如果没有指定文件名,则grep会从标准输入中读取数据。

常用的选项包括:

  • -i:忽略大小写进行匹配。

  • -v:反向匹配,只输出不匹配的行。

  • -r:递归地搜索指定目录下的文件。

  • -l:只输出包含匹配文本的文件名,而不显示匹配的具体行。

  • -n:显示匹配行的行号。

  • -w:只匹配整个单词,而不是部分匹配。

  • -c:显示匹配到的行数。

dira目录的test1.txt和dirb目录的test1.txt都含有如下内容:
aaa
AAAAAA
abc
abcabcabc
cbacbacba 
match_pattern
nand->erase
	
查找字符串时希望显示如下内容:
1)所在的文件名----grep查找时默认已经显示目标文件名
2)所在的行号------使用-n选项

grep -rn "字符串"  文件名
r(recursive):递归查找
n(number):显示目标位置的行号
字符串:要查找的字符串
文件名:要查找的目标文件,如果是*则表示查找当前目录下的所有文件和目录	

举例:
	grep -n "abc" test1.txt   在test1.txt中查找字符串abc
	grep -rn "abc" *          在当前目录递归查找字符串abc
	
注意:
1)可以加入-w全字匹配。

4.3 xargs

用于从标准输入或文件中读取数据,并将其作为参数传递给其他命令

基本语法:

xargs [选项] [命令]

xargs从标准输入或文件中读取数据,并将每个数据项作为参数传递给指定的命令。如果没有指定命令,则默认使用echo命令将数据项输出到标准输出。

常用的选项包括:

  • -I 替换字符串:指定一个占位符,xargs会将每个数据项中的该占位符替换为实际的数据。

  • -n 数量:指定每次传递给命令的参数数量。

  • -d 分隔符:指定输入数据项的分隔符,默认为换行符。

  • -p 提示:在执行命令之前,给出提示,让用户确认是否执行。

  • -t 跟踪:显示实际执行的命令。

cat file.txt | xargs echo				# 从文件中读取数据,并将每行作为参数传递给echo命令
echo "file1 file2 file3" | xargs ls		# 从标准输入读取数据,并将每个数据项作为参数传递给ls命令
cat file.txt | xargs -I {} mycommand {}	# 从文件中读取数据,并将每个数据项作为参数传递给自定义命令

xargs命令可以与其他命令结合使用,特别是在需要处理大量参数的情况下非常有用。

4.4 file

用于确定文件类型。它通过检查文件的内容和特征来判断文件的类型,并输出相应的描述信息。

基本语法:

file [选项] 文件名

其中,选项用于指定命令的行为,文件名是要确定类型的文件名。

常用的选项包括:

  • -b:仅输出简短的描述信息。

  • -i:显示MIME类型。

  • -m 魔术文件列表:指定自定义的魔术文件列表,用于确定文件类型。

  • -z:对压缩文件进行解压缩并确定类型。

file myfile.txt			# 确定文件类型
file -b myfile.txt		# 仅输出简短的描述信息
file -i myfile.txt		# 显示MIME类型
举例:
file ~/.bashrc     为ASCII 编码的text类型
file ~/.vimrc      为UTF-8 Unicode 编码的text类型
file ~/Pictures/*  如图形文件JPEG/PNG/BMP格式
file ~/100ask/     为directory表明这是一个目录
file /bin/pwd      出现 ELF 64-bit LSB executable,即为ELF格式的可执行文件
file /dev/*        出现character special(字符设备文件)、 block special(块设备文件)等

file命令能够识别各种类型的文件,包括文本文件、二进制文件、压缩文件、图像文件、音频文件等。它是一个非常有用的工具,特别是在需要确定文件类型或处理不熟悉的文件时。

4.4 whichwhereis

查找命令或应用程序的所在位置

格式:which  命令名/应用程序名

在终端上执行pwd实际上是去执行了/bin/pwd
举例:
	which pwd 定位到/bin/pwd
	which gcc 定位到/usr/bin/gcc
	whereis  pwd查找到可执行程序的位置/bin/pwd和手册页的位置/usr/share/man/man1/pwd.1.gz

5 压缩与解压缩

单个文件的压缩(解压)使用gzipbzip2 多个文件和目录使用tar

5.1 gzip

gzip的常用选项: -l (list) 列出压缩文件的内容 -k (keep) 在压缩或解压时,保留输入文件。 -d (decompress) 将压缩文件进行解压缩

1)查看
	gzip  -l 压缩文件名
	比如:gzip -l pwd.1.gz

2)解压
	gzip -kd  压缩文件名
	比如:gzip -kd pwd.1.gz
	该压缩文件是以.gz结尾的单个文件
	
3)压缩
	gzip -k  源文件名
	比如:gzip -k mypwd.1
    得到了一个.gz结尾的压缩文件

Tips:

  1. 如果gzip不加任何选项,此时为压缩,压缩完该文件会生成后缀为.gz的压缩文件,

并删除原有的文件,所以说,推荐使用gzip -k 来压缩源文件。

  1. 相同的文件内容,如果文件名不同,压缩后的大小也不同。

  2. gzip只能压缩单个文件,不能压缩目录。

5.2 bzip

bzip2的常用选项: -k (keep) 在压缩或解压时,保留输入文件。 -d(decompress) 将压缩文件进行解压缩

1)压缩
	bzip2  -k  源文件名
	比如:bzip2 -k mypwd.1
	得到一个.bz2后缀的压缩文件
2)解压
	bzip2  -kd  压缩文件名
	bzip2 -kd mypwd.1.bz2	

Tips:

  1. 如果bzip2不加任何选项,此时为压缩,压缩完该文件会生成后缀为.bz2的压缩文件, 并删除原有的文件,所以说,推荐使用bzip2 -k 来压缩源文件。

  2. bzip2只能压缩单个文件,不能压缩目录。

单个文件的压缩使用gzip或bzip2,
压缩有两个参数:1)压缩时间  2)压缩比
一般情况下,小文件使用gzip来压缩,大文件使用bzip2来压缩。
mypwd.1源大小是1477字节,
	gzip压缩后mypwd.1.gz是877字节,
	bzip2压缩后mypwd.1.bz2是939字节。
myls.1源文件大小7664字节,
	gzip压缩后myls.1.gz是3144字节,
	bzip2压缩后myls.1.bz2是3070字节。	

5.3 tar

tar 常用选项 -c (create) 表示创建用来生成文件包 -x: 表示提取,从文件包中提取文件 -t 可以查看压缩的文件。 -z 使用gzip方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。 -j 使用bzip2方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。 -v (verbose)详细报告tar处理的信息 -f (file)表示文件,后面接着一个文件名。 -C <指定目录> 解压到指定目录

1. tar打包、gzip压缩

1)压缩
	tar -czvf   压缩文件名   目录名
	如:tar czvf dira.tar.gz  dira

注意:
tar  -czvf与tar  czvf是一样的效果,所以说,后面统一取消-。

2)查看
	tar tvf   压缩文件名
	如:tar tvf dira.tar.gz

3)解压
	tar xzvf 压缩文件名
	tar xzvf 压缩文件名  -C  指定目录
	如:tar xzvf dira.tar.gz   解压到当前目录
	如:tar xzvf dira.tar.gz   -C  /home/book   解压到/home/book

2. tar打包、bzip2压缩

1)压缩
	tar cjvf   压缩文件名   目录名
	如:tar cjvf dira.tar.bz2  dira
	
2)查看
	tar tvf   压缩文件名
	如:tar tvf dira.tar.bz2

3)解压
	tar xjvf 压缩文件名
	tar xjvf 压缩文件名  -C  指定目录
	如:tar xjvf dira.tar.bz2   解压到当前目录
	如:tar xjvf dira.tar.bz2 -C  /home/book  解压到/home/book

5.4 rar

用于创建和管理RAR格式的压缩文件。RAR是一种常见的压缩文件格式,通常用于将多个文件或目录打包成一个单独的压缩文件。

基本语法:

rar <命令> <选项> <压缩文件> <文件或目录>

其中,<命令>表示要执行的操作,可以是以下之一:

  • a:添加文件到压缩文件。

  • x:解压缩文件。

  • t:测试压缩文件的完整性。

  • l:列出压缩文件中的文件列表。

  • m:将多个压缩文件合并为一个压缩文件。

<选项>用于指定命令的行为和参数,具体选项取决于所执行的命令。

<压缩文件>是要创建、解压缩或操作的目标压缩文件的名称。

<文件或目录>是要添加到压缩文件中、解压缩的文件或目录的名称。

# 创建一个名为archive.rar的压缩文件,并将file1.txt和file2.txt添加到其中
rar a archive.rar file1.txt file2.txt
​
rar x archive.rar       # 解压缩archive.rar文件到当前目录
rar t archive.rar       # 测试archive.rar文件的完整性
rar l archive.rar       # 列出archive.rar文件中的文件列表

rar命令还有其他更多的选项和功能,可以根据具体的需求进行定制化的操作。请注意,rar命令在某些Linux发行版中可能需要额外安装。

5.5 zip

用于创建和管理ZIP格式的压缩文件。ZIP是一种常见的压缩文件格式,它可以将多个文件或目录打包成一个单独的压缩文件。

基本语法:

zip [选项] <压缩文件> <文件或目录>

其中,选项用于指定命令的行为和参数。

<压缩文件>是要创建的目标压缩文件的名称。

<文件或目录>是要添加到压缩文件中的文件或目录的名称。

# 创建一个名为archive.zip的压缩文件,并将file1.txt和file2.txt添加到其中
zip archive.zip file1.txt file2.txt
​
zip -r archive.zip mydir        # 递归地将目录mydir及其所有内容添加到archive.zip中
unzip -l archive.zip            # 列出压缩文件archive.zip中的文件列表
unzip archive.zip               # 解压缩archive.zip文件到当前目录

zip命令还支持其他选项,例如设置密码、排除特定文件、注释压缩文件等。你可以使用man zip命令查看完整的命令文档以获取更多详细信息。

6 文件属性及权限

用 root 用户登录 linux 后,执行 ls -al 命令显示当前目录下的所有文件及文件夹包括隐藏的.和..等的详 细信息。

文件属性示意图:

2b6bbdb776de66135255a7e4a6e50

第一个字符代表这个文件是:目录、文件或链接文件等。

d -----------目录

 - -------------文件

 l ------------链接文件

b ------------设备文件里的可供存储的接口设备

c -------------设备文件里的串行端口设备,如鼠标、键盘等

文件属性后面的 9 个字符以 3 个位一组,均为rwx的组合。其中 r代表可读,w代表可写,x 代表可执 行。注意 3 个权限的位置不会改变,如果没有权限,就会出现减号(-)。

  1. 第一组 为 “文件所有者的权限”

  2. 第二组 为 “用户组的权限”

  3. 第三组 为 “其他非本用户组的权限”

连接数:表示有多少文件名连接到此节点

文件所有者:表示这个文件的“所有者的账号”

文件所属用户组

文件大小:表示这个文件的大小,默认单位是 B

文件最后被修改的时间:这个文件的创建文件日期或者是最近的修改日期。

文件名:对应文件的文件名

如果文件名之前多了一个 “.” ,则说明这个文件为“隐藏文件”,隐藏文件的 list 列表时,加-a 参数可以显 示。ls -al

6.1 chgrp

改变文件所属用户组

chgrp 【-R】 dirname/filename ...

-R : 进行递归的持续更改,也连同子目录下的所有文件、目录都更新成为这个用户组之意。常常用 在更改某一目录内所有文件的情况。

示例:

chgrp hy install.log

将 install.log 文件的用户组改为 hy 用户组。注意 hy 用户组必须要在/etc/group 文件内存在才可 以。

6.2 chown

改变文件所有者

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录

-R:也是递归子目录。

示例:

chown bin install.log
chown root:root install.log

改变文件所有者和用户组的这两个命令的应用场景:复制文件,由于复制行为会复制执行者的属性和权 限,因此复制后需要改变文件所属用户、用户组等。

6.3 chmod

改变文件的权限

文件权限有两种设置方法:数字类型改变权限和符号改变权限。

  • r : 4

  • w: 2

  • x: 1

每种身份各自的三个权限分数是需要累加的。

例如:权限为(-rwxrwx---)分数分表是:

  • owner = rwx = 4+ 2 + 1 = 7

  • group = rwx = 4+ 2+ 1 = 7

  • others = --- = 0+0 +0 = 0

所以在设置权限时,该文件的权限数字就是 770.

  1. 数字类型改变文件权限方式

chmod [-R] xyz 文件或目录
  • xyz : 代表权限数字。如 770.

  • -R : 进行递归的持续更改。

  1. 符号类型改变文件权限方式

使用 ugo 三个字母代表 user、group、others 3 中身份。此外 a代表 all,即所有身份。

示例:

chmod u=rwx,go=rx 文件或目录

也可以增加或去除某种权限。

chmod a+w 文件或目录
chmod a-x 文件或目录

7 网络管理

7.1 ifconfig

查看网络、设置 IP

-a : 显示所有网卡接口 up: 激活网卡接口 down: 关闭网卡接口 address: xxx.xxx.xxx.xxx,IP地址

给eth0配置临时IP:

sudo ifconfig eth0 IP

7.2 ping

用于测试与另一个网络主机之间的连通性。它发送ICMP(Internet Control Message Protocol)回显请求到目标主机,并等待目标主机返回回显应答。ping命令通常用于检查网络连接是否正常以及测量网络延迟。

以下是ping命令的基本语法:

ping [选项] 目标主机

常用的选项包括:

  • -c count:指定发送回显请求的次数。

  • -i interval:指定发送回显请求之间的时间间隔。

  • -s packetsize:指定发送回显请求时的数据包大小。

  • -t ttl:指定回显请求的生存时间(TTL)。

  • -w deadline:指定等待回显应答的超时时间。

ping example.com				# 发送回显请求到目标主机
ping -c 5 example.com			# 指定发送回显请求的次数
ping -i 2 example.com			# 指定发送回显请求之间的时间间隔
ping -s 100 example.com			# 指定回显请求的数据包大小

请注意,执行ping命令通常需要具有足够的网络权限。在某些情况下,可能需要使用sudo命令来以管理员权限执行ping命令。

7.3 netstat

显示网络连接、路由表和网络接口等网络相关信息。它可以帮助你监视网络活动、诊断网络问题以及了解网络连接的状态。

以下是netstat命令的基本语法:

netstat [选项]

常用的选项包括:

  • -a:显示所有的网络连接,包括监听和非监听状态。

  • -t:显示TCP协议的网络连接。

  • -u:显示UDP协议的网络连接。

  • -n:以数字形式显示IP地址和端口号,而不进行主机和服务的名称解析。

  • -p:显示与连接关联的进程ID(PID)和程序名称。

  • -r:显示路由表信息。

  • -i:显示网络接口信息。

netstat -a					# 显示所有的网络连接
netstat -t					# 显示TCP协议的网络连接
netstat -u					# 显示UDP协议的网络连接
netstat -n					# 以数字形式显示IP地址和端口号
netstat -p					# 显示与连接关联的进程ID(PID)和程序名称
netstat -r					# 显示路由表信息
netstat -i					# 显示网络接口信息

请注意,执行netstat命令通常需要具有足够的网络权限。在某些情况下,可能需要使用sudo命令来以管理员权限执行netstat命令。

7.4 nslookup

用于查询DNS(Domain Name System)服务器,以获取与特定主机名或IP地址相关联的信息。它可以帮助你查找主机名的IP地址、执行反向DNS查找(根据IP地址查找主机名)以及执行其他与DNS相关的查询。

以下是nslookup命令的基本语法:

nslookup [选项] 主机名或IP地址 [DNS服务器]

常用的选项包括:

  • -query=类型:指定查询的类型,如A记录、CNAME记录、MX记录等,默认为A记录。

  • -timeout=秒数:指定查询的超时时间。

  • -debug:显示详细的调试信息。

  • -sil[ent]:禁止显示命令的提示信息。

nslookup example.com				# 查询主机名的IP地址
nslookup 192.0.2.1					# 查询IP地址的主机名
nslookup -query=mx example.com		# 指定查询的记录类型
nslookup example.com 8.8.8.8		# 指定自定义的DNS服务器

请注意,执行nslookup命令通常需要具有足够的网络权限。在某些情况下,可能需要使用sudo命令来以管理员权限执行nslookup命令。

7.5 finger

查看有关用户的信息,例如登录名、登录时间、用户主目录和登录终端等。它可以帮助你了解当前登录系统的用户信息以及其他用户的基本信息。

以下是finger命令的基本语法:

finger [选项] [用户名@主机名]

常用的选项包括:

  • -s:显示用户的详细信息,包括用户的全名、电话号码和办公室位置等。

  • -l:以长格式显示用户信息,包括用户的登录名、终端、登录时间、用户主目录和Shell等。

  • -m:显示用户的邮件信息,包括邮件的主题、发件人和接收时间等。

  • -p:显示用户的计划任务信息,包括用户设置的计划任务。

  • -w:显示当前登录系统的用户信息。

finger -w					# 显示当前登录系统的用户信息
finger -s username			# 显示特定用户的详细信息
finger -l username			# 显示特定用户的登录信息
finger -m username			# 显示特定用户的邮件信息
finger -p username			# 显示特定用户的计划任务信息

请注意,执行finger命令通常需要具有足够的权限。在某些情况下,可能需要使用sudo命令来以管理员权限执行finger命令。

7.6 routeDNS

7.6.1 检查网络

如果执行以下命令不成功,表示路由没设置好:

$ ping 8.8.8.8
connect: Network is unreachable

如果ping 8.8.8.8成功,但是ping www.baidu.com不成功,则是 DNS 没设置好:

$ ping www.baidu.com
ping: unknown host www.baidu.com

DNS 的设置比较简单,8.8.8.8 是好记好用的 DNS 服务器,修改 Ubuntu 中的/etc/resolv.conf 文件, 内容如下:

nameserver 8.8.8.8

假设某主机上的网络接口配置和路由表如下:

$ ifconfig
eth0 	Link encap:Ethernet HWaddr 00:0C:29:C2:8D:7E
        inet addr:192.168.10.223 Bcast:192.168.10.255 Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100
        RX bytes:0 (0.0 b) TX bytes:420 (420.0 b)
        Interrupt:10 Base address:0x10a0
eth1 	Link encap:Ethernet HWaddr 00:0C:29:C2:8D:88
        inet addr:192.168.56.136 Bcast:192.168.56.255 Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
        RX packets:603 errors:0 dropped:0 overruns:0 frame:0
        TX packets:110 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100
        RX bytes:55551 (54.2 Kb) TX bytes:7601 (7.4 Kb)
        Interrupt:9 Base address:0x10c0
lo 		Link encap:Local Loopback
        inet addr:127.0.0.1 Mask:255.0.0.0
        UP LOOPBACK RUNNING MTU:16436 Metric:1
        RX packets:37 errors:0 dropped:0 overruns:0 frame:0
        TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0
        RX bytes:3020 (2.9 Kb) TX bytes:3020 (2.9 Kb)
$ route
Kernel IP routing table
Destination 	Gateway 	 Genmask 		Flags Metric Ref   Use  Iface
192.168.10.0 	* 			 255.255.255.0 	U 	  0 	 0 	   0    eth0
192.168.56.0 	* 			 255.255.255.0 	U 	  0 	 0 	   0    eth1
127.0.0.0 		* 			 255.0.0.0 		U 	  0 	 0 	   0    lo
default 		192.168.10.1  0.0.0.0 		UG 	  0 	 0 	   0    eth0

route 命令输出信息中各项的含义如下:

Destination

目标网段或者主机

Gateway

网关地址,”*” 表示目标是本主机所属的网络,不需要路由

Genmask

网络掩码

Flags

标记。一些可能的标记如下

U - 路由是活动的

H - 目标是一个主机

G - 路由指向网关

R - 恢复动态路由产生的表项

D - 由路由的后台程序动态地安装

M - 由路由的后台程序修改

! - 拒绝路由

Metric

路由距离,到达指定网络所需的中转数

Ref

路由项引用次数

Use

此路由项被路由软件查找的次数

Iface

该路由表项对应的输出接口

在上面的例子中,这台主机有两个网络接口: ① 一个网络接口连到 192.168.10.0/24 网络 ② 另一个网络接口连到 192.168.56.0/24 网络。

如果要发送的数据包的目的地址是 192.168.56.3,跟第一行的子网掩码做与运算得到 192.168.56.0, 与第一行的目的网络地址不符,再跟第二行的子网掩码做与运算得到 192.168.56.0,正是第二行的目的网 络地址,因此从 eth1 接口发送出去,由于 192.168.56.0/24 正是与 eth1 接口直接相连的网络,因此可以 直接发到目的主机,不需要经路由器转发。

如果要发送的数据包的目的地址是 202.10.1.2,跟前三行路由表条目都不匹配,那么就要按缺省路由 条目,从 eth0 接口发出去,首先发往 192.168.10.1 路由器,再让路由器根据它的路由表决定下一跳地址。

7.6.2 route管理路由

1)添加路由:首先得确定网关 IP,假设为 192.168.1.1

$ sudo route add default gw 192.168.1.1
$ ping 8.8.8.8 // 验证
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=19.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=19.8 ms

2)删除路由:

$ sudo route del default gw 192.168.1.1

7.7 防火墙

7.7.1 firewalld

firewalld 是 Red Hat 系统中使用的动态防火墙管理工具,它提供了更高级的防火墙管理功能。

  1. 查看防火墙状态:

firewall-cmd --state
  1. 安装firewalld

apt-get install firewalld
  1. 查看防火墙规则:

firewall-cmd --list-all
  1. 启动、停止和重启防火墙服务:

systemctl start firewalld    # 启动防火墙服务
systemctl stop firewalld     # 停止防火墙服务
systemctl restart firewalld  # 重启防火墙服务
systemctl status firewalld	 # 查看防火墙状态
  1. 添加和删除规则:

firewall-cmd --zone=<zone> --add-service=<service> --permanent  # 添加服务规则
firewall-cmd --zone=<zone> --remove-service=<service> --permanent  # 删除服务规则
firewall-cmd --zone=<zone> --add-port=<port>/tcp --permanent  # 添加端口规则
firewall-cmd --zone=<zone> --remove-port=<port>/tcp --permanent  # 删除端口规则

上述命令中,<zone> 是防火墙区域,可以是 publicinternalexternal 等;<service> 是要允许或禁止的服务名称;<port> 是要允许或禁止的端口号。

添加或删除规则时,使用 --permanent 选项将规则永久保存,否则规则只会在运行时生效。

  1. 重新加载防火墙规则:

firewall-cmd --reload
  1. 端口转发:

    1. 添加端口转发规则

    firewall-cmd --zone=public --add-forward-port=port=<源端口>:proto=<协议>:toaddr=<目标地址>:toport=<目标端口>

    上述命令将在 public 区域中添加一个端口转发规则。你需要将 <源端口> 替换为源端口号,<协议> 替换为要转发的协议(如 tcpudp),<目标端口> 替换为目标端口号,<目标地址> 替换为目标地址。

    例如,要将来自外部网络的 TCP 流量转发到内部服务器的 TCP 端口 8080,可以使用以下命令:

    firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=8080:toaddr=<内部服务器IP>

    要是永久转发,则添加--permanent 选项即可

    firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=8080:toaddr=<内部服务器IP>
    1. 查看当前的端口转发规则

    firewall-cmd --zone=public --list-forward-ports

    上述命令将显示当前 public 区域中的端口转发规则列表。

    1. 删除端口转发规则:

    firewall-cmd --zone=public --remove-forward-port=port=<源端口>:proto=<协议>:toport=<目标端口>:toaddr=<目标地址>

    上述命令将从 public 区域中删除匹配的端口转发规则。

请确保在进行端口转发时,防火墙已启用并且适当配置了源和目标的网络接口。此外,还要注意目标地址必须是有效的网络地址

7.7.2 ufw

UFW全称为Uncomplicated Firewall,是Ubuntu系统上配置iptables防火墙的工具,底层还是调用iptables来实现

  1. 安装:

sudo apt-get install ufw
  1. 启动、停止和重启防火墙服务:

sudo ufw enable				# 开启
sudo ufw default deny		# 自启
sudo ufw disable			# 关闭
  1. 查看防火墙状态

sudo ufw status

开启了为active,没开启为inactive

  1. 允许和拒绝流量访问

sudo ufw allow <port>              # 允许指定端口的流量
sudo ufw allow <port>/<protocol>   # 允许指定端口和协议的流量
sudo ufw deny <port>			   # 拒绝指定端口的流量
  1. 删除规则

sudo ufw delete <rule_number>  # 删除指定编号的规则
  1. 限制特定 IP 地址的访问

sudo ufw allow from <IP>      # 允许来自指定 IP 地址的流量
sudo ufw deny from <IP>       # 拒绝来自指定 IP 地址的流量
  1. 重置所有规则

sudo ufw reset
  1. 配置默认策略

sudo ufw default allow    # 设置默认策略为允许所有流量
sudo ufw default deny     # 设置默认策略为拒绝所有流量
  1. 重载防火墙规则

sudo ufw reload

7.8 网络连接(NetworkManager)

  1. 查看NetworkManager状态:

nmcli general status

上述命令将显示 NetworkManager 的运行状态,包括是否已启用和活动的连接。

  1. 查看可用的网络连接:

nmcli connection show
  1. 连接和断开网络:

nmcli connection up <connection_name>		# 连接到指定名称的网络连接
nmcli connection down <connection_name>		# 断开网络连接
  1. 创建一个新的网络连接:

nmcli connection add type <connection_type> con-name <connection_name> ifname <interface_name>

上述命令将创建一个新的网络连接。将 <connection_type> 替换为连接类型(如 ethernet、wifi、vpn 等),<connection_name> 替换为连接的名称,<interface_name> 替换为网络接口的名称。

  1. 删除一个网络连接:

nmcli connection delete <connection_name>

使用上述命令可以删除指定名称的网络连接。将 <connection_name> 替换为你要删除的网络连接的名称。

  1. 查看网络接口的状态

nmcli device status
  1. 开启/关闭WIFI

nmcli r wifi on/off
  1. 查看网络设备列表

sudo nmcli dev
  1. 扫描可用的WIFI网络

nmcli device wifi rescan
nmcli device wifi list
  1. 连接到 Wi-Fi 网络

nmcli device wifi connect "SSID" password "PASSWD"

多个WiFi硬件时,可以用 ifname参数指定要操作的WiFi设备,例如wlan1

nmcli device wifi connect "SSID" password "PASSWD" ifname wlan1

8 进程管理

8.1 who

显示当前登录到系统的用户信息。它会列出用户名、登录时间、登录来源(终端或远程连接)等相关信息。

基本语法:

who [选项]

常用的选项包括:

  • -a:显示所有登录的用户信息,包括系统进程。

  • -b:显示上次系统启动的时间。

  • -d:显示空闲时间,即从最后一次输入活动到现在的时间间隔。

  • -H:显示列标题。

  • -l:显示登录过程的详细信息,包括登录名、终端、登录时间、远程主机等。

  • -m:显示当前登录用户的信息,忽略系统进程。

  • -q:显示当前登录用户的数量。

  • -r:显示当前运行级别。

  • -s:显示当前系统的状态信息。

  • -t:按登录时间的先后顺序显示用户信息。

  • -u:显示当前登录用户的用户名和终端。

who				# 显示当前登录到系统的用户信息
who -q			# 显示当前登录用户数量

8.2 whoami

显示当前有效的用户名

8.3 users

显示当前登录系统的所有用户的名字

8.4 uname

打印系统信息

  • -a :打印系统所有信息

8.4 ps

查看当前正在运行的进程信息。它提供了一种查看系统中运行进程的方式,可以显示进程的PID(进程ID)、状态、运行时间、CPU利用率等信息。

基本语法:

ps [options]

以下是一些常用选项:

  • -e:显示所有进程,而不仅仅是当前用户的进程。

  • -f:显示完整的进程信息,包括进程的UID、PID、PPID、C(CPU利用率)、STIME(启动时间)、TTY(终端)、TIME(运行时间)和CMD(命令)。

  • -l:显示长格式的进程信息,包括进程的UID、PID、PPID、PRI(优先级)、NI(Nice值)、RSS(物理内存使用量)、SZ(虚拟内存大小)等。

  • -u:显示与当前用户相关的进程信息,包括进程的用户、PID、%CPU(CPU利用率)、%MEM(内存利用率)、VSZ(虚拟内存大小)、RSS(物理内存使用量)等。

  • -x:显示没有控制终端的进程。

  • -H:显示进程树,以树状结构展示进程之间的关系。

ps -a			# 显示所有终端或用户的进程
ps -u			# 显示详细的进程信息
ps -x			# 显示没有控制终端的进程
ps -aux			# 显示所有用户的详细进程信息,包括没有控制终端的进程
按"q"退出

除了上述选项,ps命令还支持其他一些选项,如根据进程状态过滤、按CPU利用率排序等。

8.5 jobs

显示当前Shell会话中的作业(jobs)。作业是在Shell中运行的进程或命令,它们可以在前台或后台运行。

以下是一些常用选项:

  • -l:显示作业的详细信息,包括作业号、状态、进程ID和命令。

  • -p:仅显示作业的进程ID。

  • -r:显示正在运行的作业。

  • -s:显示被停止的作业。

  • -n:显示最近的作业。

  • -x:显示所有作业,包括已完成的作业。

jobs			# 显示当前Shell会话中的作业
示例输出:
[1]+  Running                 command1 &
[2]-  Stopped                 command2
输出结果中的每一行表示一个作业,包含作业号、状态和命令。+表示前台作业,-表示后台作业。

jobs -l			# 显示作业的详细信息
示例输出:
[1]+ 1234   Running                 command1 &
[2]- 5678   Stopped                 command2
输出结果中的每一行表示一个作业,包含作业号、进程ID和命令。

除了上述选项,jobs命令还支持其他一些选项,如根据作业号操作作业、将作业移到前台或后台等。

请注意,jobs命令仅显示当前Shell会话中的作业信息,不包括其他会话或终端中的作业。

8.6 fg

用于将作业(job)从后台切换到前台运行。作业是在Shell中运行的进程或命令。当一个作业在后台运行时,可以使用fg命令将其切换到前台,使其成为当前活动的作业。

fg命令的基本语法如下:

fg [作业号]

作业号是作业在当前Shell会话中的标识符。如果不指定作业号,则fg命令会将最近的后台作业切换到前台。

fg			# 将最近的后台作业切换到前台
fg 1		# 将特定作业号的后台作业切换到前台

如果有多个后台作业,你可以使用jobs命令查看作业列表及其对应的作业号。

当使用fg命令将作业切换到前台时,该作业将接收键盘输入,并将输出显示在终端上。如果作业在切换到前台之前被暂停(stopped),它将继续运行。

8.7 bg

用于将作业(job)从暂停状态切换到后台继续运行。作业是在Shell中运行的进程或命令。当一个作业被暂停(使用Ctrl+Z)后,可以使用bg命令将其切换到后台,使其继续执行。

bg命令的基本语法如下:

bg [作业号]

作业号是作业在当前Shell会话中的标识符。如果不指定作业号,则bg命令会将最近的暂停作业切换到后台。

bg			# 将最近的暂停作业切换到后台
bg 1		# 将指定作业号的作业切换到后台

请注意,bg命令只对暂停的作业有效。如果作业已经在后台运行或已经在前台运行,bg命令不会产生任何效果。

8.8 kill

用于向进程发送信号以终止或控制进程的执行。通过指定不同的信号,可以实现不同的操作,如终止进程、重新加载配置等。

kill命令的基本语法如下:

kill [选项] <进程ID或作业号>

以下是一些常用的选项:

  • -s <信号>:指定要发送的信号。如果不指定信号,默认为SIGTERM信号(终止进程)。

  • -l:列出所有可用的信号。

  • -<信号>:使用信号的缩写形式代替-s选项,例如-9表示SIGKILL信号(强制终止进程)。

kill 1234						# 终止进程
kill -s SIGTERM 1234			# 使用指定的信号终止进程
kill -l							# 列出所有可用的信号
kill -9 1234					# 强制终止进程

请注意,只有具有足够权限的用户才能使用kill命令向其他进程发送信号。通常,只有进程的所有者或root用户可以终止其他进程。

8.9 top

是一个在Linux和Unix系统中常用的实时系统监控工具,用于显示系统的整体性能情况以及运行中的进程信息。

当你在终端中运行top命令时,它会以交互式的方式显示一个实时更新的系统摘要。在摘要中,你可以看到系统的负载情况、CPU使用率、内存使用情况、进程列表等信息。

以下是一些常用的top命令交互操作:

  • 使用键来上下滚动进程列表。

  • 使用k键来终止选中的进程。

  • 使用q键退出top命令。

以下是一些常用的选项:

  • -d <秒数>:指定刷新间隔,即更新显示的时间间隔。

  • -n <次数>:指定显示的次数后自动退出top命令。

  • -p <进程ID列表>:只显示指定进程ID的信息。

  • -u <用户名>:只显示指定用户名的进程信息。

  • -s <字段>:按指定字段对进程进行排序。常见的字段包括%CPU(CPU使用率)、%MEM(内存使用率)等。

  • -o <字段>:指定默认排序字段。

  • -b:以批处理模式运行top,将结果输出到文件中。

  • -i:忽略闲置和僵尸进程。

  • -c:显示完整的命令行参数。

top -d 3								# 指定刷新间隔为3秒
top -p 1234								# 显示特定进程的信息
top -o %MEM								# 按内存使用率排序
top -b -n 1 > top_output.txt			# 以批处理模式运行,并将结果输出到文件

8.10 free

显示系统内存使用情况的命令。它可以提供关于物理内存(RAM)和交换空间(swap)的详细信息。

当你在终端中运行free命令时,它会显示以下信息:

  • total:总的物理内存和交换空间大小。

  • used:已使用的物理内存和交换空间大小。

  • free:空闲的物理内存和交换空间大小。

  • shared:被多个进程共享的物理内存大小。

  • buffers:用于缓存文件的物理内存大小。

  • cached:用于缓存文件系统的物理内存大小。

以下是free命令的一些常用选项:

  • -h:以人类可读的格式显示内存大小。

  • -t:显示总的行汇总信息。

  • -s <秒数>:指定刷新间隔,以实时更新内存使用情况。

  • -b:以字节为单位显示内存大小。

  • -k:以千字节为单位显示内存大小。

  • -m:以兆字节为单位显示内存大小。

  • -g:以吉字节为单位显示内存大小。

free						# 显示内存使用情况
free -h						# 以人类可读的格式显示内存大小
free -s 3					# 指定刷新间隔为3秒,实时更新内存使用情况

9 关机与重启

9.1 reboot

重启计算机

9.2 halt

关闭计算机

停止系统并进入关机状态,但不会断开电源。执行该命令后,系统将停止运行,所有进程将被终止,文件系统将被卸载,但电源仍然保持打开状态。

9.3 shutdown

关闭计算机

  • -t :倒计时关机时间

安全地关闭系统,并根据指定的选项执行相应的操作。可以使用不同的选项来控制关闭行为,如延迟关闭时间、发送通知等。

9.4 poweroff

关闭计算机

完全关闭系统,并将计算机的电源断开。执行该命令后,系统将停止运行,所有进程将被终止,文件系统将被卸载,并最终关闭电源

10 时间与日期

10.1 date

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

10.2 hwclock

显示或设置硬件时钟(RTC)的日期和时间。硬件时钟是一种独立于操作系统的时钟,用于在系统重新启动后保持时间的准确性。

10.3 cal

显示日历,包括当前月份的日历或指定日期的日历。

10.4 time

测量命令执行的时间。

10.5 ntpdate

使用网络时间协议(NTP)从远程时间服务器同步系统时间。

10.6 timedatectl

用于查看和配置系统的日期、时间和时区设置。

11 用户管理

11.1 创建用户:useradd

useradd username

这将创建一个新用户,其中username是你要创建的用户名

11.2 设置用户组:usermod

usermod -g groupname username

这将将用户username添加到用户组groupname中。

11.3 设置密码:passwd

passwd username

这将提示你设置用户username的密码。

11.4 切换用户:su

su username

这将切换到用户username的身份。如果不指定用户名,则默认切换到root用户。

11.5 使用root用户权限:sudo

sudo command

这将以root用户的权限执行command命令。需要输入当前用户的密码进行身份验证。

11.6 删除用户:userdel

userdel username

这将删除用户username及其相关的文件和目录。

12 其它命令

12.1 alias

用于创建或显示命令别名。别名是用于将一个命令或命令序列与一个自定义的名称相关联的方式。当你使用别名时,实际执行的是与别名相关联的命令或命令序列。

alias命令的基本语法如下:

alias [别名[='命令']]
  • 如果只输入alias命令,它将显示当前定义的所有别名及其对应的命令。

  • 如果提供了别名参数但没有提供='命令'部分,它将显示该别名的当前定义。

  • 如果提供了别名='命令'两个参数,它将创建一个新的别名,将别名命令相关联。

alias							# 显示当前定义的所有别名
alias ll						# 显示特定别名的定义
alias l='ls -l'					# 创建一个新的别名
上述命令将创建一个名为l的别名,将其与ls -l命令相关联。因此,当你输入l时,实际上执行的是ls -l命令

别名只在当前会话中有效,如果你希望在每次登录时都自动加载别名,可以将其添加到你的shell配置文件(如.bashrc.bash_profile)中。

请注意,别名只对命令行有效,不适用于脚本或其他执行环境。

12.2 echo

echo是一个在命令行中常用的命令,用于将文本或变量的值输出到标准输出(通常是终端窗口)。它是一种用于显示简单文本的基本工具。

在最简单的形式下,echo命令后面跟着要输出的文本,例如:

echo Hello, world!

echo命令还可以用于输出变量的值。在命令行中,可以使用$符号引用变量。例如,如果有一个名为name的变量,可以通过$name来引用它的值。下面是一个示例:

name="John"
echo My name is $name

上述命令将输出 "My name is John"。

echo命令还支持一些特殊的转义序列,用于输出特殊字符。例如,\n表示换行符,\t表示制表符等。下面是一个示例:

echo -e "Line 1\nLine 2\tTabbed"

上述命令使用了-e选项来启用转义序列,输出两行文本和一个制表符。

12.3 umask

用于设置文件和目录的默认权限掩码的命令

默认权限掩码决定了在创建新文件和目录时所屏蔽的权限位。简单来说,umask命令用于控制新创建文件和目录的默认权限。

umask命令的语法如下:

umask [模式]

模式可以使用数字或符号表示。数字模式是一个三位数,每一位表示一个权限组(所有者、群组、其他用户),每位的值是一个0到7之间的数字。符号模式使用rwx-表示权限,类似于chmod命令。

例如:要将默认权限掩码设置为禁用其他用户的写权限,可以使用以下命令:

umask 022

上述命令中的022表示将其他用户的写权限屏蔽,因此新创建的文件和目录将具有权限644(所有者可读写,群组和其他用户只可读取)。

注意:系统会自动屏蔽新创建文件的所有写权限,所以掩码加权限码不等于777,而是等于666

要查看当前的默认权限掩码,只需运行umask命令,它将显示当前的掩码值。

请注意,umask命令设置的默认权限掩码是基于当前用户的默认权限。它不会影响已经存在的文件和目录的权限。

默认情况下,大多数Linux发行版将默认权限掩码设置为022,这意味着新创建的文件具有权限644,新创建的目录具有权限755

你可以在启动脚本(如.bashrc.bash_profile)中设置umask命令,以便在每次登录时自动应用新的默认权限掩码。

如何设置PATH

以在PATH中添加/home/zb666目录为例

永久设置方法1

修改/etc/environment,比如:sudo gedit /etc/environment ,然后添加下行红包部分:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/zb666"

然后重启系统或重新登录。

永久设置方法2

修改~/.bashrc,在行尾添加或修改:

vim ~/.bashrc
export PATH=$PATH:/home/zb666

然后重启系统或重新登录。

临时设置

在终端执行以下命令,这只对当前终端有效:

export PATH=$PATH:/home/zb666