Linux基础和Java环境搭建

一、Linux 基础知识全面讲解

1、Linux 是什么?

Linux 是一个开源、免费的操作系统内核。我们通常所说的 “Linux” 实际上指的是基于 Linux 内核的完整操作系统,更准确的叫法是 “GNU/Linux 发行版”。常见的发行版有:Ubuntu, CentOS, Debian, Fedora, Arch 等。

2、核心概念

  1. 终端 (Terminal) / 控制台 (Console):用户与系统进行文本交互的界面。

  2. Shell:一个命令解释器,是用户使用系统的桥梁。它接收用户输入的命令,并将其转换成系统指令执行。最常见的 Shell 是 Bash (Bourne-Again Shell)

  3. 根目录 (/): 文件系统的最顶层,所有文件和目录都从这里开始。

  4. 家目录 (~): 当前登录用户的个人文件夹,路径通常是 /home/用户名。你有完全权限在这里操作。

  5. 超级用户 (root): 系统管理员,拥有最高权限。执行特权命令需要在命令前加 sudo

3、Linux 目录结构(必须了解)

Linux 的文件系统采用层级式的树状结构。了解主要目录的用途非常重要。

路径用途说明
/根目录,万物起源。
/bin二进制可执行文件,存放所有用户都可用的基本命令(如 lscp)。
/etc 配置文件,存放系统和应用程序的配置文件。
/home用户家目录,普通用户的个人文件存放于此。
/root root 用户的家目录
/tmp临时文件,所有用户都可读写,重启后文件通常会被清除。
/usr用户程序,存放用户安装的应用程序和文件(/usr/bin/usr/lib)。
/opt可选软件包,通常用于安装第三方大型软件。
/var可变数据,存放经常变化的文件,如日志 (/var/log)、缓存、数据库文件。
/boot启动文件,存放系统启动所需的文件,如内核、引导程序。
/dev设备文件,将硬件设备(如磁盘、USB)抽象为文件进行管理
/lib库文件,存放系统最基本的共享库和内核模块。
/mnt挂载点,用于临时挂载文件系统(如挂载光盘、USB)。
/media可移动媒体挂载点,系统会自动将 U 盘、光盘挂载到这里。
/proc虚拟文件系统,映射内存中的进程和系统信息(不是真实文件)。
/sbin系统二进制文件,存放供 root 用户使用的系统管理命令(如 fdiskreboot)。

