Ubuntu Terminal 从零开始教程 - Windows用户转Linux指南

📚 第一部分:认识Linux终端

1.1 什么是终端?

  • 终端(Terminal) = Windows的命令提示符(CMD/PowerShell)的Linux版本
  • Shell = 解释和执行命令的程序(Ubuntu默认使用Bash或Zsh)

1.2 打开终端的几种方式

  • Ctrl + Alt + T(最常用快捷键)
  • 搜索栏输入"Terminal"
  • 右键桌面选择"Open Terminal"

🔐 第二部分:账户与权限

2.1 理解Linux用户

bash 复制代码
# 查看当前用户
whoami

# 查看所有登录用户
who

# 查看用户信息
id

2.2 修改账户显示名称

bash 复制代码
# 查看当前主机名
hostname

# 临时修改主机名(重启后失效)
sudo hostname 新名称

# 永久修改主机名
sudo nano /etc/hostname  # 编辑文件中的名称
sudo nano /etc/hosts     # 修改127.0.1.1对应的名称

# 重启生效
reboot

2.3 用户管理

bash 复制代码
# 创建新用户
sudo adduser 新用户名

# 修改用户密码
passwd  # 修改当前用户密码
sudo passwd 用户名  # 修改其他用户密码

# 删除用户
sudo deluser 用户名

# 切换到其他用户
su - 用户名

# 添加用户到sudo组(获得管理员权限)
sudo usermod -aG sudo 用户名

📁 第三部分:基础文件操作

3.1 目录导航

bash 复制代码
# 查看当前目录
pwd

# 切换目录
cd /home/user      # 绝对路径
cd Documents       # 相对路径
cd ..              # 返回上级目录
cd ~               # 返回家目录
cd -               # 返回上一个目录

# 查看目录内容
ls                 # 简单列表
ls -l              # 详细列表(权限、大小、时间)
ls -a              # 显示隐藏文件(以.开头)
ls -lh             # 人类可读的文件大小

3.2 文件操作

bash 复制代码
# 创建文件
touch 文件名.txt           # 创建空文件
echo "内容" > 文件名.txt    # 创建并写入内容

# 查看文件
cat 文件名.txt             # 显示全部内容
less 文件名.txt            # 分页查看(按q退出)
head -n 10 文件名.txt      # 查看前10行
tail -n 10 文件名.txt      # 查看后10行

# 复制文件/目录
cp 源文件 目标文件          # 复制文件
cp -r 源目录 目标目录       # 复制目录

# 移动/重命名
mv 旧文件名 新文件名        # 重命名
mv 文件 目标目录/           # 移动文件

# 删除
rm 文件名                  # 删除文件
rm -r 目录名               # 删除目录
rm -rf 目录名              # 强制删除(谨慎使用!)

# 创建目录
mkdir 目录名
mkdir -p dir1/dir2/dir3    # 创建多级目录

🛡️ 第四部分:权限管理

4.1 理解权限

复制代码
-rwxr-xr--
↑  ↑  ↑  ↑
|  |  |  其他用户权限
|  |  组用户权限
|  所有者权限
文件类型(-普通文件,d目录,l链接)

4.2 修改权限

bash 复制代码
# 数字方式修改
chmod 755 文件名    # rwxr-xr-x
# 第一位:所有者权限 (7=rwx)
# 第二位:组权限 (5=r-x)
# 第三位:其他用户权限 (5=r-x)

# 符号方式修改
chmod u+x 文件名     # 给所有者添加执行权限
chmod g-w 文件名     # 移除组用户的写权限
chmod o=r 文件名     # 设置其他用户只读

# 修改所有者
chown 新所有者:新组 文件名

🔍 第五部分:查找与搜索

5.1 查找文件

bash 复制代码
# 按名称查找
find /目录 -name "文件名"

# 按类型查找
find /目录 -type f      # 查找文件
find /目录 -type d      # 查找目录

