☰
Linux命令行入门:提示符详解与常用基础命令实战
2026/9/26 6:51:14 网站建设 项目流程

第二天,咱们的 Linux 学习正式进入“动手”环节。昨天装好系统、配好网络之后,你今天打开终端,大概率会看到一个末尾带着$或#的光标在闪。这个界面就是绝大多数 Linux 初学者和命令行提示符第一次正式碰面的地方,也是后面所有操作的主战场。

很多人觉得提示符只是“等你输入命令”的摆设,其实不是。提示符里藏了当前用户、主机名、当前目录、权限级别这些关键信息。读不懂提示符,你会在服务器上敲错命令、删错目录而不自知;读懂了,每一行命令都有上下文的“地图”。这篇笔记把提示符的每个字符拆开讲清楚,再把 Linux 使用频率最高的一批基础命令按“看位置、看文件、增删改、查记忆”几个场景串一遍。适合刚装完 Linux、准备从零开始打命令基础的人看,也适合准备突击复习、或者面试前想快速把 Linux 基础命令捡起来的同学找手感。

1. 命令提示符是怎么工作的:看到的一切都不是摆设

1.1 一个典型提示符的组成拆解

在终端里最常见的提示符长这样:

root@localhost:~#

或者这样:

zhangsan@ubuntu:~$

拆开看,每一段都有意义。

  • 第一段root或zhangsan,是当前登录用户名。你可以用whoami验证。
  • 中间的@只是分隔符,念作“at”,表示“这个用户在哪台机器上”。
  • 接着的localhost或ubuntu是主机名,用hostname命令可以查看。
  • 冒号后面的~是当前工作目录。~代表当前用户的家目录,比如 root 家目录通常是/root,普通用户通常是/home/zhangsan。
  • 最后的$或#表示当前用户的权限层级。普通用户是$,root 用户是#。

#这个符号特别提醒一下:看到它,说明你现在拥有最高权限,可以删系统文件、改所有配置、重启服务。很多初学者在 root 下会犯“随手清理”,比如冷不丁来一条rm -rf结果把所有东西都删了。所以我的习惯是:测试环境随便玩,生产机器上尽量不用 root 登录,就算登录了也先确认提示符,别上来就敲命令。

1.2 提示符是可以改的:PS1 环境变量

提示符不是“出厂设置”,它由环境变量PS1控制。在 bash 里输入:

echo $PS1

你会看到一串类似[\u@\h \W]\$的内容。这就是 bash 解释提示符的“模板语法”:

  • \u:用户名
  • \h:主机名短格式
  • \w:完整当前路径
  • \W:只显示路径的最后一级目录
  • \$:普通用户显示$,root 用户显示#

如果你想把提示符改成自己看着舒服的风格,可以临时执行:

export PS1='[\u@\h \W]\$ '

这个改动只在当前 shell 会话里生效。想永久生效,把这一行追加到~/.bashrc末尾,然后source ~/.bashrc。

不过我不建议新手一开始就过度折腾 PS1。改乱了会看到奇怪的提示符,甚至输入内容后光标位置错位,排查起来很费时间。先用默认风格,等对命令足够熟、能分清\w和\W的区别之后,再按自己的审美调。

1.3 提示符异常:还没输入命令就进入了“续行模式”

有时候你会看到提示符变成了这样,并且光标停在第二行闪烁:

$ echo "hello >

这不是系统卡了,而是 bash 认为你上一行命令还没写完。最常见的触发原因有两个:一是引号没有闭合,比如上面这个例子少写了一个";二是用了反斜杠续行,输入完\回车后 shell 会默认你还要继续输入。

遇到这种>提示符,别愣着,直接按Ctrl + C取消当前输入,回到正常提示符再重新敲。这也是我在命令行里用得最多的“后悔药”。

2. 七个出场率最高的目录命令,先练出手感

2.1 站在哪别猜:先用 pwd 确认当前目录

pwd全称是 print working directory,作用只有一个:输出当前工作目录的绝对路径。

$ pwd /home/zhangsan

为什么先学它?因为目录概念是 Linux 命令行的地基。提示符里显示的~只是家目录的缩写,但你实际操作时经常会在/var/log、/etc、/opt这些目录之间切换,只靠提示符的\W只显示最后一段,很容易分不清自己到底在哪里。

所以,刚开始练命令时,我建议你每到一个新目录就先pwd一次,把实际路径和大脑里的预期对齐。等习惯了,再依赖提示符里的完整路径。

