linux最全基础入门命令(简单明了建议收藏)

Linux是一种开源的操作系统,它有许多强大的命令行工具,可以让用户对系统进行各种操作和管理。本文将介绍一些Linux最常见最全的命令,以及它们的用法和示例。

目录

  • ls:用于列出目录中的文件和子目录
  • cd:用于切换当前工作目录
  • pwd:于显示当前工作目录的绝对路径
  • cp:用于复制文件或目录
  • mv:用于移动或重命名文件或目录
  • rm:用于删除文件或目录
  • mkdir:用于创建新的目录
  • rmdir:用于删除空的目录
  • cat:用于显示或连接文件的内容
  • echo:用于输出指定的字符串或变量
  • grep:用于在文件或输入中搜索匹配的字符串
  • find:用于在目录中查找文件或目录
  • ps:用于显示当前进程的信息
  • kill:用于终止指定的进程
  • ping:用于测试网络连通性
  • ssh:用于远程登录到另一台主机
  • scp:用于在本地和远程主机之间复制文件
  • curl:用于从或向服务器传输数据
  • gzip:用于压缩和解压缩文件
  • tar:用于创建或解压缩归档文件
  • chmod:用于修改文件或目录的权限
  • chown:用于修改文件或目录的所有者和组
  • df:用于显示磁盘空间的使用情况
  • du:用于显示文件或目录的大小
  • top:用于显示系统的资源占用情况
  • free:用于显示内存的使用情况
  • date:用于显示或设置系统的日期和时间
  •  awk:用于对文本进行处理
  • sed:用于对文本进行编辑
  • touch:用于创建空文件或者修改文件的访问和修改时间
  • uname:用于获取操作系统的基本信息
  • head:用于从文件顶部返回指定行数
  • tail:用于从文件底部返回指定行数
  • ifconfig:用于显示或配置网络接口信息
  • netstat:用于显示网络连接和路由表的信息
  • route:用于显示和修改网络路由表
  • traceroute:用于显示数据包到达目的地的路径
  • wget:用于从互联网直接下载文件
  • ufw:用于管理防火墙
  • apt、pacman、yum、rpm:管理软件包的工具
  • apt
  • pacman
  • yum
  • useradd:创建新用户
  • usermod:修改现有用户
  • groupadd:创建新用户组
  • groupmod:修改现有用户组
  • sudo:超级用户身份

 

ls:用于列出目录中的文件和子目录

ls命令用于列出目录中的文件和子目录,它有许多选项可以控制输出的格式和内容。常用的选项有:

  • -a:显示所有文件,包括隐藏文件(以.开头的文件)
  • -l:显示详细信息,包括文件的权限,所有者,组,大小,修改时间等
  • -h:以可读的格式显示文件的大小,例如KB,MB,GB等
  • -S:按文件的大小排序
  • -t:按文件的修改时间排序
  • -r:反向排序
  • -d:只显示目录,而不是目录中的内容

示例:

# 列出当前目录中的文件和子目录,不包括隐藏文件
$ ls
Desktop  Documents  Downloads  Music  Pictures  Videos

# 列出当前目录中的所有文件和子目录,包括隐藏文件,以及详细信息
$ ls -a -l
total 32
drwxr-xr-x  7 alice alice 4096 Nov 14 21:51 .
drwxr-xr-x  3 root  root  4096 Nov 14 21:51 ..
-rw-------  1 alice alice  230 Nov 14 21:51 .bash_history
drwx------  3 alice alice 4096 Nov 14 21:51 .config
drwxr-xr-x  2 alice alice 4096 Nov 14 21:51 Desktop
drwxr-xr-x  2 alice alice 4096 Nov 14 21:51 Documents
drwxr-xr-x  2 alice alice 4096 Nov 14 21:51 Videos

# 列出当前目录中的所有文件和子目录,包括隐藏文件,以及详细信息,以可读的格式显示文件的大小,按文件的大小排序,反向排序
$ ls -a -l -h -S -r
total 32K
drwxr-xr-x  2 alice alice 4.0K Nov 14 21:51 Videos
drwxr-xr-x  2 alice alice 4.0K Nov 14 21:51 Desktop
drwx------  3 alice alice 4.0K Nov 14 21:51 .config
drwxr-xr-x  7 alice alice 4.0K Nov 14 21:51 .
drwxr-xr-x  3 root  root  4.0K Nov 14 21:51 ..

# 列出当前目录中的所有目录,不包括隐藏目录
$ ls -d */
Desktop/  Documents/  Downloads/  Music/  Pictures/  Videos/

cd:用于切换当前工作目录

cd命令用于切换当前工作目录,它可以接受一个参数,表示要切换到的目录的路径。路径可以是绝对路径,也可以是相对路径。常用的特殊路径有:

  • .:表示当前目录
  • ..:表示上一级目录
  • ~:表示用户的主目录
  • -:表示上一次访问的目录

示例:

# 切换到用户的主目录
$ cd ~
$ pwd
/home/alice

# 切换到Desktop目录
$ cd Desktop
$ pwd
/home/alice/Desktop

# 切换到上一级目录
$ cd ..
$ pwd
/home/alice

# 切换到上一次访问的目录
$ cd -
$ pwd
/home/alice/Desktop

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

pwd命令用于显示当前工作目录的绝对路径,它没有参数。示例:

# 显示当前工作目录的绝对路径
$ pwd
/home/alice/Desktop

cp:用于复制文件或目录

cp命令用于复制文件或目录,它可以接受两个或多个参数,表示要复制的源文件或目录,以及要复制到的目标文件或目录。常用的选项有:

  • -r:递归复制目录及其内容
  • -i:在覆盖已存在的文件时提示用户确认
  • -v:显示复制的过程

示例:

# 复制文件file1.txt到文件file2.txt
$ cp file1.txt file2.txt
$ ls
file1.txt  file2.txt

# 复制目录dir1及其内容到目录dir2,如果dir2不存在,则创建之
$ cp -r dir1 dir2
$ ls
dir1  dir2

# 复制多个文件file1.txt和file2.txt到目录dir1
$ cp file1.txt file2.txt dir1
$ ls dir1
file1.txt  file2.txt

# 复制文件file1.txt到文件file2.txt,如果file2.txt已存在,则提示用户确认
$ cp -i file1.txt file2.txt
cp: overwrite 'file2.txt'? y
$ ls
file1.txt  file2.txt

# 复制目录dir1及其内容到目录dir2,显示复制的过程
$ cp -r -v dir1 dir2
'dir1' -> 'dir2'
'dir1/file1.txt' -> 'dir2/file1.txt'
'dir1/file2.txt' -> 'dir2/file2.txt'
$ ls
dir1  dir2

mv:用于移动或重命名文件或目录

mv命令用于移动或重命名文件或目录,它可以接受两个或多个参数,表示要移动或重命名的源文件或目录,以及要移动到或重命名为的目标文件或目录。常用的选项有:

  • -i:在覆盖已存在的文件时提示用户确认
  • -v:显示移动或重命名的过程

示例:

# 重命名文件file1.txt为file2.txt
$ mv file1.txt file2.txt
$ ls
file2.txt

# 移动文件file2.txt到目录dir1
$ mv file2.txt dir1
$ ls
dir1

# 移动目录dir1到目录dir2,如果dir2不存在,则创建之
$ mv dir1 dir2
$ ls
dir2

# 移动多个文件file1.txt和file2.txt到目录dir1
$ mv file1.txt file2.txt dir1
$ ls dir1
file1.txt  file2.txt

# 重命名文件file1.txt为file2.txt,如果file2.txt已存在,则提示用户确认
$ mv -i file1.txt file2.txt
mv: overwrite 'file2.txt'? y
$ ls
file2.txt

# 移动目录dir1到目录dir2,显示移动的过程
$ mv -v dir1 dir2
'dir1' -> 'dir2'
$ ls
dir2

rm:用于删除文件或目录

rm命令用于删除文件或目录,它可以接受一个或多个参数,表示要删除的文件或目录。常用的选项有:

  • -r:递归删除目录及其内容
  • -i:在删除文件或目录时提示用户确认
  • -v:显示删除的过程
  • -f:强制删除文件或目录,不提示用户确认

示例:

# 删除文件file1.txt
$ rm file1.txt

# 删除目录dir1及其内容
$ rm -r dir1

# 删除多个文件file1.txt和file2.txt
$ rm file1.txt file2.txt

# 删除文件file1.txt,提示用户确认
$ rm -i file1.txt
rm: remove regular file 'file1.txt'? y

# 删除目录dir1及其内容,显示删除的过程
$ rm -r -v dir1
removed 'dir1/file1.txt'
removed 'dir1/file2.txt'
removed directory 'dir1'

# 强制删除文件file2.txt,不提示用户确认
$ rm -f file2.txt


mkdir:用于创建新的目录