# 按时间查找
find /目录 -mtime -7   # 7天内修改的文件

# 在文件中搜索内容
grep "搜索词" 文件名
grep -r "搜索词" 目录/   # 递归搜索
grep -i "搜索词" 文件名  # 忽略大小写

5.2 查找命令位置

bash 复制代码
which 命令名      # 显示命令路径
whereis 命令名    # 显示命令及其手册位置
type 命令名       # 显示命令类型

⚙️ 第六部分:系统管理

6.1 进程管理

bash 复制代码
# 查看进程
ps                     # 当前终端进程
ps aux                 # 所有用户的所有进程
top                    # 实时进程监控(类似任务管理器)

# 结束进程
kill 进程ID
kill -9 进程ID         # 强制结束
pkill 进程名           # 按名称结束

# 后台运行
命令 &                 # 在后台运行命令
jobs                   # 查看后台作业
fg %作业号             # 切换到前台
bg %作业号             # 后台继续运行

6.2 磁盘与内存

bash 复制代码
# 磁盘使用情况
df -h                  # 查看磁盘空间
du -sh 目录/           # 查看目录大小

# 内存使用情况
free -h                # 查看内存使用
htop                   # 增强版top(需安装)

📦 第七部分:软件包管理

7.1 APT包管理器(Ubuntu专属)

bash 复制代码
# 更新软件源列表
sudo apt update

# 升级已安装的包
sudo apt upgrade

# 安装软件
sudo apt install 软件名

# 删除软件
sudo apt remove 软件名
sudo apt purge 软件名   # 同时删除配置

# 搜索软件
apt search 关键字

# 查看软件信息
apt show 软件名

# 清理
sudo apt autoremove    # 删除不需要的包
sudo apt clean         # 清理下载的缓存

7.2 通用安装方法

bash 复制代码
# 下载并安装.deb包
sudo dpkg -i 包名.deb
sudo apt install -f     # 修复依赖

# 源码编译安装(通用方法)
tar -xzvf 源码.tar.gz   # 解压
cd 源码目录
./configure            # 配置
make                   # 编译
sudo make install      # 安装

🔗 第八部分:网络相关

8.1 网络配置

bash 复制代码
# 查看IP地址
ip addr show
ifconfig              # 旧命令,可能需安装net-tools

# 网络测试
ping google.com
traceroute google.com

# 下载文件
wget 文件URL
curl -O 文件URL

# 查看端口
netstat -tulpn        # 查看监听端口
ss -tulpn             # 新命令,更快速

8.2 SSH远程连接

bash 复制代码
# 连接到远程服务器
ssh 用户名@服务器IP

# 生成SSH密钥(免密码登录)
ssh-keygen -t rsa
ssh-copy-id 用户名@服务器IP

🎯 第九部分:实用技巧和小窍门

9.1 提高效率的技巧

bash 复制代码
# 1. 命令历史
history                # 查看命令历史
!编号                  # 执行历史中对应编号的命令
!!                    # 上一条命令
Ctrl + R              # 搜索历史命令

# 2. 命令别名
alias ll='ls -la'     # 创建别名
unalias ll            # 删除别名

# 3. 自动补全
Tab键                 # 自动补全命令或文件名
Tab键按两次           # 显示所有选项

# 4. 重定向
命令 > 文件           # 输出重定向到文件(覆盖)
命令 >> 文件          # 输出追加到文件
命令 < 文件           # 从文件读取输入

# 5. 管道
命令1 | 命令2         # 将命令1的输出作为命令2的输入

9.2 常用快捷键

  • Ctrl + C - 终止当前命令
  • Ctrl + Z - 暂停当前命令
  • Ctrl + D - 退出终端/结束输入
  • Ctrl + L - 清屏(同clear命令)
  • Ctrl + A - 光标移动到行首
  • Ctrl + E - 光标移动到行尾
  • Ctrl + U - 删除光标前所有内容
  • Ctrl + K - 删除光标后所有内容

