Linux命令行精通:提高工作效率的终端技能
在图形界面盛行的今天,命令行界面(CLI)依然是Linux系统中最强大、最灵活的工具。对于开发者、系统管理员和技术爱好者来说,熟练掌握Linux命令行不仅能够极大地提高工作效率,还能帮助更深入地理解操作系统的工作原理。本文将从基础到高级,全面介绍Linux命令行的使用技巧,帮助你成为终端操作的专家。
为什么要学习命令行?
在开始学习具体命令前,我们先来思考一个问题:为什么在图形界面如此发达的今天,我们仍然需要学习命令行?
- 效率更高:对于许多操作,尤其是批处理和自动化任务,命令行的执行速度远高于图形界面
- 资源占用更少:命令行界面消耗的系统资源极少,特别适合服务器环境
- 远程管理便捷:通过SSH远程连接服务器时,命令行是最可靠的操作方式
- 功能更强大:许多高级功能只能通过命令行实现
- 自动化能力:命令行易于脚本化,实现自动化运维和开发流程
- 通用性:命令行技能适用于几乎所有Unix/Linux系统,甚至MacOS和Windows WSL
命令行基础
终端与Shell简介
首先需要理解两个基本概念:
- 终端(Terminal):一个程序,提供了文本输入与输出的界面
- Shell :命令行解释器,负责解析你输入的命令并执行。常见的Shell包括:
- Bash (Bourne Again SHell):Linux系统默认的Shell
- Zsh (Z Shell):功能更强大的Shell,是macOS Catalina后的默认Shell
- Fish:注重易用性和用户友好的Shell
- Dash:轻量级Shell,通常用于脚本执行
可以通过以下命令查看当前系统上可用的Shell:
bash
cat /etc/shells
查看当前使用的Shell:
bash
echo $SHELL
基本命令结构
Linux命令通常遵循以下结构:
css
command [options] [arguments]
- command:要执行的命令名称
- options :修改命令行为的选项,通常以
-
(短选项)或--
(长选项)开头 - arguments:命令的参数,如文件名、路径等
例如:
bash
ls -la /home/user
这里,ls
是命令,-la
是选项(-l
表示长格式,-a
表示显示所有文件),/home/user
是参数(指定路径)。
文件系统导航
在Linux中,一切皆文件。掌握文件系统导航是命令行操作的基础:
bash
# 显示当前目录
pwd
# 列出目录内容
ls
ls -l # 长格式,显示详细信息
ls -a # 显示所有文件,包括隐藏文件
ls -h # 人类可读的文件大小
ls -R # 递归显示子目录内容
# 切换目录
cd /path/to/directory # 绝对路径
cd directory # 相对路径
cd .. # 上一级目录
cd ~ # 用户主目录
cd - # 上一个工作目录
# 创建目录
mkdir directory
mkdir -p parent/child # 创建多级目录
# 删除目录
rmdir directory # 只能删除空目录
rm -r directory # 递归删除目录及内容(危险操作)
文件操作
bash
# 创建空文件
touch filename
# 复制文件
cp source destination
cp -r source_dir destination_dir # 递归复制目录
# 移动/重命名文件
mv source destination
# 删除文件
rm filename
rm -f filename # 强制删除,不提示
# 查看文件内容
cat filename # 显示全部内容
less filename # 分页查看,按q退出
head filename # 查看前10行
tail filename # 查看后10行
tail -f filename # 实时查看末尾内容,常用于日志监控
# 文件权限修改
chmod 755 filename # 数字表示法
chmod u+x filename # 符号表示法,给用户添加执行权限
# 改变文件所有者
chown user:group filename
文本处理
Linux提供了强大的文本处理工具:
bash
# 查找文本
grep "pattern" filename
grep -r "pattern" directory # 递归搜索目录
grep -i "pattern" filename # 忽略大小写
grep -v "pattern" filename # 反向匹配,显示不匹配的行
# 排序
sort filename
sort -r filename # 逆序排序
sort -n filename # 按数字排序
# 去重
uniq filename # 去除相邻的重复行
sort filename | uniq # 完全去重(先排序)
# 计数
wc filename # 显示行数、单词数和字节数
wc -l filename # 只显示行数
# 文本替换
sed 's/old/new/g' filename # 将old替换为new
流和重定向
Linux中,命令可以通过管道(pipe)组合,提供强大的功能:
bash
# 管道:将前一个命令的输出作为后一个命令的输入
command1 | command2
# 输出重定向
command > filename # 将输出写入文件(覆盖)
command >> filename # 将输出追加到文件
# 输入重定向
command < filename # 从文件读取输入
# 错误重定向
command 2> errorfile # 重定向错误输出
command > output 2> error # 分别重定向标准输出和错误输出
command &> alloutput # 同时重定向标准输出和错误输出
实用例子:
bash
# 找出最大的5个文件
find . -type f -exec du -h {} \; | sort -hr | head -n 5
# 查找包含特定文本的所有PHP文件
grep -r "function" --include="*.php" .
# 统计当前目录下各类型文件的数量
find . -type f | sed 's/.*\.//' | sort | uniq -c
进阶命令和技巧
进程管理
bash
# 查看进程
ps aux # 显示所有进程
ps -ef # 另一种格式显示所有进程
top # 动态显示进程信息
htop # 交互式进程查看器(需安装)
# 后台运行程序
command & # 在后台运行命令
nohup command & # 后台运行且不受终端关闭影响
# 作业控制
jobs # 显示当前shell的作业
fg %1 # 将作业1切换到前台
bg %1 # 将作业1切换到后台
kill %1 # 终止作业1
# 终止进程
kill PID # 发送TERM信号
kill -9 PID # 发送KILL信号,强制终止
killall process_name # 终止所有指定名称的进程
用户和权限管理
bash
# 用户管理
sudo command # 以root权限执行命令
su - username # 切换到指定用户
useradd username # 创建用户
userdel username # 删除用户
passwd username # 设置用户密码
# 查看用户信息
id username # 显示用户ID和组ID
who # 显示当前登录用户
whoami # 显示当前用户名
# 组管理
groupadd groupname # 创建组
groupdel groupname # 删除组
usermod -aG groupname username # 将用户添加到组
# 权限详解
# 权限位:rwxrwxrwx(用户-组-其他)
# r=4, w=2, x=1
# 常用权限组合:
# 755 = rwxr-xr-x:文件所有者可读写执行,其他人可读可执行
# 644 = rw-r--r--:文件所有者可读写,其他人只读
# 700 = rwx------:文件所有者可读写执行,其他人无权限
# 特殊权限
chmod +s filename # 设置SUID/SGID位
chmod +t directory # 设置粘滞位(Sticky Bit)
网络工具
bash
# 网络连接检查
ping hostname
traceroute hostname
mtr hostname # 结合ping和traceroute功能
# 端口和服务
netstat -tuln # 显示所有监听端口
ss -tuln # 显示所有监听端口(更新的替代命令)
lsof -i :80 # 显示使用80端口的进程
# 网络配置
ifconfig # 显示网络接口信息(已淘汰)
ip addr # 显示网络接口信息(新命令)
ip route # 显示路由表
# 下载工具
wget URL # 下载文件
curl URL # 发送HTTP请求
curl -O URL # 下载文件并保存为原始文件名
# SSH远程连接
ssh user@hostname # 基本SSH连接
ssh -p 2222 user@hostname # 指定端口
ssh-keygen # 生成SSH密钥对
ssh-copy-id user@hostname # 复制SSH公钥到远程服务器
# SCP文件传输
scp file user@hostname:/path # 上传文件
scp user@hostname:/path/file . # 下载文件
scp -r directory user@hostname:/path # 上传目录
磁盘和文件系统
bash
# 磁盘空间
df -h # 显示文件系统使用情况
du -sh directory # 显示目录大小
du -sh * # 显示当前目录下所有文件/目录大小
ncdu # 交互式磁盘使用分析器(需安装)
# 文件系统挂载
mount /dev/sdb1 /mnt # 挂载设备
umount /mnt # 卸载挂载点
mount -a # 挂载/etc/fstab中的所有文件系统
# 查找文件
find /path -name "pattern" # 按名称查找
find /path -type f -size +100M # 查找大于100MB的文件
find /path -mtime -7 # 查找7天内修改的文件
find /path -exec command {} \; # 对查找结果执行命令
# 硬链接和软链接
ln file hardlink # 创建硬链接
ln -s file symlink # 创建软链接
# 文件系统检查
fsck /dev/sda1 # 检查文件系统
归档和压缩
bash
# tar归档
tar -cf archive.tar files # 创建归档
tar -xf archive.tar # 解压归档
tar -tvf archive.tar # 列出归档内容
# gzip压缩
gzip file # 压缩文件(替换原文件)
gunzip file.gz # 解压文件
# tar+gzip组合(最常用)
tar -czf archive.tar.gz files # 创建压缩归档
tar -xzf archive.tar.gz # 解压缩归档
# bzip2压缩(压缩率更高但更慢)
tar -cjf archive.tar.bz2 files # 创建bzip2压缩归档
tar -xjf archive.tar.bz2 # 解压bzip2压缩归档
# zip格式(与Windows兼容)
zip -r archive.zip directory # 创建zip归档
unzip archive.zip # 解压zip归档
Shell脚本编程
Shell脚本是命令行的自然延伸,让你能够自动化重复性任务。
创建和运行脚本
bash
# 创建脚本文件
touch script.sh
chmod +x script.sh # 添加执行权限
# 运行脚本
./script.sh
bash script.sh
脚本的基本结构:
bash
#!/bin/bash
# 这是注释
# 上面的第一行是shebang行,指定使用哪个shell解释器
# 命令
echo "Hello, World!"
# 退出码
exit 0 # 成功
变量
bash
# 变量定义和使用
NAME="Linux"
echo "Hello, $NAME"
# 命令替换
TODAY=$(date +%Y-%m-%d)
echo "Today is $TODAY"
# 环境变量
echo "Home directory: $HOME"
export MY_VAR="Value" # 设置环境变量
# 特殊变量
echo "$0" # 脚本名称
echo "$1" # 第一个参数
echo "$@" # 所有参数
echo "$#" # 参数数量
echo "$?" # 上一个命令的退出码
条件判断
bash
# if语句
if [ "$1" = "test" ]; then
echo "Test mode activated"
elif [ "$1" = "prod" ]; then
echo "Production mode activated"
else
echo "Unknown mode"
fi
# 文件测试
if [ -f "$FILE" ]; then
echo "FILE exists and is a regular file"
fi
if [ -d "$DIR" ]; then
echo "DIR exists and is a directory"
fi
# 数值比较
if [ "$COUNT" -eq 10 ]; then
echo "COUNT equals 10"
fi
# 字符串比较
if [[ "$NAME" == "Linux" ]]; then
echo "NAME is Linux"
fi
# AND和OR逻辑
if [ "$1" = "test" ] && [ "$2" = "debug" ]; then
echo "Test mode with debugging"
fi
# 现代Bash的条件测试
if [[ -f "$FILE" && "$COUNT" -gt 5 ]]; then
echo "File exists and count is greater than 5"
fi
循环
bash
# for循环
for i in 1 2 3 4 5; do
echo "Number: $i"
done
# 范围循环
for i in {1..5}; do
echo "Number: $i"
done
# C风格for循环
for ((i=1; i<=5; i++)); do
echo "Number: $i"
done
# while循环
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
((count++))
done
# 遍历文件
for file in *.txt; do
echo "Processing $file"
done
# 遍历命令结果
for user in $(cat users.txt); do
echo "User: $user"
done
函数
bash
# 函数定义
hello() {
echo "Hello, $1!"
}
# 函数调用
hello "World"
# 返回值
get_sum() {
local a=$1
local b=$2
echo $((a + b)) # 通过echo返回结果
}
result=$(get_sum 5 3)
echo "Sum: $result"
# 带退出码的函数
check_file() {
if [ -f "$1" ]; then
return 0 # 成功
else
return 1 # 失败
fi
}
check_file "/etc/hosts"
if [ $? -eq 0 ]; then
echo "File exists"
else
echo "File does not exist"
fi
实用脚本示例
系统状态监控脚本:
bash
#!/bin/bash
# system_monitor.sh - 显示系统关键信息
echo "=== System Monitor ==="
echo "Date: $(date)"
echo
echo "=== CPU Usage ==="
top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4 "% used"}'
echo
echo "=== Memory Usage ==="
free -h | grep "Mem:" | awk '{print $3 " used of " $2 " total (" $3/$2*100 "%)"}'
echo
echo "=== Disk Usage ==="
df -h | grep -v "tmpfs" | grep -v "udev"
echo
echo "=== Network Interfaces ==="
ip -brief addr show
echo
echo "=== Last 5 Logins ==="
last | head -n 5
批量文件处理脚本:
bash
#!/bin/bash
# process_images.sh - 批量处理图片文件
if [ $# -ne 2 ]; then
echo "Usage: $0 source_dir dest_dir"
exit 1
fi
SOURCE_DIR="$1"
DEST_DIR="$2"
# 确保目标目录存在
mkdir -p "$DEST_DIR"
# 检查是否安装了ImageMagick
if ! command -v convert &> /dev/null; then
echo "Error: ImageMagick is not installed"
exit 2
fi
# 处理每个jpg文件
for img in "$SOURCE_DIR"/*.jpg; do
if [ -f "$img" ]; then
filename=$(basename "$img")
echo "Processing $filename..."
# 调整大小并添加水印
convert "$img" -resize "800x600>" \
-gravity southeast -pointsize 20 -fill white -annotate +10+10 'Copyright' \
"$DEST_DIR/$filename"
fi
done
echo "All images processed successfully!"
命令行效率技巧
命令历史
bash
# 显示命令历史
history
# 重复执行历史命令
!42 # 执行历史记录中的第42条命令
!! # 重复执行上一条命令
!string # 执行最近的以string开头的命令
# 历史命令搜索
Ctrl+r # 反向搜索历史命令
命令行编辑
bash
# 基本光标移动
Ctrl+a # 移动到行首
Ctrl+e # 移动到行尾
Alt+b # 向后移动一个单词
Alt+f # 向前移动一个单词
# 编辑
Ctrl+u # 删除光标前的所有内容
Ctrl+k # 删除光标后的所有内容
Ctrl+w # 删除光标前的一个单词
Alt+d # 删除光标后的一个单词
Ctrl+y # 粘贴之前删除的文本
# 终端控制
Ctrl+l # 清屏
Ctrl+c # 中断当前命令
Ctrl+z # 挂起当前命令
Ctrl+d # 结束输入或退出shell
命令别名和函数
通过在~/.bashrc
或~/.zshrc
文件中添加自定义别名和函数,可以极大提高效率:
bash
# 常用别名
alias ll='ls -la'
alias update='sudo apt update && sudo apt upgrade'
alias myip='curl ifconfig.me'
alias ports='netstat -tulanp'
# 目录导航
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# 安全操作
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 功能函数
mkcd() {
mkdir -p "$1" && cd "$1"
}
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar e "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "'$1' cannot be extracted" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
命令行补全与扩展
bash
# Tab补全
Tab # 命令或文件名补全
Tab Tab # 显示所有可能的补全选项
# 大括号扩展
echo file{1,2,3}.txt # 生成file1.txt file2.txt file3.txt
echo file{1..5}.txt # 生成file1.txt到file5.txt
mkdir -p project/{src,doc,test}/{main,lib} # 创建多层嵌套目录
# 变量扩展
echo ${VAR:-default} # 如果VAR未设置或为空,使用default
echo ${VAR:=default} # 如果VAR未设置或为空,设置为default并返回
echo ${VAR:+value} # 如果VAR已设置且非空,返回value,否则返回空
echo ${VAR:0:5} # 返回VAR的前5个字符
终端多路复用:tmux
tmux
是一个终端多路复用器,允许在单个终端窗口中运行多个会话。对于远程服务器工作特别有用。
bash
# 基本使用
tmux # 启动新会话
tmux new -s session_name # 创建命名会话
tmux ls # 列出所有会话
tmux attach -t session_name # 连接到指定会话
tmux kill-session -t session_name # 终止指定会话
# 常用快捷键(前缀键:Ctrl+b)
# Ctrl+b c 创建新窗口
# Ctrl+b n 下一个窗口
# Ctrl+b p 上一个窗口
# Ctrl+b % 垂直分割窗格
# Ctrl+b " 水平分割窗格
# Ctrl+b 箭头键 在窗格间移动
# Ctrl+b d 分离当前会话
高级命令行工具
除了标准命令,以下是一些值得了解的高级命令行工具:
现代命令行替代品
传统命令 | 现代替代品 | 优势 |
---|---|---|
cat | bat | 语法高亮、行号、Git集成 |
ls | exa | 彩色输出、Git集成、更多选项 |
find | fd | 更快、更简洁的语法 |
grep | ripgrep | 更快、支持递归、自动忽略.gitignore |
top | htop | 交互式、彩色、资源显示更友好 |
glances | 综合系统监控 | |
cd | autojump/z | 智能跳转到频繁访问的目录 |
要安装这些工具,可以使用系统的包管理器:
bash
# 在Ubuntu/Debian上
sudo apt install bat exa fd-find ripgrep htop glances autojump
# 在CentOS/RHEL上
sudo yum install bat exa fd-find ripgrep htop glances autojump
# 在macOS上
brew install bat exa fd ripgrep htop glances autojump
强大的系统监控工具
bash
# 系统整体监控
htop # 交互式进程查看器
glances # 更全面的系统监控
nmon # 系统监控和性能调整工具
# 磁盘I/O监控
iotop # 监控磁盘I/O使用情况
iostat # 显示存储I/O统计信息
# 网络监控
iftop # 显示网络带宽使用情况
nethogs # 按进程显示网络流量
iptraf # 实时IP网络监控
# 系统日志实时查看
journalctl -f # 实时查看系统日志(systemd系统)
dmesg -w # 实时查看内核日志
数据处理与分析
bash
# 数据处理三剑客
awk # 强大的文本处理语言
sed # 流编辑器
jq # JSON处理工具
# awk示例
awk '{print $1,$3}' file.txt # 打印第1和第3列
awk -F: '{print $1}' /etc/passwd # 打印用户名列表
awk '{sum+=$1} END {print sum}' data # 计算第一列总和
# sed示例
sed 's/old/new/g' file.txt # 全局替换
sed -n '10,20p' file.txt # 只打印10-20行
sed -i 's/pattern/replacement/g' file # 原地编辑文件
# jq示例
curl -s API_URL | jq '.results[]' # 处理API响应
jq '.users[] | select(.age > 30)' file.json # 筛选JSON数据
命令行生产力工具
bash
# 命令行笔记和文档工具
tldr command # 简化的命令帮助
cheat command # 交互式备忘单
# 改进版的man
most # 更好的文本阅读器
man -k keyword # 搜索相关命令
# 文件管理器
ranger # 功能全面的命令行文件管理器
nnn # 轻量级文件管理器
mc # Midnight Commander,经典双栏文件管理器
# 版本控制可视化
tig # 文本模式Git界面
# 命令行下的浏览器
lynx # 纯文本浏览器
w3m # 另一个文本浏览器,支持图像
# 终端复制粘贴工具
xclip # X11系统剪贴板工具
pbcopy, pbpaste # macOS剪贴板工具
性能调优与故障排查
系统性能分析
bash
# CPU性能
uptime # 系统负载概览
mpstat # 多处理器统计
stress # 系统压力测试
# 内存分析
free -h # 内存使用概览
vmstat # 虚拟内存统计
smem # 内存报告工具
# 性能剖析
perf # Linux性能剖析工具
strace # 跟踪系统调用和信号
ltrace # 跟踪库调用
# 综合性能分析
sysstat工具集:
sar # 系统活动报告
pidstat # 进程统计
网络故障排除
bash
# 连接测试
ping # 基本连通性测试
mtr # 实时网络诊断
nc -zv host port # 端口连接测试
# 网络分析
tcpdump # 网络数据包分析
wireshark # 图形化数据包分析(也有tshark命令行版本)
nmap # 网络探测和安全审核
ss -tuln # 列出所有监听端口
# DNS工具
dig domain # DNS查询工具
host domain # DNS查询工具
nslookup domain # 交互式DNS查询
# HTTP分析
curl -v URL # 显示完整HTTP请求/响应
curl -I URL # 只显示HTTP头信息
日志分析
bash
# 系统日志
journalctl # systemd日志查看(现代Linux系统)
/var/log/syslog # 传统系统日志
/var/log/dmesg # 内核启动消息
# 日志分析工具
grep ERROR /var/log/* # 查找错误消息
tail -f /var/log/syslog # 实时监控日志
goaccess # 实时Web日志分析器
# 日志聚合
logwatch # 日志分析和报告
logrotate # 日志轮转工具
安全与备份
文件加密与安全
bash
# 文件加密
gpg -c file # 对称加密文件
gpg -e -r recipient file # 使用公钥加密
# 校验和和验证
md5sum file # 生成MD5校验和
sha256sum file # 生成SHA256校验和
diff file1 file2 # 比较文件差异
# 安全删除
shred -u file # 安全删除文件
备份工具
bash
# 简单备份
rsync -av source/ destination/ # 增量备份
rsync -av --delete source/ destination/ # 同步(删除目标中不存在于源的文件)
# 全系统备份
tar -cvpzf backup.tar.gz --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/mnt --exclude=/media --exclude=/lost+found --exclude=/backup.tar.gz /
# 自动备份服务
backintime # 简单的备份工具,类似"时间机器"
duplicity # 加密增量备份
restic # 快速、安全的备份工具
Shell个性化与优化
定制你的Shell提示符
在~/.bashrc
或~/.zshrc
中:
bash
# 彩色提示符示例(Bash)
PS1='\[\e[1;32m\]\u@\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '
# 带Git状态提示符
# 需要安装git-prompt.sh
source /usr/share/git-core/contrib/completion/git-prompt.sh
PS1='\[\e[1;32m\]\u@\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\[\e[0;33m\]$(__git_ps1 " (%s)")\[\e[0m\]\$ '
Shell启动配置
主要配置文件:
~/.bashrc
:Bash交互式非登录shell~/.bash_profile
:Bash登录shell~/.zshrc
:Zsh配置~/.profile
:通用登录配置
常见配置内容:
bash
# 环境变量
export PATH="$HOME/bin:$PATH"
export EDITOR=vim
export VISUAL=vim
export LANG=en_US.UTF-8
# 历史设置
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTCONTROL=ignoreboth:erasedups
shopt -s histappend
# 自动补全设置
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
Oh My Zsh
Zsh配合Oh My Zsh能大幅提升命令行体验:
bash
# 安装Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 常用插件(在~/.zshrc中配置)
plugins=(
git
docker
docker-compose
python
pip
npm
history
zsh-autosuggestions
zsh-syntax-highlighting
)
结论与学习路径
持续学习的建议
- 建立使用习惯:将命令行工具融入日常工作流
- 探索新工具:定期尝试新的命令行工具和技巧
- 阅读手册 :使用
man
和--help
了解命令的全部功能 - 参与社区:在Linux/Unix论坛上提问和回答问题
- 创建脚本:将重复任务自动化,提高效率
- 保存备忘录:记录有用的命令和技巧
推荐资源
-
在线学习:
-
书籍:
- "The Linux Command Line" by William Shotts
- "Bash Cookbook" by O'Reilly
- "Linux Bible" by Christopher Negus
-
命令行游戏:
- Bandit Wargames - 通过挑战学习Linux命令
- Command Line Challenge - 解决命令行谜题
通过掌握本文介绍的Linux命令行技能,你将能够更高效地管理系统、自动化工作流程,并深入理解Linux系统的工作原理。命令行不仅是系统管理员和开发者的工具,也是任何Linux用户提升工作效率的关键。随着经验的积累,你会发现命令行的强大和灵活远超图形界面,让你能够以更精确、更高效的方式控制你的计算机。
外宣传一下我们自己的产品:
面试准备利器「Offer蛙」:AI 驱动的智能面试助手,助你轻松拿下心仪 Offer。官网:mianshizhushou.com