mkdir命令用于创建新的目录,它可以接受一个或多个参数,表示要创建的目录的路径。常用的选项有:

  • -p:创建多级目录,如果父目录不存在,则一并创建之
  • -v:显示创建的过程

示例:

# 创建一个名为dir1的目录
$ mkdir dir1
$ ls
dir1

# 创建多个目录dir1,dir2和dir3
$ mkdir dir1 dir2 dir3
$ ls
dir1  dir2  dir3

# 创建一个多级目录dir1/dir2/dir3,如果父目录不存在,则一并创建之
$ mkdir -p dir1/dir2/dir3
$ ls
dir1
$ ls dir1
dir2
$ ls dir1/dir2
dir3

# 创建一个名为dir1的目录,显示创建的过程
$ mkdir -v dir1
mkdir: created directory 'dir1'
$ ls
dir1

rmdir:用于删除空的目录

rmdir命令用于删除空的目录,它可以接受一个或多个参数,表示要删除的目录的路径。常用的选项有:

  • -p:删除多级目录,如果子目录为空,则一并删除之
  • -v:显示删除的过程

示例:

# 删除一个空的目录dir1
$ rmdir dir1

# 删除多个空的目录dir1,dir2和dir3
$ rmdir dir1 dir2 dir3

# 删除一个多级目录dir1/dir2/dir3,如果子目录为空,则一并删除之
$ rmdir -p dir1/dir2/dir3

# 删除一个空的目录dir1,显示删除的过程
$ rmdir -v dir1
rmdir: removing directory, 'dir1'

cat:用于显示或连接文件的内容

cat命令用于显示或连接文件的内容,它可以接受一个或多个参数,表示要显示或连接的文件。常用的选项有:

  • -n:显示行号
  • -b:显示非空行的行号
  • -s:压缩连续的空行为一行
  • -E:在每行的末尾显示一个$符号

示例:

# 显示文件file1.txt的内容
$ cat file1.txt
Hello
World

# 连接文件file1.txt和file2.txt的内容,并显示到标准输出
$ cat file1.txt file2.txt
Hello
World
Linux
Bash

# 连接文件file1.txt和file2.txt的内容,并重定向到文件file3.txt
$ cat file1.txt file2.txt > file3.txt

echo:用于输出指定的字符串或变量

echo命令用于输出指定的字符串或变量,它可以接受一个或多个参数,表示要输出的内容。常用的选项有:

  • -n:不换行
  • -e:解释转义字符,例如\n表示换行,\t表示制表符,\a表示响铃等
  • -E:不解释转义字符,原样输出

示例:

# 输出Hello World
$ echo Hello World
Hello World

# 输出Hello World,不换行
$ echo -n Hello World
Hello World$

# 输出Hello\nWorld,解释转义字符
$ echo -e Hello\nWorld
Hello
World

# 输出Hello\nWorld,不解释转义字符
$ echo -E Hello\nWorld
Hello\nWorld

# 输出一个变量的值,变量名用$符号表示
$ name=alice
$ echo $name
alice

# 输出多个参数,用空格分隔
$ echo Hello $name, how are you?
Hello alice, how are you?

grep:用于在文件或输入中搜索匹配的字符串

grep命令用于在文件或输入中搜索匹配的字符串,它可以接受一个或多个参数,表示要搜索的模式和要搜索的文件或输入。常用的选项有:

  • -i:忽略大小写
  • -v:反向匹配,显示不匹配的行
  • -c:显示匹配的行数
  • -n:显示匹配的行号
  • -l:显示匹配的文件名
  • -r:递归搜索目录及其内容

示例:

# 在文件file1.txt中搜索字符串Hello
$ grep Hello file1.txt
Hello World

# 在文件file1.txt和file2.txt中搜索字符串Hello,忽略大小写
$ grep -i hello file1.txt file2.txt
file1.txt:Hello World
file2.txt:hello linux

# 在文件file1.txt中搜索字符串Hello,显示不匹配的行
$ grep -v Hello file1.txt
Linux
Bash

# 在文件file1.txt中搜索字符串Hello,显示匹配的行数
$ grep -c Hello file1.txt
1

# 在文件file1.txt中搜索字符串Hello,显示匹配的行号
$ grep -n Hello file1.txt
1:Hello World

# 在目录dir1中搜索字符串Hello,显示匹配的文件名
$ grep -l Hello dir1
dir1/file1.txt

# 在目录dir1及其内容中搜索字符串Hello,递归搜索
$ grep -r Hello dir1
dir1/file1.txt:Hello World
dir1/dir2/file2.txt:Hello Linux

find:用于在目录中查找文件或目录

find命令用于在目录中查找文件或目录,它可以接受一个或多个参数,表示要查找的目录和要查找的条件。常用的条件有:

  • -name:按文件名匹配,可以使用通配符,例如*.txt表示以.txt结尾的文件
  • -type:按文件类型匹配,可以是f表示普通文件,d表示目录,l表示链接等
  • -size:按文件大小匹配,可以使用+表示大于,-表示小于,c表示字节,k表示千字节,M表示兆字节等
  • -perm:按文件权限匹配,可以使用-表示必须全部满足,+表示至少满足一个,/表示任意一个都不满足等
  • -user:按文件所有者匹配
  • -group:按文件所属组匹配
  • -mtime:按文件修改时间匹配,可以使用+表示大于,-表示小于,单位是天
  • -exec:对匹配的文件执行指定的命令,命令的结尾用\;表示

示例:

# 在当前目录中查找文件名为file1.txt的文件
$ find . -name file1.txt
./file1.txt

# 在当前目录及其内容中查找文件名以.txt结尾的文件
$ find . -name "*.txt"
./file1.txt
./file2.txt
./dir1/file3.txt
./dir1/dir2/file4.txt

# 在当前目录及其内容中查找类型为目录的文件
$ find . -type d
.
./dir1
./dir1/dir2

# 在当前目录及其内容中查找大小大于1M的文件
$ find . -size +1M
./file5.mp4
./dir1/file6.mp3

# 在当前目录及其内容中查找权限为755的文件
$ find . -perm 755
./file1.txt
./dir1

# 在当前目录及其内容中查找所有者为alice的文件
$ find . -user alice
./file1.txt
./file2.txt
./file5.mp4
./dir1

# 在当前目录及其内容中查找所属组为users的文件
$ find . -group users
./file1.txt
./file2.txt
./file5.mp4
./dir1

# 在当前目录及其内容中查找修改时间在7天内的文件
$ find . -mtime -7
./file1.txt
./file2.txt
./file5.mp4
./dir1

# 在当前目录及其内容中查找文件名以.txt结尾的文件,并显示它们的内容
$ find . -name "*.txt" -exec cat {} \;
This is file3.txt
This is file4.txt

ps:用于显示当前进程的信息

ps命令用于显示当前进程的信息,它可以接受一个或多个参数,表示要显示的进程和要显示的信息。常用的参数有:

  • -e:显示所有进程
  • -f:显示完整格式的信息,包括进程的用户,父进程,启动时间,命令等
  • -u:显示指定用户的进程
  • -p:显示指定进程号的进程
  • -a:显示除会话领导和无终端的进程外的所有进程
  • -x:显示无终端的进程

示例:

# 显示所有进程的简要信息
$ ps -e
  PID TTY          TIME CMD
    1 ?        00:00:02 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 rcu_gp
    4 ?        00:00:00 rcu_par_gp
    6 ?        00:00:00 kworker/0:0H-kb
    9 ?        00:00:00 mm_percpu_wq
   10 ?        00:00:00 ksoftirqd/0
   11 ?        00:00:00 rcu_sched
   12 ?        00:00:00 migration/0
   13 ?        00:00:00 idle_inject/0
   14 ?        00:00:00 cpuhp/0
   15 ?        00:00:00 cpuhp/1
   16 ?        00:00:00 idle_inject/1
   17 ?        00:00:00 migration/1
   18 ?        00:00:00 ksoftirqd/1
   20 ?        00:00:00 kworker/1:0H-kb
   21 ?        00:00:00 cpuhp/2
   22 ?        00:00:00 idle_inject/2
   23 ?        00:00:00 migration/2

kill:用于终止指定的进程

kill命令用于终止指定的进程,它可以接受一个或多个参数,表示要终止的进程的进程号或信号。常用的信号有:

  • -9:强制终止进程,不可被忽略或捕获
  • -15:正常终止进程,可以被忽略或捕获
  • -2:发送中断信号,相当于按下Ctrl+C
  • -3:发送退出信号,相当于按下Ctrl+Z

示例:

# 终止进程号为1234的进程,发送默认的信号15
$ kill 1234

# 强制终止进程号为1234的进程,发送信号9
$ kill -9 1234

# 终止进程号为1234和5678的进程,发送信号15
$ kill 1234 5678

# 发送中断信号到进程号为1234的进程,相当于按下Ctrl+C
$ kill -2 1234

# 发送退出信号到进程号为1234的进程,相当于按下Ctrl+Z
$ kill -3 1234

