【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 中,變量有兩類作用范圍:
- Shell 變量(本地變量)
- 只在當前 Shell 會話中有效
- 不會自動傳遞給子進程
- 環境變量
- 會被當前 Shell 和所有子進程繼承
- 典型例子:
PATH
、HOME
、LANG
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
命令本身只能測試主機的連通性(即是否能達到目標服務器),但不能檢測指定端口是否能訪問。如果測試某個端口的可達性,可以使用nc
、telnet
、nmaep
。
2.1 nc(Netcat)命令
nc是一個非常強大的網絡工具,通常用于測試端口是否開放。
[root@iv-ye20h65dz45i3z346rvs ~]# yum install -y nmap-ncat
Loaded plugins: fastestmirror, versionlock
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Excluding 2 updates due to versionlock (use "yum versionlock status" to show them)
Resolving Dependencies
--> Running transaction check
---> Package nmap-ncat.x86_64 2:6.40-19.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=========================================================================================================================================================================== Package Arch Version Repository Size
===========================================================================================================================================================================Installing:nmap-ncat x86_64 2:6.40-19.el7 base 206 kTransaction Summary
===========================================================================================================================================================================Install 1 PackageTotal download size: 206 k
Installed size: 423 k
Downloading packages:
nmap-ncat-6.40-19.el7.x86_64.rpm | 206 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : 2:nmap-ncat-6.40-19.el7.x86_64 1/1 Verifying : 2:nmap-ncat-6.40-19.el7.x86_64 1/1 Installed:nmap-ncat.x86_64 2:6.40-19.el7 Complete!
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