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

【Linux】常用命令(三)

【Linux】常用命令(三)

  • 1. export
    • 1.1 原理
    • 1.2 常用语法
    • 1.3 示例
    • 1.4 书中对命令的解释
    • 1.5 生效范围
  • 2. 测试服务地址与其端口能否访问
    • 2.1 nc(Netcat)命令
    • 2.2 telnet
    • 2.3 nmap
    • 2.4 curl命令 (适用于HTTP/HTTPS 服务)

1. export

export 是 Linux Shell(特别是 Bash) 中的一个内建命令,用来设置环境变量并将其导出到子进程中使用。

1.1 原理

在 Linux 中,变量有两类作用范围:

  1. Shell 变量(本地变量)
    • 只在当前 Shell 会话中有效
    • 不会自动传递给子进程
  2. 环境变量
    • 会被当前 Shell 和所有子进程继承
    • 典型例子:PATHHOMELANG

export 的作用就是:
1.把一个 Shell 变量升级为环境变量
2.或者直接创建一个新的环境变量

1.2 常用语法

export 变量名=# 创建变量并导出
export 变量名                  # 把已有的变量导出为环境变量
export -p                     # 显示当前所有已导出的环境变量

1.3 示例

普通变量不会传递给子进程

$ VAR1=hello
$ bash -c 'echo $VAR1'# 输出为空,因为 VAR1 只是当前 Shell 的本地变量
使用 export 让变量对子进程可见$ export VAR1=hello
$ bash -c 'echo $VAR1'
hello
先定义再导出$ VAR2=world
$ export VAR2
$ bash -c 'echo $VAR2'
world

查看当前所有环境变量

[root@iv-ye20h65dz45i3z346rvs ~]# export -p
# maven
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH# jdk
export JAVA_HOME=/opt/jdk/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH# 使用jdk8
usejdk8() {export JAVA_HOME=/opt/jdk/jdk1.8.0_161export PATH=$JAVA_HOME/bin:$(echo $PATH | sed -E 's|/usr/lib/jvm/[^/]+/bin:||g')java -version
}# 使用jdk21
usejdk21() {export JAVA_HOME=/opt/jdk/jdk-21.0.7export PATH=$JAVA_HOME/bin:$(echo $PATH | sed -E 's|/usr/lib/jvm/[^/]+/bin:||g')java -version
}

1.4 书中对命令的解释

在这里插入图片描述

1.5 生效范围

  • 临时生效:只在当前 Shell 会话有效,退出就消失
  • 永久生效:写到配置文件里,例如:
针对单个用户:~/.bashrc 或 ~/.bash_profile
全局生效:/etc/profile 或 /etc/bash.bashrc

写法举例:

# maven
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH# jdk
export JAVA_HOME=/opt/jdk/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATHsource ~/.bashrc  # 立即生效

2. 测试服务地址与其端口能否访问

往常我们都用ping命令,但是ping命令本身只能测试主机的连通性(即是否能达到目标服务器),但不能检测指定端口是否能访问。如果测试某个端口的可达性,可以使用nctelnetnmaep

2.1 nc(Netcat)命令

nc是一个非常强大的网络工具,通常用于测试端口是否开放。

nc -zv <IP地址或域名> <端口号>
  • -z:只扫描端口,不发送数据
  • -v 显示详情信息
# 端口开放的结果
base) ➜  ~ nc -zv 115.190.126.xxx 8080
Connection to 115.190.126.xxx port 8080 [tcp/http-alt] succeeded!(base) ➜  ~ nc -zv 115.190.126.xxx 3306
Connection to 115.190.126.xxx port 3306 [tcp/mysql] succeeded!# 端口关闭
(base) ➜  ~ nc -zv 115.190.126.xxx 443
nc: connectx to 115.190.126.xxx port 443 (tcp) failed: Connection refused
# 检测多个端口
nc -zv 192.168.0.1 80 443 8080

2.2 telnet

telnet可以连接到指定的端口,适合用来测试某个端口是否能打开。