2.2 ls 的常用参数:这几组我每天都在用

ls是最基本的列目录命令,但参数很丰富。新手记住下面几组就够了:

  • ls:列出当前目录内容
  • ls -l:以详细列表显示,包含权限、属主、大小、修改时间
  • ls -a:显示隐藏文件,包括以.开头的文件
  • ls -h:配合-l使用,让文件大小显示为 K、M、G 这种易读格式
  • ls -t:按修改时间排序,最新的在最上面
  • ls -r:反向排序,常和-t组合成ls -ltr

ls -ltr是我在运维场景里最常用的一条:按时间倒排,最新的文件永远在最后。查日志时,我想看最新写入的内容,直接ls -ltr /var/log/,一目了然。

ls -l的输出第一列是类似-rw-r--r--的权限串,新手看不懂很正常。简单记忆法:第一个字符表示文件类型,-是普通文件,d是目录,l是软链接;后面九个字符按三位一组,分别对应属主、属组、其他人的读/写/执行权限。

2.3 cd 的几种跳法,以及我踩过的“跳错目录”的坑

cd是 change directory,切换目录。最基本的用法:

cd /etc # 进入绝对路径 cd ../.. # 向上退两级 cd ~ # 回家 cd /home/zhangsan # 进入指定用户的家目录

有几个细节值得刻意记一下。

第一,cd -可以回到上一次所在的目录。这个命令在“两个目录之间来回切换”时特别有用。比如我先在/etc看配置,又切到/var/log看日志,想回到/etc,一条cd -就搞定,不用重新敲长路径。

第二,命令和路径都是区分大小写的。cd /ETC和cd /etc完全不同。这在从 Windows 过来的人身上几乎必踩,因为 Windows 路径不区分大小写。我早期就因为在 Nginx 配置目录里写错了大小写,导致明明文件存在却总是报错找不到。

第三,文件名带空格时,必须用引号包起来或者用反斜杠转义。假设有个目录叫my dir,如果你直接输cd my dir,bash 会把my和dir当成两个参数,报错。正确做法是cd my\ dir或者cd "my dir"。

3. 文件的增删改查组合拳

3.1 用 mkdir 创建目录:递归创建要记牢

mkdir创建目录,最基础的是mkdir test。但实际工作中更常用的是-p参数:

mkdir -p /home/zhangsan/lab/day02

-p的作用是“递归创建所有父目录”。比如你要创建/a/b/c这种多级目录,没有-p时 bash 会提示“没有那个文件或目录”,因为/a/b不存在;有-p就直接一路建到底。另一个好处是,如果目录已经存在,-p不会报错,这在脚本里用特别舒服。

新手可能更关心验证。创建完之后,最直接的验证方式是ls -l看目录类型,或者直接cd进去。

3.2 touch 的小细节:创建空文件也会有副作用

touch最常见的用途是“创建一个空文件”:

touch config.txt

但它真正的原始作用是“更新时间戳”。如果一个文件已经存在,执行touch后会把它的修改时间改成当前时间,内容不会变。

这个特性在一些编译场景里有实际用途:源码修改后,如果make认为目标文件比源文件新,就不重新编译。有时你只想强制目标重新生成,就可以touch一下源文件。日常学习中,我常用touch加上后面的命令来验证某个目录是否可写:先创建一个临时文件,再rm删掉,能成功就说明当前用户对该目录有写权限。

3.3 cp 和 mv:复制与移动,别把文件弄丢

复制的命令是cp,基本语法是“源”和“目标”:

cp file.txt file_backup.txt # 复制文件并改名 cp file.txt /home/zhangsan/docs/ # 复制到目录 cp -r docs /home/zhangsan/backup/ # 复制目录,必须加 -r

-r参数特别重要。复制目录时不加-r,cp 会明确提示“omitting directory”(省略目录),文件不会被复制。想保留权限、时间戳这些属性,可以用cp -a,它在复制目录和保留属性方面都比-r更全面。

mv是移动,也可以用来重命名:

mv old.txt new.txt # 重命名 mv file.txt /home/zhangsan/docs/ # 移动到目录

同一个文件系统内,mv 是“改个路径”,速度非常快;跨文件系统时,mv 会变成“复制一份到新位置再删掉原来的”,速度取决于文件大小。初学者不用深究这个底层原理,但要知道:mv 执行后,原来的路径就不存在了。

