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 -ePID TTY TIME CMD1 ? 00:00:02 systemd2 ? 00:00:00 kthreadd3 ? 00:00:00 rcu_gp4 ? 00:00:00 rcu_par_gp6 ? 00:00:00 kworker/0:0H-kb9 ? 00:00:00 mm_percpu_wq10 ? 00:00:00 ksoftirqd/011 ? 00:00:00 rcu_sched12 ? 00:00:00 migration/013 ? 00:00:00 idle_inject/014 ? 00:00:00 cpuhp/015 ? 00:00:00 cpuhp/116 ? 00:00:00 idle_inject/117 ? 00:00:00 migration/118 ? 00:00:00 ksoftirqd/120 ? 00:00:00 kworker/1:0H-kb21 ? 00:00:00 cpuhp/222 ? 00:00:00 idle_inject/223 ? 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 bob@192.168.0.100
bob@192.168.0.100'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/advantagebob@ubuntu:~$# 远程登录到主机192.168.0.100,使用用户名bob,指定端口号2222
$ ssh bob@192.168.0.100 -p 2222
bob@192.168.0.100'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/advantagebob@ubuntu:~$# 远程登录到主机192.168.0.100,使用用户名bob,指定私钥文件的路径
$ ssh bob@192.168.0.100 -i ~/.ssh/id_rsa# 远程登录到主机192.168.0.100,使用用户名bob,显示详细的连接信息
$ ssh bob@192.168.0.100 -v
scp:用于在本地和远程主机之间复制文件
scp命令用于在本地和远程主机之间复制文件,它可以接受两个或多个参数,表示要复制的源文件或目录,以及要复制到的目标文件或目录。常用的选项有:
-r
:递归复制目录及其内容-p
:保留文件的属性,如修改时间,访问权限等-q
:不显示复制的过程-P
:指定远程主机的端口号-i
:指定私钥文件的路径
示例:
# 从本地复制文件file1.txt到远程主机192.168.0.100的用户bob的主目录
$ scp file1.txt bob@192.168.0.100:
bob@192.168.0.100's password:
file1.txt 100% 10 10.0KB/s 00:00 # 从本地复制目录dir1及其内容到远程主机192.168.0.100的用户bob的主目录,保留文件的属性
$ scp -r -p dir1 bob@192.168.0.100:
bob@192.168.0.100'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 bob@192.168.0.100:/file1.txt
bob@192.168.0.100's password:
file1.txt 100% 10 10.0KB/s 00:00 # 从远程主机192.168.0.100的用户bob的主目录复制目录dir1及其内容到本地,不显示复制的过程
$ scp -r -q bob@192.168.0.100:~/dir1
bob@192.168.0.100's password: # 从本地复制文件file1.txt到远程主机192.168.0.100的用户bob的主目录,指定端口号2222,指定私钥文件的路径
$ scp -P 2222 -i ~/.ssh/id_rsa file1.txt bob@192.168.0.100:~
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
<!doctype html>
<html>
<head><title>Example Domain</title>
...
</html># 从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
<!doctype html>
<html>
<head><title>Example Domain</title>
...
</html># 从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
<!doctype html>
<html>
<head><title>Example Domain</title>
...
</html># 向URL https://www.example.com 发送POST请求,添加自定义的请求头,指定请求的数据
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"alice","age":25}' https://www.example.com
<!doctype html>
<html>
<head><title>Example Domain</title>
...
</html># 向URL https://www.example.com 发送POST请求,指定请求的表单数据
$ curl -X POST -F "name=alice" -F "age=25" https://www.example.com
<!doctype html>
<html>
<head><title>Example Domain</title>
...
</html># 向URL https://www.example.com 发送GET请求,指定请求的用户名和密码
$ curl -u alice:123456 https://www.example.com
<!doctype html>
<html>
<head><title>Example Domain</title>
...
</html>
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+ COMMAND1015 alice 20 0 922952 46296 30616 S 0.0 2.3 0:02.08 gnome-shell826 root 20 0 282976 15732 12304 S 0.0 0.8 0:01.67 Xorg948 alice 20 0 287808 11364 9368 S 0.0 0.6 0:00.14 gnome-session-b971 alice 20 0 111760 9336 7780 S 0.0 0.5 0:00.06 ssh-agent1000 alice 20 0 191484 9164 7840 S 0.0 0.4 0:00.05 ibus-daemon1005 alice 20 0 111508 8940 7560 S 0.0 0.4 0:00.03 ibus-x111008 alice 20 0 109704 8860 7480 S 0.0 0.4 0:00.03 ibus-portal1028 alice 20 0 274300 8796 7264 S 0.0 0.4 0:00.04 at-spi-bus-laun1033 alice 20 0 109704 8760 7380 S 0.0 0.4 0:00.03 ibus-engine-sim1040 alice 20 0 274300 8744 7216 S 0.0 0.4 0:00.04 at-spi-bus-laun1051 alice 20 0 191484 8720 7400 S 0.0 0.4 0:00.04 ibus-daemon1055 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1060 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1065 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1070 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1075 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1080 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1085 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1090 alice 20 0 109704 8704 7324 S 0.0 0.4 0:00.03 ibus-engine-sim1095 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+ COMMAND1015 alice 20 0 922952 46296 30616 S 0.0 2.3 0:02.08 gnome-shell826 root 20 0 282976 15732 12304 S 0.0 0.8 0:01.67 Xorg948 alice 20 0 287808 11364 9368 S 0.0 0.6 0:00.14 gnome-session-b971 alice 20 0 111760 9336 7780 S 0.0 0.5 0:00.06 ssh-agent1000 alice 20 0 191484 9164 7840 S 0.0 0.4 0:00.05 ibus-daemon1005 alice 20 0 111508 8940 7560 S 0.0 0.4 0:00.03 ibus-x111008 alice 20 0 109704 8860 7480 S 0.0 0.4 0:00.03 ibus-portal1028 alice 20 0 274300 8796 7264 S 0.0 0.4 0:00.04 at-spi-bus-laun1033 alice 20 0 109704 8760 7380 S 0.0 0.4 0:00.03 ibus
free:用于显示内存的使用情况
free命令用于显示内存的使用情况,它可以接受一个或多个参数,表示要显示的内存类型或单位。常用的选项有:
-h
:以可读的格式显示内存的使用情况,如K,M,G等-t
:显示总的内存和交换空间的使用情况-m
:以兆字节为单位显示内存的使用情况-g
:以吉字节为单位显示内存的使用情况
示例:
# 显示内存的使用情况
$ freetotal used free shared buff/cache available
Mem: 2038996 281400 1080620 14080 677976 1569748
Swap: 0 0 0# 显示内存的使用情况,以可读的格式显示
$ free -htotal used free shared buff/cache available
Mem: 1.9Gi 274Mi 1.0Gi 13Mi 662Mi 1.5Gi
Swap: 0B 0B 0B# 显示内存的使用情况,显示总的内存和交换空间的使用情况
$ free -ttotal used free shared buff/cache available
Mem: 2038996 281400 1080620 14080 677976 1569748
Swap: 0 0 0
Total: 2038996 281400 1080620# 显示内存的使用情况,以兆字节为单位显示
$ free -mtotal used free shared buff/cache available
Mem: 1990 274 1054 13 662 1533
Swap: 0 0 0# 显示内存的使用情况,以吉字节为单位显示
$ free -gtotal 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: activeTo 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最全基础入门命令(简单明了建议收藏)
Linux是一种开源的操作系统,它有许多强大的命令行工具,可以让用户对系统进行各种操作和管理。本文将介绍一些Linux最常见最全的命令,以及它们的用法和示例。 目录 ls:用于列出目录中的文件和子目录cd:用于切换当前工作目录pwd:于显示当前工作…...

