跳到主要内容

Linux 基础命令

本章将介绍 Linux 最基本的命令,帮助你开始在命令行中操作。

命令格式

Linux 命令的基本格式:

命令 [选项] [参数]
  • 命令:要执行的程序名称
  • 选项:修改命令行为的标志,通常以 --- 开头
  • 参数:命令操作的对象

示例

ls -l /home
# ls 是命令
# -l 是选项(显示详细信息)
# /home 是参数(要查看的目录)

解释:选项可以组合使用,如 ls -la 等同于 ls -l -a。有些选项需要参数,如 ls -w 80 设置输出宽度为 80。

获取帮助

man 命令

man(manual)显示命令的手册页:

man ls        # 查看 ls 命令的手册
man 5 passwd # 查看第 5 节的 passwd(配置文件格式)

手册页章节

  • 1:用户命令
  • 2:系统调用
  • 3:库函数
  • 4:特殊文件
  • 5:配置文件格式
  • 6:游戏
  • 7:杂项
  • 8:系统管理命令

操作方式

  • 空格:向下翻页
  • b:向上翻页
  • /关键词:搜索
  • n:下一个搜索结果
  • q:退出

--help 选项

大多数命令支持 --help 选项显示简要帮助:

ls --help
cp --help

info 命令

info 显示更详细的帮助信息:

info ls
info coreutils # 查看 coreutils 包的所有命令

目录操作

pwd - 显示当前目录

pwd
# 输出:/home/user

解释pwd(print working directory)显示当前所在的绝对路径。在终端中操作时,时刻知道当前位置很重要。

cd - 切换目录

cd /home/user    # 切换到指定目录
cd Documents # 切换到当前目录下的 Documents
cd .. # 切换到上级目录
cd ~ # 切换到用户主目录
cd # 不带参数,切换到主目录
cd - # 切换到上一个目录
cd ../.. # 切换到上两级目录

解释

  • ~ 表示当前用户的主目录,如 /home/username
  • . 表示当前目录
  • .. 表示上级目录
  • - 表示上一个目录,常用于在两个目录间快速切换

mkdir - 创建目录

mkdir test              # 创建单个目录
mkdir -p a/b/c # 创建多层目录(父目录不存在时自动创建)
mkdir dir1 dir2 dir3 # 同时创建多个目录
mkdir -m 755 mydir # 创建时指定权限

解释

  • -p(parents)选项非常实用,可以一次性创建多层嵌套目录
  • -m 选项可以设置目录权限,如 755 表示所有者可读写执行,其他人可读执行

rmdir - 删除空目录

rmdir test         # 删除空目录
rmdir -p a/b/c # 删除多层空目录

解释rmdir 只能删除空目录。要删除非空目录,需使用 rm -r

文件浏览

ls - 列出目录内容

ls              # 列出当前目录内容
ls /home # 列出指定目录内容
ls -l # 长格式显示(详细信息)
ls -a # 显示所有文件(包括隐藏文件)
ls -h # 人性化显示文件大小
ls -t # 按修改时间排序
ls -r # 反向排序
ls -R # 递归显示子目录
ls -la # 组合选项:详细信息 + 所有文件
ls -lh # 详细信息 + 人性化大小

输出解析

-rw-r--r-- 1 user group 4096 Mar 15 10:30 file.txt
字段含义
-rw-r--r--文件类型和权限
1硬链接数
user所有者
group所属组
4096文件大小(字节)
Mar 15 10:30修改时间
file.txt文件名

文件类型(第一个字符):

  • -:普通文件
  • d:目录
  • l:符号链接
  • c:字符设备
  • b:块设备

解释ls 是最常用的命令之一。-l 选项显示详细信息,-h 选项让文件大小更易读(显示 KB、MB 等),-a 选项显示以 . 开头的隐藏文件。

tree - 树形显示目录

tree            # 树形显示当前目录
tree -L 2 # 只显示 2 层深度
tree -d # 只显示目录
tree -a # 显示隐藏文件

解释tree 命令以树形结构显示目录,比 ls -R 更直观。如果系统没有安装,可以使用 sudo apt install tree(Ubuntu)或 sudo yum install tree(CentOS)安装。

文件查看

cat - 显示文件内容

cat file.txt           # 显示文件内容
cat -n file.txt # 显示行号
cat -b file.txt # 显示行号(空行不计)
cat file1 file2 # 连接显示多个文件
cat file1 file2 > file3 # 合并文件

解释cat 适合查看小文件。对于大文件,建议使用 lessmore

less - 分页查看

less file.txt    # 分页查看文件

操作方式

  • 空格:向下翻页
  • b:向上翻页
  • /关键词:向下搜索
  • ?关键词:向上搜索
  • n:下一个搜索结果
  • N:上一个搜索结果
  • g:跳到文件开头
  • G:跳到文件末尾
  • q:退出

解释less 是查看大文件的最佳选择,它不会一次性加载整个文件到内存,支持前后翻页和搜索。

head 和 tail - 查看文件头尾

