当前位置:首页>Linux>Linux 命令行终端使用小技巧

Linux 命令行终端使用小技巧

  • 2026-09-10 01:51:04
Linux 命令行终端使用小技巧

清除并重置终端

要清除终端内容,使用以下命令,或直接按键盘上的 Ctrl+L。
clear
如果你不小心用 cat 或 less 读取了二进制文件,导致屏幕显示混乱,可以使用 reset 命令重新初始化终端。
reset

列出最近执行的命令

使用 history 命令列出所有最近执行的命令。
搜索命令历史中的特定内容。
history | grep [query]
或者按 Ctrl+R 从历史记录中搜索并执行命令。

关闭卡住的窗口或应用程序

执行命令后点击卡住的窗口。
xkill
或者查找应用程序的进程 ID 并将其终止。
$ ps ax |grep firefox[processID]  ??  S  0:00.22  firefox$ kill [processID]

Tab 自动补全

这能帮你节省大量时间。例如,如果你想删除一个文件名很长的文件,可以输入文件名的前几个字符,然后按 TAB 键自动补全。如果存在多个可能项,按两次 TAB 会列出所有可能的选项。

设置别名(临时)

为最常用的命令创建别名,节省时间。别名就像自定义快捷方式。
alias [name]="[command]"
示例:查询你的公网 IP。
alias publicip="curl ifconfig.me"

设置别名(永久)

让别名在会话之间甚至不同发行版之间保持有效。先确认你使用的 Shell:
Bash
vim ~/.bashrc
ZSH
vim ~/.zshrc
Fish
vim ~/.config/fish/config.fish
在文件中找到存放别名的位置,通常位于文件末尾。

命令链式执行

自动按顺序执行多个命令。无论前面的命令是否失败,都会继续执行:
command1 ; command2 ; command3
使用双与号 && 分隔时,只有前一个命令执行成功,才会执行下一个命令:
command1 && command2
使用双竖线 || 分隔时,只有前一个命令执行失败,才会执行下一个命令:
command1 || command2

命令语法

要查看某个命令的语法,最佳方式是查阅手册页:
man [command]
如果你的系统中没有手册页(这种情况极少见),可以检查该命令是否提供了帮助信息:
[command] --help
一个非常实用的工具是 TLDR,它提供了命令的通用使用示例。

光标导航

快捷键功能
ctrl + u清除光标前的所有内容
ctrl + a移动到行首
ctrl + e移动到行尾
ctrl + f向前移动一个字符
ctrl + b向后移动一个字符
ctrl + w剪切最后一个单词
ctrl + k清除光标后的所有内容
ctrl + _撤销
meta + f向前移动一个单词
meta + b向后移动一个单词
以上适用于默认的 Emacs 模式。你也可以切换到 Vim 模式:
bindkey -v

重定向

你可以通过在命令后添加以下符号来重定向标准输入、输出和错误。
符号功能
>将输出写入文件(会覆盖并销毁文件中已有的内容)
echo "Write output to file" > example.txt
>>将输出追加到文件末尾
echo "Append this to file" >> example.txt
<从文件读取输入
cowsay < example.txt
2>将错误信息写入文件(覆盖模式)。这意味着错误输出可以与正常输出分开重定向
rm -vf folder1 file1 > out.txt 2> err.txt

命令中的特殊字符

Shell 特殊字符会在命令被提交时立即由 Shell 解释。例如,如果你输入 ls *.bak,Shell 会将 *.bak 翻译为当前文件夹中所有以 .bak 结尾的文件列表。ls 命令本身永远不会看到星号。因此,如果你想搜索文件名中实际包含星号的文件,必须对星号进行转义,以阻止 Shell 解释它。
符号功能
\转义自身及其他特殊字符
*代表任意内容(包括空字符)
find ex*.txt
?代表任意单个字符
find ex?mple.txt
[]包含用于匹配单个字符的模式
find ex[abc]mple.txt
()在子 Shell 中运行括号内的内容
pwd && (cd /etc) && pwd
;终止命令管道——用于在一行中分隔多个命令
echo Hi ; uname
''单引号内的内容原样传递给命令,不做任何解释
find '(echo abc)'*
``反引号内的内容作为命令执行,其输出作为当前命令的一部分
echo [uname](/man/uname)\``
""双引号内的内容被视为一个参数;引号内的特殊字符(除 $ 和 \ 外)不做解释
cd "untitled folder"
\|管道,允许你将一个命令的输出发送给另一个命令
fortune | cowsay
&在后台运行命令
cowsay &
&&仅当前一个命令执行成功时,才执行第二个命令
ping localhost -c 1 && cowsay great
\|\|仅当前一个命令执行失败时,才执行第二个命令
ping "not.reachable" -c 1 || cowsay sorry
>>这些符号用于重定向
!!重复执行上一条命令
sudo !!
!*更改命令,保留所有参数
tail !*
^快速历史替换,将一个字符串替换为另一个
^png^xcf^
#将整行变为注释;该行不会被处理

hint text

不要将 Shell 特殊字符与正则表达式中的特殊字符混淆。正则表达式必须用单引号括起来,以防止被 Shell 解释。

查看文件权限

$ ls -l [file]
位置含义
1文件类型:- 表示普通文件,d 表示目录,l 表示符号链接
2-4所有者权限(rwx)
5-7所属组权限(rwx)
8-10其他用户权限(rwx)
示例:-rwxr--r-- 表示所有者有读、写、执行权限,而组用户和其他用户只有读权限。

修改文件权限

$ chmod [modification] [file]
示例:赋予组用户对 test.txt 文件的读写权限。
权限分组:
符号含义
u所有者
g所属组
o其他用户
权限类型:
符号含义
r读
w写
x执行
修改命令的运算符为 +(加)和 -(减)。

通过二进制数值设置文件权限

示例:赋予所有者读写权限,组用户读权限,其他用户无任何权限。
第一个数字代表所有者权限,第二个代表组权限,最后一个代表其他用户权限。这些数字是rwx字符串的二进制表示。
权限数值
r4
w2
x1

在后台运行命令

如果某个命令需要很长时间执行,你可以用 Ctrl+Z 将其挂起,然后让它在后台继续运行。
bg
将后台任务调回前台:
fg
列出当前会话中的所有后台任务:
jobs
如果你想让命令在退出登录后继续运行,使用 nohup。
nohup [command] &
对于长时间运行的任务或管理多个终端会话,推荐使用 tmux。它可以让你分离和重新附加会话,即使断开连接工作也不会丢失。
tmux new -s mysession
使用 Ctrl+B 然后按 D 分离会话。之后可以重新附加:
tmux attach -t mysession

使用 cron 调度任务

编辑用户的 crontab 文件以安排周期性任务。
crontab 中的每一行遵循五字段格式:
字段取值范围
分钟0 - 59
小时0 - 23
日期1 - 31
月份1 - 12
星期0 - 7(0 和 7 都表示星期日)
示例:每天凌晨 2 点运行备份脚本。
0 2 * * * /home/user/backup.sh

最新文章

随机文章