当前位置: 首页 > news >正文

Linux - 2.系统命令

1.帮助命令

1.help

[root@localhost /]# cp --help
  • 1.查看命令的信息和参数
  • 2.只能显示shell内部的命令信息
  • 3.help命令第一部分是概述,第二部分是参数详解,第三部分是说明和注意
    在这里插入图片描述
    # 使用语法
    Usage: cp [OPTION]... [-T] SOURCE DESTor:  cp [OPTION]... SOURCE... DIRECTORYor:  cp [OPTION]... -t DIRECTORY SOURCE...
    # 实现功能
    Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
    # 长参和短参是一样的效果
    Mandatory arguments to long options are mandatory for short options too.
    

2.man

[root@localhost /]# man help
  • 1.查看命令的信息和参数
  • 2.man是在程序安装时安装的帮助文档
  • 3.程序的man帮助文档可能存在多个
    # man文档的序号
    CP(1)                                     User Commands                                    CP(1)
    # 名称和内容
    NAMEcp - copy files and directories
    # 概要
    SYNOPSIScp [OPTION]... [-T] SOURCE DESTcp [OPTION]... SOURCE... DIRECTORYcp [OPTION]... -t DIRECTORY SOURCE...
    # 描述
    DESCRIPTIONCopy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.Mandatory arguments to long options are mandatory for short options >	too.
    

3.info

[root@localhost /]# info help
  • info指令是man 指令的详细内容

2.开关机命令

1.halt

# 关机,实际上是调用shutdown -H命令
[root@localhost /]# halt

2.reboot

# 重启,实际上是调用shutdown -r命令
[root@localhost /]# reboot

3.shutdown

#  用于安全关闭Linux系统
[root@localhost /]# shutdown now

4.poweroff

#  关闭计算器并切断电源,实际上是调用shutdown -P命令
[root@localhost /]# shutdown now

4.init

  • 1.init是所有进程的祖先,其进程号始终为1
  • 2.init用于切换系统的运行级别,切换是立即完成的
  • 3.init 0命令用于立即将系统运行级别切换为0,即关机
  • 4.init 6命令用于将系统运行级别切换为6,即重新启动。

3.输出命令

1.echo

