Linux

Linux 基础命令

RHEL 9 日常文件与目录命令:pwd、ls 长格式、cd、touch、mkdir、rm、cat/less/head/tail、cp,附通配符、快捷键与综合练习。

连上 Linux 之后,最先要建立的是「在哪个目录、这里有什么、怎么进出、怎么建删拷看」。本篇把 RHEL 9 日常文件与目录命令收成一条可复现路径:先认位置,再增删,再阅读与拷贝,最后用通配符和快捷键把效率拉起来。

系列:从 RHCSA 到 RHCE · 第 2 / 17 篇 上一篇:Linux 目录结构 下一篇:nmcli 配静态 IP 与 SSH 总目录:系列索引

环境说明

  • 系统:RHEL 9 / Rocky 9 / AlmaLinux 9
  • 身份:实验用 root;生产请改用普通用户 + sudo
  • 建议:在 ~ 或 /tmp 下练习,避免在系统目录随手删改

命令的通用形状

Linux 命令行基本都是三段:

命令   选项   参数

例如:

mkdir -p /tmp/lab/demo
段例子含义
命令mkdir调用哪个程序
选项-p程序怎么干(开关、模式)
参数/tmp/lab/demo对谁干(路径、文件名)

选项可以多个叠加,如 ls -lha。很多选项有长短两种形式(-a 与 --all),考试与文档里短选项更常见。

多个参数表示「对多个对象执行同一动作」:

touch a.txt b.txt c.txt
cp /etc/hosts /etc/hostname /tmp/

我在哪里:pwd

登录后默认进入自己的家目录:

  • root → /root
  • 普通用户 tom → /home/tom

查看当前目录:

pwd
/root

cd 不接参数、或 cd ~,都会回到家目录。~ 是当前用户的家目录;~tom 表示 tom 的家目录(在有权限时)。

这里有什么:ls

ls          # 当前目录
ls /boot    # 指定目录
ls -l       # 长格式
ls -a       # 含隐藏文件(以 . 开头)
ls -lh      # 长格式 + 人类可读容量(K/M/G)
ls -ld /tmp # 看目录本身而不是目录里的东西
ls -lt      # 按修改时间排序(新的在上)
ls -lS      # 按大小排序(大的在上)

颜色因终端主题而异,一般规律:

颜色(常见)含义
蓝色目录
白色 / 黑色普通文本文件
绿色可执行程序
红色压缩包、软件包或部分媒体文件

长格式 ls -l 逐列读

ls -l /etc/hosts
-rw-r--r--. 1 root root 158 Jun  9 10:00 /etc/hosts
列本例含义
1-rw-r--r--.类型 + 权限(末尾 . 与 SELinux 有关)
21硬链接数
3root属主
4root属组
5158字节大小(-h 会显示为 K/M)
6–8Jun 9 10:00最后修改时间
9/etc/hosts名字

类型字符:- 普通文件,d 目录,l 链接。权限九位的含义放在权限专篇,这里先会「看见属主、大小、名字」即可。

考点:ls -l 最后一列是名字;ls -ld 用于查看目录自身的属性。

进出目录:cd

cd /boot     # 绝对路径:从根开始
cd ..        # 上一级
cd .         # 仍在当前目录(少见,但合法)
cd -         # 回到上一次所在的目录
cd           # 回家目录

绝对路径以 / 开头;相对路径从当前位置算起。

路径心智练习

假设当前在 /var/log:

你输入实际到了哪里
cd ../var
cd ../../
cd ../tmp/var/tmp
cd /etc/etc(绝对路径,与当前位置无关)
cd -回到执行上一条 cd 之前的位置

不确定时先 pwd;考试里时间紧,优先写绝对路径,减少相对路径算错。

新建文件:touch

touch qq.txt                 # 当前目录建空文件
touch a.txt b.txt c.txt      # 一次建多个
touch /tmp/cc.txt            # 在指定目录建