很多发行版为了让新手更安全,会把cp、mv、rm设置成带-i的别名,也就是每次覆盖前都会问你一句。如果你发现操作前多了一个rm: remove regular file 'xxx'?的确认,这不是出错了,而是别名在发挥作用。

3.4 rm 的危险:删除之前先“看一眼”

删除命令rm几乎人人都会用,但真正理解它风险的人不多。最基本的用法:

rm file.txt # 删除文件 rm -r dir # 递归删除目录 rm -f file.txt # 强制删除,不询问

问题出在组合使用上。rm -rf是网上最常见的“神命令”,但新手最好把它当成一个危险信号,而不是默认操作。删除前先做一件事:用ls或者通配符确认要删除的到底是谁。

比如你想删除所有.log文件,可以先执行:

ls -l *.log

确认列表里只有你打算删的文件,再执行:

rm *.log

我亲眼见过同事在 root 目录下想清理临时文件夹,结果rm -rf /var /log中间多了一个空格,写成了删除/var和/log两个目录,差点把系统弄崩。Linux 里没有回收站,删了就基本找不回来。所以,给新手的建议是:能不玩-rf就先别玩,等对路径敏感度足够高了,再在确实需要时使用。

4. 查看文件内容的三件套和系统帮助

4.1 cat 适合小文件,不适合日志滚屏

cat会把文件内容直接输出到终端。看短文件很方便:

cat /etc/os-release

这条命令在 Linux 上几乎是我每次登录新机器都会敲的,就为了确认系统发行版和版本号。输入后你能看到类似PRETTY_NAME="Ubuntu 22.04.3 LTS"的内容。

但 cat 有个明显的坑:如果文件大,它会把全部内容“轰”到屏幕上,终端快速滚动,你根本看不清内容,还会误以为系统卡了。遇到这种情况,别慌,按Ctrl + C中断即可。想看大文件,用下面的 less。

4.2 less 更适合阅读,tail 适合看日志尾巴

less是 Linux 上的分页阅读器,适合查看长文件:

less /var/log/syslog

进入 less 后,可以用方向键上下滚动,按空格翻下一页,按g跳到文件开头,按G跳到末尾,按/输入关键词搜索,按n跳转到下一个匹配项,按q退出。

另一个高频率命令是tail,默认显示文件最后 10 行。它的-f参数是“follow”的意思,表示实时跟随文件增长。我在排查日志时几乎离不开它:

tail -f /var/log/nginx/access.log

执行后终端会持续显示新增的日志行,直到你按Ctrl + C退出。这是 Web 运维里确认请求是否正常进来的最直观方式。初学者练的时候,可以开一个终端tail -f,在另一个终端往文件里追加内容,观察实时变化。

4.3 man 和 --help:系统自带的“说明书”

很多命令背不住参数,这不怪你,因为没人需要全背。Linux 自带帮助系统,最常用的是:

man ls

man 会打开命令的完整手册,内部同样用q退出。手册里最重要的部分是 SYNOPSIS(语法摘要),方括号里的内容都是可选参数。另一个快速查看方式是:

ls --help

大部分 GNU 工具支持--help,会输出一套更简短的使用提示。日常用--help查参数,遇到特别正式或复杂的问题再翻 man,效率和深度都会更好。

5. 记忆和补全:命令行效率的核心秘密

5.1 用 history 找回你敲过的命令

bash 会把当前用户的命令历史保存在内存中,并定期写入家目录下的.bash_history文件。查看方式就是:

history

你会看到带序号的历史命令清单。想重新执行某一条,不用把它完整再敲一遍,用!序号就行:

!1024

还有一个高频操作是Ctrl + R,进入反向搜索。输入几个关键词,bash 会匹配最近的包含关键词的命令;继续按Ctrl + R可以跳到更早的匹配项,按回车直接执行。

我不建议刚学的时候硬背命令表。更有效的做法是“故意犯错”:想不起来了就history | grep 关键词,看看之前是怎么敲的。这个过程本身就在帮你建立肌肉记忆。

5.2 Tab 补全和通配符:省力气,也在防错

Tab 键是命令行里最被低估的按钮。输入路径或命令时,按一次 Tab,bash 会尝试自动补全;如果有多个候选,按两次 Tab 会列出所有可能。

比如你想进入/etc/nginx/conf.d,不需要一个个敲全,输入/etc/ngin然后按 Tab 补全,再输con按 Tab,一路补全进去。这个习惯一旦养成,你打错路径的概率会大大下降,因为补全不出来往往就代表路径不对。