1.显示普通字符串
echo "It is a test"
双引号可省略
echo It is a test
2.显示转义字符
echo "\"It is a test\""
双引号可省略
echo \"It is a test\"
3.显示变量
#!/bin/sh
# read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量name
read name 
echo "$name It is a test"
[root@www ~]# sh test.sh
OK                     #标准输入
OK It is a test        #输出
4.显示换行
echo -e "OK! \n" # -e 开启转义,echo默认换行
echo "It is a test"
OK!It is a test
5.显示不换行
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
OK! It is a test
6.显示结果定向至文件
echo "It is a test" > myfile
7.原样输出字符串,不进行转义或取变量(用单引号)
echo '$name\"'
$name\"
8.显示命令执行结果
echo `date`
注意: 这里使用的是反引号 `, 而不是单引号 '
Thu Jul 24 10:08:46 CST 2014

2.printf

转义字符说明
\a警告字符,通常为ASCII的BEL字符
\b后退
\c抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f换页(formfeed)
\n换行
\r回车(Carriage return)
\t水平制表符
\v垂直制表符
\一个字面上的反斜杠字符
\ddd表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd表示1到3位的八进制值字符
printf  format-string  [arguments...]
  • format-string: 为格式控制字符串
  • arguments: 为参数列表
1.格式化输出
#!/bin/bashprintf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com# format-string为双引号
printf "%d %s\n" 1 "abc"# 单引号与双引号效果一样
printf '%d %s\n' 1 "abc"# 没有引号也可以输出
printf %s abcdef# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc defprintf "%s\n" abc defprintf "%s %s %s\n" a b c d e f g h i j# 如果没有 arguments,那么 %s 用空字符串代替,%d 用 0 代替
printf "%s and %d \n"
1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  
and 0
$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB>$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>$ printf "www.runoob.com \a"
www.runoob.com $                  #不换行
  • 1.%s %c %d %f 都是格式替代符
  • 2.%s 输出一个字符串
  • 3.%d 整型输出
  • 4.%c 输出一个字符
  • 5.%f 输出实数,以小数形式输出
  • 6.%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来
  • 7.%-4.2f 指格式化为小数,其中 .2 指保留2位小数

4.网络命令

1.ping

# 1.用于测试主机之间网络连接的连通性
# 2.通过发送 ICMP(Internet Control Message Protocol)回显请求消息到目标主机,并等待回显响应来判断网络是否可达
ping [选项] 目标主机(IP地址/域名)
# 3.选项
# -c <count>:指定发送回显请求的次数
# -i <interval>:指定发送回显请求的时间间隔(单位为秒),默认值为 1 秒
# -t <ttl>:设置 IP 数据包的生存时间(TTL,Time To Live),TTL 是一个 8 位字段,用于限制数据包在网络中的跳数,每经过一个路由器,TTL 减 1,当 TTL 为 0 时,数据包被丢弃
# -s <size>:指定发送的数据包大小(单位为字节),默认值通常为 56 字节(加上 8 字节的 ICMP 头部 和 20 字节的 IP 头部,总共 84 字节)
# -f:快速模式,以尽可能快的速度发送回显请求,直到中断,通常用于测试网络的带宽和负载能力
# -w <timeout>:Windows 系统指定超时时间(单位为毫秒)
[root@localhost /]# ping -c 4 -i 2 -t 52 -w 2000 -s 56 www.baidu.com
PING www.a.shifen.com (180.101.51.73) 56(84) bytes of data.
64 bytes from 180.101.51.73 (180.101.51.73): icmp_seq=1 ttl=52 time=10.3 ms
64 bytes from 180.101.51.73 (180.101.51.73): icmp_seq=2 ttl=52 time=9.78 ms
64 bytes from 180.101.51.73 (180.101.51.73): icmp_seq=3 ttl=52 time=8.97 ms
64 bytes from 180.101.51.73 (180.101.51.73): icmp_seq=4 ttl=52 time=11.1 ms--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 6030ms
rtt min/avg/max/mdev = 8.977/10.058/11.147/0.789 ms
# PING www.a.shifen.com:目标域名被解析为 www.a.shifen.com
# 180.101.51.73:目标域名的实际 IP 地址
# 56(84) bytes of data:发送的数据包大小为 56 字节(不包括 ICMP 头部),总大小为 84 字节(包括 8 字节的 ICMP 头部和 20 字节的 IP 头部)
# 64 bytes:收到的回显响应数据包大小为 64 字节
# from 180.101.51.73:响应来自 IP 地址 180.101.51.73
# icmp_seq=1:ICMP 序列号为 1,表示这是第一个发送的请求的响应
# ttl=52:响应数据包的生存时间(TTL)为 52
# time=10.3 ms:往返时间(RTT)为 10.3 毫秒
# 4 packets transmitted:发送了 4 个 ICMP 回显请求。
# 4 received:收到了 4 个 ICMP 回显响应。
# 0% packet loss:没有数据包丢失。
# time 6030ms:整个操作的总时间为 6030 毫秒(6.03 秒)。
# min:最小往返时间(RTT)为 8.977 毫秒
# avg:平均往返时间为 10.058 毫秒
# max:最大往返时间为 11.147 毫秒
# mdev:平均偏差(Mean Deviation)为 0.789 毫秒,表示往返时间的波动范围

2.ip

# 显示ip信息,其中address可以任意简写 例:a,ad,add,addr,addre,addres
[root@localhost /]# ip address

4.ifconfig

# centos 7之前版本查看ip的命令,已经遗弃
[root@localhost /]# ifconfig
-bash: ifconfig: 未找到命令

2.dhclient

# 动态分配一个ip,临时生效
[root@localhost /]# dhclient

5.netstat

netstat [选项]选项:
-a或–all :显示所有连线中的Socket
-A<网络类型>或–<网络类型> :列出该网络类型连线中的相关地址
-c或–continuous :持续列出网络状态
-C或–cache :显示路由器配置的快取信息
-e或–extend :显示网络其他相关信息
-F或–fib :显示FIB
-g或–groups :显示多重广播功能群组组员名单
-h或–help :在线帮助
-i或–interfaces :显示网络界面信息表单
-l或–listening :显示监控中的服务器的Socket
-M或–masquerade :显示伪装的网络连线
-n或–numeric :直接使用ip地址,而不通过域名服务器
-N或–netlink或–symbolic :显示网络硬件外围设备的符号连接名称
-o或–timers :显示计时器
-p或–programs :显示正在使用Socket的程序识别码和程序名称
-r或–route :显示Routing Table
-s或–statistice :显示网络工作信息统计表
-t或–tcp :显示TCP传输协议的连线状况
-u或–udp :显示UDP传输协议的连线状况
-v或–verbose :显示指令执行过程
-V或–version :显示版本信息
-w或–raw :显示RAW传输协议的连线状况
-x或–unix :此参数的效果和指定"-A unix"参数相同
–ip或–inet :此参数的效果和指定"-A inet"参数相同# 列出所有端口
netstat -a
# 列出所有TCP端口
netstat -at
# 列出所有UDP端口
netstat -au
# 列出所有处于监听状态的 Sockets
netstat -l
# 列出所有监听tcp端口
netstat -lt
# 列出所有监听udp端口
netstat -lu
# 列出所有监听UNIX端口
netstat -lx
# 输出中显示 PID 和进程名称
netstat -pt
# 直接显示ip地址和端口号
netstat -an
# 持续输出netstat信息,每隔一秒输出网络信息
netstat -c
# 显示核心路由信息
netstat -r
# 找出程序运行的端口
netstat -tunlp | grep ssh
# 找出运行在指定端口的进程
netstat -an | grep ":80"netstat -tunlp | grep ":3306"
# 通过端口找进程ID
netstat -tunlp | grep 3306 | awk '{print $7}' | cut -d/ -f1
# 显示网络接口列表
netstat -i
# 统计TCP各种状态列
netstat -n | awk '/^tcp/{++S[$NF]}END{for(i in S) print i,S[i]}'
  • 1.显示正在侦听的所有 TCPUDP 端口,包括使用端口和套接字状态的服务,一般用于检验本机各端口的网络连接情况
  • 2.TCP连接状态详解
    • 1.LISTEN: 侦听来自远方的TCP端口的连接请求
    • 2.SYN-SENT: 再发送连接请求后等待匹配的连接请求
    • 3.SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
    • 4.ESTABLISHED: 代表一个打开的连接
    • 5.FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
    • 6.FIN-WAIT-2: 从远程TCP等待连接中断请求
    • 7.CLOSE-WAIT: 等待从本地用户发来的连接中断请求
    • 8.CLOSING: 等待远程TCP对连接中断的确认
    • 9.LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
    • 10.TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
    • 11.CLOSED: 没有任何连接状态

6.nc

nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]-g<网关> 设置路由器跃程通信网关,最多可设置8个
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数
-h 在线帮助
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
-l 使用监听模式,管控传入的资料
-n 直接使用IP地址,而不通过域名服务器
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
-p<通信端口> 设置本地主机使用的通信端口
-r 乱数指定本地与远端主机的通信端口
-s<来源位址> 设置本地主机送出数据包的IP地址
-u 使用UDP传输协议
-v 显示指令执行过程
-w<超时秒数> 设置等待连线的时间
-z 使用0输入/输出模式,只在扫描通信端口时使用
监听端口号并向指定端口发送字符串消息数据
# 下载netcat,用于监听端口
yum install nc
# 下载net-tools,用于查看端口号使用情况
yum install -y net-tools
# 下载telnet,用于向端口号发送消息
yum install -y telnet
# 监听端口
nc -lk 9999
# 使用netstat -anpt 查看监听状态
netstat -anpt | grep 9999
# 发送数据
telnet ip 9999
# 右边nc自动接收
  • 用于设置路由器,监听端口

7.ss

ss [选项]选项:
-a, --all			 列出所有的socket
-h, --help           帮助信息
-V, --version        展示版本信息
-n, --numeric        不解析服务名称
-r, --resolve        解析主机名
-l, --listening      显示监听的socket,列出所有打开的网络连接端口
-o, --options        显示定时器信息
-e, --extended       显示socket的详细信息
-m, --memory         显示socket内存使用情况
-p, --processes      显示使用socket的进程
-i, --info           显示内部TCP信息
-s, --summary        显示socket使用情况摘要-4, --ipv4          只显示IP版本4的socket
-6, --ipv6          只显示IP版本6的socket
-0, --packet 		显示包socket
-t, --tcp           只显示TCP类型的socket
-u, --udp           只显示UDP类型的socket
-d, --dccp          只显示DCCP类型的socket
-w, --raw           只显示RAW类型的socket
-x, --unix          只显示Unix域socket
-f, --family=FAMILY 显示FAMILY类型的socket-A, --query=QUERY, --socket=QUERYQUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]-D, --diag=FILE     将TCP套接字的原始信息转储到FILE
-F, --filter=FILE   从文件中读取过滤器信息FILTER := [ state TCP-STATE ] [ EXPRESSION ]例:
ss -nlt
  • 1.ss(socket statistics):获取socket统计信息,内容类似netstat,但更详细更快

8.curl

5.日期命令

1.date

# 显示当前系统时间
[root@localhost ~]# date
20221021日 星期五 19:27:26 CST
# 显示年月日时分秒
[root@localhost ~]# date '+%F %T'
2022-10-21 19:29:43

6.清屏命令

1.clear

# 本质上只是让终端显示页向后翻了一页,向上滚动屏幕还可以看到之前的操作信息
[root@localhost /]# clear
# 快捷操作 ctrl+l

2.reset

# 完全刷新终端屏幕,之前的终端输入操作信息将都会被清空
[root@localhost /]# clear

7.终止命令

  • 1.Ctrl+cCtrl+z都是中断命令
  • 2.ctrl+c是强制中断程序的执行(终止)
  • 3.ctrl+z是将任务中止(暂停),
  • 4.可以使用fg/bg操作继续前台或后台的任务
  • 5.fg命令重新启动前台被中断的任务
  • 6.bg命令把被中断的任务放在后台执行
  • 7.ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF
  • 8.shell中,ctrl+d表示退出当前shell.

8.查看历史命令

1.上下箭头

  • 通过上下箭头即可查看历史命令

2.history

  • 1.查看历史命令
  • 2.历史命令一般存放在~/.bash_history
  • 3.只有当正常登陆退出之后系统才会将缓存中的命令写入文件
  • 4.历史命令最多可以保存1000条,可以在/etc/profile中进行修改,修改后执行source /etc/profile使环境变量生效
  • 5.使用“!n”重复执行第n条历史命令
  • 6.使用“!!”重复执行上一条命令
  • 7.使用“!字串”重复执行最后一条以该字串开头的命令
    在这里插入图片描述

9.自动补全命令

  • 通过Tab键可以自动补全已存在内容

10.目录命令

1.pwd(print work directory)

# 查看当前目录
[root@localhost home]# pwd
/home
# -P :显示出确实的路径,而非使用链接 (link) 路径
# 加上 -P 的选项后,会不显示链接,而显示正确的完整路径

2.cd(change directory)

# 切换目录
[root@localhost home]# cd /opt

3.ls(list files)

# 显示当前目录下的组成
[root@localhost home]# ls
test2.txt  test.txt
# 显示目录本身(.表示当前目录)
[root@localhost ~]# ls -d
.
# 显示以**开头的所有文件(.表示隐藏文件)
[root@localhost ~]# ls -d .*
.   .bash_history  .bash_profile  .cshrc          .oracle_jre_usage  .tcshrc
..  .bash_logout   .bashrc        .mysql_history  .rediscli_history  .viminfo
# 显示隐藏文件
[root@localhost home]# ls -a
.  ..  test2.txt  test.txt
# 显示文件的详细信息
[root@localhost home]# ls -l
总用量 8
-rw-r--r--. 1 root root  15 1022 12:35 test2.txt
-rw-r--r--. 1 root root 836 1022 12:59 test.txt
# 组合使用
[root@localhost home]# ls -al
总用量 8
drwxr-xr-x.  2 root root  39 1022 12:59 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
-rw-r--r--.  1 root root  15 1022 12:35 test2.txt
-rw-r--r--.  1 root root 836 1022 12:59 test.txt
# 显示指定目录中的文件
[root@localhost home]# ls /home
test2.txt  test.txt

在这里插入图片描述

4.mkdir(make directory)

  • 创建目录
[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test2.txt  test.txt
# 级联创建目录
[root@localhost home]# mkdir -p test/spring/springboot
# 创建目录并设置权限
[root@localhost home]mkdir -m 711 test2

5.rmdir(remove directory)

  • 1.删除一个空的目录(-p :从该目录起,一次删除多级空目录)
  • 2.rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录
    在这里插入图片描述

6.tree

tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外
  • 以树状图列出目录的内容

11.文件命令

1.touch

# 创建一个空文件
[root@localhost home]# touch frist.txt
[root@localhost home]# ls
frist.txt  test  test2.txt  test.txt

2.rm

# 1.删除文件
[root@localhost home]# rm frist.txt
rm:是否删除普通空文件 "frist.txt"?y
[root@localhost home]# ls
test  test2.txt  test.txt
# 2.删除目录,递归删除
[root@localhost home]# rm -r test
rm:是否进入目录"test"? y
rm:是否进入目录"test/spring"? y
rm:是否删除目录 "test/spring/springboot"?y
rm:是否删除目录 "test/spring"?y
rm:是否删除目录 "test"?y
# 3.强制删除文件
[root@localhost home]# rm -f test.txt
[root@localhost home]# ls
test2.txt
# 4.强制递归删除目录
[root@localhost home]# rm -rf test
# -i  互动模式,删除前会询问使用者

3.cp

# 1.复制文件
[root@localhost home]# cp test2.txt test1.txt
[root@localhost home]# ls
test1.txt  test2.txt
[root@localhost home]# cat test1.txt
test springmvc
# 2.复制到指定目录下
[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test1.txt  test2.txt
[root@localhost home]# cp test1.txt test
[root@localhost home]# ls
test  test1.txt  test2.txt
[root@localhost home]# cd test
[root@localhost test]# ls
test1.txt
# 3.添加-r参数复制文件夹-,递归复制目录
[root@localhost home]# cp -r a b     // a,b是目录,a中的所有内容(包含a)复制到b中
[root@localhost home]# cp -r a/* b   // a中的所有内容(不包含a)复制到b中
# 4.-i:若目标(destination)已经存在时,覆盖时会先询问
# 5.-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)

4.mv

[root@localhost home]# mv test2.txt test2
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]

相关文章:

  • Qt 强大的窗口停靠浮动
  • 高频面试题(含笔试高频算法整理)基本总结回顾25
  • JavaScript入门【1】概述
  • Java泛型详解
  • Uniapp、Flutter 和 React Native 全面对比
  • flutter 配置 安卓、Ios启动图
  • JavaScript【7】BOM模型
  • IDEA反斜杠路径不会显示JUnit运行的工作目录配置问题
  • GO语言学习(二)
  • Java卡与SSE技术融合实现企业级安全实时通讯
  • uni-app 开发HarmonyOS的鸿蒙影视项目分享:从实战案例到开源后台
  • golang读、写、复制、创建目录、删除、重命名,文件方法总结
  • GO语言学习(三)
  • C++学习-入门到精通-【7】类的深入剖析
  • BGP路由策略 基础实验
  • 2025年渗透测试面试题总结-百度面经(题目+回答)
  • Git Worktree 使用
  • 力扣-283-移动零
  • 【leetcode】逐层探索:BFS求解最短路的原理与实践
  • Power BI Desktop开发——矩阵相关操作
  • 解锁儿时愿望!潘展乐战胜孙杨,全国冠军赛男子400自夺冠
  • 金融月评|尽早增强政策力度、调整施策点
  • 征稿启事|澎湃·镜相第三届非虚构写作大赛暨2026第六届七猫现实题材征文大赛
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛征稿启事
  • 会谈时间迟迟未定、核心议题存在分歧,俄乌“土耳其谈判”一波三折
  • “家国万里时光故事会” 举行,多家庭共话家风与家国情怀