ping:用于测试网络连通性

ping命令用于测试网络连通性,它可以接受一个或多个参数,表示要测试的主机的域名或IP地址。常用的选项有:

  • -c:指定发送的数据包的个数
  • -i:指定发送数据包的间隔,单位是秒
  • -s:指定发送数据包的大小,单位是字节
  • -t:指定数据包的生存时间,单位是跳数

示例:

# 测试与www.google.com的网络连通性,发送4个数据包,每个数据包大小为56字节
$ ping www.google.com
PING www.google.com (142.250.67.228) 56(84) bytes of data.
64 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=1 ttl=117 time=5.77 ms
64 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=2 ttl=117 time=5.76 ms
64 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=3 ttl=117 time=5.76 ms
64 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=4 ttl=117 time=5.76 ms

--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 5.760/5.763/5.770/0.004 ms

# 测试与www.google.com的网络连通性,发送10个数据包,每个数据包大小为128字节,每隔2秒发送一个
$ ping -c 10 -i 2 -s 128 www.google.com
PING www.google.com (142.250.67.228) 128(156) bytes of data.
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=1 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=2 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=3 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=4 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=5 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=6 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=7 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=8 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=9 ttl=117 time=5.76 ms
136 bytes from nrt12s02-in-f4.1e100.net (142.250.67.228): icmp_seq=10 ttl=117 time=5.76 ms

--- www.google.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 18029ms
rtt min/avg/max/mdev = 5.760/5.763/5.768/0.007 ms

# 测试与www.google.com的网络连通性,发送4个数据包,每个数据包大小为56字节,指定数据包的生存时间为5跳
$ ping -c 4 -s 56 -t 5 www.google.com
PING www.google.com (142.250.67.228) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Time to live exceeded
From 10.0.0.1 icmp_seq=2 Time to live exceeded
From 10.0.0.1 icmp_seq=3 Time to live exceeded
From 10.0.0.1 icmp_seq=4 Time to live exceeded

--- www.google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3004ms

ssh:用于远程登录到另一台主机

ssh命令用于远程登录到另一台主机,它可以接受一个或多个参数,表示要登录的主机的用户名,域名或IP地址,以及要执行的命令。常用的选项有:

  • -p:指定远程主机的端口号
  • -i:指定私钥文件的路径
  • -v:显示详细的连接信息
  • -X:启用X11转发,可以在本地显示远程主机的图形界面

示例:

# 远程登录到主机192.168.0.100,使用用户名bob
$ ssh [email protected]
[email protected]'s password: 
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-88-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

bob@ubuntu:~$

# 远程登录到主机192.168.0.100,使用用户名bob,指定端口号2222
$ ssh [email protected] -p 2222
[email protected]'s password: 
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-88-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

bob@ubuntu:~$

# 远程登录到主机192.168.0.100,使用用户名bob,指定私钥文件的路径
$ ssh [email protected] -i ~/.ssh/id_rsa


# 远程登录到主机192.168.0.100,使用用户名bob,显示详细的连接信息
$ ssh [email protected] -v

scp:用于在本地和远程主机之间复制文件

scp命令用于在本地和远程主机之间复制文件,它可以接受两个或多个参数,表示要复制的源文件或目录,以及要复制到的目标文件或目录。常用的选项有:

  • -r:递归复制目录及其内容
  • -p:保留文件的属性,如修改时间,访问权限等
  • -q:不显示复制的过程
  • -P:指定远程主机的端口号
  • -i:指定私钥文件的路径

示例:

# 从本地复制文件file1.txt到远程主机192.168.0.100的用户bob的主目录
$ scp file1.txt [email protected]:
[email protected]'s password: 
file1.txt                                     100%   10    10.0KB/s   00:00    

# 从本地复制目录dir1及其内容到远程主机192.168.0.100的用户bob的主目录,保留文件的属性
$ scp -r -p dir1 [email protected]:
[email protected]'s password: 
dir1/                                         100%    0     0.0KB/s   00:00    
dir1/file1.txt                                100%   10    10.0KB/s   00:00    
dir1/file2.txt                                100%   10    10.0KB/s   00:00    

# 从远程主机192.168.0.100的用户bob的主目录复制文件file1.txt到本地
$ scp [email protected]:/file1.txt
[email protected]'s password: 
file1.txt                                     100%   10    10.0KB/s   00:00    

# 从远程主机192.168.0.100的用户bob的主目录复制目录dir1及其内容到本地,不显示复制的过程
$ scp -r -q [email protected]:~/dir1
[email protected]'s password: 

# 从本地复制文件file1.txt到远程主机192.168.0.100的用户bob的主目录,指定端口号2222,指定私钥文件的路径
$ scp -P 2222 -i ~/.ssh/id_rsa file1.txt [email protected]:~
file1.txt                                     100%   10    10.0KB/s   00:00    

curl:用于从或向服务器传输数据

curl命令用于从或向服务器传输数据,它可以接受一个或多个参数,表示要传输的URL和要传输的数据。常用的选项有:

  • -o:将输出保存到指定的文件
  • -O:将输出保存到URL中的文件名
  • -s:不显示传输的过程
  • -v:显示详细的传输信息
  • -L:跟随重定向的URL
  • -H:添加自定义的请求头
  • -X:指定请求的方法,如GET,POST,PUT等
  • -d:指定请求的数据,用于POST或PUT方法
  • -F:指定请求的表单数据,用于POST方法
  • -u:指定请求的用户名和密码

示例:

# 从URL https://www.example.com 获取数据,并显示到标准输出
$ curl https://www.example.com



    Example Domain
...


# 从URL https://www.example.com 获取数据,并保存到文件 example.html
$ curl -o example.html https://www.example.com

# 从URL https://www.example.com/example.html 获取数据,并保存到文件 example.html
$ curl -O https://www.example.com/example.html

# 从URL https://www.example.com 获取数据,不显示传输的过程
$ curl -s https://www.example.com



    Example Domain
...


# 从URL https://www.example.com 获取数据,显示详细的传输信息
$ curl -v https://www.example.com
*   Trying 93.184.216.34:443...
* TCP_NODELAY set
* Connected to www.example.com (93.184.216.34) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:

# 从URL https://www.example.com 获取数据,跟随重定向的URL
$ curl -L https://www.example.com



    Example Domain
...


# 向URL https://www.example.com 发送POST请求,添加自定义的请求头,指定请求的数据
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"alice","age":25}' https://www.example.com



    Example Domain
...


# 向URL https://www.example.com 发送POST请求,指定请求的表单数据
$ curl -X POST -F "name=alice" -F "age=25" https://www.example.com



    Example Domain
...


# 向URL https://www.example.com 发送GET请求,指定请求的用户名和密码
$ curl -u alice:123456 https://www.example.com



    Example Domain
...

gzip:用于压缩和解压缩文件

它是用于压缩和解压缩文件的一个常用的Linux命令。gzip命令的基本语法是:

gzip [options] [files]

其中,options是一些可选的参数,用于指定压缩或解压缩的方式和格式。files是要压缩或解压缩的文件名,可以是一个或多个。如果不指定files,那么gzip会从标准输入读取数据,并输出到标准输出。

gzip命令的常用参数有:

  • -c 或 --stdout 或 --to-stdout:把压缩后的文件输出到标准输出,不改变原始文件。如果有多个输入文件,那么输出的压缩文件会由一系列独立的压缩块组成,每个压缩块对应一个输入文件。
  • -d 或 --decompress 或 --uncompress:解压缩文件。如果有多个输入文件,那么每个输入文件都会被解压缩,并替换原来的压缩文件。
  • -f 或 --force:强制压缩或解压缩文件,即使文件名或硬链接已经存在,或者文件是符号链接。
  • -h 或 --help:显示帮助信息。
  • -k 或 --keep:保留原始文件,不删除。
  • -l 或 --list:显示压缩文件的信息,包括压缩比、未压缩大小、压缩大小、未压缩文件名等。
  • -n 或 --no-name:压缩文件时,不保存原始文件的名称和时间戳。
  • -N 或 --name:压缩文件时,保存原始文件的名称和时间戳。这是默认的行为,除非使用了–no-name参数。
  • -q 或 --quiet:不显示警告或错误信息。
  • -r 或 --recursive:递归地压缩或解压缩指定的目录下的所有文件。
  • -t 或 --test:测试压缩文件的完整性,不解压缩文件。
  • -v 或 --verbose:显示压缩或解压缩的过程和统计信息。
  • -V 或 --version:显示版本信息。
  • -数字:指定压缩级别,数字范围是1到9,其中1表示最快但压缩比最低,9表示最慢但压缩比最高。默认的压缩级别是6。–fast和–best分别相当于-1和-9。

gzip命令的一些使用示例:

  • 压缩一个文件,替换原始文件,输出压缩比和统计信息:
gzip -v file.txt
  • 压缩一个文件,保留原始文件,指定压缩级别为9:
