1.Linux:命令提示符,history和常用快捷键

shell家族

命令提示符

以我自己的Linux虚拟机为例:打开终端之后,光标前面的东西:[root@tiancai ~]#

你看到的 [root@tiancai ~]# 这一整串字符,被称为 命令提示符 (Command Prompt) 。它就像一个向导,时刻告诉你三件重要的事情:你是谁?你在哪台电脑上?你现在在哪个文件夹里?

让我们把它拆开来看,就像分析一个句子一样:

1. [root@tiancai ~] 这部分

我们可以把它分成三个小块:

  • root (你是谁? - Who)

    • 这部分显示的是 当前登录的用户名
    • root 是 Linux 系统中一个极其特殊的用户,他被称为 超级用户 (Superuser) 或管理员。
    • 你可以把 root 想象成这台电脑的"上帝",他拥有 最高权限,可以对系统里的任何文件和程序进行任何操作(包括删除最核心的系统文件导致系统崩溃)。
    • 因此,当你看到 root 时,心里要时刻保持警惕,你现在手握着系统的生杀大权!
  • tiancai (你在哪台电脑上? - Where)

    • @ 符号后面跟着的是这台计算机的 主机名 (Hostname)
    • 主机名就是这台电脑在网络上的名字。如果你同时管理着几十台服务器,这个名字就能让你清楚地知道你当前正在操作的是哪一台,防止"指东打西"的悲剧发生。
  • ~ (你现在在哪个文件夹里? - In Which Folder)

    • 这部分显示的是你 当前的"工作目录" (Working Directory)。也就是你现在正"站"在哪个文件夹里。
    • ~ (波浪号) 是一个特殊的符号,它是当前用户 家目录 (Home Directory) 的一个快捷方式。
      • 对于 root 用户来说,他的家目录是 /root。所以这里的 ~ 就等同于 /root
      • 如果是一个普通用户,比如叫 john,那么他的家目录通常是 /home/john,他登录后看到的 ~ 就代表 /home/john
    • 你可以试试看: 输入命令 cd /etc 然后回车,你会发现这个 ~ 变成了 etc,提示符就变成了 [root@tiancai etc]#,告诉你现在的位置变了。再输入 cd ~ 就会回到家目录。

2. # 这个符号

这个符号是权限的象征,极其重要!它告诉你当前用户的 权限级别

  • # (井号/Pound Sign)

    • 当你看到这个符号时,它明确地告诉你:你现在是 root 用户! 你拥有最高权限,你输入的任何命令都会被无条件执行。
  • $ (美元符号/Dollar Sign)

    • 如果你是以一个 普通用户 (非 root 用户)的身份登录,那么你看到的提示符会是 $
    • $ 提醒你:你只是一个普通访客,你的权限是受限的。比如,你不能随意删除系统文件,也不能安装软件到系统目录。这是一种安全机制,防止误操作破坏系统。

总结一下

符号 用户类型 权限
# 超级用户 (root) 最高权限,无所不能,操作需谨慎
$ 普通用户 有限权限,更安全,适合日常使用

所以,当你的朋友发给你一张 Linux 终端的截图时,你只需要看一眼最后的符号是 # 还是 $,就能立刻知道他是不是以 root 身份在操作。

命令history相关操作

想象成"命令行的时光机"

你可以把"历史记录"功能想象成你网页浏览器的历史记录。你访问过的每个网址都会被记下来,方便你下次快速找到。同样,你在命令行里输入的 每一条命令 ,都会被一个叫做 bash (或 zsh 等) 的程序记下来。

这个功能主要有三种玩法,对应不同的场景。


玩法一:上下翻页(适合找刚刚用过的命令)

这是最简单也最常用的。

场景 :你刚刚输入了一条很长的命令,比如 sudo apt install build-essential libncurses-dev,结果发现少装了一个东西。你不想再把那么长的命令重新敲一遍。

怎么做

  1. 在光标闪烁的命令行里,直接按键盘上的 向上箭头
  2. 你会发现,你上一条输入的命令 sudo apt install ... 立刻就出现了!
  3. 你可以继续按 ,就会像翻书一样,一条一条地往前翻看你更早输入的命令。
  4. 翻过头了?按 向下箭头 就能往后翻。
  5. 找到你想要的命令后,你可以直接按 Enter 再次执行,或者用左右箭头移动光标去修改它(比如在后面添上新的包名),然后再按 Enter