📝 第十部分:实践练习

练习1:创建个人工作区

bash 复制代码
# 1. 创建个人项目目录
mkdir -p ~/projects/{python,web,scripts}

# 2. 创建测试文件
echo "Hello Linux!" > ~/projects/test.txt

# 3. 设置目录权限
chmod 755 ~/projects/

# 4. 创建备份
cp ~/projects/test.txt ~/projects/test_backup.txt

练习2:系统信息收集脚本

bash 复制代码
# 创建脚本
nano ~/system_info.sh

# 添加以下内容:
#!/bin/bash
echo "=== 系统信息 ==="
echo "主机名: $(hostname)"
echo "用户: $(whoami)"
echo "时间: $(date)"
echo "内存: $(free -h | grep Mem)"
echo "磁盘: $(df -h / | tail -1)"
echo "=== 运行中进程 ==="
ps aux | head -10

# 保存后设置权限并运行
chmod +x ~/system_info.sh
./system_info.sh

🆘 第十一部分:遇到问题怎么办?

11.1 获取帮助

bash 复制代码
# 查看命令手册
man 命令名

# 简略帮助
命令名 --help

# 内置命令帮助
help cd

# 在线文档
info 命令名

11.2 常见问题解决

  1. "权限被拒绝"
bash 复制代码
sudo 命令          # 使用管理员权限
chmod +x 文件名    # 添加执行权限
  1. "命令未找到"
bash 复制代码
# 1. 检查拼写
# 2. 确认软件已安装
# 3. 可能需要添加PATH
  1. "磁盘空间不足"
bash 复制代码
df -h              # 查看哪里满了
du -sh /*          # 查看各目录大小

11.3 推荐学习资源

📅 学习路线建议

第1周:熟悉基础

  • 每天练习10个基础命令
  • 在图形界面和终端之间切换使用
  • 创建、移动、删除文件和目录

第2周:理解权限和用户

  • 练习chmod和chown
  • 创建和管理多个用户
  • 理解sudo的工作原理

第3周:系统管理基础

  • 学习进程管理
  • 安装和卸载软件
  • 了解系统日志位置

第4周:脚本自动化

  • 学习bash脚本基础
  • 创建实用脚本
  • 设置定时任务(cron)

💡 给Windows用户的特别提示:

  1. Linux没有盘符概念(C:、D:),所有内容都在 / 根目录下
  2. 文件路径使用正斜杠 /,不是反斜杠 \
  3. 文件名区分大小写(file.txt ≠ File.txt)
  4. 文件扩展名不是必需的,但有助识别
  5. 大多数情况下不需要像Windows那样频繁重启

记住:学习终端就像学乐器,需要定期练习。开始时可能不习惯,但掌握了就会大幅提高效率!

祝你在Linux世界的学习之旅顺利! 🚀

相关推荐
若风的雨3 小时前
WC (Write-Combining) 内存类型优化原理
linux
YMWM_3 小时前
不同局域网下登录ubuntu主机
linux·运维·ubuntu
zmjjdank1ng3 小时前
restart与reload的区别
linux·运维
哼?~3 小时前
进程替换与自主Shell
linux
玖釉-3 小时前
深入浅出:渲染管线中的抗锯齿技术全景解析
c++·windows·图形渲染
浩浩测试一下4 小时前
DDOS 应急响应Linux防火墙 Iptable 使用方式方法
linux·网络·安全·web安全·网络安全·系统安全·ddos
niceffking4 小时前
linux 信号内核模型
linux·运维·服务器
嵌入小生0074 小时前
单向链表的常用操作方法---嵌入式入门---Linux
linux·开发语言·数据结构·算法·链表·嵌入式
.小墨迹4 小时前
C++学习——C++中`memcpy`和**赋值拷贝**的核心区别
java·linux·开发语言·c++·学习·算法·机器学习
hweiyu004 小时前
Linux 命令:paste
linux·运维·服务器