touch 若文件已存在,则只更新时间戳,不会清空内容。这一点和 Ansible 的 state=touch 思想类似:幂等、不破坏已有数据。

若只想要「有内容的文件」,可以用重定向(覆盖或追加):

echo "hello" > file.txt      # 覆盖写入(文件不存在则创建)
echo "world" >> file.txt     # 追加一行

新建目录:mkdir

mkdir test              # 当前目录下建 test
mkdir /tmp/lab          # 指定路径
mkdir -p /tmp/lab/demo  # 父目录不存在时一并创建
mkdir -p a/b/c          # 一次建多级

不加 -p 时,父目录缺失会直接失败:

mkdir /tmp/not-exist/sub
mkdir: cannot create directory '/tmp/not-exist/sub': No such file or directory

易错:多级路径几乎总要 -p。脚本里漏 -p 是高频报错点。

删除:rm(务必谨慎)

RHEL 9 上的 GNU rm:对可写的普通文件,默认直接删,不问 y/n。只有加了 -i(或更省事的 -I),或目标写保护且标准输入是终端时,才会交互确认。

rm file.txt          # 直接删除(默认无确认)
rm -i file.txt       # 每个文件都问一次 y/N
rm -I file.txt       # 删多个或递归时,整批问一次
rm -f file.txt       # 强制:不提示,文件不存在也不报错
rm -r dirname        # 递归删目录(默认同样无确认)
rm -rf dirname       # 递归 + 强制,删得最「顺」,也最危险

目录不能像文件那样直接 rm:

rm test
rm: cannot remove 'test': Is a directory