书里提到的 Ctrl-pCtrl-n 是什么?

它们是 的替代品。

  • Ctrl-p = p revious (上一个),等同于
  • Ctrl-n = n ext (下一个),等同于
    这是给那些喜欢把手一直放在主键盘区的"老手"用的,功能完全一样。作为初学者,你用上下箭头就足够了。

玩法二:关键字搜索(超级高效!找很久以前的命令)

这是最强大,也正是书里那段文字想解释清楚的核心功能。

场景 :你记得上周你用了一条关于 docker 的命令来启动某个容器,但命令很长,参数也忘了,只记得里面有个 docker run 和容器名 my-app。用 键要翻几百次,太累了!

怎么做

  1. 在命令行里,按下 Ctrl-r 组合键 (r 代表 reverse-search,反向搜索)。
  2. 你的命令行提示符会立刻改变,看起来像这样:
    (reverse-i-search):
  3. 现在,开始输入你记得的关键字 。比如,你输入一个 d
    (reverse-i-search)d: sudo docker ps -a <-- 它立刻找到了最近一条包含d的命令
  4. 这还不是你想要的。继续输入 o
    (reverse-i-search)do: sudo docker ps -a <-- 结果没变,因为这条也包含do
  5. 继续输入 cker run
    (reverse-i-search)docker run: docker run -d -p 8080:80 my-app <-- 啊哈!找到了!
  6. 找到之后怎么办?
    • 直接执行 :直接按 Enter 键,这条命令就会被执行。
    • 需要修改 :按一下 向左 或向右 箭头,你就会退出搜索模式,光标会定位到命令上,你就可以自由修改了。
    • 不是这条,找更早的 :如果找到的这条还不是你想要的(比如你上周运行过好几次 docker run),就再按一次 Ctrl-r,它就会继续往前找上一条匹配的命令。

这个 Ctrl-r 是从"现在"往"过去"搜索,所以叫"反向搜索",是命令行高手必备神技。


玩法三:列出所有历史(上帝视角)

场景:你想看看你最近都干了些什么,或者想找某条命令,但不记得任何关键字。

怎么做

  1. 直接输入 history 命令,然后按 Enter

  2. 它会把你所有的历史命令都列出来,每条前面还有一个编号。

    复制代码
    501  ls -l
    502  cd /var/log
    503  tail -f syslog
    504  history
  3. 如果你想执行其中的某一条,比如第 502 条,你可以输入 !502 然后按 Enter,这叫"事件调用",是一个很酷的技巧。

总结一下,理清思路:

你想做什么? 使用什么方法? 怎么操作?
运行刚刚才用过的命令 上下翻页 按键盘的
运行很久以前用过,但记得其中几个词的命令 关键字搜索 (最推荐) Ctrl-r,然后输入关键字
想看看最近输入的所有命令列表 完整列表 输入 history 命令

你可以现在就打开你的 Linux 虚拟机,随便敲几条命令(比如 ls, pwd, echo "hello"),然后亲自试试 键和 Ctrl-r,马上就能体会到它的方便之处了。

快捷键

好的,这张图里的内容是提升命令行操作效率的"秘籍",非常值得学习。

光看文字和表格可能会觉得有点枯燥和难记,我来帮你把它"翻译"成更容易理解和记忆的方式。

核心思想:为什么要用这些快捷键?

首先,理解这张图第一段话的核心思想:让你的双手尽可能地保持在键盘主输入区(字母区),不要频繁地移动到方向键、Home/End键上。

想象一下一个熟练的打字员,他们的手指几乎不会离开字母键。同样,在命令行里,如果你要修改一条长命令的中间某个字符,你的操作可能是:
手指离开主键盘区 -> 移动到方向键 -> 按好几次左箭头 -> 修改 -> 手指再移回主键盘区 -> 按回车

这个过程中的"来回移动"其实浪费了很多时间。这张图教你的,就是用 Ctrl 加上字母区的按键来模拟这些功能键,让你的手指"足不出户"就能完成所有编辑。


快捷键分组实战讲解

我们把这些快捷键分成三组来理解和练习,会更容易上手。

第1组:上下左右移动 (替代方向键)