head file.txt          # 显示文件前 10 行
head -n 20 file.txt # 显示前 20 行
head -c 100 file.txt # 显示前 100 字节

tail file.txt # 显示文件后 10 行
tail -n 20 file.txt # 显示后 20 行
tail -f file.txt # 实时追踪文件变化
tail -f /var/log/syslog # 实时查看日志

解释

  • head 查看文件开头,常用于确认文件格式
  • tail -f 是查看日志的神器,实时显示新增内容

wc - 统计文件

wc file.txt       # 显示行数、单词数、字节数
wc -l file.txt # 只显示行数
wc -w file.txt # 只显示单词数
wc -c file.txt # 只显示字节数
wc -m file.txt # 只显示字符数

解释wc(word count)常用于统计代码行数或日志条目数。

文件查找

find - 查找文件

find /home -name "*.txt"        # 按名称查找
find . -type f # 查找当前目录下所有文件
find . -type d # 查找当前目录下所有目录
find . -size +100M # 查找大于 100M 的文件
find . -mtime -7 # 查找 7 天内修改过的文件
find . -user root # 查找属于 root 用户的文件
find . -perm 755 # 查找权限为 755 的文件
find /tmp -name "*.log" -delete # 查找并删除
find . -name "*.txt" -exec grep "hello" {} \; # 对结果执行命令

解释

  • find 功能强大,支持按名称、类型、大小、时间等多种条件查找
  • -exec 选项可以对查找结果执行命令,{} 代表找到的文件
  • \; 表示命令结束

which 和 whereis - 查找命令位置

which ls         # 查找命令的位置
which python # 查找 Python 解释器位置

whereis ls # 查找命令的二进制、源码、手册位置

locate - 快速查找

locate file.txt          # 快速查找文件
locate -i FILE.txt # 忽略大小写
locate -n 10 "*.txt" # 只显示前 10 个结果

解释locatefind 快得多,因为它使用预先建立的数据库。但数据库每天更新一次,新文件可能找不到。可以使用 sudo updatedb 手动更新数据库。

其他常用命令

echo - 输出文本

echo "Hello World"           # 输出文本
echo -n "不换行" # 不换行输出
echo -e "第一行\n第二行" # 解释转义字符
echo $HOME # 输出变量值
echo "内容" > file.txt # 输出重定向到文件(覆盖)
echo "内容" >> file.txt # 输出重定向到文件(追加)

date - 显示日期时间

date                      # 显示当前日期时间
date +"%Y-%m-%d" # 格式化输出:2024-03-15
date +"%H:%M:%S" # 格式化输出:10:30:45
date +"%Y-%m-%d %H:%M:%S" # 组合格式

常用格式

  • %Y:四位年份
  • %m:两位月份
  • %d:两位日期
  • %H:小时(24 小时制)
  • %M:分钟
  • %S:秒

clear - 清屏

clear      # 清除终端屏幕
Ctrl + L # 快捷键,同样可以清屏

history - 命令历史

history           # 显示命令历史
history 20 # 显示最近 20 条
!100 # 执行第 100 条历史命令
!! # 执行上一条命令
!ls # 执行最近的 ls 开头的命令
Ctrl + R # 搜索历史命令

alias - 命令别名

alias                      # 显示所有别名
alias ll='ls -la' # 设置别名
alias rm='rm -i' # 设置交互式删除
unalias ll # 删除别名

持久化别名:将别名添加到 ~/.bashrc 文件中使其永久生效:

echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc

type - 查看命令类型

type ls         # ls is aliased to `ls --color=auto'
type cd # cd is a shell builtin
type python # python is /usr/bin/python

解释type 可以判断命令是别名、内置命令、还是外部程序。

命令快捷键

快捷键功能
Ctrl + C终止当前命令
Ctrl + D退出当前 Shell
Ctrl + L清屏
Ctrl + A光标移到行首
Ctrl + E光标移到行尾
Ctrl + U删除光标前所有内容
Ctrl + K删除光标后所有内容
Ctrl + R搜索历史命令
Tab自动补全
Tab Tab显示所有可能的补全

解释:掌握这些快捷键可以大大提高命令行操作效率。Tab 键自动补全是最常用的,按两次可以显示所有匹配项。

小结

本章我们学习了:

  1. Linux 命令的基本格式
  2. 获取帮助的方法(man、--help、info)
  3. 目录操作命令(pwd、cd、mkdir、rmdir)
  4. 文件浏览命令(ls、tree)
  5. 文件查看命令(cat、less、head、tail、wc)
  6. 文件查找命令(find、which、whereis、locate)
  7. 其他常用命令(echo、date、clear、history、alias)
  8. 命令行快捷键

练习

  1. 在主目录下创建一个名为 practice 的目录
  2. practice 目录下创建多层子目录 a/b/c
  3. 使用 ls 命令查看 /etc 目录的内容
  4. 使用 find 命令查找 /var/log 目录下所有 .log 文件
  5. 使用 history 命令查看你最近执行的命令
  6. 设置一个别名 lals -la