dgl 的cuda 版本 环境配置(dgl cuda 版本库无法使用问题解决)
1. 如果你同时有dgl dglcu-XX.XX 那么,应该只会运行dgl (DGL的CPU版本),因此,你需要把dgl(CPU)版本给卸载了 但是我只卸载CPU版本还不够,我GPU 版本的dglcu依旧不好使,因此吧GPU版本的也得卸载…...

回文数和复利的威力(C#)
题目:回文数 回⽂数指正序(从左到右)和倒序(从右到左)读都是⼀样的整数。 输⼊⼀个数,判断是否是回⽂数 样例输⼊ 2397 输出no 样例输⼊ 2992 样例输出yes 输⼊的整数⼤于0,⼩于1000000。如…...

【Java】面向对象程序设计 课程笔记 Java核心类
🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:Java 💬希望你看完之后,能对你有所帮助࿰…...

16个值得推荐的.NET ORM框架
什么是ORM? ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型…...

Git 进阶使用
一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中,它通常用于管理和操作版本控制系统(如Git、SVN等)以及代码开发环境(如IDE)。与…...

【微软技术栈】C#.NET 泛型数学
本文内.NET 7 为基类库引入了新的数学相关泛型接口。 提供这些接口意味着可以将泛型类型或方法的类型参数约束为“类似于数字”。 此外,C# 11 及更高版本允许定义 static virtual 接口成员。 由于必须将运算符声明为 static,因此这一新的 C# 功能可用于在…...

【nlp】1.1文本处理的基本方法
文本处理的基本方法 1 什么是分词2 什么是命名实体识别3 什么是词性标准1 什么是分词 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形…...

流量分析(信息安全铁人三项赛分区赛2-5.18)
题目描述 目录 题目描述 黑客的IP是多少 服务器1.99的web服务器使用的CMS及其版本号(请直接复制) 服务器拿到的webshell的网址(请输入url解码后的网址) 服务器1.99的主机名 网站根目录的绝对路径(注意最后加斜杠) 黑客上传的第一个文件名称是什么 黑客进行内网扫描&am…...

云服务器如何选?腾讯云2核2G3M云服务器88元一年!
作为一名程序员,在选择云服务器时,我们需要关注几个要点:网络稳定性、价格以及云服务商的规模。这些要素将直接影响到我们的使用体验和成本效益。接下来,我将为大家推荐一款性价比较高的轻应用云服务器。 腾讯云双11活动 腾讯云…...

【Hello Go】初识Go语言
初识Go语言 Go语言介绍Go语言是什么Go语言优势Go语言能用来做什么 Go语言环境安装第一个GO语言程序运行Go语言程序 Go语言介绍 Go语言是什么 go语言是是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言. 静态类型:在静态类型…...

计算机视觉:人脸识别与检测
目录 前言 识别检测方法 本文方法 项目解析 完整代码及效果展示 前言 人脸识别作为一种生物特征识别技术,具有非侵扰性、非接触性、友好性和便捷性等优点。人脸识别通用的流程主要包括人脸检测、人脸裁剪、人脸校正、特征提取和人脸识别。人脸检测是从获取的图…...

【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等
LLaMA 2.0是 Meta AI 的开创性作品,作为首批高性能开源预训练语言模型之一闯入了 AI 场景。值得注意的是,LLaMA-13B 的性能优于巨大的 GPT-3(175B),尽管其尺寸只是其一小部分。您无疑听说过 LLaMA 令人印象深刻的性能,但您是否想知…...

ctyunos 与 openeuler
ctyunos-2.0.1-220311-aarch64-dvd ctyunos-2.0.1-220329-everything-aarch64-dvd glibc python3 对应openEuler 20.03 LTS SP1...

跟着GPT学设计模式之工厂模式
工厂模式(Factory Design Pattern)分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中,简单工厂、工厂方法原理比较简单,在实际的项目中也比较常用。而抽象工厂的原理稍微复杂点…...

VScode+python开发,多个解释器切换问题
内容:主要VScode使用多个解释器 环境准备 VScode编辑器,两个版本python解释器 python3.7.2 python3.11.6 问题: 目前我们的电脑安装了python3.7.2、python3.11.6两个解释器,在vscode编辑器中,无法切换解释器使用如…...

c++ 经典服务器开源项目Tinywebserver如何运行
第一次直接按作者的指示,运行sh ./build.sh,再运行./server,发现不起作用,localhost:9006也是拒绝访问的状态,后来摸索成功了发现,运行./server之后,应该是启动状态,就是不会退出,而…...

c++之xml的创建,增删改查
c之xml的创建,增删改查 1.创建写入2.添加3.删除4.修改: 1.创建写入 #include <stdio.h> #include <typeinfo> #include "F:/EDGE/tinyxml/tinyxml.h" #include <iostream> #include <string> #include <Winsock2.…...

【前端开发】JS Vue React中的通用递归函数
目录 前言 一、递归函数的由来 二、功能实现 1.后台数据 2.处理数据 3.整体代码 总结 🙂博主:冰海恋雨. 🙂文章核心:【前端开发】JS Vue React中的通用递归函数 前言 大家好,今天和大家分享一下在前端开发中j…...

【python 生成器 面试必备】yield关键字,协程必知必会系列文章--自己控制程序调度,体验做上帝的感觉 1
python生成器系列文章目录 第一章 yield — Python (Part I) 文章目录 python生成器系列文章目录前言1. Generator Function 生成器函数2.并发和并行,抢占式和协作式2.Let’s implement Producer/Consumer pattern using subroutine: 生成器的状态 generator’s st…...

头哥实践平台之MapReduce基础实战
一. 第1关:成绩统计 编程要求 使用MapReduce计算班级每个学生的最好成绩,输入文件路径为/user/test/input,请将计算后的结果输出到/user/test/output/目录下。 先写命令行,如下: 一行就是一个命令 touch file01 echo Hello World Bye Wor…...

Linux基础知识——tmux和vim
Linux基础知识——tmux和vim 文章目录 Linux基础知识——tmux和vim一、tmux1. 功能2. 结构3. 操作 二、vim功能模式操作 一、tmux tmux配置:~/.tmux.conf修改为如下 set-option -g status-keys vi setw -g mode-keys visetw -g monitor-activity on# setw -g c0-cha…...

Java Web——TomcatWeb服务器
目录 1. 服务器概述 1.1. 服务器硬件 1.2. 服务器软件 2. Web服务器 2.1. Tomcat服务器 2.2. 简单的Web服务器使用 1. 服务器概述 服务器指的是网络环境下为客户机提供某种服务的专用计算机,服务器安装有网络操作系统和各种服务器的应用系统服务器的具有高速…...

Zookeeper 命令使用和数据说明
文章目录 一、概述二、命令使用2.1 登录 ZooKeeper2.2 ls 命令,查看目录树(节点)2.3 create 命令,创建节点2.4 delete 命令,删除节点2.5 set 命令,设置节点数据2.6 get 命令,获取节点数据 三、数…...

索尼RSV文件怎么恢复为MP4视频
索尼相机RSV是什么文件? 如果您的相机是索尼SONY A7S3,A7M4,FX3,FX3,FX6,或FX9等,有时录像会产生一个RSV文件,而没有MP4视频文件。RSV其实是MP4的前期文件,经我对RSV文件…...

pytorch-gpu(Anaconda3+cuda+cudnn)
文章目录 下载Anaconda3安装,看着点next就行比较懒所以自动添加path测试 cuda安装的时候不能改路径如果出现报错,关闭杀毒软件一直下一步就好取消勾选“CUDA”中的“Visual Studio Intergration”一直下一步即可测试安装成功 cudnn解压后将这三个文件夹复…...

解析数据洁净之道:BI中数据清理对见解的深远影响
本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 随着数字化和信息化进程的不断发展,数据已经成为企业的一项不可或缺的重要资源。然而,这…...

efcore反向共工程,单元测试
1.安装efcore需要的nuget <PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /> <PackageReference Include"Microsoft.EntityFrameworkCore.SqlServer" Version"6.0.24" /> <PackageRefere…...

利用IP风险画像强化金融行业网络安全防御
在数字化时代,金融行业日益依赖互联网和技术创新,但这也使得金融机构成为网络攻击的主要目标。为了应对日益复杂的网络威胁,金融机构迫切需要采用先进的安全技术和工具。其中,IP风险画像技术成为提升网络安全的一项重要策略。 1.…...

1334. 阈值距离内邻居最少的城市
分析题目两点“阈值距离”、“邻居最少”。 “阈值距离”相当于定了个上界,求节点之间的最短距离。 “邻居最少”相当于能连接的点的数量。 求节点之间的最短距离有以下几种方法: 在这道题当中,n的范围是100以内,所以可以考虑O(n…...