gzip -k -9 file.txt
  • 压缩一个目录下的所有文件,递归地处理子目录,不显示任何信息:
gzip -qr dir
  • 解压缩一个文件,替换原始文件,显示解压缩过程:
gzip -dv file.txt.gz
  • 解压缩一个目录下的所有文件,递归地处理子目录,不显示任何信息:
gzip -dr dir
  • 显示一个压缩文件的信息,不解压缩文件:
gzip -l file.txt.gz
  • 测试一个压缩文件的完整性,不解压缩文件:
gzip -t file.txt.gz
  • 从标准输入读取数据,压缩后输出到标准输出,可以使用重定向符号将输出保存到文件:
gzip -c < file.txt > file.txt.gz
  • 从标准输入读取数据,解压缩后输出到标准输出,可以使用重定向符号将输出保存到文件:
gzip -dc < file.txt.gz > file.txt

tar:用于创建或解压缩归档文件

tar命令用于创建或解压缩归档文件,它可以接受一个或多个参数,表示要执行的操作,要创建或解压缩的归档文件,以及要归档或解压缩的文件或目录。常用的选项有:

  • -c:创建归档文件
  • -x:解压缩归档文件
  • -f:指定归档文件的名称
  • -v:显示归档或解压缩的过程
  • -z:使用gzip压缩或解压缩归档文件
  • -j:使用bzip2压缩或解压缩归档文件
  • -J:使用xz压缩或解压缩归档文件

示例:

# 创建一个名为archive.tar的归档文件,包含文件file1.txt和file2.txt
$ tar -c -f archive.tar file1.txt file2.txt

# 创建一个名为archive.tar.gz的归档文件,使用gzip压缩,包含文件file1.txt和file2.txt
$ tar -c -z -f archive.tar.gz file1.txt file2.txt

# 创建一个名为archive.tar.bz2的归档文件,使用bzip2压缩,包含文件file1.txt和file2.txt
$ tar -c -j -f archive.tar.bz2 file1.txt file2.txt

# 创建一个名为archive.tar.xz的归档文件,使用xz压缩,包含文件file1.txt和file2.txt
$ tar -c -J -f archive.tar.xz file1.txt file2.txt

# 创建一个名为archive.tar的归档文件,包含目录dir1及其内容,显示归档的过程
$ tar -c -v -f archive.tar dir1
dir1/
dir1/file1.txt
dir1/file2.txt

# 解压缩归档文件archive.tar,显示解压缩的过程
$ tar -x -v -f archive.tar
dir1/
dir1/file1.txt
dir1/file2.txt

# 解压缩归档文件archive.tar.gz,使用gzip解压缩
$ tar -x -z -f archive.tar.gz

# 解压缩归档文件archive.tar.bz2,使用bzip2解压缩
$ tar -x -j -f archive.tar.bz2

# 解压缩归档文件archive.tar.xz,使用xz解压缩
$ tar -x -J -f archive.tar.xz

chmod:用于修改文件或目录的权限

chmod命令用于修改文件或目录的权限,它可以接受一个或多个参数,表示要修改的权限,要修改的文件或目录。常用的选项有:

  • -R:递归修改目录及其内容的权限
  • -v:显示修改的过程

示例:

# 修改文件file1.txt的权限,使得所有者可以读写,组成员和其他用户只能读
$ chmod 644 file1.txt

# 修改文件file1.txt的权限,使得所有者可以读写执行,组成员和其他用户只能读执行,使用符号表示权限
$ chmod u=rwx,g=rx,o=rx file1.txt

# 修改目录dir1及其内容的权限,使得所有者可以读写执行,组成员和其他用户只能读执行,递归修改
$ chmod -R 755 dir1

# 修改目录dir1及其内容的权限,使得所有者可以读写执行,组成员和其他用户只能读执行,递归修改,显示修改的过程
$ chmod -R -v 755 dir1
mode of 'dir1' changed from 0777 (rwxrwxrwx) to 0755 (rwxr-xr-x)
mode of 'dir1/file1.txt' changed from 0666 (rw-rw-rw-) to 0644 (rw-r--r--)
mode of 'dir1/file2.txt' changed from 0666 (rw-rw-rw-) to 0644 (rw-r--r--)

chown:用于修改文件或目录的所有者和组

chown命令用于修改文件或目录的所有者和组,它可以接受一个或多个参数,表示要修改的所有者和组,要修改的文件或目录。常用的选项有:

  • -R:递归修改目录及其内容的所有者和组
  • -v:显示修改的过程

示例:

# 修改文件file1.txt的所有者为bob,组为staff
$ chown bob:staff file1.txt

# 修改目录dir1及其内容的所有者为bob,组为staff,递归修改
$ chown -R bob:staff dir1

# 修改目录dir1及其内容的所有者为bob,组为staff,递归修改,显示修改的过程
$ chown -R -v bob:staff dir1
changed ownership of 'dir1' from alice:alice to bob:staff
changed ownership of 'dir1/file1.txt' from alice:alice to bob:staff
changed ownership of 'dir1/file2.txt' from alice:alice to bob:staff

df:用于显示磁盘空间的使用情况

df命令用于显示磁盘空间的使用情况,它可以接受一个或多个参数,表示要显示的文件系统或文件。常用的选项有:

  • -h:以可读的格式显示磁盘空间,如K,M,G等
  • -T:显示文件系统的类型
  • -a:显示所有文件系统,包括特殊的文件系统,如proc,tmpfs等

示例:

# 显示所有文件系统的磁盘空间使用情况
$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             1009220        0   1009220   0% /dev
tmpfs             204920     1408    203512   1% /run
/dev/sda1       51199104  9963200  38667664  21% /
tmpfs            1024596        0   1024596   0% /dev/shm
tmpfs               5120        4      5116   1% /run/lock
tmpfs            1024596        0   1024596   0% /sys/fs/cgroup
/dev/loop0         56832    56832         0 100% /snap/core18/2128
/dev/loop1         56832    56832         0 100% /snap/core18/2246
/dev/loop2         33152    33152         0 100% /snap/snapd/13270
/dev/loop3         33152    33152         0 100% /snap/snapd/13640
/dev/loop4         72320    72320         0 100% /snap/lxd/21545
/dev/loop5         69248    69248         0 100% /snap/lxd/21029
tmpfs             204916       16    204900   1% /run/user/1000

# 显示所有文件系统的磁盘空间使用情况,以可读的格式显示
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            986M     0  986M   0% /dev
tmpfs           201M  1.4M  199M   1% /run
/dev/sda1        49G  9.5G   37G  21% /
tmpfs          1001M     0 1001M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs          1001M     0 1001M   0% /sys/fs/cgroup
/dev/loop0       56M   56M     0 100% /snap/core18/2128
/dev/loop1       56M   56M     0 100% /snap/core18/2246
/dev/loop2       33M   33M     0 100% /snap/snapd/13270
/dev/loop3       33M   33M     0 100% /snap/snapd/13640
/dev/loop4       71M   71M     0 100% /snap/lxd/21545
/dev/loop5       68M   68M     0 100% /snap/lxd/21029
tmpfs           201M   16K  201M   1% /run/user/1000

# 显示所有文件系统的磁盘空间使用情况,显示文件系统的类型
$ df -T
Filesystem     Type     1K-blocks     Used Available Use% Mounted on
udev           devtmpfs   1009220        0   1009220   0% /dev
tmpfs          tmpfs       204920     1408    203512   1% /run
/dev/sda1      ext4      51199104  9963200  38667664  21% /
tmpfs          tmpfs      1024596        0   1024596   0% /dev/shm
tmpfs          tmpfs         5120        4      5116   1% /run/lock
tmpfs          tmpfs      1024596        0   1024596   0% /sys/fs/cgroup
/dev/loop0     squashfs     56832    56832         0 100% /snap/core18/2128
/dev/loop1     squashfs     56832    56832         0 100% /snap/core18/2246
/dev/loop2     squashfs     33152    33152         0 100% /snap/snapd/13270
/dev/loop3     squashfs     33152    33152         0 100% /snap/snapd/13640
/dev/loop4     squashfs     72320    72320         0 100% /snap/lxd/21545
/dev/loop5     squashfs     69248    69248         0 100% /snap/lxd/21029
tmpfs          tmpfs       204916       16    204900   1% /run/user/1000

# 显示指定的文件系统或文件的磁盘空
# 显示指定的文件系统或文件的磁盘空间使用情况,如/dev/sda1或file1.txt
$ df /dev/sda1
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1       51199104  9963200  38667664  21% /
$ df file1.txt
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1       51199104  9963200  38667664  21% /

du:用于显示文件或目录的大小

du命令用于显示文件或目录的大小,它可以接受一个或多个参数,表示要显示的文件或目录。常用的选项有:

  • -h:以可读的格式显示文件或目录的大小,如K,M,G等
  • -s:只显示总的大小,而不显示每个子目录或文件的大小
  • -a:显示所有文件和目录的大小,而不只是目录的大小