这是最基础也是最重要的四个。

  • Ctrl-p:向上 (Up Arrow )

    • 助记 : Previous (上一个命令)
    • 场景 : 和你之前学的按 键翻看上一条历史命令,功能完全一样。
  • Ctrl-n:向下 (Down Arrow )

    • 助记 : Next (下一个命令)
    • 场景 : 翻历史命令时翻过头了,用它往下翻,和 键功能一样。
  • Ctrl-b:向左 (Left Arrow )

    • 助记 : Backward (向后)
    • 场景 : 你输入了一长串命令 ls -l /var/log/nginx/access.log,发现 nginx 拼错了,想把光标往左移动几个字符去修改。这时按住 Ctrl 连续按 b,光标就会快速向左移动。
  • Ctrl-f:向右 (Right Arrow )

    • 助记 : Forward (向前)
    • 场景 : 和上面一样,修改完拼写后,想把光标快速移回行尾添加新内容,就按住 Ctrl 连续按 f
第2组:行首行尾跳转 (替代 Home / End 键)

这两个超级实用,能帮你节省大量按左右键的时间。

  • Ctrl-a:跳转到行首 (Home)

    • 助记 : A 是字母表的第一个字母,代表"开头"。
    • 场景 : 你输入了很长的命令,突然想在最前面加上 sudo,用鼠标点或者按住左箭头太慢了。直接按 Ctrl-a,光标"唰"地一下就跳到了命令的最前面。
  • Ctrl-e:跳转到行尾 (End)

    • 助记 : End (结尾)
    • 场景 : 你在命令中间修改完一个参数,想立刻跳到行尾继续输入。直接按 Ctrl-e,光标瞬间就到了最后。
第3组:删除字符 (替代 Backspace / Del 键)
  • Backspace : 这个就是你平时用的退格键,删除光标前的一个字符。
  • Ctrl-d:向后删除 (Delete)
    • 助记 : Delete (删除)
    • 场景 : Backspace 是往前删,Ctrl-d 是删除光标所在位置 的字符(效果就像笔记本键盘上的 Del 键)。
    • 还有一个隐藏功能 :如果命令行是空的,你按 Ctrl-d,会直接退出当前的终端会话(等同于输入 exit)。

总结与练习建议

常用功能 对应的功能键 主键盘快捷键 助记(帮你联想记忆)
上一条命令 (Up) Ctrl + p Previous (上一个)
下一条命令 (Down) Ctrl + n Next (下一个)
光标向左 (Left) Ctrl + b Backward (向后)
光标向右 (Right) Ctrl + f Forward (向前)
跳到行首 Home Ctrl + a A (字母表开头)
跳到行尾 End Ctrl + e End (结尾)
向前删除 Backspace Backspace (无)
向后删除 Delete Ctrl + d Delete (删除)

如何练习?

就像书里说的,这非常值得你花一点时间去形成肌肉记忆。
今天,你可以给自己定一个小目标:在接下来的半小时里,在你的 Linux 虚拟机里操作时,强迫自己完全不使用方向键、Home键和End键 ,只用 Ctrl + 字母的组合键来移动和编辑命令。

一开始会觉得很别扭,甚至比用方向键还慢,但只要你坚持一两天,就会发现手指真的可以不用离开键盘核心区,操作效率大大提升!

相关推荐
轻松Ai享生活8 小时前
怎么在5天内将Linux systemd学精通
linux
shinelord明8 小时前
【大数据技术实战】Flink+DS+Dinky 自动化构建数仓平台
大数据·运维·分布式·架构·flink·自动化
laoma-cloud8 小时前
Web 集群高可用全方案:Keepalived+LVS (DR) 负载均衡 + Apache 服务 + NFS 共享存储搭建指南
运维·负载均衡·高可用·web集群
子兮曰9 小时前
🔥这个Nginx泛域名配置,让90%的开发者直呼"原来还能这样玩!
运维·前端·nginx
怎么面试9 小时前
EasyExcel 基础用法
java·服务器
歪歪1009 小时前
如何在Qt Creator中快速定位代码中的注释?
运维·开发语言·qt·解释器模式·全文检索·嵌入式实时数据库
悲伤小伞9 小时前
Linux_网络基础
linux·服务器·c语言·网络
希赛网9 小时前
华为HCIE证书多久续一次费?费用多少?
运维·网络工程师·华为认证·数通·hcie续证
脑洞代码9 小时前
20250903的学习笔记
服务器·笔记·学习