一、前言
将和大家一起学习常用Linux命令的使用,让我们开始吧!
二、命令行介绍
Shell是一种命令行解释器,它是Linux系统中与用户交互的主要方式。它接收用户输入的命令,并将其转化为操作系统能够理解的指令。
Shell的主要功能包括:
命令解释:Shell能够解释用户输入的命令,并将其转化为操作系统能够执行的指令。它可以执行系统命令、应用程序、脚本等。
环境控制:Shell可以设置和管理用户的工作环境。它可以定义环境变量、别名、函数等,以便用户能够自定义和控制自己的工作环境。
文件操作:Shell提供了一系列用于文件和目录操作的命令,如创建、复制、移动、删除文件和目录等。
管道和重定向:Shell支持管道和重定向操作,使得用户可以将多个命令连接起来,实现更复杂的操作。
脚本编程:Shell是一种脚本语言,用户可以编写Shell脚本来实现自动化任务、批处理等功能。
Shell的常用命令包括:
cd:切换当前工作目录。
ls:列出当前目录下的文件和目录。
mkdir:创建新目录。
rm:删除文件或目录。
cp:复制文件或目录。
mv:移动文件或目录。
cat:查看文件内容。
grep:在文件中搜索指定的字符串。
chmod:修改文件或目录的权限。
echo:输出文本或变量的内容。
通过掌握这些常用命令,用户可以在Shell中进行基本的文件操作、系统管理和脚本编程等任务。
命令行提示符是Shell在等待用户输入命令时显示的特殊符号或字符串。它通常位于命令行的开头,用于指示用户可以输入命令。
在Linux系统中,常见的命令行提示符有两种形式:
$ 符号:这是普通用户的默认提示符。它表示当前用户是普通用户,没有超级用户权限。例如:
$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
在上面的例子中,$符号表示用户可以输入命令。用户输入了ls
命令,Shell会列出当前目录下的文件和目录。
#符号:这是超级用户(root)的默认提示符。它表示当前用户是超级用户,具有系统管理权限。例如:
# apt-get update
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]...
在上面的例子中,#符号表示用户可以输入命令。用户输入了apt-get update
命令,Shell会更新系统的软件包列表。
命令行快捷键是在Linux系统中使用命令行时,可以提高效率和便捷性的一些键盘操作。下面是一些常用的命令行快捷键:
Tab键:自动补全命令或文件名。例如,输入ls D
,然后按下Tab键,Shell会自动补全为ls Documents
。
Ctrl + C:中断当前正在执行的命令。例如,运行一个长时间执行的命令,可以按下Ctrl + C来中断它。
Ctrl + D:退出当前的Shell会话。例如,在命令行中输入exit
,然后按下Ctrl + D,会退出当前的Shell会话。
Ctrl + L:清屏,相当于执行clear
命令。例如,按下Ctrl + L会清除屏幕上的内容。
Ctrl + A:将光标移动到命令行的开头。例如,输入一段命令后,按下Ctrl + A会将光标移动到命令行的开头。
Ctrl + E:将光标移动到命令行的末尾。例如,输入一段命令后,按下Ctrl + E会将光标移动到命令行的末尾。
Ctrl + U:删除光标之前的所有字符。例如,输入一段命令后,按下Ctrl + U会删除光标之前的所有字符。
Ctrl + K:删除光标之后的所有字符。例如,输入一段命令后,按下Ctrl + K会删除光标之后的所有字符。
Ctrl + R:在历史命令中进行反向搜索。例如,按下Ctrl + R后,输入关键字,Shell会搜索并显示最近匹配的命令。
Ctrl + Z:将当前正在执行的命令放入后台,并暂停它的执行。例如,运行一个长时间执行的命令,可以按下Ctrl + Z将其放入后台。
这些命令行快捷键可以帮助用户更高效地使用命令行界面,提高工作效率。
在Linux中,命令行历史可以帮助我们快速回顾和重复之前执行过的命令。通过使用上下箭头键,我们可以在命令行中浏览历史记录,并选择要执行的命令。此外,还有一些快捷键可以帮助我们更高效地使用命令行历史。
命令行历史的快捷键:
Ctrl + R:反向搜索历史命令。按下此组合键后,可以输入关键字来搜索之前执行过的命令,并按回车键执行匹配的命令。
Ctrl + P:向上浏览历史命令。按下此组合键后,可以逐个向上浏览之前执行过的命令,并按回车键执行选择的命令。
Ctrl + N:向下浏览历史命令。按下此组合键后,可以逐个向下浏览之前执行过的命令,并按回车键执行选择的命令。
使用上箭头(↑)键可以逐步回溯之前执行的命令。例如,按上箭头键一次可以显示最近执行的命令,按两次可以显示倒数第二个执行的命令,以此类推。
使用下箭头(↓)键可以向前浏览命令历史记录。
使用history
命令可以显示最近执行的命令列表,每个命令都有一个唯一的编号。例如,使用"!n"(n为命令的编号)可以执行历史记录中的第n个命令。
假设我们之前执行过以下命令:
$ history
1 ls
2 cd Documents
3 mkdir new_folder
4 cp file.txt new_folder/
5 rm old_file.txt
$ !2cd
Documents
命令补全:
命令补全是一个非常有用的功能,它可以帮助我们自动完成命令、文件名、路径等。当我们在命令行中输入部分命令或路径时,按下Tab键可以自动补全。
命令补全的实例:
假设我们有一个名为"example.txt"的文件,我们想在命令行中输入"cat ex",然后按下Tab键来自动补全命令。
$ cat ex[TAB]
按下Tab键后,命令行会自动补全为:
$ cat example.txt
这样我们就可以快速输入命令并避免拼写错误。
ls命令用于列出当前目录下的文件和目录的内容。它是Linux中最常用的命令之一。
使用ls命令的基本语法是:
ls [选项] [文件/目录]
一些常用的选项包括:
-l:以长格式显示文件和目录的详细信息。
-a:显示所有文件和目录,包括隐藏文件。
-h:以人类可读的格式显示文件大小。
-r:以相反的顺序显示文件和目录。
-t:按修改时间排序文件和目录。
下面是一些ls命令的实际用例和执行结果:
列出当前目录下的文件和目录:
$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
以长格式显示当前目录下的文件和目录:
$ ls -l
drwxr-xr-x 2 user user 4096 Sep 10 10:00 Desktop
drwxr-xr-x 2 user user 4096 Sep 10 10:01 Documents
drwxr-xr-x 2 user user 4096 Sep 10 10:02 Downloads
drwxr-xr-x 2 user user 4096 Sep 10 10:03 Music
drwxr-xr-x 2 user user 4096 Sep 10 10:04 Pictures
drwxr-xr-x 2 user user 4096 Sep 10 10:05 Public
drwxr-xr-x 2 user user 4096 Sep 10 10:06 Templates
drwxr-xr-x 2 user user 4096 Sep 10 10:07 Videos
显示所有文件和目录,包括隐藏文件:
$ ls -a
. .. .bashrc Desktop Documents Downloads Music Pictures Public Templates Videos
以人类可读的格式显示文件大小:
$ ls -lh
drwxr-xr-x 2 user user 4.0K Sep 10 10:00 Desktop
drwxr-xr-x 2 user user 4.0K Sep 10 10:01 Documents
drwxr-xr-x 2 user user 4.0K Sep 10 10:02 Downloads
drwxr-xr-x 2 user user 4.0K Sep 10 10:03 Music
drwxr-xr-x 2 user user 4.0K Sep 10 10:04 Pictures
drwxr-xr-x 2 user user 4.0K Sep 10 10:05 Public
drwxr-xr-x 2 user user 4.0K Sep 10 10:06 Templates
drwxr-xr-x 2 user user 4.0K Sep 10 10:07 Videos
cd命令用于切换当前工作目录。它是Linux中常用的命令之一。
使用cd命令的基本语法是:
cd [目录路径]
下面是一些cd命令的实际用例和执行结果:
切换到用户主目录:
$ cd
切换到指定目录:
$ cd /path/to/directory
切换到上一级目录:
$ cd ..
切换到上次所在的目录:
$ cd -
下面是一个实际用例,展示了cd命令的使用和执行结果:
$ pwd
/home/user/Documents
$ cd /home/user/Desktop
$ pwd
/home/user/Desktop
pwd命令用于显示当前工作目录的路径。它是Linux中常用的命令之一。
使用pwd命令的基本语法是:
pwd
下面是一个pwd命令的实际用例和执行结果:
$ pwd
/home/user/Documents
mkdir命令用于在Linux系统中创建新的目录。
使用mkdir命令的基本语法是:
mkdir [选项] 目录名
一些常用的选项包括:
-p:递归创建目录,如果父级目录不存在也会创建。
-m:设置新创建目录的权限。
下面是一些mkdir命令的实际用例和执行结果:
创建一个名为"mydir"的目录:
$ mkdir mydir
创建多个目录,包括父级目录:
$ mkdir -p parent/child/grandchild
创建目录并设置权限:
$ mkdir -m 755 mydir
下面是一个实际用例,展示了mkdir命令的使用和执行结果:
$ ls
file1.txt file2.txt
$ mkdir mydir
$ ls
file1.txt file2.txt mydir
rm命令用于删除文件和目录。请注意,在使用rm命令删除文件和目录时要小心,因为删除的操作是不可逆的。
使用rm命令的基本语法是:
rm [选项] 文件/目录
一些常用的选项包括:
-r:递归删除目录及其内容。
-f:强制删除,不提示确认。
-i:交互式删除,删除前提示确认。
下面是一些rm命令的实际用例和执行结果:
删除一个文件:
$ rm file.txt
删除一个目录及其内容:
$ rm -r mydir
强制删除一个文件,不提示确认:
$ rm -f file.txt
交互式删除一个文件,删除前提示确认:
$ rm -i file.txt
下面是一个实际用例,展示了rm命令的使用和执行结果:
$ ls
file1.txt file2.txt mydir
$ rm file1.txt
$ ls
file2.txt mydir
$ rm -r mydir
$ ls
file2.txt
cp命令用于复制文件和目录。
使用cp命令的基本语法是:
cp [选项] 源文件 目标文件/目录
一些常用的选项包括:
-r:递归复制目录及其内容。
-i:交互式复制,复制前提示确认。
-v:显示详细的复制过程。
下面是一些cp命令的实际用例和执行结果:
复制一个文件到指定目录:
$ cp file.txt /path/to/directory/
复制一个目录及其内容到指定目录:
$ cp -r mydir/ /path/to/directory/
交互式复制一个文件,复制前提示确认:
$ cp -i file.txt /path/to/directory/
显示详细的复制过程:
$ cp -v file.txt /path/to/directory/
下面是一个实际用例,展示了cp命令的使用和执行结果:
$ ls
file1.txt file2.txt
$ cp file1.txt file3.txt
$ ls
file1.txt file2.txt file3.txt
$ cp -r mydir/ mydir_backup/
$ ls mydir_backup/
file1.txt file2.txt
mv命令用于移动和重命名文件和目录。
使用mv命令的基本语法是:
mv [选项] 源文件/目录 目标文件/目录
一些常用的选项包括:
-i:交互式移动,移动前提示确认。
-v:显示详细的移动过程。
下面是一些mv命令的实际用例和执行结果:
移动一个文件到指定目录:
$ mv file.txt /path/to/directory/
重命名一个文件:
$ mv oldname.txt newname.txt
移动一个目录到指定目录:
$ mv mydir/ /path/to/directory/
交互式移动一个文件,移动前提示确认:
$ mv -i file.txt /path/to/directory/
下面是一个实际用例,展示了mv命令的使用和执行结果:
$ ls
file1.txt file2.txt
$ mv file1.txt file3.txt
$ ls
file2.txt file3.txt
$ mv mydir/ mydir_backup/
$ ls mydir_backup/
file1.txt file2.txt
四、文件查看和编辑
cat命令用于查看文件的内容。
使用cat命令的基本语法是:
cat [选项] 文件
一些常用的选项包括:
-n:显示行号。
-b:显示非空行的行号。
-s:合并多个空行为一个空行。
下面是一些cat命令的实际用例和执行结果:
查看一个文件的内容:
$ cat file.txt
显示文件内容并显示行号:
$ cat -n file.txt
显示文件内容并合并多个空行:
$ cat -s file.txt
下面是一个实际用例,展示了cat命令的使用和执行结果:
$ cat file.txt
This is the content of the file.
$ cat -n file.txt
1 This is the content of the file.
$ cat -s file.txt
This is the content of the file.
less命令用于分页查看文件的内容。
使用less命令的基本语法是:
less [选项] 文件
一些常用的选项包括:
-N:显示行号。
-S:禁止换行显示长行。
-F:自动退出,当显示完文件内容后。
下面是一些less命令的实际用例和执行结果:
分页查看一个文件的内容:
$ less file.txt
显示文件内容并显示行号:
$ less -N file.txt
显示文件内容并禁止换行显示长行:
$ less -S file.txt
下面是一个实际用例,展示了less命令的使用和执行结果:
$ less file.txt
This is the content of the file.
It has multiple lines.
And some long lines that may need to be wrapped.
$ less -N file.txt
1 This is the content of the file.
2 It has multiple lines.
3 And some long lines that may need to be wrapped.
$ less -S file.txt
This is the content of the file.
It has multiple lines.
And some long lines that may need to be wrapped.
head命令用于查看文件的开头部分内容。
使用head命令的基本语法是:
head [选项] 文件
一些常用的选项包括:
-n:指定要显示的行数,默认为前10行。
下面是一些head命令的实际用例和执行结果:
查看一个文件的前10行内容:
$ head file.txt
查看一个文件的前5行内容:
$ head -n 5 file.txt
下面是一个实际用例,展示了head命令的使用和执行结果:
$ head file.txt
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
This is line 6.
This is line 7.
This is line 8.
This is line 9.
This is line 10.
$ head -n 5 file.txt
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
tail命令用于查看文件的结尾部分内容。
使用tail命令的基本语法是:
tail [选项] 文件
一些常用的选项包括:
-n:指定要显示的行数,默认为后10行。
-f:实时追踪文件的新增内容。
下面是一些tail命令的实际用例和执行结果:
查看一个文件的后10行内容:
$ tail file.txt
查看一个文件的后5行内容:
$ tail -n 5 file.txt
实时追踪一个文件的新增内容:
$ tail -f file.txt
下面是一个实际用例,展示了tail命令的使用和执行结果:
$ tail file.txt
This is line 91.
This is line 92.
This is line 93.
This is line 94.
This is line 95.
This is line 96.
This is line 97.
This is line 98.
This is line 99.
This is line 100.
$ tail -n 5 file.txt
This is line 96.
This is line 97.
This is line 98.
This is line 99.
This is line 100.
$ tail -f file.txt
This is line 101.
This is line 102.
This is line 103.
vi/vim是Linux中常用的文本编辑器,用于创建和编辑文本文件。
使用vi/vim的基本用法如下:
vi 文件名
打开文件后,可以使用以下命令进行编辑:
i:进入插入模式,可以输入文本。
Esc:退出插入模式,进入命令模式。
:wq:保存并退出文件。
:q!:放弃修改并强制退出文件。
下面是一个实际用例,展示了vi/vim的使用和执行结果:
$ vi file.txt
打开文件后,进入插入模式,可以输入文本。输入以下内容
This is line 1.
This is line 2.
This is line 3.
按下Esc键,进入命令模式。输入以下命令:
:wq
保存并退出文件。执行结果如下:
"file.txt" 3L, 38C written
五、文件权限和所有权
chmod命令用于修改文件或目录的权限。
使用chmod命令的基本语法是:
chmod [选项] 权限 文件/目录
一些常用的选项包括:
-R:递归地修改目录及其子目录下的文件权限。
权限可以使用数字或符号表示,其中数字表示法如下:
0:没有权限。
1:执行权限。
2:写权限。
4:读权限。
下面是一些chmod命令的实际用例和执行结果:
修改文件的权限为读写执行:
$ chmod 777 file.txt
修改目录及其子目录下的文件权限为只读:
$ chmod -R 444 directory/
下面是一个实际用例,展示了chmod命令的使用和执行结果:
$ ls -l file.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt
$ chmod 777 file.txt
$ ls -l file.txt
-rwxrwxrwx 1 user group 0 Jan 1 00:00 file.txt
$ ls -l directory/
-rw-r--r-- 1 user group 0 Jan 1 00:00 directory/file1.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 directory/file2.txt
$ chmod -R 444 directory/
$ ls -l directory/
-r--r--r-- 1 user group 0 Jan 1 00:00 directory/file1.txt
-r--r--r-- 1 user group 0 Jan 1 00:00 directory/file2.txt
chown命令用于修改文件或目录的所有者。
使用chown命令的基本语法是:
chown [选项] 所有者 文件/目录
一些常用的选项包括:
-R:递归地修改目录及其子目录下的所有者。
所有者可以使用用户名或用户ID表示。
下面是一些chown命令的实际用例和执行结果:
修改文件的所有者为特定用户:
$ chown user file.txt
修改目录及其子目录下的所有者为特定用户:
$ chown -R user directory/
下面是一个实际用例,展示了chown命令的使用和执行结果:
$ ls -l file.txt
-rw-r--r-- 1 olduser group 0 Jan 1 00:00 file.txt
$ chown user file.txt
$ ls -l file.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt
$ ls -l directory/
-rw-r--r-- 1 olduser group 0 Jan 1 00:00 directory/file1.txt
-rw-r--r-- 1 olduser group 0 Jan 1 00:00 directory/file2.txt
$ chown -R user directory/
$ ls -l directory/
-rw-r--r-- 1 user group 0 Jan 1 00:00 directory/file1.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 directory/file2.txt
chgrp命令用于修改文件或目录的所属组。
使用chgrp命令的基本语法是:
chgrp [选项] 组名 文件/目录
一些常用的选项包括:
-R:递归地修改目录及其子目录下的所属组。
组名可以使用组名或组ID表示。
下面是一些chgrp命令的实际用例和执行结果:
修改文件的所属组为特定组:
$ chgrp group file.txt
修改目录及其子目录下的所属组为特定组:
$ chgrp -R group directory/
下面是一个实际用例,展示了chgrp命令的使用和执行结果:
$ ls -l file.txt
-rw-r--r-- 1 user oldgroup 0 Jan 1 00:00 file.txt
$ chgrp group file.txt
$ ls -l file.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt
$ ls -l directory/
-rw-r--r-- 1 user oldgroup 0 Jan 1 00:00 directory/file1.txt
-rw-r--r-- 1 user oldgroup 0 Jan 1 00:00 directory/file2.txt
$ chgrp -R group directory/
$ ls -l directory/
-rw-r--r-- 1 user group 0 Jan 1 00:00 directory/file1.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 directory/file2.tx
六、进程管理
ps命令用于查看当前系统中运行的进程状态。
使用ps命令的基本语法是:
ps [选项]
一些常用的选项包括:
-e:显示所有进程,包括其他用户的进程。
-f:显示完整的进程信息。
-u 用户名:显示指定用户的进程。
下面是一些ps命令的实际用例和执行结果:
显示所有进程的状态:
$ ps -e
显示完整的进程信息:
$ ps -f
显示指定用户的进程
$ ps -u username
下面是一个实际用例,展示了ps命令的使用和执行结果:
$ ps -e
PID TTY TIME CMD
123 tty1 00:00:01 bash
456 pts/0 00:00:00 sshd
789 pts/0 00:00:00 bash
987 pts/0 00:00:00 ps
$ ps -f
UID PID PPID C STIME TTY TIME CMD
user 123 456 0 09:00 tty1 00:00:01 bash
user 456 789 0 09:01 pts/0 00:00:00 sshd
user 789 987 0 09:02 pts/0 00:00:00 bash
user 987 789 0 09:03 pts/0 00:00:00 ps -f
$ ps -u user
PID TTY TIME CMD
123 tty1 00:00:01 bash
456 pts/0 00:00:00 sshd
789 pts/0 00:00:00 bash
987 pts/0 00:00:00 ps
top命令用于实时查看系统中运行的进程和系统资源的使用情况。
使用top命令的基本语法是:
top
在top界面中,您可以看到各个进程的相关信息,如进程ID(PID)、CPU使用率、内存使用量等。
下面是一个实际用例,展示了top命令的使用和执行结果:
top - 09:00:00 up 1 day, 1:23, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 2000.0 total, 1500.0 free, 500.0 used, 0.0 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1500.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
123 user 20 0 100.0m 50.0m 10.0m R 0.0 2.5 0:01.00 process1
456 user 20 0 200.0m 75.0m 20.0m S 0.0 3.8 0:02.00 process2
789 user 20 0 150.0m 60.0m 15.0m S 0.0 3.0 0:03.00 process3
在上面的例子中,top命令显示了系统的运行时间、任务数量、CPU使用率、内存使用情况以及各个进程的相关信息。您可以通过top命令实时查看系统进程的状态和资源的使用情况。
kill命令用于终止正在运行的进程。
使用kill命令的基本语法是:
kill [选项] 进程ID
一些常用的选项包括:
-9:强制终止进程。
下面是一些kill命令的实际用例和执行结果:
终止指定进程:
$ kill 进程ID
强制终止指定进程:
$ kill -9 进程ID
下面是一个实际用例,展示了kill命令的使用和执行结果:
$ ps -ef | grep process
user 1234 1 0 09:00 ? 00:00:01 process1
user 5678 1 0 09:01 ? 00:00:02 process2
user 9012 1 0 09:02 ? 00:00:03 process3
$ kill 1234
$ ps -ef | grep process
user 5678 1 0 09:01 ? 00:00:02 process2
user 9012 1 0 09:02 ? 00:00:03 process3
$ kill -9 5678
$ ps -ef | grep process
user 9012 1 0 09:02 ? 00:00:03 process
七、系统信息和硬件查看
uname命令用于查看系统的信息。
使用uname命令的基本语法是:
uname [选项]
一些常用的选项包括:
-a:显示所有系统信息。
-s:显示内核名称。
-r:显示内核版本。
-m:显示机器硬件名称。
下面是一些uname命令的实际用例和执行结果:
显示所有系统信息:
$ uname -a
显示内核名称:
$ uname -s
显示内核版本:
$ uname -r
显示机器硬件名称:
$ uname -m
下面是一个实际用例,展示了uname命令的使用和执行结果:
$ uname -a
Linux myserver 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 GNU/Linux
$ uname -s
Linux
$ uname -r
4.15.0-54-generic
$ uname -m
x86_64
df命令用于查看磁盘空间的使用情况。
使用df命令的基本语法是:
df [选项] [文件/目录]
一些常用的选项包括:
-h:以人类可读的方式显示磁盘空间。
-T:显示文件系统类型。
下面是一些df命令的实际用例和执行结果:
查看所有文件系统的磁盘空间使用情况:
$ df
以人类可读的方式显示磁盘空间使用情况:
$ df -h
查看指定文件/目录所在的文件系统的磁盘空间使用情况:
$ df 文件/目录
下面是一个实际用例,展示了df命令的使用和执行结果:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 1048576 123456 924120 12% /
tmpfs 512000 0 512000 0% /tmp
/dev/sdb1 2097152 987654 1109498 48% /data
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1.0G 120M 900M 12% /
tmpfs 500M 0 500M 0% /tmp
/dev/sdb1 2.0G 955M 1.1G 48% /data
$ df /data
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 2097152 987654 1109498 48% /data
free命令用于查看系统的内存使用情况。
使用free命令的基本语法是:
free [选项]
一些常用的选项包括:
-h:以人类可读的方式显示内存大小。
-t:显示总内存使用情况。
下面是一些free命令的实际用例和执行结果:
查看系统的内存使用情况:
$ free
以人类可读的方式显示内存大小:
$ free -h
显示总内存使用情况:
$ free -t
下面是一个实际用例,展示了free命令的使用和执行结果:
$ free
total used free shared buff/cache available
Mem: 2000000 500000 1500000 10000 500000 1400000
Swap: 0 0 0
$ free -h
total used free shared buff/cache available
Mem: 2.0G 500M 1.5G 10M 500M 1.4G
Swap: 0B 0B 0B
$ free -t
total used free shared buff/cache available
Mem: 2000000 500000 1500000 10000 500000 1400000
Swap: 0 0 0
Total: 2000000 500000 1500000
lspci命令用于查看PCI设备的信息。
使用lspci命令的基本语法是:
lspci [选项]
一些常用的选项包括:
-v:显示详细信息。
-nn:显示设备的PCI ID。
下面是一些lspci命令的实际用例和执行结果:
查看所有PCI设备的信息,以便了解硬件配置和设备驱动情况:
$ lspci
显示详细信息:
$ lspci -v
显示设备的PCI ID:
$ lspci -nn
下面是一个实际用例,展示了lspci命令的使用和执行结果:
$ lspci
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Desktop 9 Series) (rev 02)
...
$ lspci -v
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 07)
Subsystem: Dell Device 07be
Flags: bus master, fast devsel, latency 0
Capabilities: [e0] Vendor Specific Information: Len=10 >
Kernel driver in use: skl_uncore
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 07) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0, IRQ 122
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 0000e000-0000efff
Memory behind bridge: f6000000-f70fffff
Prefetchable memory behind bridge: 00000000e0000000-00000000f1ffffff
Capabilities: [88] Subsystem: Dell Device 07be
Capabilities: [80] Power Management version 3
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [a0] Express Root Port (Slot+), MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [140] Root Complex Link
Kernel driver in use: pcieport
...
$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers [8086:3ec2] (rev 07)
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 07)
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Desktop 9 Series) [8086:3e92] (rev 02)
...
八、网络管理
ifconfig命令用于配置和查看网络接口的信息。
使用ifconfig命令的基本语法是:
ifconfig [网络接口] [选项]
一些常用的选项包括:
up:启用网络接口。
down:禁用网络接口。
inet:显示IPv4地址。
inet6:显示IPv6地址。
下面是一些ifconfig命令的实际用例和执行结果:
查看所有网络接口的信息:
$ ifconfig
启用网络接口:
$ ifconfig [网络接口] up
禁用网络接口:
$ ifconfig [网络接口] down
显示指定网络接口的IPv4地址:
$ ifconfig [网络接口] inet
显示指定网络接口的IPv6地址:
$ ifconfig [网络接口] inet6
下面是一个实际用例,展示了ifconfig命令的使用和执行结果:
$ ifconfig
eth0: flags=4163 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe5a:9e5a prefixlen 64 scopeid 0x20
ether 08:00:27:5a:9e:5a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在上面的例子中,执行ifconfig
命令可以显示所有网络接口的信息,包括接口名称、IPv4地址、IPv6地址等。通过执行ifconfig [网络接口] up
命令,可以启用指定的网络接口。执行ifconfig [网络接口] down
命令可以禁用指定的网络接口。执行ifconfig [网络接口] inet
命令可以显示指定网络接口的IPv4地址。执行ifconfig [网络接口] inet6
命令可以显示指定网络接口的IPv6地址。
ping命令用于测试网络连通性。
使用ping命令的基本语法是:
ping [选项] 目标主机
一些常用的选项包括:
-c:指定发送的ICMP请求次数。
-i:指定发送ICMP请求的时间间隔。
下面是一些ping命令的实际用例和执行结果:
测试与目标主机的连通性:
$ ping 目标主机
指定发送的ICMP请求次数:
$ ping -c 次数 目标主机
指定发送ICMP请求的时间间隔:
$ ping -i 时间间隔 目标主机
下面是一个实际用例,展示了ping命令的使用和执行结果:
$ ping www.example.com
PING www.example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=10.2 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=9.8 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.9 ms
...
$ ping -c 5 www.example.com
PING www.example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=10.2 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=9.8 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.9 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=56 time=10.1 ms
64 bytes from 93.184.216.34: icmp_seq=5 ttl=56 time=9.7 ms
--- www.example.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 9.7/9.9/10.2/0.18 ms
在上面的例子中,执行ping
命令可以测试与目标主机的连通性,并显示每个ICMP请求的响应时间。通过执行ping -c 5 www.example.com
命令,可以指定发送5个ICMP请求,并显示统计信息,如发送和接收的数据包数量、丢包率以及往返时间的最小、平均、最大和标准差等。
netstat命令用于查看网络连接和统计信息。
使用netstat命令的基本语法是:
netstat [选项]
一些常用的选项包括:
-a:显示所有连接和监听端口。
-t:显示TCP连接。
-u:显示UDP连接。
-n:以数字形式显示IP地址和端口号。
下面是一些netstat命令的实际用例和执行结果:
显示所有连接和监听端口:
$ netstat -a
显示TCP连接:
$ netstat -t
显示UDP连接:
$ netstat -u
以数字形式显示IP地址和端口号:
$ netstat -n
下面是一个实际用例,展示了netstat命令的使用和执行结果:
$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:22 192.168.1.101:12345 ESTABLISHED
udp 0 0 0.0.0.0:68 0.0.0.0:*
$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.100:22 192.168.1.101:12345 ESTABLISHED
$ netstat -u
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:68 0.0.0.0:*
$ netstat -n
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:22 192.168.1.101:12345 ESTABLISHED
udp 0 0 0.0.0.0:68 0.0.0.0:*
执行netstat -a
命令可以显示所有连接和监听端口的信息。通过执行netstat -t
命令,可以显示TCP连接的信息。执行netstat -u
命令可以显示UDP连接的信息。执行netstat -n
命令可以以数字形式显示IP地址和端口号。
九、压缩和解压
tar命令用于打包和解包文件。
使用tar命令的基本语法是:
tar [选项] 文件名/目录名
一些常用的选项包括:
-c:创建新的归档文件。
-x:解包归档文件。
-v:显示详细信息。
-f:指定归档文件名。
下面是一些tar命令的实际用例和执行结果:
创建新的归档文件:
$ tar -cvf 归档文件名.tar 文件名/目录名
解包归档文件:
$ tar -xvf 归档文件名.tar
显示详细信息:
$ tar -tvf 归档文件名.tar
解包到指定目录:
$ tar -xvf 归档文件名.tar -C 目标目录
下面是一个实际用例,展示了tar命令的使用和执行结果:
$ tar -cvf archive.tar file1.txt file2.txt
file1.txt
file2.txt
$ tar -xvf archive.tar
file1.txt
file2.txt
$ tar -tvf archive.tar
-rw-r--r-- 0 user group 10 Jan 1 00:00 file1.txt
-rw-r--r-- 0 user group 20 Jan 1 00:00 file2.txt
$ tar -xvf archive.tar -C /tmp
file1.txt
file2.txt
gzip命令用于压缩和解压缩文件。
使用gzip命令的基本语法是:
gzip [选项] 文件名
一些常用的选项包括:
-c:将压缩的文件输出到标准输出。
-d:解压缩文件。
-v:显示详细信息。
下面是一些gzip命令的实际用例和执行结果:
压缩文件:
$ gzip 文件名
将压缩的文件输出到标准输出:
$ gzip -c 文件名 > 压缩文件名.gz
解压缩文件:
$ gzip -d 压缩文件名.gz
显示详细信息:
$ gzip -v 文件名
下面是一个实际用例,展示了gzip命令的使用和执行结果:
$ gzip file.txt
$ ls
file.txt.gz
$ gzip -c file.txt > file.txt.gz
$ ls
file.txt file.txt.gz
$ gzip -d file.txt.gz
$ ls
file.txt
$ gzip -v file.txt
file.txt: 9.5% -- replaced with file.txt.gz
zip命令用于创建和解压ZIP文件。
使用zip命令的基本语法是:
zip [选项] 压缩文件名.zip 文件名/目录名
一些常用的选项包括:
-r:递归地压缩目录及其子目录中的文件。
-d:从ZIP文件中删除指定的文件。
-v:显示详细信息。
下面是一些zip命令的实际用例和执行结果:
创建ZIP文件:
$ zip 压缩文件名.zip 文件名/目录名
递归地压缩目录及其子目录中的文件:
$ zip -r 压缩文件名.zip 目录名
从ZIP文件中删除指定的文件:
$ zip -d 压缩文件名.zip 文件名
显示详细信息:
$ zip -v 压缩文件名.zip
下面是一个实际用例,展示了zip命令的使用和执行结果:
$ zip archive.zip file1.txt file2.txt
adding: file1.txt (stored 0%)
adding: file2.txt (stored 0%)
$ zip -r archive.zip directory
adding: directory/file1.txt (stored 0%)
adding: directory/file2.txt (stored 0%)
adding: directory/subdirectory/file3.txt (stored 0%)
$ zip -d archive.zip file1.txt
deleting: file1.txt
$ zip -v archive.zip
Archive: archive.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
0 Stored 0 0% 00-00-0000 00:00 00000000 file2.txt
-------- ------- --- -------
0 0 0% 2 file
十、用户和组管理
useradd命令用于在Linux系统中添加用户。
使用useradd命令的基本语法是:
useradd [选项] 用户名
一些常用的选项包括:
-m:创建用户的同时创建用户的家目录。
-s:指定用户的登录Shell。
-g:指定用户所属的初始组。
-G:指定用户所属的附加组。
下面是一个实际用例,展示了useradd命令的使用和执行结果:
$ sudo useradd -m -s /bin/bash -g users -G sudo,journalctl newuser
在上面的例子中,执行sudo useradd -m -s /bin/bash -g users -G sudo,journalctl newuser
命令可以创建一个名为newuser的用户。选项-m表示同时创建用户的家目录,-s指定用户的登录Shell为/bin/bash,-g指定用户所属的初始组为users,-G指定用户所属的附加组为sudo和journalctl。
执行命令后,可以通过以下命令验证用户是否成功创建:
$ id newuser
uid=1001(newuser) gid=100(users) groups=100(users),27(sudo),190(journalctl)
通过执行id newuser
命令,可以查看newuser用户的用户ID(uid)、初始组ID(gid)以及附加组ID(groups)。
passwd命令用于修改用户的密码。
使用passwd命令的基本语法是:
passwd [选项] 用户名
一些常用的选项包括:
-l:锁定用户的密码,禁止用户登录。
-u:解锁用户的密码,允许用户登录。
-d:删除用户的密码,允许无密码登录。
-e:强制用户在下次登录时修改密码。
下面是一个实际用例,展示了passwd命令的使用和执行结果:
$ sudo passwd newuser
在上面的例子中,执行sudo passwd newuser
命令可以修改名为newuser的用户的密码。命令执行后,会提示您输入新的密码,并要求您再次确认密码。
执行命令后,可以通过以下命令验证密码是否成功修改:
$ sudo su - newuser
$ whoami
newuser
groupadd命令用于在Linux系统中添加用户组。
使用groupadd命令的基本语法是:
groupadd [选项] 组名
一些常用的选项包括:
-g:指定用户组的GID(组ID)。
-r:创建一个系统用户组。
下面是一个实际用例,展示了groupadd命令的使用和执行结果:
$ sudo groupadd newgroup
在上面的例子中,执行sudo groupadd newgroup
命令可以创建一个名为newgroup的用户组。
执行命令后,可以通过以下命令验证用户组是否成功创建:
$ cat /etc/group | grep newgroup
newgroup:x:1001:
usermod命令用于修改用户的属性。
使用usermod命令的基本语法是:
usermod [选项] 用户名
一些常用的选项包括:
-l:修改用户名。
-d:修改用户的家目录。
-s:修改用户的登录Shell。
-g:修改用户所属的初始组。
-G:修改用户所属的附加组。
下面是一个实际用例,展示了usermod命令的使用和执行结果:
$ sudo usermod -l newname oldname
在上面的例子中,执行sudo usermod -l newname oldname
命令可以将名为oldname的用户的用户名修改为newname。
执行命令后,可以通过以下命令验证用户名是否成功修改:
$ id newname
uid=1001(newname) gid=100(users) groups=100(users),27(sudo),190(journalctl)
通过执行id newname
命令,可以查看newname用户的用户ID(uid)、初始组ID(gid)以及附加组ID(groups)。
通过usermod命令,您可以方便地修改用户的属性,如用户名、家目录、登录Shell以及所属的组。这样可以灵活地管理和调整用户的配置。
十一、总结
学习Linux常用的命令,这些常用命令在日常工作和学习中都会遇到的,先对这些命令有个概念和印象,不用刻意死记硬背,在后续的章节还会有更多的命令等我们去学习.