示例:

# 显示当前目录及其子目录的大小
$ du
4       ./dir1
8       ./dir2
16      .

# 显示当前目录及其子目录的大小,以可读的格式显示
$ du -h
4.0K    ./dir1
8.0K    ./dir2
16K     .

# 显示当前目录的总大小,以可读的格式显示
$ du -s -h
16K     .

# 显示当前目录及其子目录和文件的大小,以可读的格式显示
$ du -a -h
4.0K    ./dir1/file4.txt
4.0K    ./dir1/file5.txt
4.0K    ./dir1
4.0K    ./dir2/file6.txt
4.0K    ./dir2/file7.txt
8.0K    ./dir2
4.0K    ./file1.txt
4.0K    ./file2.txt
4.0K    ./file3.txt
16K     .

# 显示指定的文件或目录的大小,如file1.txt或dir1
$ du file1.txt
4       file1.txt
$ du dir1
4       dir1

top:用于显示系统的资源占用情况

top命令用于显示系统的资源占用情况,它可以实时更新,显示各个进程的信息,如PID,用户,CPU,内存,命令等。常用的选项有:

  • -d:指定刷新的间隔,单位是秒
  • -u:指定显示某个用户的进程
  • -p:指定显示某个进程的信息,可以有多个

示例:

# 显示系统的资源占用情况,实时更新
$ top
top - 08:30:10 up  1:05,  1 user,  load average: 0.00, 0.01, 0.00
Tasks: 193 total,   1 running, 192 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 :   1990.9 total,   1080.6 free,    281.4 used,    628.9 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1569.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1015 alice     20   0  922952  46296  30616 S   0.0   2.3   0:02.08 gnome-shell
    826 root      20   0  282976  15732  12304 S   0.0   0.8   0:01.67 Xorg
    948 alice     20   0  287808  11364   9368 S   0.0   0.6   0:00.14 gnome-session-b
    971 alice     20   0  111760   9336   7780 S   0.0   0.5   0:00.06 ssh-agent
   1000 alice     20   0  191484   9164   7840 S   0.0   0.4   0:00.05 ibus-daemon
   1005 alice     20   0  111508   8940   7560 S   0.0   0.4   0:00.03 ibus-x11
   1008 alice     20   0  109704   8860   7480 S   0.0   0.4   0:00.03 ibus-portal
   1028 alice     20   0  274300   8796   7264 S   0.0   0.4   0:00.04 at-spi-bus-laun
   1033 alice     20   0  109704   8760   7380 S   0.0   0.4   0:00.03 ibus-engine-sim
   1040 alice     20   0  274300   8744   7216 S   0.0   0.4   0:00.04 at-spi-bus-laun
   1051 alice     20   0  191484   8720   7400 S   0.0   0.4   0:00.04 ibus-daemon
   1055 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1060 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1065 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1070 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1075 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1080 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1085 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1090 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim
   1095 alice     20   0  109704   8704   7324 S   0.0   0.4   0:00.03 ibus-engine-sim

# 显示系统的资源占用情况,指定刷新的间隔为2秒
$ top -d 2
top - 08:30:12 up  1:05,  1 user,  load average: 0.00, 0.01, 0.00
Tasks: 193 total,   1 running, 192 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 :   1990.9 total,   1080.6 free,    281.4 used,    628.9 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1569.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1015 alice     20   0  922952  46296  30616 S   0.0   2.3   0:02.08 gnome-shell
    826 root      20   0  282976  15732  12304 S   0.0   0.8   0:01.67 Xorg
    948 alice     20   0  287808  11364   9368 S   0.0   0.6   0:00.14 gnome-session-b
    971 alice     20   0  111760   9336   7780 S   0.0   0.5   0:00.06 ssh-agent
   1000 alice     20   0  191484   9164   7840 S   0.0   0.4   0:00.05 ibus-daemon
   1005 alice     20   0  111508   8940   7560 S   0.0   0.4   0:00.03 ibus-x11
   1008 alice     20   0  109704   8860   7480 S   0.0   0.4   0:00.03 ibus-portal
   1028 alice     20   0  274300   8796   7264 S   0.0   0.4   0:00.04 at-spi-bus-laun
   1033 alice     20   0  109704   8760   7380 S   0.0   0.4   0:00.03 ibus

free:用于显示内存的使用情况

free命令用于显示内存的使用情况,它可以接受一个或多个参数,表示要显示的内存类型或单位。常用的选项有:

  • -h:以可读的格式显示内存的使用情况,如K,M,G等
  • -t:显示总的内存和交换空间的使用情况
  • -m:以兆字节为单位显示内存的使用情况
  • -g:以吉字节为单位显示内存的使用情况

示例:

# 显示内存的使用情况
$ free
              total        used        free      shared  buff/cache   available
Mem:        2038996      281400     1080620       14080      677976     1569748
Swap:             0           0           0

# 显示内存的使用情况,以可读的格式显示
$ free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       274Mi       1.0Gi        13Mi       662Mi       1.5Gi
Swap:            0B          0B          0B

# 显示内存的使用情况,显示总的内存和交换空间的使用情况
$ free -t
              total        used        free      shared  buff/cache   available
Mem:        2038996      281400     1080620       14080      677976     1569748
Swap:             0           0           0
Total:      2038996      281400     1080620

# 显示内存的使用情况,以兆字节为单位显示
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1990         274        1054          13         662        1533
Swap:             0           0           0

# 显示内存的使用情况,以吉字节为单位显示
$ free -g
              total        used        free      shared  buff/cache   available
Mem:              1           0           1           0           0           1
Swap:             0           0           0

date:用于显示或设置系统的日期和时间

date命令用于显示或设置系统的日期和时间,它可以接受一个或多个参数,表示要显示或设置的日期和时间的格式。常用的选项有:

  • -u:显示或设置世界协调时(UTC)的日期和时间
  • -s:设置系统的日期和时间,需要root权限
  • -d:显示指定的日期和时间,而不是当前的日期和时间

示例:

# 显示当前的日期和时间
$ date
Tue 14 Nov 2023 08:30:14 AM CST

# 显示当前的日期和时间,以指定的格式显示
$ date "+%Y-%m-%d %H:%M:%S"
2023-11-14 08:30:14

# 显示世界协调时(UTC)的日期和时间
$ date -u
Tue 14 Nov 2023 00:30:14 UTC

# 设置系统的日期和时间为2023-11-14 08:30:14,需要root权限
$ sudo date -s "2023-11-14 08:30:14"
Tue 14 Nov 2023 08:30:14 CST

# 显示指定的日期和时间,如明天的日期和时间
$ date -d "tomorrow"
Wed 15 Nov 2023 08:30:14 AM CST

 awk:用于对文本进行处理

awk命令用于对文本进行处理,它可以接受一个或多个参数,表示要执行的脚本,要处理的文件或输入。常用的选项有:

  • -F:指定输入的分隔符,默认是空格
  • -v:指定变量的值
  • -f:指定脚本文件的路径

示例:

# 对文件file1.txt的每一行进行打印
$ awk '{print $0}' file1.txt

# 对文件file1.txt的每一行进行打印,只打印第一列
$ awk '{print $1}' file1.txt

# 对文件file1.txt的每一行进行打印,只打印第二列,指定分隔符为l
$ awk -F l '{print $2}' file1.txt

# 对文件file1.txt的每一行进行打印,添加行号,使用变量NR表示行号
$ awk '{print NR,$0}' file1.txt

# 对文件file1.txt的每一行进行打印,添加行号,使用变量line表示行号,指定变量的值为1
$ awk -v line=1 '{print line,$0; line++}' file1.txt

# 对文件file1.txt的每一行进行打印,使用脚本文件script.awk,脚本文件的内容为{print $0}
$ awk -f script.awk file1.txt

sed:用于对文本进行编辑

sed命令用于对文本进行编辑,它可以接受一个或多个参数,表示要执行的脚本,要编辑的文件或输入。常用的选项有:

  • -e:指定要执行的脚本,可以有多个
  • -f:指定脚本文件的路径
  • -i:直接修改文件,而不是输出到标准输出
  • -n:不显示原始的输入,只显示被修改的部分

示例:

# 对文件file1.txt的每一行进行替换,将Hello替换为Hi,并显示到标准输出
$ sed 's/Hello/Hi/' file1.txt

# 对文件file1.txt的每一行进行替换,将Hello替换为Hi,直接修改文件
$ sed -i 's/Hello/Hi/' file1.txt

# 对文件file1.txt的每一行进行替换,将Hello替换为Hi,只显示被修改的部分
$ sed -n 's/Hello/Hi/p' file1.txt

# 对文件file1.txt的每一行进行替换,将Hello替换为Hi,使用g选项表示全局替换,即替换每一行中的所有匹配
$ sed 's/Hello/Hi/g' file1.txt