通配符则是批量操作的好帮手:

  • *匹配任意长度的字符,例如*.log匹配所有以.log结尾的文件
  • ?匹配单个字符,例如file?.txt可以匹配file1.txt,但不匹配file10.txt
  • [abc]匹配括号中的任意一个字符,例如file[12].txt匹配file1.txt和file2.txt

通配符在ls、rm、cp这些命令里都能用。前提是你知道它展开后会变成什么样子,最好先用ls看一遍,再执行真正的操作。

5.3 几个最重要的 Ctrl 组合键

命令行是“击键操作”,记住几个快捷键能让你少按很多次方向键:

快捷键作用
Ctrl + C中断当前正在运行的命令
Ctrl + Z挂起当前命令,放到后台
Ctrl + A光标移动到行首
Ctrl + E光标移动到行尾
Ctrl + U删掉光标左侧所有字符
Ctrl + K删掉光标右侧所有字符
Ctrl + W删除光标前一个单词
Ctrl + L清屏,相当于clear
Ctrl + D退出当前 shell,相当于输入exit

这里重点说Ctrl + Z。挂起不是终止,进程还在后台占着。比如你在编辑文件时按了Ctrl + Z,重新回到终端,看似正常,但实际上文件编辑器进程还在运行。如果你继续操作同一个端口或文件,可能会提示资源占用。想恢复它,用jobs查看挂起任务,再用fg调回前台。

6. 命令找不到、没权限、卡住不动的排查思路

6.1 command not found 不一定是命令不存在

新手最常遇到的报错是:

bash: mycommand: command not found

第一反应是检查拼写。排除拼写问题后,再想想:这个命令是不是安装在你系统的PATH环境变量里?输入echo $PATH可以看到一串目录,bash 会按顺序在那些目录里查找可执行文件。如果命令装在了/opt/bin而/opt/bin不在$PATH中,那你直接敲命令名就找不到。

排查命令位置用which:

which python3

如果输出了类似/usr/bin/python3的路径,说明命令存在,也可以知道它被安装在哪。

还有一种情况:你自己写了一个脚本my.sh放在当前目录,直接敲my.sh大概率会报“command not found”,因为当前目录不在 PATH 中。正确执行方式是给脚本加上执行权限后,用./my.sh运行,这里的./明确告诉 bash“就在当前目录找”。

6.2 Permission denied:不是拒绝,而是缺执行权限

如果文件存在,但执行时报:

Permission denied

通常是因为文件没有“可执行”权限。用ls -l看权限位:

-rw-r--r-- 1 zhangsan zhangsan 0 Jan 1 00:00 myscript.sh

权限串前三位的rw-表示你只有读写权限,没有x(执行权限)。给文件加上执行权限:

chmod +x myscript.sh

再执行./myscript.sh就正常了。这里补一句:不要为了图省事把所有脚本都拿 root 权限去执行,更要避免把当前目录.加到 PATH 里。因为那样的话,如果有人在你当前目录放了一个恶意命令,bash 可能会优先执行它,这个风险在生产环境尤其不能忽视。

6.3 常见问题速查表

现象可能原因常用处理
提示符变成>,命令不执行引号未闭合、反斜杠续行Ctrl + C取消当前输入
command not found拼写错误、命令未安装、路径不在 PATH用which排查;确认安装
Permission denied无执行权限ls -l查看权限,chmod +x添加执行权限
文件名带空格无法操作未加引号或未转义使用"my file"或my\ file
命令一直不返回前台命令长时间运行Ctrl + C中断,或后台运行
刚启动终端没有正常提示符可能进入了其他 shell 或环境变量被改乱检查~/.bashrc,必要时恢复默认配置

这六类问题基本覆盖了命令行新手头两周会碰到的绝大部分故障。以后你遇到更诡异的报错,思路也是一样:先确认“命令是否存在”“路径是否正确”“权限是否足够”,再往系统日志方向查。

写到这儿,第二天的内容其实已经覆盖了提示符、目录命令、文件基础操作、文件查看、历史记录、权限排查这些主线。我个人在带新人时最看重的不是让他们背下所有参数,而是培养一种“对话感”:每次敲错、每次 command not found,都在帮你更精确地理解系统正在做什么。所以接下来几天不用急着往下学,把ls -l的输出反复看几遍,把cd的路径跳转玩熟,把history里重复出现的命令改成别名,这些听上去笨拙的小事,才是后面学管道、学脚本、学权限体系时最扎实的底子。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询