4、绝对路径 vs. 相对路径

  • 绝对路径:从根目录 / 开始的完整路径。

    • 例如:/home/ubuntu/Documents/report.txt

  • 相对路径:从当前工作目录开始的路径。

    • . 代表当前目录(例如 ./script.sh

    • .. 代表上一级目录(例如 cd ..

    • 例如:当前在 /home/ubuntuDocuments/report.txt 就是一个相对路径。

5、基础命令大全(带示例)

命令功能描述常用选项 / 语法示例
一、文件与目录操作
ls列出目录内容-l (详细信息)
-a (显示隐藏文件)
-h (人性化文件大小)
-t (按时间排序)
ls -lah
ls /tmp
pwd显示当前工作目录pwd
cd切换目录~ 家目录
.. 上级目录
- 上一个目录
cd /var/log
cd ~
cd ..
mkdir创建新目录-p (创建多级目录)mkdir new_folder
mkdir -p project/{src,bin,doc}
rmdir删除目录rmdir empty_dir
rm删除文件或目录-r (递归删除目录)
-f (强制删除,不提示)
-i (交互式删除) 慎用!
rm file.txt
rm -rf temp_dir/ (危险!)
cp复制文件或目录-r (复制目录)
-i (覆盖前提示)
-v (显示过程)
cp file1.txt file2.txt
cp -r dir1/ dir2/
mv移动重命名文件/目录-i (覆盖前提示)
-v (显示过程)
mv old_name new_name (重命名)
mv file.txt /backup/ (移动)
touch创建空文件或更新文件时间戳touch new_file.txt
cat连接文件并打印到标准输出(查看全部内容)-n (显示行号)cat file.txt
cat -n /etc/os-release
more分页显示文件内容(只能向下翻页)more long_file.log (空格向下,q退出)
less分页显示文件内容(可上下翻页,推荐less large_file.log (上下箭头,/搜索,q退出)
head显示文件开头部分-n <行数>head -n 20 file.log (显示前20行)
tail显示文件末尾部分-n <行数>
-f (实时追踪文件变化,看日志神器)
tail -n 50 file.log
tail -f /var/log/syslog
find在目录树中查找文件-name (按文件名)
-type (按类型 f文件/d目录)
-size (按大小)
-exec (对找到的文件执行命令)
find /home -name "*.jpg"
find . -type f -size +10M
grep在文件中搜索文本模式-i (忽略大小写)
-n (显示行号)
-r (递归搜索目录)
-v (反向选择,不匹配的)
grep "error" app.log
grep -rn "main" ./src/
wc统计文件的行数、单词数、字节数-l (行数)
-w (单词数)
-c (字节数)
wc -l file.txt
tar打包和解压文件-c (创建打包文件)
-x (解压)
-z (通过gzip过滤)
-v (显示过程)
-f (指定文件名)
tar -czvf archive.tar.gz dir/ (打包压缩)
tar -xzvf archive.tar.gz (解压)
diff比较两个文件的差异diff file1.txt file2.txt
ln创建文件链接-s (创建软链接,类似快捷方式)ln -s /path/to/file link_name
二、系统管理与进程
ps显示当前进程的快照aux (查看所有用户所有进程的详细信息)ps aux
`ps aux
top动态实时显示进程和系统资源占用top (按 q 退出,M 按内存排序)
htoptop 的增强版(交互性更好,需安装)htop
kill向进程发送信号(用于终止进程)-9 (SIGKILL,强制终止)kill 1234 (优雅终止)
kill -9 1234 (强制杀死)
pkill通过进程名来结束进程pkill firefox
killall通过进程名来结束所有同名进程killall java
sudo超级用户(root) 权限执行命令sudo apt update
su切换用户身份- (同时切换环境变量)su - root (切换到root用户)
passwd修改用户密码passwd (修改当前用户密码)
df报告文件系统磁盘空间使用情况-h (以易读格式显示,如 G, M)df -h
du估算文件/目录的磁盘使用空间-sh (汇总显示总大小,易读格式)du -sh /home/username
du -h --max-depth=1 /var/log
free显示内存使用情况-h (易读格式)free -h
uname打印系统信息-a (所有信息)uname -a (显示内核版本、主机名等)
uptime显示系统运行时间、负载uptime
shutdown关机或重启-h now (立即关机)
-r now (立即重启)
+10 (10分钟后关机)
sudo shutdown -r now
sudo shutdown -h +5 "系统将于5分钟后关机"
reboot重启系统sudo reboot
alias创建命令别名alias ll='ls -alF' (临时生效,永久需写入 ~/.bashrc)
history显示命令历史记录history
!55 (执行历史记录中第55条命令)
which显示命令的完整路径which java
三、网络相关
ping测试与另一台主机的网络连通性-c <次数> (指定ping的次数)ping google.com
ping -c 4 8.8.8.8
curl利用URL规则在命令行下工作的文件传输工具-O (下载文件并保留远程文件名)
-I (仅显示HTTP头部信息)
curl -O http://example.com/file.zip
curl -I http://example.com
wget非交互式的网络下载器-c (断点续传)wget http://example.com/largefile.iso
ifconfig查看和配置网络接口(旧命令)ifconfig (可能需安装 net-tools)
ipifconfig 的现代替代品,功能更强addr (查看IP地址)
link (查看网络接口)
ip addr show
ip link show
netstat显示网络状态信息(连接、路由表、接口统计)-tunlp (查看所有监听中的TCP/UDP端口及进程)sudo netstat -tunlp
ssnetstat 的现代替代品,更快-tunlpsudo ss -tunlp
ssh安全外壳协议,用于远程登录管理-p <端口> (指定端口)ssh user@remote_server_ip
ssh -p 2222 user@host
scp安全地跨主机复制文件(基于ssh)-r (递归复制目录)
-P <端口>
scp file.txt user@remote:/path/ (上传)
scp -r user@remote:/home/backup ./ (下载目录)
四、权限与用户
chmod修改文件或目录的权限字母法: u/g/o/a +/- r/w/x
数字法: 755 (rwxr-xr-x)
chmod +x script.sh
chmod 644 file.txt
chown修改文件或目录的所有者和所属组sudo chown user:group file.txt
sudo chown user file.txt
chgrp修改文件或目录的所属组sudo chgrp group file.txt
useradd添加新用户-m (创建家目录)sudo useradd -m newuser
usermod修改用户属性-aG (将用户追加到附属组)sudo usermod -aG sudo newuser (赋予sudo权限)
userdel删除用户-r (同时删除家目录和邮件池)sudo userdel -r olduser
groupadd添加新用户组sudo groupadd newgroup
id显示用户身份信息id (显示当前用户的UID, GID, 所属组)

使用技巧:

  • 查看命令帮助命令 --help 或 man 命令 (例如 man ls),按 q 退出手册。

  • 命令补全:按 Tab 键可自动补全命令、文件名或目录名。

  • 清屏clear 或 Ctrl + L

  • 终止命令Ctrl + C

  • 冻结/暂停终端输出Ctrl + S (暂停) ,Ctrl + Q (恢复)。

二、Java 环境搭建 (以 Ubuntu/Debian 为例)

在 Linux 上搭建 Java 环境,主要有三种主流方式:

  1. 使用 apt 包管理器安装 (最简单,推荐新手)

  2. 手动下载安装包配置 (最灵活,推荐开发者)

  3. 使用 SDKMAN! 工具安装 (多版本管理神器)

方法一:使用 apt 包管理器安装 (推荐新手)

这是最简单的方法,适合快速搭建标准环境。Ubuntu 官方仓库提供的是 OpenJDK,它是 Java 平台的开源实现,与 Oracle JDK 功能基本一致。

步骤 1:更新包索引

首先,打开终端 (Ctrl+Alt+T),确保你的软件包列表是最新的。

sudo apt update

步骤 2:安装 OpenJDK

你可以选择安装不同的版本。推荐安装 Java 17 或 Java 21 (最新的 LTS 长期支持版本)。

安装最新版本的 OpenJDK (通常是最新的 LTS)

sudo apt install default-jdk

安装特定版本的 OpenJDK (例如 Java 17, 21, 11)

# 安装 OpenJDK 21
sudo apt install openjdk-21-jdk

# 安装 OpenJDK 17
sudo apt install openjdk-17-jdk

# 安装 OpenJDK 11 (一些旧项目可能需要)
sudo apt install openjdk-11-jdk

# 如果只需要运行环境(JRE)而不是开发工具(JDK),可以安装 -jre 包
# sudo apt install openjdk-21-jre

-jdk 与 -jre 的区别

  • -jdk (Java Development Kit): 包含开发工具,如编译器 javac,用于开发Java程序。

  • -jre (Java Runtime Environment): 只包含运行环境,用于运行已有的Java程序。作为开发者,请安装 JDK。

步骤 3:验证安装

安装完成后,通过检查版本来验证。

java -version
javac -version

如果安装成功,你会看到类似这样的输出:

openjdk version "21.0.3" 2024-04-16
OpenJDK Runtime Environment (build 21.0.3+9-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 21.0.3+9-Ubuntu-1ubuntu1, mixed mode, sharing)

恭喜!你的 Java 环境已经可以使用了。

方法二:手动安装 (推荐开发者)

这种方法让你能安装任意版本(如 Oracle JDK 或特定构建的 OpenJDK),并且可以灵活控制安装位置。

步骤 1:下载 JDK 压缩包

访问以下官方站点,下载 Linux x64 架构的 .tar.gz 压缩包:

例如,使用 wget 下载 Temurin JDK 21:

# 从 Eclipse Temurin 复制 Linux x64 .tar.gz 包的下载链接(右键复制链接地址)
# 然后用 wget 下载,链接地址可能会变,请以官网为准
wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz

步骤 2:解压到目标目录

通常我们将 Java 解压到 /usr/lib/jvm 或 /opt 目录,这里以 /opt 为例。

# 创建解压目录 (如果不存在)
sudo mkdir -p /opt

# 解压下载的压缩包到 /opt 目录
# 请将文件名替换为你实际下载的文件名
sudo tar -xzf OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz -C /opt

# 查看解压后的目录名
ls /opt/
# 你应该会看到一个类似 'jdk-21.0.3+9' 的目录

步骤 3:配置环境变量

需要告诉系统你的 Java 安装在哪里。

编辑 Shell 配置文件(例如 ~/.bashrc 针对当前用户):

nano ~/.bashrc

在文件的末尾添加以下内容(请务必根据你解压的实际路径修改 JAVA_HOME 的值!):

# Java Environment Setup
export JAVA_HOME=/opt/jdk-21.0.3+9  # 这里替换成你的JDK目录路径!
export PATH=$JAVA_HOME/bin:$PATH

使配置立即生效

source ~/.bashrc

步骤 4:验证安装

再次检查版本,确认系统现在使用的是你手动安装的 Java。

java -version
javac -version
echo $JAVA_HOME # 检查 JAVA_HOME 变量是否设置正确

输出应该指向你刚刚安装的版本。

方法三:使用 SDKMAN! (多版本管理神器)

SDKMAN! 是一个专门用于管理多个软件开发工具包(如 Java, Groovy, Scala, Maven)版本的工具,非常强大和方便。

步骤 1:安装 SDKMAN!

# 一行命令安装
curl -s "https://get.sdkman.io" | bash

# 按照提示,执行以下命令完成安装
source "$HOME/.sdkman/bin/sdkman-init.sh"

步骤 2:使用 SDKMAN! 安装 Java

# 列出所有可安装的 Java 版本(包括各种供应商的版本)
sdk list java

# 安装一个特定版本的 Java (例如 Temurin 21.0.3)
# 使用 list 命令中显示的 Identifier 来选择版本
sdk install java 21.0.3-tem

# 或者直接安装默认的最新版本
sdk install java

步骤 3:切换版本 (这才是精髓)

如果你安装了多个版本,可以轻松切换。

# 列出本地已安装的所有版本
sdk list java | grep "installed"

# 切换当前 Shell 使用的 Java 版本
sdk use java 11.0.22-zulu

# 设置某个版本为系统默认版本
sdk default java 21.0.3-tem

SDKMAN! 会自动为你处理所有环境变量的配置。

测试你的 Java 环境

无论用哪种方法安装,最后都创建一个简单的 HelloWorld 程序来测试。

1、创建文件 HelloWorld.java

nano HelloWorld.java

2、输入代码:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World from Java in Linux!");
    }
}

按 Ctrl+O 保存,按 Ctrl+X 退出。

3、编译和运行:

javac HelloWorld.java   # 编译,生成 HelloWorld.class 字节码文件
java HelloWorld         # 运行

如果输出 Hello, World from Java in Linux!,说明你的 Java 开发环境已经完全配置成功!

总结对比

方法优点缺点适用场景
apt 安装极其简单,自动管理依赖和更新版本可能不是最新,选择较少新手、需要快速搭建标准环境
手动安装最灵活,可安装任意版本和供应商步骤繁琐,需要手动配置和更新开发者、需要特定版本(如 Oracle JDK)
SDKMAN!多版本管理无敌,一键安装切换需要额外安装一个工具专业开发者、需要在多个项目间切换不同 Java 

对于大多数初学者,建议从 方法一 (apt 安装) 开始。随着深入学习,你会逐渐体会到 方法三 (SDKMAN!) 或 方法二 (手动安装) 的便利和强大。

OVER!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_64112937

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值