# 对文件file1.txt的每一行进行替换,将Hello替换为Hi,使用&符号表示匹配的字符串,可以在替换的字符串中使用
$ sed 's/Hello/[&]/' file1.txt

# 对文件file1.txt的每一行进行替换,将Hello替换为Hi,使用\1表示第一个括号中匹配的字符串,可以在替换的字符串中使用
$ sed 's/\(Hello\) \(World\)/\2 \1/' file1.txt

# 对文件file1.txt的每一行进行删除,删除包含Hello的行
$ sed '/Hello/d' file1.txt

# 对文件file1.txt的每一行进行插入,插入一行Hi在每一行的前面
$ sed 'i\Hi' file1.txt

# 对文件file1.txt的每一行进行追加,追加一行Hi在每一行的后面
$ sed 'a\Hi' file1.txt

# 对文件file1.txt的每一行进行执行多个脚本,使用-e选项指定多个脚本
$ sed -e 's/Hello/Hi/' -e 's/World/Everyone/' file1.txt

# 对文件file1.txt的每一行进行执行脚本文件script.sed,脚本文件的内容为s/Hello/Hi/
$ sed -f script.sed file1.txt

touch:用于创建空文件或者修改文件的访问和修改时间

touch命令用于创建空文件或者修改文件的访问和修改时间,它可以接受一个或多个参数,表示要创建或修改的文件。常用的选项有:

  • -a:只修改文件的访问时间,而不修改文件的修改时间
  • -m:只修改文件的修改时间,而不修改文件的访问时间
  • -t:指定文件的访问和修改时间,格式为[[CC]YY]MMDDhhmm[.ss]

示例:

# 创建一个空文件file1.txt
$ touch file1.txt

# 创建多个空文件file2.txt和file3.txt
$ touch file2.txt file3.txt

# 修改文件file1.txt的访问和修改时间为当前时间
$ touch file1.txt

# 只修改文件file1.txt的访问时间为当前时间
$ touch -a file1.txt

# 只修改文件file1.txt的修改时间为当前时间
$ touch -m file1.txt

# 修改文件file1.txt的访问和修改时间为2023-11-14 08:30:00
$ touch -t 202311140830.00 file1.txt

uname:用于获取操作系统的基本信息

uname命令用于获取操作系统的基本信息,它可以接受一个或多个参数,表示要显示的信息类型。常用的选项有:

  • -a:显示所有的信息,包括内核名称,网络节点名,内核版本,内核发行号,硬件名称,处理器类型,硬件平台,操作系统名称等
  • -s:显示内核名称
  • -n:显示网络节点名
  • -r:显示内核版本
  • -v:显示内核发行号
  • -m:显示硬件名称
  • -p:显示处理器类型
  • -i:显示硬件平台
  • -o:显示操作系统名称

示例:

# 显示操作系统的基本信息
$ uname
Linux

# 显示所有的信息
$ uname -a
Linux alice-pc 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

# 显示内核名称
$ uname -s
Linux

# 显示网络节点名
$ uname -n
alice-pc

# 显示内核版本
$ uname -r
5.4.0-90-generic

# 显示内核发行号
$ uname -v
#101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021

# 显示硬件名称
$ uname -m
x86_64

# 显示处理器类型
$ uname -p
x86_64

# 显示硬件平台
$ uname -i
x86_64

# 显示操作系统名称
$ uname -o
GNU/Linux

head:用于从文件顶部返回指定行数

head命令用于从文件顶部返回指定行数,它可以接受一个或多个参数,表示要显示的文件或行数。常用的选项有:

  • -n:指定要显示的行数,可以是正数或负数,正数表示从顶部开始,负数表示从底部开始
  • -c:指定要显示的字节数,可以是正数或负数,正数表示从顶部开始,负数表示从底部开始

示例:

# 显示文件file1.txt的前10行
$ head file1.txt
This is the first line of file1.txt
This is the second line of file1.txt
This is the third line of file1.txt

# 显示文件file1.txt的前5行
$ head -n 5 file1.txt
This is the first line of file1.txt
This is the second line of file1.txt
This is the third line of file1.txt
This is the fourth line of file1.txt
This is the fifth line of file1.txt

# 显示文件file1.txt的除了最后5行之外的所有行
$ head -n -5 file1.txt
This is the first line of file1.txt
This is the second line of file1.txt
This is the third line of file1.txt
This is the fourth line of file1.txt
This is the fifth line of file1.txt

# 显示文件file1.txt的前20个字节
$ head -c 20 file1.txt
This is the first l

# 显示文件file1.txt的除了最后20个字节之外的所有字节
$ head -c -20 file1.txt
This is the first line of file1.txt
This is the second line of file1.txt
This is the third line of file1.txt
This is the fourth line of file1.txt
This is the fifth line of file1.txt

tail:用于从文件底部返回指定行数

tail命令用于从文件底部返回指定行数,它可以接受一个或多个参数,表示要显示的文件或行数。常用的选项有:

  • -n:指定要显示的行数,可以是正数或负数,正数表示从底部开始,负数表示从顶部开始
  • -c:指定要显示的字节数,可以是正数或负数,正数表示从底部开始,负数表示从顶部开始
  • -f:持续显示文件的最新内容,直到按下Ctrl+C退出

示例:

# 显示文件file1.txt的最后10行
$ tail file1.txt
This is the fifty-first line of file1.txt
This is the fifty-second line of file1.txt
This is the fifty-third line of file1.txt
This is the fifty-fourth line of file1.txt
This is the fifty-fifth line of file1.txt
This is the fifty-sixth line of file1.txt
This is the fifty-seventh line of file1.txt
This is the fifty-eighth line of file1.txt
This is the fifty-ninth line of file1.txt
This is the sixtieth line of file1.txt

# 显示文件file1.txt的最后5行
$ tail -n 5 file1.txt
This is the fifty-sixth line of file1.txt
This is the fifty-seventh line of file1.txt
This is the fifty-eighth line of file1.txt
This is the fifty-ninth line of file1.txt
This is the sixtieth line of file1.txt

# 显示文件file1.txt的除了最后5行之外的所有行
$ tail -n -5 file1.txt
This is the first line of file1.txt
This is the second line of file1.txt
This is the third line of file1.txt
This is the fourth line of file1.txt
This is the fifth line of file1.txt

# 显示文件file1.txt的最后20个字节
$ tail -c 20 file1.txt
sixtieth line of file1.txt

# 显示文件file1.txt的除了最后20个字节之外的所有字节
$ tail -c -20 file1.txt
This is the first line of file1.txt
This is the second line of file1.txt
This is the third line of file1.txt
This is the fourth line of file1.txt

ifconfig:用于显示或配置网络接口信息

ifconfig命令用于显示或配置网络接口信息。它可以显示每个网络接口的IP地址、子网掩码、广播地址、MAC地址、MTU值等信息,也可以用于修改这些信息或启动或关闭网络接口。

ifconfig命令的语法格式如下:

ifconfig [interface] [options]

其中,interface是要操作的网络接口的名称,如eth0、lo等。如果不指定interface,那么ifconfig会显示所有网络接口的信息。options是一些可选的参数,用于修改网络接口的信息或状态。常用的options有:

  • up:启动网络接口
  • down:关闭网络接口
  • add addr/prefixlen:添加一个IP地址和子网掩码
  • del addr/prefixlen:删除一个IP地址和子网掩码
  • hw class address:设置MAC地址,其中class是网络接口的类型,如ether、loop等,address是MAC地址
  • mtu N:设置MTU值,其中N是一个整数

ifconfig命令的示例:

# 显示所有网络接口的信息
ifconfig

# 显示eth0网络接口的信息
ifconfig eth0

# 为eth0网络接口添加一个IP地址和子网掩码
ifconfig eth0 add 192.168.1.100/24

# 为eth0网络接口删除一个IP地址和子网掩码
ifconfig eth0 del 192.168.1.100/24

# 设置eth0网络接口的MAC地址
ifconfig eth0 hw ether 00:11:22:33:44:55

# 设置eth0网络接口的MTU值为1500
ifconfig eth0 mtu 1500

# 启动eth0网络接口
ifconfig eth0 up

# 关闭eth0网络接口
ifconfig eth0 down

netstat:用于显示网络连接和路由表的信息

netstat命令用于显示网络连接和路由表的信息。它可以显示TCP、UDP、ICMP、IP等协议的连接状态、监听端口、套接字信息等,也可以显示路由表、接口统计、多播成员等信息。

netstat命令的语法格式如下:

netstat [options]

其中,options是一些可选的参数,用于指定要显示的信息的类型和格式。常用的options有:

  • -a:显示所有连接和监听端口
  • -n:显示数字形式的IP地址和端口号,而不是主机名和服务名
  • -p:显示每个连接对应的进程ID和程序名
  • -r:显示路由表
  • -i:显示网络接口的统计信息
  • -t:显示TCP连接
  • -u:显示UDP连接
  • -s:显示各个协议的统计信息