telnet <IP地址或域名> <端口号>

如果端口可用,可以看到如下结果

(base) ➜  ~ telnet 115.190.126.xxx 3306
Trying 115.190.126.xxx...
Connected to 115.190.126.xxx.
Escape character is '^]'.

如果端口不可用,可以看到下面类似结果

(base) ➜  ~ telnet 115.190.126.xxx 3307
Trying 115.190.126.xxx...
telnet: connect to address 115.190.126.xxx: Operation timed out
telnet: Unable to connect to remote host

2.3 nmap

nmap是一个强大的网络扫描工具,常用于扫描主机和端口。

nmap -p <端口号> <IP地址或域名>
(base) ➜  ~ nmap -p 8080 115.190.126.xxx
Starting Nmap 7.97 ( https://nmap.org ) at 2025-08-13 23:01 +0800
Nmap scan report for 115.190.126.xxx
Host is up (0.014s latency).PORT     STATE SERVICE
8080/tcp open  http-proxyNmap done: 1 IP address (1 host up) scanned in 0.55 seconds

2.4 curl命令 (适用于HTTP/HTTPS 服务)

curl I http://<IP地址或域名>:<端口号>
(base) ➜  ~ curl -I http://115.190.126.xxx:3306
curl: (1) Received HTTP/0.9 when not allowed
(base) ➜  ~ curl -I http://115.190.126.xxx:8080
HTTP/1.1 200
WWW-Authenticate: Basic realm="rocketmq"
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Last-Modified: Tue, 22 Apr 2025 05:43:20 GMT
Accept-Ranges: bytes
Content-Type: text/html;charset=utf-8
Content-Language: en-US
Content-Length: 7022
Date: Wed, 13 Aug 2025 14:53:39 GMT
http://www.dtcms.com/a/329404.html

相关文章:

  • 智慧养老丨实用科普+避坑指南:科技如何让晚年生活更安全舒适?
  • 编译 C++ 程序时提示:fatal error: ‘json/json.h‘ file not found
  • 使用 HTML5 Canvas 打造炫酷的数字时钟动画
  • Linux基本操作命令
  • Go 语言函数详解:从基础到高阶的行为逻辑构建
  • 基于SD-WAN的医疗工厂弱电智能化机房方案:架构设计与实践
  • 具有熔断能力和活性探测的服务负载均衡解决方案
  • Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
  • 【车联网kafka】Kafka核心架构与实战经验(第四篇)
  • docker镜像状态监控
  • 磁悬浮轴承转子设计避坑指南:深度解析核心要点与高可靠性策略
  • 【网络运维】Playbook进阶: 管理变量
  • 如何在 Spring Boot 中设计和返回树形结构的组织和部门信息
  • [AI React Web] E2B沙箱 | WebGPU | 组件树 | 智能重构 | 架构异味检测
  • [AI React Web] 包与依赖管理 | `axios`库 | `framer-motion`库
  • Matlab(4)
  • STM32H5 的 PB14 引脚被意外拉低的问题解析
  • STM32读内部FLASH,偶尔读取错误
  • 三、非线性规划
  • 基于C#、.net、asp.net的心理健康咨询系统设计与实现/心理辅导系统设计与实现
  • 【vue3】v-model 的 “新玩法“
  • 基于人工智能和物联网融合跌倒监控系统(LW+源码+讲解+部署)
  • 面试实战 问题二十六 JDK 1.8 核心新特性详解
  • 猫头虎AI分享:Word MCP,让AI具备Word文档操作能力,文档创建、内容添加、格式编辑等AI能力
  • 【Word VBA Zotero 引用宏错误分析与改正指南】【解决[21–23]参考文献格式插入超链接问题】
  • 基于Java的Markdown转Word工具(标题、段落、表格、Echarts图等)
  • Linux 桌面到工作站的“性能炼金术”——开发者效率的 6 个隐形瓶颈与破解方案
  • 一条n8n工作流
  • vscode+phpstudy+xdebug如何调试php
  • windows10装Ubuntu22.04系统(双系统)