危险:rm -rf 没有回收站。路径写错(尤其是 rm -rf /、rm -rf /home/* 这类)可能直接毁掉系统。 实验里先 ls 确认目标;生产上重要数据优先备份或先改名观察,需要确认时用 rm -i / rm -I。 考试环境可还原快照,但仍建议慢半拍。

通配符与删除的关系

* 匹配任意长度字符,? 匹配单个字符。先 ls 展开,再决定删不删:

ls lab/day02/*.bak     # 先看会删到谁
rm -i lab/day02/*.bak  # 再删

不要在未确认目录时执行 rm -rf *。

看文件内容

cat:适合短文本

cat /etc/hostname
cat /etc/passwd
cat -n /etc/hosts      # 显示行号

cat 会把全文打到终端,不要用它打开图片、音频、视频或超长日志。

head / tail:只看头尾

head /etc/passwd           # 默认前 10 行
head -n 5 /etc/passwd      # 前 5 行
tail /var/log/messages     # 默认后 10 行
tail -n 20 /var/log/messages
tail -f /var/log/messages  # 跟踪追加(排障常用,Ctrl+C 退出)

只想看「文件有没有被改坏」时,head + tail 往往比 cat 更安全。

less:适合长文件

less /etc/services

在 less 里:

按键作用
空格下一页
b上一页
上下方向键逐行
/关键词向下搜索,n 下一个
?关键词向上搜索
g / G文件开头 / 末尾(部分环境 gg)
q退出

分页阅读是排障基本功:配置改完先 less 确认,再 systemctl reload。

拷贝:cp

cp /etc/hosts /tmp/hosts.bak           # 文件 → 新路径/新名
cp -r /etc/yum.repos.d /tmp/repos.bak  # 递归拷贝目录
cp -p file.bak file                    # 保留权限、时间等属性
cp -a src dest                         # 归档模式:近似「原样搬走」

目录不加 -r 会失败:

cp /etc /tmp/etc-copy
cp: -r not specified; omitting directory '/etc'

目标已存在时,默认覆盖且不提示。需要确认或禁止覆盖:

cp -i hosts hosts.bak   # 覆盖前问 y/N
cp -n hosts hosts.bak   # 目标已存在则跳过,不覆盖

考点:备份配置文件时,习惯用 cp -a 或 cp -p 保留属性;只拷内容用默认 cp 即可。

拷到目录还是改名?

命令若 dest 是已存在的目录结果
cp file dest是得到 dest/file
cp file dest否得到名为 dest 的新文件
cp -r dir dest是得到 dest/dir
cp file1 file2 dest必须是目录多个源文件时目标必须是目录

关机与重启

poweroff          # 关机
reboot            # 重启
shutdown -r +1    # 1 分钟后重启(可广播)

虚拟机里更常用平台的关机按钮;命令行关机适用于 SSH 维护窗口。

终端效率:快捷键与通配符

快捷键作用
Tab补全命令或路径;不唯一时按两次列出候选
Ctrl + C中断当前命令
Ctrl + L清屏(等价 clear)
Ctrl + A / Ctrl + E行首 / 行尾
Ctrl + U / Ctrl + K清除光标前 / 后内容
Ctrl + R反向搜索历史命令
↑ / ↓翻历史

高频路径靠 Tab,不要手打全路径。命令打错时 Ctrl + C 比连按退格更干净。

通配符(shell 展开,不是每个命令自带):

ls *.txt          # 当前目录所有 .txt
ls lab/day02/?.txt
ls /etc/*conf     # 以 conf 结尾

路径含空格时必须加引号,否则会被拆成多个参数:

touch "my file.txt"
cat "my file.txt"

推荐练习(约 15 分钟)

在虚拟机以 root 执行($HOME 即你的家目录):

cd
pwd
mkdir -p lab/day02/sub
cd lab/day02

touch note.txt a.txt b.txt
echo "hello rhel9" > note.txt
echo "line2" >> note.txt
cat -n note.txt

cp note.txt note.bak
cp -i note.txt note.bak     # 应提示是否覆盖,输入 n
ls -l

head -n 1 note.txt
tail -n 1 note.txt

cd sub
touch deep.txt
cd ../
ls -l sub/
cp -r sub sub2
rm -r sub2
ls

cd ~
ls -ld lab/day02

期望结果

  • lab/day02 下有:note.txt、note.bak、a.txt、b.txt、sub
  • sub/ 下有 deep.txt
  • 没有 sub2
  • note.txt 含两行,note.bak 内容与第一次 cp 时一致(cp -i 选了 n 则未覆盖)

速查表

目标命令
当前路径pwd
列目录ls / ls -l / ls -a / ls -lh
切换目录cd path / cd / cd -
建文件touch file;echo text > file
建目录mkdir -p dir
删文件rm file(默认无确认)/ rm -i file
删目录rm -r dir;rm -rf dir(慎用)
看短文件cat / cat -n
看头尾head -n / tail -n / tail -f
看长文件less file
拷文件/目录cp / cp -r / cp -a / cp -i
补全Tab
中断Ctrl + C

考点与易错

考点:mkdir -p、cp -r、rm -r/-f 的选项组合几乎是白给分,但写反(对目录用 cp、对多级路径不用 -p)会浪费考试时间。 易错:在错误的目录下 rm -rf *。删之前 pwd + ls。 易错:用 cat 打开大日志把终端卡住,改用 less 或 head/tail。 易错:路径含空格未加引号,参数被拆开。 易错:cp 以为不会覆盖,实际目标同名时静默覆盖——重要文件先 cp -i 或先备份。 练习环境:课堂若在 red 虚拟机操作,命令与本文一致,仅主机名和提示符不同。

小结

  1. 先 pwd / ls 确认位置,再动手增删拷;长格式先读属主、大小、名字。
  2. 多级建目录用 mkdir -p;拷目录用 cp -r;删目录用 rm -r,rm -rf 要多想一秒。
  3. 短文件 cat,只看头尾 head/tail,长文件 less;通配符先 ls 再删。
  4. 日常靠 Tab 和 Ctrl + C 提效。

下一篇把节点配成固定 IP,并用 SSH 从管理机远程进来——文件命令只有在网络上才有实战意义。


系列导航:总目录 · 上一篇:Linux 目录结构 · 下一篇:nmcli 配静态 IP 与 SSH

相关阅读

全部文章 →
← 返回列表更多「Linux」