netstat命令的示例:

# 显示所有连接和监听端口
netstat -a

# 显示所有TCP连接和监听端口,以数字形式显示IP地址和端口号,并显示对应的进程ID和程序名
netstat -antp

# 显示所有UDP连接和监听端口,以数字形式显示IP地址和端口号,并显示对应的进程ID和程序名
netstat -anup

# 显示路由表
netstat -r

# 显示网络接口的统计信息
netstat -i

# 显示各个协议的统计信息
netstat -s

route:用于显示和修改网络路由表

route命令用于显示和修改网络路由表。它可以显示当前系统的路由表,也可以用于添加、删除或修改路由条目。

route命令的语法格式如下:

route [options] [command]

其中,options是一些可选的参数,用于指定要显示或修改的路由表的类型。常用的options有:

  • -n:显示数字形式的IP地址和网关,而不是主机名
  • -e:显示扩展的路由表,包括MSS、窗口、IRTT等信息
  • -A family:指定要显示或修改的路由表的协议族,如inet、inet6等

command是要执行的操作,可以是以下之一:

  • add:添加一条路由
  • del:删除一条路由
  • change:修改一条路由

如果不指定command,那么route会显示当前的路由表。

route命令的示例:

# 显示当前的路由表,以数字形式显示IP地址和网关
route -n

# 添加一条默认路由,网关为192.168.1.1,网络接口为eth0
route add default gw 192.168.1.1 eth0

# 删除一条默认路由
route del default

# 添加一条静态路由,目的网络为10.0.0.0/24,网关为192.168.1.2,网络接口为eth0
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.2 eth0

# 删除一条静态路由
route del -net 10.0.0.0 netmask 255.255.255.0

# 添加一条静态路由,目的主机为10.0.0.1,网关为192.168.1.2,网络接口为eth0
route add -host 10.0.0.1 gw 192.168.1.2 eth0

# 删除一条静态路由
route del -host 10.0.0.1

traceroute:用于显示数据包到达目的地的路径

traceroute命令用于显示数据包到达目的地的路径。它可以显示数据包经过的每个路由器的IP地址、主机名、往返时间等信息,从而帮助我们分析网络的连通性和性能。

traceroute命令的语法格式如下:

traceroute [options] destination

其中,destination是要发送数据包的目的地,可以是IP地址或主机名。options是一些可选的参数,用于指定发送数据包的方式和显示结果的格式。常用的options有:

  • -n:显示数字形式的IP地址,而不是主机名
  • -m max_ttl:指定数据包的最大跳数,即经过的最多路由器的数量,默认为30
  • -q nqueries:指定每个跳数发送的数据包的数量,默认为3
  • -w waittime:指定等待每个路由器回应的最长时间,单位为秒,默认为5
  • -I:使用ICMP协议发送数据包,需要root权限
  • -T:使用TCP协议发送数据包,需要root权限
  • -U:使用UDP协议发送数据包,这是默认的方式

traceroute命令的示例:

# 显示数据包到达www.baidu.com的路径,使用UDP协议发送数据包
traceroute www.baidu.com

# 显示数据包到达8.8.8.8的路径,使用ICMP协议发送数据包,显示数字形式的IP地址
traceroute -n -I 8.8.8.8

# 显示数据包到达www.google.com的路径,使用TCP协议发送数据包,指定最大跳数为20,每个跳数发送2个数据包,等待回应的最长时间为3秒
traceroute -T -m 20 -q 2 -w 3 www.google.com

wget:用于从互联网直接下载文件

wget命令用于从互联网直接下载文件,它可以接受一个或多个参数,表示要下载的文件的URL或选项。常用的选项有:

  • -O:指定下载文件的输出文件名,如果不指定,则使用URL中的文件名
  • -c:继续下载之前未完成的文件,而不是重新开始下载
  • -b:在后台模式下载文件,不占用终端
  • -q:静默模式下载文件,不显示任何信息
  • -i:从指定的文件中读取URL列表,每行一个URL

示例:

# 下载一个文件,使用URL中的文件名
$ wget https://example.com/file1.txt


# 下载一个文件,指定输出文件名为file2.txt
$ wget -O file2.txt https://example.com/file1.txt


# 继续下载之前未完成的文件
$ wget -c https://example.com/file1.txt


# 在后台模式下载文件,不占用终端
$ wget -b https://example.com/file1.txt


# 静默模式下载文件,不显示任何信息
$ wget -q https://example.com/file1.txt

# 从指定的文件中读取URL列表,每行一个URL
$ cat url-list.txt

ufw:用于管理防火墙

ufw命令用于管理防火墙,它可以接受一个或多个参数,表示要执行的操作或选项。常用的选项有:

  • enable:启用防火墙
  • disable:禁用防火墙
  • status:显示防火墙的状态和规则
  • allow:允许指定的端口或服务通过防火墙
  • deny:拒绝指定的端口或服务通过防火墙
  • delete:删除指定的规则

示例:

# 启用防火墙
$ sudo ufw enable
Firewall is active and enabled on system startup

# 禁用防火墙
$ sudo ufw disable
Firewall stopped and disabled on system startup

# 显示防火墙的状态和规则
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

# 允许端口80通过防火墙
$ sudo ufw allow 80
Rule added
Rule added (v6)

# 拒绝端口25通过防火墙
$ sudo ufw deny 25
Rule added
Rule added (v6)

# 删除拒绝端口25的规则
$ sudo ufw delete deny 25
Rule deleted
Rule deleted (v6)

apt、pacman、yum、rpm:管理软件包的工具

这些命令都是用于管理软件包的工具,它们可以安装,卸载,更新,查询软件包。不同的Linux发行版使用不同的包管理器,例如:

  • Ubuntu和Debian使用apt
  • Arch Linux和Manjaro使用pacman
  • Red Hat和CentOS使用yum
  • Fedora和SUSE使用rpm

这些命令的用法和选项有些差异,但是基本的功能和逻辑都是类似的。下面我会以apt为例,介绍一些常用的操作和选项,其他的包管理器你可以参考[这个网站]进行比较和学习。

apt

apt命令是Ubuntu和Debian的包管理器,它可以接受一个或多个参数,表示要执行的操作或选项。常用的操作有:

  • install:安装指定的软件包或更新已安装的软件包
  • remove:卸载指定的软件包,但保留其配置文件
  • purge:卸载指定的软件包,并删除其配置文件
  • update:更新软件包的列表,从软件源获取最新的信息
  • upgrade:更新所有已安装的软件包,安装最新的版本
  • search:搜索软件包的名称或描述,找到匹配的软件包
  • show:显示指定的软件包的详细信息,如版本,大小,依赖等

常用的选项有:

  • -y:自动回答所有的提示,不需要用户确认
  • -s:模拟模式,只显示要执行的操作,但不实际执行
  • -f:修复模式,尝试修复依赖关系或损坏的软件包
  • -q:安静模式,只显示错误和警告,不显示其他信息
# 安装一个软件包,如vim
$ sudo apt install vim

# 卸载一个软件包,如vim,但保留其配置文件
$ sudo apt remove vim

# 卸载一个软件包,如vim,并删除其配置文件
$ sudo apt purge vim

pacman

它是Arch Linux和Manjaro的包管理器,它可以接受一个或多个参数,表示要执行的操作或选项。常用的操作有:

  • -S:安装指定的软件包或组,或者从软件源同步数据库
  • -R:卸载指定的软件包或组,或者删除孤立的软件包
  • -U:安装本地的软件包文件
  • -Q:查询已安装的软件包或组,或者显示软件包的信息
  • -Ss:搜索软件包的名称或描述,找到匹配的软件包
  • -Syu:更新所有已安装的软件包,安装最新的版本

常用的选项有:

  • -y:刷新软件源数据库
  • -u:升级所有已安装的软件包
  • -q:安静模式,只显示必要的信息
  • -s:搜索模式,根据关键字查找软件包
  • -i:显示软件包的详细信息,如版本,大小,依赖等

示例:

# 安装一个软件包,如vim
$ sudo pacman -S vim

# 卸载一个软件包,如vim
$ sudo pacman -R vim

# 查询已安装的软件包或组,如vim或base
$ pacman -Q vim
vim 8.2.3458-1
$ pacman -Q base
base 2-2

# 显示软件包的详细信息,如vim
$ pacman -Qi vim

# 搜索软件包的名称或描述,找到匹配的软件包,如vim
$ pacman -Ss vim

yum

它是Red Hat和CentOS的包管理器,它可以接受一个或多个参数,表示要执行的操作或选项。常用的操作有:

  • install:安装指定的软件包或组,或者从软件源同步数据库
  • remove:卸载指定的软件包或组,或者删除孤立的软件包
  • update:更新所有已安装的软件包,安装最新的版本
  • search:搜索软件包的名称或描述,找到匹配的软件包
  • info:显示指定的软件包或组的详细信息,如版本,大小,依赖等
  • list:列出软件源中的所有软件包或组,或者已安装的软件包或组

