Linux常用命令详解
作为一枚程序员,熟练掌握一些常见的linux命令是很有必要的,掌握这些命令能帮助我们更好地管理Linux系统,提高工作效率,并有效地解决各种问题,为了方便自己后续查阅以及帮助不熟悉linux命令的小伙伴,特意花费了大量时间整理了这篇两万字的超长文博客,大家可以先收藏起来,然后细读一两遍留个印象,后续有用到不熟悉的命令的时候再回来查阅这篇文章(当然英文厉害的也可以直接查看帮助手册,只不过帮助手册干扰项太多,也没有突出重点)。
快捷操作
- 搜寻目录的时候,按tab键自动补全
- 使用上下箭头,切换最近执行的命令
基本用法
# 查看某个命令详细的使用方法,man是手册manual单词的缩写,退出命令详情面板输入q字母
man ls
文件目录切换、路径、查看、编辑
cd
命令用于切换当前工作目录
其语法格式如下:
cd [目录名]
其中,目录名
表示需要切换的目录名称。常见的使用方式如下:
# 目录说明
/ # 代表系统根目录
~ # 代表home主目录
- # 代表上一次切换的目录
./ # 代表当前目录
.. # 代表父级目录
../.. # 代表父级的父级目录
- 切换到当前用户的主目录:
cd / #切换到系统根目录
cd ~
- 切换到上一级目录:
cd ..
- 切换到绝对路径下的目录:
cd /path/to/directory
- 切换到相对路径下的目录:
cd directory
注意事项:cd
命令需要有相应的权限才能切换到指定目录。如果用户没有权限进入指定目录,那么可能会收到”Permission denied”的错误信息。另外,如果目录名包含空格等特殊字符,需要使用单引号或双引号将目录名括起来。
ls
命令它用于列出目录下的文件和子目录的信息
下面对 ls
命令的常用参数及其含义进行介绍。
常用参数
-
-l
:以长格式显示文件信息,包括文件的权限、所有者、所属组、大小、修改时间等等。 -
-a
:显示所有文件及目录,包括隐藏文件和目录。以.
开头的文件和目录都被认为是隐藏文件和目录。 -
-h
:以易读方式显示文件大小,比如ls -lh
。 -
-r
:将文件按照相反的顺序排列,即倒序排列。 -
-t
:将文件按照修改时间的先后顺序排列,最近修改的文件排在最前面。 -
-d
:显示目录自身的信息,而不是目录下的文件。例如ls -ld /etc
。
示例
- 显示目录下的所有文件和子目录信息:
ls
。 - 以长格式列出目录下的所有文件和子目录的详细信息:
ls -l
。 - 列出目录下的所有文件和子目录,包括隐藏文件和目录:
ls -a
。 - 列出所有目录中最新修改的文件:
ls -lt
。 - 以易读方式显示目录下文件的大小:
ls -lh
。 - 列出/root目录的详细信息:
ls -ld /root
。
注意事项:ls
命令既能用来查看文件信息,也可以用来检查目录信息。如果你想要查看一个目录下的所有文件和子目录的详细信息,直接在该目录下执行 ls -l
命令即可。如果你想要查看一个文件的详细信息,需要在该文件所在的目录下执行 ls -l 文件名
命令。
pwd
命令用于显示当前工作目录的绝对路径
其语法格式如下:
pwd [选项]
常见的选项有:
-
-L
: 显示符号链接的绝对路径。 -
-P
: 显示实际路径,而非符号链接路径。
常见的使用方式如下:
- 显示当前工作目录的绝对路径:
pwd
- 显示符号链接的绝对路径:
pwd -L
- 显示实际路径:
pwd -P
注意事项:pwd
命令一般用于查看当前工作目录的路径,不需要其他特殊的权限。如果当前目录被删除或者权限发生变化,那么pwd
命令可能会显示错误的结果。
vim
是一个非常强大的文本编辑器,常用于Linux系统下编辑文本文件
下面是vim
命令的详细用法:
- 打开文件:
vim
例如,要打开名为file.txt
的文本文件,可以输入以下命令:
vim file.txt
- 命令模式:
vim
有三个模式:命令模式、插入模式和视觉模式。当你打开一个文本文件时,首先进入的是命令模式。在命令模式下,可以执行以下操作:
- 移动光标:h(左)、j(下)、k(上)、l(右)。
- 切换到插入模式:i(当前光标处插入)、a(当前光标后插入)、o(当前行下方插入)、O(当前行上方插入)、cw(替换从当前光标位置开始到单词结尾的内容)、cc(替换整行内容)。
- 删除:x(删除当前字符)、dw(删除当前光标所在的单词)、dd(删除整行)、D(从当前位置删除到行尾)。
- 撤销:u(撤销上一步操作)。
- 搜索:/(前向搜索)、?(反向搜索)。
- 插入模式:
在命令模式下按下i
、a
、o
等插入命令后,就进入了插入模式。在插入模式下,可以直接输入文本内容,直至按下Esc
键回到命令模式。
- 视觉模式:
要进行文本的选择操作,可以进入视觉模式。将光标移动到要选择的文本上,按下v
键即可进入视觉模式。在视觉模式下,你可以使用h
、j
、k
、l
来移动光标,选择要编辑的文本。选择完成后,可以按下d
、x
等键进行删除操作,也可以按下y
键将文本拷贝到剪贴板中。
- 保存和退出:
在命令模式下输入以下命令可以保存文件并退出编辑器:
:wq
如果只是想保存文件而不退出编辑器,可以使用以下命令:
:w
如果想强制保存文件,可以使用以下命令:
:w!
如果想放弃所有对文本的修改并退出编辑器,可以使用以下命令:
:q!
如果文本已经被修改过,需要强制退出编辑器而不保存文件,可以使用以下命令:
:q!
这些是vim
编辑器的基本用法,还有很多其他高级功能等待你去发掘。
文件目录创建、删除、移动、复制、链接命令
mkdir
命令用于创建目录
其语法格式如下:
mkdir [选项] 目录名
其中,目录名
表示需要创建的目录名称,常见的选项有:
-
-p
: 创建多级目录,如果上级目录不存在则会一并创建。
常见的使用方式如下:
- 创建一个空目录:
mkdir mydir
- 创建多级目录:
mkdir -p /path/to/mydir
注意事项:mkdir
命令创建目录时需要具有相应的权限。如果当前用户没有写权限,那么无法创建新目录。在一些Linux系统中,如果没有-p
选项,那么当要创建的上级目录不存在时,mkdir
命令会抛出错误。这时需要手动先创建上级目录,或者使用-p
选项一并创建上级目录。
rmdir
命令用于删除空目录
其语法格式如下:
rmdir [选项] 目录名
其中,目录名
表示需要删除的目录名称,常见的选项有:
-
-p
: 递归删除父目录,如果父目录不为空也将一并删除。
常见的使用方式如下:
- 删除一个空目录:
rmdir mydir
- 删除多个空目录:
rmdir dir1 dir2 dir3
注意事项:rmdir
命令只能删除空目录,如果目录非空会报错提示。如果要删除非空目录,可以使用rm -r
命令。如果需要递归删除父目录,可以使用-p
选项,但需要谨慎使用。
mv
命令是用于移动或重命名文件或目录的命令
其语法格式如下:
mv [选项] 源文件/目录 目标文件/目录
其中,源文件/目录
表示需要移动或者重命名的文件或目录,目标文件/目录
表示需要移动或者重命名到的目标位置或新的名称。常见的选项有:
-
-i
: 在移动文件时询问是否覆盖已经存在的目标文件; -
-v
: 在移动文件时显示详细的信息; -
-u
: 如果目标文件比源文件更晚修改过,则才会执行移动操作; -
-f
: 强制移动,不询问。
常见的使用方式如下:
- 将文件从一个目录移到另一个目录:
mv /old/path/file.txt /new/path/
- 将文件重命名:
mv /path/oldname.txt /path/newname.txt
- 移动目录到另一个目录:
mv /old/path/ /new/path/
注意事项:当使用mv
命令对文件或目录进行移动或重命名操作时,如果目标文件已经存在,原始文件将被替换。因此,尤其要注意对于重要的文件和目录的操作,可以加上-i
选项确保安全性。
rm
命令用于删除文件或目录
其语法格式如下:
rm [选项] 文件或目录
其中,文件或目录
表示需要删除的文件或目录,常见的选项有:
-
-i
: 询问是否删除文件; -
-r
: 递归删除目录,即删除目录及其子目录; -
-f
: 强制删除,不询问确认。
常见的使用方式如下:
- 删除一个文件:
rm file.txt
- 删除一个目录:
rm -r /path/to/directory
- 删除多个文件:
rm file1.txt file2.txt
注意事项:rm
命令要慎用,因为删除后无法恢复,特别说明rm -rf /*
命令,表示删除系统根目录下所有的文件(禁用)。如果需要删除文件或目录,并且希望避免误删的情况,可以考虑使用-i
选项询问确认。如果需要删除目录及其子目录,则需要使用-r
选项。如果需要强制删除,可以使用-f
选项,但需要注意应谨慎使用。
cp
命令是用于复制文件或目录的命令,其语法格式如下:
cp [选项] 源文件 目标文件
其中,源文件可以是一个文件或一个目录,目标文件可以是一个已经存在的目录,也可以是一个不存在的新文件或目录。常用的选项有:
-
-r
:如果源文件是目录,则复制整个目录及其子目录; -
-p
:保留源文件的时间戳和权限等属性信息; -
-i
:在复制前询问是否覆盖已经存在的目标文件; -
-v
:输出详细信息。
常见的使用示例:
- 将一个文件复制到一个已经存在的目录中:
cp /path/to/source/file /path/to/existing/directory/
- 将一个文件复制到一个新的文件中:
cp /path/to/source/file /path/to/newfile
- 将一个目录复制到一个已经存在的目录中:
cp -r /path/to/source/directory /path/to/existing/directory/
- 将一个文件夹及其子目录和文件复制到一个新的目录中:
cp -r /path/to/source/directory /path/to/new/directory
注意事项:在使用cp
命令复制文件或目录时,如果目标文件已经存在,则会覆盖原有文件。如果想要保留原有文件,需要使用-i
选项进行询问确认。
scp
命令是Linux系统中基于ssh协议进行远程文件拷贝的命令
语法格式如下:
scp [参数] [源地址] [目标地址]
其中,源地址和目标地址可以是本地路径或远程主机路径,如果是远程路径需要加上用户名和主机名。下面是常用参数的详细说明:
- -r:递归拷贝整个目录;
- -P:指定端口号;
- -p:保留原文件的属性;
- -v:输出详细信息。
常用的示例命令如下:
- 从本地复制文件到远程主机:
scp local_file remote_username@remote_ip:remote_folder
例如:
scp /home/user/test.txt root@192.168.1.100:/home
- 从远程主机复制文件到本地:
scp remote_username@remote_ip:remote_file local_folder
例如:
scp root@192.168.1.100:/home/user/test.txt /home/user
- 从远程主机复制整个目录到本地:
scp -r remote_username@remote_ip:remote_folder local_folder
例如:
scp -r root@192.168.1.100:/home/user/test /home/user
- 从本地复制整个目录到远程主机:
scp -r local_folder remote_username@remote_ip:remote_folder
例如:
scp -r /home/user/test/ root@192.168.1.100:/home
注意事项:在拷贝远程文件时,必须确保本地机器和远程机器之间能够正常通信,并且要保证有足够的权限进行文件操作,如果用户没有权限访问目标文件或目录,可能会收到”Permission denied”的错误信息。另外,如果目录或文件名包含空格等特殊字符,需要使用单引号或双引号将目录或文件名括起来。
ln
命令
用于创建链接或符号链接。链接是指在不同位置的文件或目录之间建立关联,以便于系统管理和使用。Linux中,有两种类型的链接:硬链接和符号链接。
硬链接:
硬链接是指一个文件拥有了多个文件名,它们指向同一个物理文件。硬链接与原文件共享相同的Inode号,文件的所有属性都是相同的。创建硬链接的语法为:
ln [options]
其中,original_file
为被链接的源文件,hardlink
为链接文件的文件名。创建硬链接时,必须保证源文件和链接文件在同一个文件系统中,并且链接文件不能是已经存在的目录。
符号链接:
符号链接也称软链接,是指一个文件通过给定的路径链接到另一个文件。符号链接与原文件有不同的Inode号,文件属性也可能不同。创建符号链接的语法为:
ln -s
其中,original_file
为要链接的源文件,symlink
为创建的符号链接文件名。通过-s
选项来指定创建符号链接,如果不加选项,则默认创建硬链接。
需要注意的是,符号链接可以链接到不同的文件系统、甚至是远程系统中的文件,而硬链接只能在同一个文件系统中创建。
ln
命令还支持其他选项,例如:
-
-f
,强制创建链接,即使目标文件已存在 -
-i
,交互式创建链接,如果目标文件已存在,会提示用户是否要覆盖 -
-n
,不要覆盖已有的链接文件 -
-v
,显示详细的创建过程信息
通过这些选项,可以更加灵活地使用ln
命令来创建链接或符号链接。
硬链接和软链接(也称为符号链接)是在Linux系统中创建链接的两种方法,它们主要的区别如下:
1.物理位置不同
硬链接和原文件位置相同,使用同一个物理文件。而软链接则是一个特殊的文件,它包含指向原文件的指针。软链接和原文件可以位于不同的物理位置。
2.链接数量不同
硬链接可以有多个,每个硬链接都是一个完全独立的文件,可以和其他文件分开处理和删除。软链接只有一个,无论创建多少个软链接,它们都代表同一个原文件。
3.权限和所有权信息不同
硬链接和原文件具有相同的所有权和权限信息。软链接则使用指向原文件的路径名,因此它的所有权和权限信息可能与原文件不同。
4.删除行为不同
如果删除原文件,对应的全部硬链接都将变为孤立文件。而如果删除原文件,保留软链接的文件名,文件名就会成为孤立的无用指针。
5.跨文件系统
硬链接只能在同一文件系统中创建,而软链接则可以在不同的文件系统中创建。
因此,硬链接的使用场景较为特殊,一般用于复制恢复被删除的系统文件。软链接则用于将一个目录中的文件连接到另一个目录中。
文件内容查看、文件查找命令
touch
命令用于修改文件或目录的时间属性
如果文件不存在,则会创建一个新的空文件。
touch命令的语法格式如下:
touch [选项]... 文件...
常用选项:
- -a:仅修改访问时间。
- -c:文件不存在时不创建文件。
- -m:仅修改修改时间。
- -d: 格式为:[[CC]YY]MMDDhhmm[.ss],可以使用date命令生成。
- -r:将某个文件或目录的时间属性设为指定文件或目录的时间属性。
示例:
- 创建一个空文件:
touch file1
- 创建多个空文件:
touch file1 file2 file3
- 修改文件的访问和修改时间:
touch -am file1
- 修改文件的访问和修改时间为指定时间:
touch -d "2022-01-01 12:34:56" file1
- 将文件的访问和修改时间设为另一个文件的时间:
touch -r file1 file2
cat
命令
用于连接文件并打印到标准输出或复制一个或多个文件到指定目录,它也可以用于创建一个新文件,内容取自输入流(stdin)。
cat 命令语法格式如下:
cat [选项]... [文件]...
常用选项:
- -n:显示每一行的行号。
- -E:在每行的结尾添加 $ 符号。
- -T:将 tab 键替换为 ^I。
- -A:同时使用 -nET 选项。
- -s:合并空行。
- -v:显示不可见字符。
示例:
- 打印文件内容:
cat file.txt
- 连接多个文件并打印内容:
cat file1.txt file2.txt
- 创建新文件并添加内容:
cat > newfile.txt
Hello, world!
This is a new file.
Press Ctrl + D to exit.
- 显示文件并显示行号:
cat -n file.txt
- 显示文件并在每行的结尾添加 $ 符号:
cat -E file.txt
- 将多个文件合并为一个文件:
cat file1.txt file2.txt > newfile.txt
- 将一个文件的内容复制到另一个文件:
cat file1.txt > file2.txt
除此之外,cat 还可以和管道结合使用,比如:
- 从文件中查找关键字:
cat file.txt | grep "keyword"
- 查看进程信息:
ps -ef | cat
- 显示重定向前的标准输入:
cat
more
命令用于分屏显示文件内容
通常用于查看长文件内容,比如查看日志文件或程序输出。它会按照屏幕大小将文件内容分成多个部分,逐屏显示,任意键翻页,q 键退出。
more 命令语法格式如下:
more [选项]... [文件]...
常用选项:
- -d:显示每屏信息之间的空白行。
- -s:把连续多个空白行压缩成一行。
- -c:把 Ctrl-L 输出的控制字符转换成“^L”。
- -num:设置屏幕大小,num 为数字。
- +num:从第 num 行开始显示内容。
- /pattern:查找文件内容中第一个出现的 pattern。
示例:
- 分屏显示文件内容:
more file.txt
- 显示文件内容并高亮显示关键字:
more -d file.txt | grep "keyword" --color=auto
- 从第 10 行开始显示文件内容:
more +10 file.txt
- 设置每屏显示的行数为 20:
more -20 file.txt
- 在文件内容中查找关键字:
more file.txt
/pattern
在进入查找模式后,输入要查找的关键字,查找到第一个符合条件的内容后,使用 SPACE 键进行翻页查找。
- 压缩多个连续空白行:
more -s file.txt
- 把 Ctrl-L 输出的控制字符转换成“^L”:
more -c file.txt
更多用法可以通过输入 man more
查看帮助文档。
less
命令可以像more
命令一样
用于在终端中浏览文件,但是相比较更加强大和方便。下面是less
命令的详细用法:
- 基本语法:
less [文件名]
- 在
less
中常用的一些快捷键:
-
空格键
:向下翻一页。 -
Enter键
:向下翻一行。 -
b键
:向上翻一页。 -
Ctrl + F
:向下翻一屏。 -
Ctrl + B
:向上翻一屏。 -
G键
:跳到文件末尾。 -
1G
:跳到文件开头。 -
/字符串
:搜索字符串。 -
n键
:向下搜索下一个。 -
N键
:向上搜索上一个。 -
q键
:退出less
。
- 更多的操作参数:
-
-N
:在每行前面显示行号。 -
-i
:忽略搜索时的大小写。 -
-S
:将长行截断显示。 -
-R
:将特殊字符转成可读字符。 -
--help
:显示帮助信息。 -
--version
:显示版本信息。
- 与管道结合使用:
less
命令还可以与管道结合使用,这样可以将其他命令的输出结果通过less
进行查看。
命令 | less
例如:ls -alh | less
将会把ls
命令的输出通过less
进行查看。
head
命令可以用于查看指定文件的前几行内容
默认情况下会显示文件的前10行。下面是head
命令的详细用法:
- 基本语法:
head [选项] [文件名]
- 参数与选项:
-
-n
:指定显示文件的前几行,默认为10行。 -
-c
:指定显示文件的前几个字节。 -
-q
:不显示文件名。 -
-v
:始终显示文件名。
- 实例:
- 显示文件的前10行:
head filename
- 显示文件的前5行:
head -n 5 filename
- 显示文件的前20个字节:
head -c 20 filename
- 显示多个文件的前10行,并在每个文件前显示文件名:
head -v filename1 filename2
- 显示多个文件的前10行,不显示文件名:
head -q filename1 filename2
- 输出行数的限制:
在head
命令中可以使用-n
选项指定显示文件的前几行,但是head
所显示的行数可能受到/proc/sys/kernel/ngroups_max
的限制。如果想要更改这个限制,可以使用以下命令:
sudo sysctl -w kernel.ngroups_max=
其中,可以根据需要更改。
tail
主要是用于查看文件内容
其默认参数为 -n 10
,即显示文件最后 10 行的内容。一般情况下,我们会根据需求使用不同的参数选项,实现不同的查看方式。
基本语法:
tail [参数] [文件]
常用参数:
-
-f
:表示实时输出文件内容的变化,常用于查看日志文件等需要随时更新的文件 -
-n +[line]
:表示输出文件从指定行号到结尾的内容 -
-c [byte]
:表示输出文件的最后指定字节数的内容 -
-q
:同时输出多个文件时,不显示文件头信息 -
-v
:同时输出多个文件时,显示文件头信息
常用示例:
- 显示文件最后 n 行的内容
tail -n [n] [filename]
- 实时查看文件内容的变化
tail -f [filename]
- 显示文件最后 n 个字节的内容
tail -c [n] [filename]
- 显示从指定行开始的所有内容
tail -n +[line] [filename]
- 同时查看多个文件的结尾内容,并显示文件名
tail -q -f [filename1] [filename2] ...
还有其他参数和选项可以查看 man 手册。注意事项:如果文件内容包含敏感信息,应配置权限以保护其安全性,避免信息泄露。
grep
命令
主要是用于在文件中查找指定的字符串或模式,并将符合条件的行打印出来。它可以快速地在大量日志或数据中查找需要的信息。
基本语法:
grep [选项] [模式] [文件名]
常用参数:
-
-i
:表示忽略模式中的大小写差异 -
-v
:表示仅显示不匹配模式的行 -
-n
:表示显示匹配模式所在的行号 -
-c
:表示显示匹配模式的行数 -
-w
:表示匹配整个单词,避免匹配到部分单词 -
-r
:表示递归查找指定目录下的文件 -
-A [n]
:表示显示匹配行及其后 n 行的内容 -
-B [n]
:表示显示匹配行及其前 n 行的内容 -
-C [n]
:表示显示匹配行及其前后 n 行的内容
常用示例:
- 查找文件中包含指定字符串的行,并输出行内容
grep "pattern" [filename]
- 查找多个文件中包含指定字符串的行,并输出行内容和文件名
grep "pattern" [filename1] [filename2] ...
- 忽略模式的大小写差异,并查找文件中包含指定字符串的行
grep -i "pattern" [filename]
- 匹配整个单词,并查找文件中符合条件的行
grep -w "pattern" [filename]
- 递归查找指定目录下包含指定字符串的文件,并输出行内容和文件名
grep -r "pattern" [directory]
- 查找文件中不包含指定字符串的行,并输出行内容
grep -v "pattern" [filename]
- 查找文件中包含指定字符串的行,并输出行号
grep -n "pattern" [filename]
- 查找文件中包含指定字符串的行数量
grep -c "pattern" [filename]
- 输出匹配行及其前后 n 行的内容
grep -A [n] "pattern" [filename]
grep -B [n] "pattern" [filename]
grep -C [n] "pattern" [filename]
还有其他参数和选项可以查看 man 手册。注意事项:如果文件内容包含敏感信息,应配置权限以保护其安全性,避免信息泄露。
find
命令
是用于在文件系统中搜索文件和文件夹。它有很多不同的选项和参数,下面是一些常用的用法:
基本用法
查找当前目录下所有名为file.txt
的文件:
find . -name file.txt
查找/home
目录下所有后缀为.log
的文件:
find /home -name "*.log"
查找大小大于5MB的所有文件:
find /home -size +5M
查找文件修改时间在7天前的所有文件:
find /home -mtime +7
查找文件访问时间在7天内的所有文件:
find /home -atime -7
查找所有空目录:
find /home -type d -empty
进一步用法
查找当前目录下除.git
目录以外所有的子目录:
find . -type d ! -name .git
查找当前目录下除.log
文件以外的所有文件:
find . ! -name "*.log"
查找所有.txt
文件,并执行grep
命令查找其中包含关键字example
的行:
find . -name "*.txt" -exec grep "example" {} ;
查找所有文件,并将它们复制到/backup
目录下:
find . -type f -exec cp {} /backup ;
以上只是find
命令的部分用法,还有很多其他选项和参数,可以使用man find
命令查看find
命令的完整手册。
grep
和find
的区别
都是Linux操作系统中比较常用的命令行工具,但它们的功能有所不同。
grep命令用于在文件中搜索指定的字符串,并显示包含该字符串的行。例如,可以使用grep命令搜索一个文本文件中的特定单词或短语。grep还可以使用正则表达式进行搜索,使其更加灵活。
find命令则用于搜索文件系统中文件和目录,并可以根据多种条件进行搜索。例如,可以使用find命令搜索权限、日期、大小等方面符合特定条件的文件。与grep不同的是,find搜索的是文件系统,而不是文件内容。
因此,grep和find在功能和使用场景上有所不同。但两个命令都是Linux操作系统中非常实用和必要的工具。
文件压缩、解压命令
zip
命令常见压缩工具
它可以将文件或目录进行压缩,以减小磁盘空间占用,也方便进行文件传输。下面详细介绍zip命令的使用方法。
- 基本命令格式
zip [-options] zipfile file1 [file2 ...] [-x exclude_file1 [exlude_file2 ...]]
说明:
-
zip
是zip命令的关键字。 -
-options
是参数选项,例如:v、q、r等。 -
zipfile
是压缩之后的文件名。 -
file1 [file2 ...]
是被压缩的文件名列表,可以有多个,用空格隔开。 -
-x exclude_file1 [exclude_file2 ...]
是需要被排除的文件名列表。
- 常用命令选项
选项 | 描述 |
---|---|
-q |
静默模式。不显示压缩进度信息。 |
-r |
递归处理,将指定目录下所有文件和子目录一并处理。 |
-v |
显示压缩进度信息。 |
-f |
强行新建压缩文件,即覆盖已存在的同名压缩文件。 |
-u |
只压缩更改过的、新添加的文件,和新的子目录。 |
-m |
压缩后删除源文件和文件夹。 |
-n |
不压缩具有最新修改时间的文件。 |
-T |
检测压缩文件的健康状况。 |
-d |
解压目标文件后,只更新比目标文件有改动的文件。 |
-x |
排除某些文件或目录。 |
- 实例演示
压缩文件
zip demo.zip demo.txt
- 将文件
demo.txt
打包成名字为demo.zip
的压缩包。
zip demo.zip demo1.txt demo2.txt test/
- 将文件
demo1.txt
、demo2.txt
以及目录test
打包成名字为demo.zip
的压缩包。
压缩目录
zip -r demo.zip demo
- 将目录
demo
打包成名字为demo.zip
的压缩包,并且以递归的方式压缩其子目录和文件。
排除文件
zip demo.zip demo.txt -x demo1.txt
- 将文件
demo.txt
打包成名字为demo.zip
的压缩包,并且排除文件demo1.txt
。
查看压缩包内容
unzip -l demo.zip
- 查看名字为
demo.zip
的压缩包内包含的文件列表。
解压缩文件
unzip demo.zip
- 解压名字为
demo.zip
的压缩包。
gzip
命令
可以将原始文件压缩成gzip文件格式,压缩后的文件名为.gz
。实际上,gzip命令是Linux中最常用的压缩命令之一。下面是gzip命令的详解。
- 基本语法:
gzip [filename]
- 常用选项:
-
-d
: 解压缩 -
-v
: 显示过程 -
-r
: 压缩目录下的所有文件
- 常用操作:
- 压缩文件:
gzip filename
- 解压缩文件:
gzip -d filename.gz
- 压缩目录下所有文件:
gzip -rv /path/to/dir
- 注意事项:
- gzip命令只能压缩单个文件,如果需要压缩目录下所有文件,可以用
-r
选项进行递归操作。 - 压缩后的文件名为
.gz
,解压缩时需要指定压缩文件名。
tar
命令是一个打包工具
可以将文件或文件夹打包成一个单独的文件,方便备份和传输。下面是tar命令的详解:
- 基本语法:
tar [options] [target]
- 常用选项:
-
-c
: 创建压缩包 -
-x
: 解压缩 -
-v
: 显示过程 -
-f
: 指定压缩包的文件名 -
-z
: 使用gzip压缩 -
-j
: 使用bzip2压缩 -
-t
: 查看压缩包内容 -
-C
: 指定解压缩后的目录
- 常用操作:
- 压缩文件:
tar -czvf filename.tar.gz folder/
- 查看压缩包内容:
tar -tvf filename.tar.gz
- 解压缩文件:
tar -xzvf filename.tar.gz
- 解压缩到指定目录:
tar -xzvf filename.tar.gz -C /path/to/dir
- 注意事项:
- 如果需要解压缩zip格式的压缩包,可以使用unzip命令
- 如果需要创建rar格式的压缩包,需要安装rar工具
- 在解压缩时,如果压缩包中有重名文件,会提示覆盖确认。如果需要覆盖,可以加上选项
--overwrite
zip
、gzip
和tar
的区别
是Linux系统中的三种不同的压缩方式,它们之间的区别如下:
- zip压缩
zip压缩是一种跨平台的压缩方式,可以在不同的操作系统中使用。它具有压缩率高、压缩速度快的优势,并且支持压缩多个文件和目录并保存目录结构。
- gzip压缩
gzip是一种常见的Linux文件压缩方式,它只能压缩单个文件,压缩后的文件名后面增加“.gz”后缀,可以使用gunzip命令对其解压缩。gzip不支持压缩多个文件和目录,需要通过shell命令结合使用才能够实现这种功能。
- tar压缩
tar系列命令可以将多个文件或目录打包成一个文件,但并不进行压缩处理。tar命令的优点是打包快、压缩率高,但它不具备压缩功能。为此,通常需要将tar包与其他压缩命令一起使用,如gzip、bzip2等。
总体来说,zip压缩支持多平台使用,gzip压缩只能用于Linux系统中的单个文件压缩,而tar打包可以将多个文件汇总并保存目录结构。需要用到压缩功能时,常常要综合使用上述三种压缩方式,以适应不同的使用环境和需求。
文件目录权限、属组设置
chmod
命令
用于控制文件或目录的访问权限。通过改变文件或目录的权限属性,可以控制不同用户对文件或目录的操作权限,包括读、写、执行等。
chmod
命令的基本语法: chmod [OPTIONS] MODE FILE
其中,MODE 表示权限模式,可以使用数字或符号两种形式,FILE 是文件或目录的名称。
一、数字形式
在数字形式下,共有三个数字以及对应的每个数字有三位可用的字符,分别表示用户、组、其他人的权限。
其中,可用的字符及其对应的权限如下:
- r:读权限
- w:写权限
- x:执行权限
对于每个用户,三个字符分别表示读、写、执行的权限,这三个字符可以用一个数字来表示,如下所示:
数字 | 描述 | rwx二进制值 |
---|---|---|
0 | 没有任何权限 | 000 |
1 | 执行权限 | 001 |
2 | 写权限 | 010 |
3 | 写和执行权限 | 011 |
4 | 读权限 | 100 |
5 | 读和执行权限 | 101 |
6 | 读和写权限 | 110 |
7 | 读、写和执行权限 | 111 |
例如,设置文件“example.txt”用户有读、写、执行权限,组和其他人只有读权限,可以使用以下命令:
chmod 744 example.txt
其中,数字“7”表示用户有读、写、执行权限,数字“4”表示组和其他人只有读权限。
二、符号形式
在符号形式下,共有以下字符:
- “u” 表示用户;
- “g” 表示用户组;
- “o” 表示其他人;
- “a” 表示所有用户;
- “+” 表示添加权限;
- “-” 表示删除权限;
- “=” 表示设置权限,忽略其他权限.
例如,设置文件“example.txt”用户有读、写、执行权限,组和其他人只有读权限,可以使用以下命令:
chmod u=rwx,g=r,o=r example.txt
其中,u=rwx 表示给用户赋予“读、写、执行”权限,g=r 表示给用户组赋予“读”权限,o=r 表示给其他人赋予“读”权限。
三、常见命令
- 755 权限设置
chmod 755 /xxx
或者
chmod u+rwx,g=rx,o=rx /xxx
- 777 权限设置
chmod 777 /xxx
或者
chmod u+rwx,g+rwx,o+rwx /xxx
- 对某一文件类型的文件添加权限
chmod u+x *.sh
以上是常见的一些chmod命令的使用方法,使用chmod命令可以灵活控制文件或目录的访问权限。但需要注意的是,要慎重更改文件或目录的权限,以免造成意外的损失。
chown
命令用于修改文件或目录的拥有者
命令格式:
chown [选项] [:group]
其中 [选项]
可以是以下其中之一:
-
-c
:只有在文件的拥有者确实发生了改变,才输出提示信息。 -
-f
:即使该操作涉及了无法修改的文件,也不输出错误信息。 -
-R
:递归地修改指定目录及其子目录下的所有文件和目录的所有者。 -
-v
:总是输出提示信息。
为新的拥有者用户名或用户 ID,
为新的所属组名或组 ID。
使用 :
分隔
和
时,
可以省略,表示不变更所属组。
chown user:group file.txt # 将file.txt的所有者设置为user,所属组设置为group
chown user file1.txt file2.txt # 将file1.txt和file2.txt的所有者都设置为user
chown user: file.txt # 将file.txt的所有者设置为user,所属组不变
例如,将 file.txt
的所有权转移给用户 better
:
chown better file.txt
将 file.txt
的所有权转移给用户 better
并设置所属组为 xiaoxin
:
chown better:xiaoxin file.txt
将目录 /var/www
下的文件和子目录的所有权转移给用户 apache
和组 apache
:
chown -R apache:apache /var/www
注意,修改文件的拥有者需要具有相应的权限,例如,只有文件所有者、文件所在组的用户或超级用户(root)可以变更文件的拥有者。
sudo
命令
可以使普通用户以超级用户(例如root)的权限来执行命令。sudo是英语Superuser Do的缩写,其基本语法为:
sudo [选项] [要运行的命令]
当普通用户执行sudo命令后,系统会要求用户输入自己的密码,验证成功后就可以临时获取超级用户的权限来运行命令。
常用选项:
- -s,使用shell来执行命令;
- -u,指定以某个用户的权限来执行命令;
- -i,重置环境变量;
- -E,保持环境变量。
例如:
sudo apt-get update # 使用超级用户权限更新软件包
sudo -u user whoami # 以user的权限运行whoami命令
sudo -s # 以超级用户权限打开shell
需要注意的是,在使用sudo命令时应该确保必要的安全措施,例如不要在命令中使用任何未经信任的变量或参数,防止命令注入等攻击。同时,也应该避免频繁地使用sudo命令,以防止误操作或安全问题。
查看系统当前用户
whoami
命令
用于查看当前用户名。当用户在命令行终端中执行“whoami”命令,终端会返回当前用户的用户名。
whoami命令没有参数,也没有任何选项,其基本语法为:
whoami
在Linux系统中,whoami命令通常用于脚本或命令中获取当前用户名,或者在查看某些文件或目录的权限时确定当前用户是否具有访问权限。
例如,假设用户在终端中使用whoami命令查询当前的用户名为“user”,可以在脚本中使用如下方式获取当前的用户名:
#!/bin/bash
echo "当前用户为:$(whoami)"
需要注意的是,whoami命令仅返回当前用户的用户名,并不提供任何有关该用户的详细信息,如组、UID等信息。如果需要获取更多的用户信息,可以使用其他的命令如id、finger等。
id
命令
用于显示当前用户的UID(用户ID)和GID(组ID)以及相关的信息。id命令的输出格式默认为:uid=xxx(username) gid=xxx(groupname) groups=xxx,xxx,xxx。
id命令有一些选项可以用来显示不同的信息,常用的选项如下:
- -u:仅显示当前用户的UID;
- -g:仅显示当前用户所属的组ID(GID);
- -G:显示当前用户所属的所有组ID(以逗号分隔),包括附加组;
- -n:与-g选项一起使用,仅显示当前用户所属的组名;
- -r:仅显示当前用户的真实UID(仅在以root用户的权限运行id命令时才有效)。
例如,下面的命令使用id命令显示当前用户的UID和GID:
id
可以使用-u选项仅显示当前用户的UID:
id -u
使用-r选项可以输出当前用户的真实UID:
id -r
使用-G选项可以显示当前用户所属的所有组ID:
id -G
需要注意的是,如果用户是在su或sudo命令的环境下运行id命令,则所显示的信息是su或sudo用户的信息,而不是当前用户的信息。
finger
命令
用于查看指定用户的信息,包括用户ID、名称、Shell、登录时间、邮件状况等。使用finger命令可以方便地查看系统上其它登录用户的信息。
finger命令的语法如下:
finger [用户名]
如果没有指定用户名,则finger命令默认会显示当前登录用户的信息。
下面是finger命令常用的选项:
- -s:缩短输出字符串;
- -m:同时输出邮件信息;
- -l:以更详细的格式输出用户信息;
- -p:以简洁格式输出用户信息;
- -F:使用完整的输出格式;
- -i:如果用户正在远程登录,则输出IP地址。
例如,可以以更详细的格式查看用户test1的信息:
finger -l test1
也可以添加-s选项来缩短输出字符串:
finger -ls test1
如果用户存在未读邮件,则可以添加-m选项来一并查看邮件信息:
finger -lm test1
需要注意的是,使用finger命令查看其它用户信息需要有足够的权限。在一些安全性较高的系统中,管理员可能会限制普通用户使用finger命令。
查询可执行文件路径的命令
which
命令
是 Linux 和 Unix 系统上的一个实用工具,用于查找并显示给定命令的绝对路径。
命令格式为:
which [选项]
其中 [选项]
可选,可以是以下其中之一:
-
-a
:显示所有匹配的路径。 -
-i
:忽略大小写。 -
-f
:输出所有的可能地址,而不仅仅是第一个。 -
-h
:不要输出属于子命令的帮助信息。 -
-n
:只在 PATH 变量指定的目录中查找(不包括当前目录)。 -
-P
:使用 PATH 环境变量,并且不允许使用哈希表缓存命令位置。 -
-p
:如同使用 PATH 变量一样的方式查找命令,但是不会执行任何连锁链接。
是需要查找的命令。
例如,要查找命令 ls
的绝对路径,可以运行以下命令:
which ls
命令的输出为:
/bin/ls
如果命令不存在,则不会返回任何内容。
使用 -a
选项可以列出所有匹配的路径。例如,查找 python
命令的所有路径:
which -a python
这将输出类似于以下内容的所有匹配路径:
/usr/bin/python
/usr/local/bin/python
使用 -i
选项可以忽略命令名称的大小写。例如:
which -i ls
使用 -f
选项可以显示所有可能的地址,而不仅仅是第一个。例如:
which -f ls
使用 -p
选项可以避免查找其他位置的同名命令。例如:
which -p ls
which
命令可以帮助我们确定命令在哪里,并且可能会有助于解决同名命令的问题。
whereis
命令
是 Linux 和 Unix 系统上的一个实用工具,用于定位二进制程序、源码以及帮助文档的位置。
命令格式为:
whereis [选项]
其中 [选项]
可选,可以是以下其中之一:
-
-b
:只搜索二进制程序。 -
-m
:只搜索帮助文档。 -
-s
:只搜索源码文件。 -
-u
:搜索未知类型文件。 -
-B
:覆盖二进制程序搜索的系统默认路径,指定一个新的路径。 -
-M
:覆盖帮助文档搜索的系统默认路径,指定一个新的路径。 -
-S
:覆盖源码搜索的系统默认路径,指定一个新的路径。
是需要查找的命令。
例如,要查找命令 ls
的二进制程序、帮助文档和源码文件的位置,可以运行以下命令:
whereis ls
命令的输出为:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
这表示二进制程序存储在 /bin/ls
中,帮助文档存储在 /usr/share/man/man1/ls.1.gz
中。
使用 -b
、-m
和 -s
选项可以指定需要搜索的文件类型。例如,要搜索命令 ls
的二进制程序位置,可以运行以下命令:
whereis -b ls
这将输出类似于以下内容的二进制文件路径:
/bin/ls
使用 -B
、-M
和 -S
选项可以覆盖系统默认搜索的路径。例如,要搜索命令 ls
的源码文件位置,并覆盖默认搜索路径,可以运行以下命令:
whereis -S /my/source/path ls
这将输出该命令的源码文件路径,该路径为 /my/source/path/ls.c
。
whereis
命令不会搜索命令的实际位置。对于这种情况,可以使用 which
命令来查找可执行文件的位置。
whereis
命令可以帮助确定二进制程序、帮助文档和源码的位置,并且可能会有助于解决文件定位问题。
which
和whereis
命令的区别
都是用于查找命令执行文件的工具,但它们之间有一些区别。
-
which
命令可以找到命令所在的具体路径,而whereis
命令能够查找到命令所在的可执行文件、二进制文件、帮助文件以及源代码等相关文件的位置。 -
which
命令只能查询当前登录用户的执行路径,而whereis
命令可以搜索整个系统,包括PATH
环境变量所包含的路径以外的路径。 -
which
命令只能查找可执行文件,而无法查找源代码文件和帮助文件等非可执行文件,而whereis
命令可以查找可执行文件、源代码文件和帮助文件等所有相关文件。
举个例子,如果想要查找ls
命令所在的路径,可以使用以下命令:
使用which
命令:
which ls
输出可能是:
/bin/ls
这表示ls
命令的可执行文件在/bin/
目录下。
使用whereis
命令:
whereis ls
输出可能是:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
这表示ls
命令的可执行文件在/bin/
目录下,而帮助文件则在/usr/share/man/man1/
目录下。
总之,which
命令主要用于查找可执行文件,而whereis
命令则不仅可以查找可执行文件,还包括相关文件的位置。
系统配置、网络通信状态检测命令
ifconfig
命令
(interface configuration)用于查看、配置和控制网络接口。该命令常用于设置IP地址、网关、子网掩码等网络配置信息,以及启用或禁用网络接口等操作。
ifconfig命令的语法如下:
ifconfig [网络接口名称] [选项]
其中,网络接口名称指定了要配置或查看的网络接口,选项用于指定ifconfig要执行的特定操作。如果不指定网络接口名称,则默认显示出所有可用的网络接口及其配置信息。
ifconfig命令常用的选项包括:
- up:启动某个网络接口。
- down:关闭某个网络接口。
- inet:查看某个网络接口的IP地址。
- netmask:查看某个网络接口的子网掩码。
- broadcast:查看某个网络接口广播地址。
- hw:查看某个网络接口硬件地址或MAC地址。
- mtu:查看或修改某个网络接口的最大传输单元(MTU)大小。
以下以常见的ifconfig命令选项为例,介绍如何查看和配置网络接口。
- 查看所有网络接口及其配置信息:
ifconfig
- 查看指定网络接口的IP地址信息:
ifconfig eth0
- 设置指定网络接口的IP地址、子网掩码、网关:
ifconfig eth0 192.168.0.2 netmask 255.255.255.0 up
- 禁用某个网络接口:
ifconfig eth0 down
需要注意的是,ifconfig命令需要具有特权用户权限才能够执行,因此需要使用sudo或root用户来执行。此外,ifconfig命令已经被ip命令取代,建议使用ip命令替代ifconfig命令进行网络配置。
ifconfig
和ipconfig
命令的区别
- ifconfig是在Unix和Linux系统上使用的命令,而ipconfig则是在Windows系统上使用的命令。
- 它们的作用都是查看网络接口的配置和信息,例如IP地址、网关、物理地址等。
- 但是两者的输出格式和内容略有不同。ifconfig可以修改网络接口的配置,而ipconfig不能。
- 另外,ifconfig在新版本的Linux中已经逐渐被ip命令所代替。
ping
命令
用于向指定的IP地址或域名发送数据包,并计算从发送到接收的时间延迟。该命令通常用于测试本地与远程主机之间是否可以正常通信以及网络连接的质量如何。
ping命令的语法如下:
ping [选项] [目标主机]
其中,目标主机可以是IP地址或域名,选项包括:
- -c : 设置发送数据包数量(默认为无限次)。
- -i : 设置发送数据包的时间间隔(单位为秒)。
- -w : 设置等待响应的超时时间(单位为秒)。
- -s : 设置发送数据包的大小(单位为字节)。
- -q : 只显示关键信息,不显示统计数据。
- -v : 显示详细的调试信息。
默认情况下,ping命令会一直发送数据包,直到手动停止或网络连接中断。每次发送数据包后,命令会显示接收到数据包的数量、丢失数据包的数量、时间延迟等信息。同时,还会显示每个数据包往返所需的时间和分别往返的最小、最大、平均时间等统计数据。
以下是几个ping命令的例子:
- 指定目标主机IP地址并发送4个数据包:
ping -c 4 192.168.0.1
- 指定目标主机域名并显示详细的调试信息:
ping -v www.baidu.com
- 指定目标主机IP地址并设置每隔1秒发送一个数据包:
ping -i 1 192.168.0.1
需要注意的是,ping命令需要具有特权用户权限才能够执行,因此需要使用sudo或root用户来执行。
netstat
命令
是一款系统网络工具,用于显示各种网络相关信息,包括网络连接、路由表、网络接口状态等。其常用的命令包括:
-
netstat -a
:显示所有已建立的连接和监听端口。 -
netstat -n
:不进行名称解析,使用IP地址显示。 -
netstat -p
:显示进程信息,包括进程ID和进程名。 -
netstat -r
:显示路由表信息。 -
netstat -s
:显示各种网络统计信息,包括TCP、UDP、ICMP协议等。 -
netstat -t
:仅显示TCP连接信息。 -
netstat -u
:仅显示UDP连接信息。 -
netstat -l
:仅显示监听状态的连接列表。
通过netstat命令,可以快速了解计算机的网络状态,以便进行故障排查和网络优化。
系统进程、内存查看命令
ps
命令
是一个用于查看进程状态的工具,可以列出当前系统中正在运行的进程信息。下面是ps命令的详解:
- 命令格式
ps [选项]
- 常用选项
-
-a
显示所有进程,包括其他用户的进程 -
-u
以用户为主要关键字显示进程列表 -
-x
显示没有控制终端的进程 -
-e
显示所有进程,同-A
-
-f
显示进程的详细信息 -
-l
长格式输出
- 常用输出字段
-
PID
进程ID -
PPID
父进程ID -
USER
进程的所有者 -
%CPU
进程的CPU占用率 -
%MEM
进程的内存占用率 -
VSZ
进程的虚拟内存大小 -
RSS
进程的固定内存大小 -
STAT
进程的状态标识符 -
START
进程的启动时间 -
TIME
进程的累计CPU时间
- 常用命令示例
-
ps aux
显示所有进程的详细信息,包括进程使用的CPU和内存信息 -
ps aux --sort=-%cpu | head
显示CPU占用率最高的10个进程 -
ps -ef | grep nginx
查找以nginx
开头的进程信息 -
ps -p 12345
查看特定进程号为12345的进程详细信息
总之,ps命令是一个非常有用的查看进程信息的命令,可以帮助用户快速准确地了解任何正在运行的进程的活动和状态。
kill
命令
用于向指定的进程发送信号,其基本的语法如下:
kill [options] PID
其中,PID指的是需要发送信号的进程ID,options为命令的参数选项,常用的选项包括:
- -l:列出系统支持的所有信号;
- -s:指定发送的信号类型;
- -a:向所有进程发送信号,除了init进程(PID为1)和kill命令本身的进程。
常用的信号类型包括:
- SIGTERM(15):默认信号,请求进程终止,进程可以进行一些清理操作后安全退出;
- SIGKILL(9):强制终止进程,进程将无法保存其状态;
- SIGHUP(1):挂起信号,当用户从系统退出时,可向所有进程发送该信号,要求它们重新读取其配置文件,一般用于重新启动一些服务进程。
例如,如果要终止进程号为1234的进程可以使用以下命令:
kill 1234
如果需要强制终止该进程,可以使用 -9 选项:
kill -9 1234
除了按照 PID 来杀死进程,还可以使用进程名来杀死进程,例如,如果需要终止名为httpd的进程,可以使用以下命令:
pkill httpd
上述命令会向所有名为httpd的进程发送SIGTERM信号,如果需要强制终止,可以使用 -9选项:
pkill -9 httpd
需要注意的是,kill命令可能会对系统造成不良影响,因此使用kill命令时应该谨慎行事,并且尽可能的避免强制终止进程。
du
命令
是Linux系统中用于查看目录或文件所占用磁盘空间大小的命令,用于分析文件和目录的磁盘空间使用情况。下面是du命令的详解:
- 命令格式
du [选项] [文件或目录]
- 常用选项
-
-h
人性化显示文件大小 -
-s
只显示总计大小 -
-a
显示所有文件和目录的磁盘使用大小,而不仅仅是目录
- 常用命令示例
-
du -h filename
显示文件或目录所占磁盘空间大小,并以”KB”、”MB”或”GB”为单位显示 -
du -s directory
显示目录的总大小 -
du -ah directory
显示目录中所有文件和子目录的大小,其中目录以”/”结尾
需要注意的是,du命令会递归查询目录下的所有文件并计算磁盘空间,因此在查询大量文件的目录时可能会比较耗时。在使用du命令时,常常需要结合其他命令来过滤掉不需要的目录和文件,以便更清晰地了解磁盘空间的使用情况。
df
命令
是Linux系统中用来显示文件系统磁盘空间使用情况的命令。它显示磁盘分区的可用空间和已用空间等信息。下面是df命令的详解:
- 命令格式
df [选项] [目录或文件]
- 常用选项
-
-h
以人类可读的方式显示磁盘使用量 -
-T
显示文件系统类型 -
-i
显示inode使用情况而不是磁盘使用情况 -
-a
显示所有文件系统
- 常用命令示例
-
df -h
显示文件系统的磁盘空间使用情况,并以”KB”、”MB”或”GB”为单位显示 -
df -T
显示文件系统的类型,例如ext4、ntfs等 -
df -i
显示文件系统的inode使用情况 -
df -ha
显示所有文件系统,并对空闲和已用空间进行汇总
需要注意的是,df命令只能用于显示已挂载的文件系统的磁盘空间使用情况。如果文件系统没有挂载,则df命令无法显示其空间使用情况。如果要显示尚未挂载的文件系统的空间使用情况,则可以使用其他工具,如lsblk和blkid等。
top
命令
是一个动态实时的进程监视器,可以实时显示系统进程的相关信息,如进程PID、进程的CPU占用、内存占用、运行时间等。通过top命令可以实时监视系统资源的使用情况,帮助查找和解决系统性能问题。
下面是top命令的一些常用参数和使用方法:
- -d seconds:指定top命令刷新间隔时间,默认为3秒。
- -u username:指定top命令只显示指定用户的进程信息。
- -p pid:指定top命令只显示指定进程的信息。
- -c:显示完整的进程命令行,而不是只显示进程名称。
- -H:以进程的层次结构方式显示进程。
- -M:以内存使用量进行排序。
- -P:以CPU占用率进行排序。
- -n:指定要显示的进程数目。
- -i:不显示闲置或僵死进程。
top命令的界面分为两部分,分别是系统摘要和进程列表。在系统摘要中,可以看到系统的一些基本信息,例如负载平均值、物理内存的使用情况、交换分区的使用情况等。而在进程列表中,则会列出系统中所有进程的相关信息,例如进程的PID、占用CPU的百分比、内存使用量、进程状态等。
通过top命令可以实时监视系统中进程的运行情况,从而及时发现并解决系统性能问题。同时,通过前面介绍的top命令的参数,可以对top命令进行更加详细的配置,提升监视效果。
番外篇(使用命令行发送请求、远程登录、打开文件或应用程序)
curl
命令
curl
是一个非常常用的命令行工具,用于向服务器发送请求并获取响应。它支持众多协议(包括HTTP、FTP、SMTP等),可以获取和发送数据,还可以用于调试和测试网络请求。
以下是curl命令的一些常见选项和用法:
-
用法:
curl [选项...] [URL...]
选项:
-O
:将URL指定的文件下载到当前目录。-o
:用指定的文件名将URL指定的文件下载到当前目录。-u
:设置HTTP认证用户名和密码。-I
:仅显示响应头。 -
POST请求:
curl -X POST -d "参数" URL
-X
:指定请求方法,这里是POST。-d
:指定POST请求的参数。 -
自定义HTTP头:
curl -H "Content-Type: application/json" URL
-H
:指定HTTP头信息,这里是Content-Type。 -
上传文件:
curl -F "file=@文件路径" URL
-F
:指定上传文件。 -
下载多个文件:
curl -O URL1 -O URL2
-O
:下载URL指定的文件。 -
显示进度条:
curl -# URL
-#
:显示进度条。 -
HTTPS请求:
curl -k URL
-k
:取消SSL验证。
示例代码如下:
- 下载单个文件
curl -O http://example.com/file.zip
-O
表示使用原文件名(包括扩展名)保存文件,如果要指定文件名,可以使用 -o
选项。
- 下载多个文件
curl -O http://example.com/file1.zip -O http://example.com/file2.zip
- 显示请求和响应的头信息
curl -v http://example.com
-v
表示显示详细信息,包括请求和响应的头信息。
- 发送 POST 请求
curl -d "username=liaoxiaoxin&password=123456" http://example.com/login
-d
表示发送 POST 请求,并将 username
和 password
作为参数发送给服务器。
- 发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"name": "liaoxiaoxin", "age": 18}' http://example.com/api
-H
表示设置 HTTP 头信息,-d
表示发送 JSON 数据,也可以直接使用--json
- 上传文件
curl -F "file=@/path/to/your/file" http://example.com/upload
-F
表示上传文件,file=@/path/to/your/file
指定要上传的文件路径。
- 取消 SSL 验证
curl -k https://example.com
-k
表示取消 SSL 验证,如果你的请求的证书是自签名的,可以使用该选项。
- 使用HTTP代理
如果您的Linux系统需要使用HTTP代理访问外部网络,则可以使用以下命令:
curl --proxy http://proxyserver:8080 https://www.example.com/
- 限制下载速度
有时,您可能会在下载大型文件时遇到网络拥塞。在这种情况下,您可以使用curl来限制下载速度。例如:
curl --limit-rate 100k https://www.example.com/large_file.zip -o large_file.zip
上述命令将下载large_file.zip文件,但限制下载速度为100KB/秒。
其他说明
除了上述常用选项和示例以外,curl
命令还支持众多其他选项。用户可以通过man curl
命令或者curl --help
命令来获取完整的说明文档。
ssh
命令
SSH(Secure Shell)是一种安全的网络协议,用于在远程计算机之间进行加密的通信。SSH允许你通过安全的管道从一台计算机远程连接到另一台计算机,而不会泄露敏感信息。
以下是常用的SSH命令及其用途:
-
ssh:通过SSH连接到远程计算机。例如:
ssh username@remote-hostname (使用用户名连接远程计算机) ssh -p
username@remote-hostname (使用指定端口号连接远程计算机,默认端口为22) -
scp:复制文件到远程计算机或从远程计算机复制文件。例如:
scp localfile.txt username@remote-hostname:/path/to/remote/directory (把本地文件复制到远程计算机) scp username@remote-hostname:/path/to/remote/file /path/to/local/directory (从远程计算机复制文件到本地计算机)
-
ssh-keygen:生成SSH密钥对以进行身份验证。例如:
ssh-keygen -t rsa -b 4096 (生成一个RSA密钥)
-
ssh-copy-id:将SSH公钥复制到远程计算机,以免在每次连接远程计算机时输入密码。例如:
ssh-copy-id username@remote-hostname (复制SSH公钥到远程计算机)
-
ssh-agent:管理SSH代理的操作系统服务。例如:
eval $(ssh-agent) (启动SSH代理) ssh-add ~/.ssh/id_rsa (将SSH私钥添加到代理)
以上是常用的SSH命令,对于更多的SSH选项和用法,您可以通过查看SSH的官方文档来了解更多。
open
命令
在MacOS中,open命令用于打开一个文件或目录,它还可以指定打开方式和权限等。下面是open命令的详细解释:
语法:
open [选项] [文件或目录]
选项:
-
-a
:指定应用程序打开文件 -
-e
:使用TextEdit编辑器打开文件 -
-t
:使用默认编辑器打开文件 -
-F
:强制使用图形界面打开文件 -
-n
:在新窗口中打开文件 -
-W
:等待应用程序退出后再返回终端
示例:
- 打开文件
open example.txt
在默认的编辑器中打开文件example.txt
。
- 打开目录
open /usr/local
在Finder中打开/usr/local
目录。
- 指定应用程序打开文件
open -a "Visual Studio Code" example.txt
用Sublime Text应用程序打开文件example.txt
。
- 在新窗口中打开文件
open -n example.txt
在新的窗口中打开文件example.txt
。
总结:
open
命令是一个非常实用的命令,在打开文件或目录时能够提高我们的工作效率。使用该命令,我们可以快速打开文件或目录,并指定相应的参数,实现更加复杂的操作。
start
命令
是一个Windows命令行下的工具,主要用于启动文件或应用程序。下面是 start
命令的详解:
start [/wait] [/d] [/b] [/i] [/min] [/max] [] []
-
[/wait]
- 等待应用程序结束后再退出。
-
[/d]
- 指定启动程序的目录。
-
[/b]
- 在新的控制台窗口中启动应用程序。
-
[/i]
- 在当前控制台窗口中启动应用程序。
-
[/min]
- 启动应用程序时最小化窗口。
-
[/max]
- 启动应用程序时最大化窗口。
-
[]
- 指定要启动的程序或文档。
-
[]
- 启动程序时附加的参数。
例如,要打开记事本程序notepad.exe,可以使用以下命令:
start notepad.exe
如果要打开位于D盘目录的Word文档example.docx并最小化窗口,可以使用以下命令:
start /min "D:example.docx"
如果启动Word程序,打开文档example.docx,并等待Word关闭后再退出程序,则可以使用以下命令:
start /wait winword.exe "D:example.docx"
启动程序可以使用完整路径,也可以使用相对路径。对于使用相对路径的情况,操作系统会在环境变量PATH
中查找文件所在路径。如果在路径中找不到该文件,则会提示找不到该文件的错误。
在使用相对路径时,请注意当前所处目录的位置。如果要启动的程序在当前目录下,则可以直接使用文件名。如果不在当前目录下,则需要在文件名前面加上相对路径,例如..Programsmyprogram.exe
。在使用相对路径时,也可以通过设置/d
选项来指定程序所在的目录。
如果要启动的程序所在目录已经在环境变量PATH
中,那么在使用start
命令时就可以只使用程序名,而不需要指定程序的完整路径。例如,如果D:Program Files
已经在PATH
环境变量中,那么启动notepad.exe
可以使用以下命令:
start notepad.exe
node中使用child_process
在Node.js中,可以使用child_process
模块来通过命令行打开文件或者程序。具体方法如下:
- 首先在代码中引入
child_process
模块:
const { exec } = require("child_process");
- 然后使用
exec
方法来执行命令,例如打开一个txt文件:
exec("start file.txt");
这个命令会调用操作系统默认的程序来打开file.txt文件。
注意,这里的start
命令是Windows系统中的一个特殊命令,它可以启动一个外部程序,如果你要在其他操作系统上打开文件,需要查找对应的命令,比如,MacOS使用的是open
命令。
另外,如果要打开某个具体的程序,可以在命令中写上程序的完整路径,例如:
exec("start C:\Program Files\Google\Chrome\Application\chrome.exe");
这样就会启动Google Chrome浏览器。
当然,也可以通过将上面的命令写入Batch或者Shell脚本文件中,然后使用exec
来运行这个脚本文件,实现一些复杂的命令行操作。
code
命令
是一个在Linux上运行的开源代码编辑器,由Microsoft开发。它是基于Electron框架构建的,具有跨平台、轻量级和快速的特点。下面详细介绍一下code
命令的使用:
安装
要在Linux上使用code
,需要先从官网下载对应的安装包,然后根据对应的操作系统进行安装。安装完成后,就可以在终端中运行code
命令来启动编辑器。另外,在Linux上,安装code
的同时,还会自动安装一个名为code-insiders
的命令,这个命令可以用来安装和启动Visual Studio Code Insiders。
常用参数
-
-d /path
:指定程序将使用的数据目录。默认情况下,code
将使用~/.config/Code
目录作为数据目录。 -
-r
:强制从进程重新打开文件,而不是将文件附加到已有的进程中。 -
-v
:输出版本信息,并退出。 -
-h
:输出帮助信息,并退出。
常用操作
- 打开文件:
code filename
- 在指定目录中打开 Visual Studio Code:
code /path/to/directory
- 打开已经打开的 Visual Studio Code :
code -r filename
- 在 Visual Studio Code 中打开当前目录:
code .
此外,还可以通过在命令后面传递多个文件名来打开多个文件,例如:
code file1.py file2.py
这个命令将同时打开file1.py
和file2.py
这两个Python文件。
总之,code
命令是一个非常实用的代码编辑器命令,可以帮助我们快速打开和编辑代码文件。
PS:首先,为看到这里的小伙伴点个赞,你们真的很棒哦,能在百忙之中把这么长的一篇文章耐心读完,最后,希望每一位读完这篇文章的小伙伴或多或少都有一些收获吧!
本文由mdnice多平台发布
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net