常用的选项有:

  • -y:自动回答所有的提示,不需要用户确认
  • -q:安静模式,只显示必要的信息
  • -v:详细模式,显示更多的信息

示例:

# 安装一个软件包,如vim
$ sudo yum install vim

useradd:创建新用户

useradd命令用于在Linux系统中创建新的用户账号。创建用户账号时,可以指定一些选项,如用户ID,用户组,登录目录,登录Shell等。创建用户账号后,还需要使用passwd命令为用户设置密码。

useradd命令的语法格式如下:

useradd [选项] 用户名

常用的选项有:

  • -c:添加备注文字,通常是用户的全名或者其他描述信息。
  • -d:指定用户的登录目录,如果不存在则自动创建。
  • -e:指定用户的有效期限,格式为YYYY-MM-DD。
  • -f:指定在密码过期后多少天即关闭该账号,0表示立即关闭,-1表示永不关闭。
  • -g:指定用户所属的基本用户组,可以是用户组名或用户组ID。
  • -G:指定用户所属的附加用户组,可以是一个或多个用户组名或用户组ID,以逗号分隔。
  • -m:创建用户的登录目录,如果指定了-d选项,则以-d选项为准。
  • -M:不创建用户的登录目录,即使系统默认值要求创建。
  • -n:不创建以用户名为名的用户组。
  • -r:创建系统账号,系统账号的用户ID小于500,且没有登录目录。
  • -s:指定用户的默认Shell,可以是Shell的绝对路径或名称,如/bin/bash或bash。
  • -u:指定用户的用户ID,必须是唯一的且大于等于500(除非指定了-r选项)。

useradd命令的示例:

# 创建一个普通用户,用户名为alice,用户组为users,登录目录为/home/alice,登录Shell为/bin/bash
useradd -g users -d /home/alice -s /bin/bash alice

# 创建一个系统用户,用户名为backup,用户ID为999,没有登录目录,登录Shell为/sbin/nologin
useradd -r -u 999 -s /sbin/nologin backup

usermod:修改现有用户

usermod命令用于修改现有用户的账号信息,如用户ID,用户组,登录目录,登录Shell等。修改用户信息时,需要确保用户没有登录,没有运行任何进程。

usermod命令的语法格式如下:

usermod [选项] 用户名

常用的选项有:

  • -c:修改用户的备注文字。
  • -d:修改用户的登录目录,如果指定了-m选项,则同时移动用户的旧目录内容到新目录。
  • -e:修改用户的有效期限,格式为YYYY-MM-DD。
  • -f:修改在密码过期后多少天即关闭该账号,0表示立即关闭,-1表示永不关闭。
  • -g:修改用户所属的基本用户组,可以是用户组名或用户组ID。
  • -G:修改用户所属的附加用户组,可以是一个或多个用户组名或用户组ID,以逗号分隔。如果不带任何用户组,则删除用户的所有附加用户组。
  • -l:修改用户的用户名,需要确保新用户名不存在。
  • -L:锁定用户的密码,使密码无效。
  • -m:移动用户的登录目录,需要与-d选项一起使用。
  • -o:允许修改用户的用户ID为一个已经存在的用户ID。
  • -p:修改用户的密码,需要使用加密后的密码字符串,可以使用openssl命令生成。
  • -s:修改用户的登录Shell,可以是Shell的绝对路径或名称,如/bin/bash或bash。
  • -u:修改用户的用户ID,需要确保新用户ID不存在。
  • -U:解锁用户的密码,使密码恢复有效。

usermod命令的示例:

# 修改用户alice的用户名为bob,同时移动其登录目录和邮件目录
usermod -l bob -m -d /home/bob alice

# 修改用户bob的用户ID为888,同时修改其基本用户组为staff
usermod -u 888 -g staff bob

# 修改用户bob的密码为123456(加密后的字符串)
usermod -p $(openssl passwd -1 123456) bob

# 锁定用户bob的密码,不允许登录
usermod -L bob

groupadd:创建新用户组

groupadd命令用于在Linux系统中创建新的用户组。创建用户组时,可以指定一些选项,如用户组ID,用户组密码等。创建用户组后,可以使用useradd或usermod命令将用户添加到用户组中。

groupadd命令的语法格式如下:

groupadd [选项] 用户组名

常用的选项有:

  • -f:如果用户组已经存在,则不报错,直接退出。
  • -g:指定用户组的用户组ID,必须是唯一的且大于等于500。
  • -K:覆盖配置文件/etc/login.defs中的设置。
  • -o:允许创建用户组ID不唯一的用户组。
  • -p:指定用户组的密码,需要使用加密后的密码字符串,可以使用openssl命令生成。
  • -r:创建系统用户组,系统用户组的用户组ID小于500。

groupadd命令的示例:

# 创建一个普通用户组,用户组名为dev,用户组ID为600
groupadd -g 600 dev

# 创建一个系统用户组,用户组名为sys,用户组ID为999
groupadd -r -g 999 sys

# 创建一个用户组,用户组名为admin,用户组密码为123456(加密后的字符串)
groupadd -p $(openssl passwd -1 123456) admin

groupmod:修改现有用户组

groupmod命令用于修改现有用户组的属性,如用户组名,用户组ID,用户组密码等。修改用户组信息时,需要确保用户组没有被任何进程使用。

groupmod命令的语法格式如下:

groupmod [选项] 用户组名

常用的选项有:

  • -g:修改用户组的用户组ID,需要确保新用户组ID不存在。
  • -n:修改用户组的用户组名,需要确保新用户组名不存在。
  • -o:允许修改用户组的用户组ID为一个已经存在的用户组ID。
  • -p:修改用户组的密码,需要使用加密后的密码字符串,可以使用openssl命令生成。

groupmod命令的示例:

# 修改用户组dev的用户组ID为700
groupmod -g 700 dev

# 修改用户组dev的用户组名为develop
groupmod -n develop dev

# 修改用户组develop的密码为654321(加密后的字符串)
groupmod -p $(openssl passwd -1 654321) develop

sudo:以超级用户身份运行命令

sudo命令用于以超级用户(root)的身份运行指定的命令,通常需要输入当前用户的密码进行验证。sudo命令可以让普通用户执行一些或者全部的root命令,如halt,reboot,shutdown,init等等。sudo命令的授权信息保存在/etc/sudoers文件中,可以使用visudo命令编辑该文件。

 

你好,这是必应。我可以帮你写一篇博客介绍sudo命令,它是一个用于以超级用户身份运行命令的Linux命令。请看我的回答:

Linux命令介绍:sudo

Linux系统中,有些命令只能由超级用户(root)执行,如halt,reboot,shutdown,init等。如果普通用户想要执行这些命令,就需要使用sudo命令。sudo命令可以让系统管理员授权一些或全部的root权限给普通用户,从而提高系统的安全性和灵活性。

sudo的基本用法

sudo命令的基本语法格式如下:

sudo [选项] [命令]

其中,命令是要以超级用户身份执行的命令,可以是任何有效的Linux命令。选项是一些可选的参数,用于指定sudo的行为和设置。常用的选项有:

  • -b:在后台运行命令,不占用终端。
  • -h:显示帮助信息。
  • -l:显示当前用户可以执行的命令列表。
  • -u:指定要切换的用户,可以是用户名或用户ID。默认是root。
  • -v:更新当前用户的认证时间戳,延长sudo的有效期。
  • -k:使当前用户的认证时间戳失效,下次使用sudo时需要重新输入密码。
  • -s:启动一个Shell,以指定的用户身份运行。默认是root。
  • -i:启动一个登录Shell,以指定的用户身份运行。默认是root。
  • -p:指定密码提示符,可以使用一些转义字符,如%u表示用户名,%h表示主机名等。
  • -S:从标准输入读取密码,而不是从终端。
  • -n:在没有终端的情况下运行命令,如果需要输入密码,则失败。
  • -H:设置HOME环境变量为目标用户的家目录。
  • -E:保留当前用户的环境变量,而不是重置为默认值。
  • -C:关闭大于或等于指定的文件描述符号。
  • -V:显示版本信息。

下面给出一些sudo命令的使用示例,以说明sudo的功能和用法。

  • 以超级用户身份执行ls命令,查看根目录的内容:
sudo ls /
  • 以用户bob的身份执行whoami命令,显示当前用户名:
sudo -u bob whoami
  • 以超级用户身份执行apt update命令,更新软件包列表,不需要输入密码:
sudo -n apt update
  • 以超级用户身份启动一个登录Shell,使用root的环境变量和家目录:
sudo -i
  • 显示当前用户可以执行的命令列表:
sudo -l
  • 使当前用户的认证时间戳失效,下次使用sudo时需要重新输入密码:
sudo -k

 

你可能感兴趣的:(linux,服务器,运维)