Skip to content

一堆很常用的命令行

Published:

LS

ls 是用来查看当前目录中有哪些文件和子目录的命令。默认情况下,它显示当前目录的内容。如果想让输出有颜色,可以用 --color 选项:

比如,要给 ls 命令的输出加上颜色,你可以这样做:

ls --color

现在 ls​​ 命令的输出就带颜色了,你可以很容易地区分目录和文件。

但是每次都输入带颜色的 ls​ 命令会有点麻烦,这就是为什么会使用 alias​命令的原因。

Alias

alias​​ 命令可以让你在你的 shell 会话中定义临时别名。创建别名时,你告诉你的 shell 用一系列命令替换一个单词。

比如,要让 ls​​ 命令默认带颜色而不用每次都敲 --color​​ 标志,你可以这样:

# fish
alias ls "ls --color"

这里我使用的 fish shell​,alias​ 命令接受一个 key value​ ,别名的值放在引号里。

如果你想列出你在 shell 会话中所有的别名,可以运行 alias​​ 命令而不带参数。

Unalias

字如其名,unalias 命令是从已设置的别名中移除一个别名。要移除之前的 ls​​ 别名,你可以这样用:

unalias ls

PWD

pwd 命令的全称是 “print working directory”,它会输出你当前所在目录的绝对路径。举个例子,如果你的用户名是“sora”,而你在 github 目录下,那么它的绝对路径就是:/home/sora/github。

使用方法很简单,只需在终端中键入 pwd:

pwd
# /home/sora/github

Cd

cd 命令非常常用,和 ls 一样。它的全称是“change directory”,顾名思义,它可以让你切换到你想要进入的目录。

比如说,如果你当前在主用户目录里,而你想要访问它的一个子文件夹叫做 github,你可以通过输入以下命令进入:

cd github

你也可以提供文件夹的绝对路径:

cd /home/sora/github

cd 命令有一些小技巧,可以在使用时为你节省很多时间,比如:

  1. 进入当前用户目录:
cd
  1. 上级目录
cd ..
  1. 返回前一个目
cd github
# 历史栈堆里记录了这一个步骤
cd -
# 后退

Cp

在 Linux 终端中直接复制文件和文件夹非常简单,有时甚至可以替代 GUI 文件管理器。

要使用 cp​ 命令,只需要输入它以及源文件和目标文件:

cp file_to_copy.txt new_file.txt

你也可以通过使用 -r​ 标志来复制整个目录:

cp -r dir_to_copy/ new_copy_dir/

需要注意的是:在 Linux 中,文件夹以斜杠(/)结尾。

Rm

紧随其后的是 rm​ 命令,它可以用来删除文件和目录,不过使用的时候要小心,通过 rm​ 命令删除的东西很难 (但不是不可能) 恢复。

要删除文件,可以输入:

rm file_to_copy.txt

如果要删除一个空目录,你可以使用 -r​ 标志:

rm -r dir_to_remove/

另一方面,如果要删除一个包含内容的目录,你需要使用强制 -f​ (focus) 和 -r 标志:

rm -rf dir_with_content_to_remove/

Mv

你可以使用 mv​ 命令在文件系统中移动(或重命名)文件和目录。使用这个命令时,你需要输入命令名称,以及源文件和目标文件夹:

# 移动文件到文件夹
mv source_file destination_folder/
mv command_list.txt commands/

如果要使用绝对路径,可以这样:

mv /home/kinsta/BestMoviesOfAllTime ./

这里的 ./​ 表示当前目录。

你还可以使用 mv​ 命令在保持文件在同一目录的同时重命名文件:

mv old_file.txt new_named_file.txt

Mkdir

使用 mkdir​ 命令在 shell 中创建文件夹。只需指定新文件夹的名称,然后就可以开始使用了。

例如,要创建一个用于存放所有图片的目录,只需输入:

mkdir images/

要使用 -p​ (parent) 标志轻松创建子目录,它允许你一次性创建整个目录层次结构(一个目录树),而不会因为父目录已存在而报错。例如这样:

mkdir -p movies/2004/

Man

另一个重要的 Linux 命令是 man​。它显示任何其他命令的手册页(如果该命令有的话)。

要查看 mkdir​ 命令的手册页,输入:

man mkdir

你还可以参考 man​ 的手册页:

man man

Touch

touch​ 命令允许你更新指定文件的访问和修改时间。例如,如果有一个上次修改日期是 4 月 12 日的旧文件:

touch -m old_file

现在日期与今天的日期匹配了。然而,大多数情况下,你不会使用 touch​ 来修改文件日期,而是用它来创建新的空文件:

touch new_file_name

Chmod

chmod​ 命令允许你快速更改文件的模式(权限)。它有很多可用的选项。

在操作系统中,文件可以具有的基本权限有:

chmod​ 最常见的用法之一是使文件对用户可执行。为此,输入 chmod​、+x​ 标志,然后是你要修改权限的文件:

chmod +x script/binary

这一般用于二进制文件,比如我现在写一个了类似 mkdir​ 的具有读写功能的命令行提供给其他人使用,但是,运行该命令行需要用户提供权限才能跑,那么这个时候,chmod​ 命令就派上用场了,从而允许你通过使用 ./​ 符号直接运行这个命令。

./

./​ 本身不是一个命令,但在这里值得一提:它允许你的 shell 直接从终端运行已在系统中安装的任何可执行文件。不需要在 GUI 文件管理器中双击文件打开。

例如,使用这命令,你可以运行一个 Python 脚本或一个仅在 .run​ 格式中可用的程序,比如 XAMPP。在运行可执行文件时,请确保它具有可执行(x)权限,你可以使用 chmod​ 命令进行修改。

这里有一个简单的 Python 脚本以及我们如何使用 ./​ 符号运行它的示例:

#! /usr/bin/python3

# 文件名: script

for i in range(20):
    print(f"This is a cool script {i}")

以下是如何将脚本转换为可执行文件(binary)并运行它的方式:

chmod +x script
./script

Exit

exit​ 命令正如其名,它可以结束一个 shell 会话,并在大多数情况下自动关闭你正在使用的终端:

exit

Sudo

这个命令代表 “superuser do”,它允许你在运行特定命令时充当超级用户或 root 用户。这是 Linux 保护自己并防止用户意外修改系统文件系统或安装不适当的软件包的方式。

sudo​ 常用于安装软件或编辑用户主目录之外的文件:

sudo apt install gimp

sudo cd /root/

在运行你在其后输入的命令之前,它会要求你输入管理员密码。

Shutdown

shutdown​ 命令允许你关闭计算机。但它也可以用于停止和重启计算机。

要立即关闭计算机(默认是一分钟后),输入:

shutdown now

还可以计划在 24 小时制中关闭系统:

shutdown 20:40

要取消之前的关机调用,可以使用 -c​ 标志:

shutdown -c

Unzip

unzip​ 命令允许你从终端中提取 .zip​ 文件的内容。这个包可能默认情况下未安装,所以确保使用软件包管理器 (apt) 安装。

如下所示,解压一个包含图像的 .zip​ 文件:

unzip images.zip

Apt、Yum、Pacman

无论使用哪个 Linux 发行版,都会使用软件包管理器来安装、更新和删除每天使用的软件。

你可以通过命令行访问这些包管理器,具体取决于你的 Linux 系统运行的发行版(如 Ubuntu、CentOS)

以下示例将安装 GIMP,这是一款通常在大多数包管理器中都可用的免费开源软件:

sudo apt install gimp
sudo yum install gimp
sudo pacman -S gimp

Echo

echo​ 命令在终端中显示定义的文本,非常简单:

echo "Cool message"

echo​ 命令显示 “Cool message”。其主要用途是在这些消息中打印环境变量:

echo "Hello, $USER"

# Hello, sora

Cat

cat​,即“concatenate”(连接),允许你直接从终端创建、查看和连接文件。它主要用于预览文件而无需打开图形文本编辑器:

cat long_text_file.txt

PS

使用 ps​,你可以查看当前 shell 会话正在运行的进程。它打印有关你正在运行的程序的有用信息,如进程 ID、TTY(TeleTYpewriter)、时间和命令名。

Kill

Linux 不像 Windows 那般当一个软件停止响应时,可以很方便地通过任务管理器来结束,在 Linux 中,一般都通过使用 kill​ 命令来关闭一个进程。

你可以通过输入 PID(进程 ID)或程序的二进制名称来终止进程:

kill 533494

kill firefox

在使用这个命令时要小心,因为使用 kill​ 有可能意外删除你正在运行的软件或者文档。

Ping

ping​ 是最常用的网络终端实用程序,用于测试网络连接。ping​ 有很多选项,但在大多数情况下,你只需用它来请求一个域名或 IP 地址:

ping google.com

ping 8.8.8.8

Vim

vim​ 是一个自 90 年代以来就在使用的免费开源终端文本编辑器。它使用高效的按键绑定来编辑纯文本文件。

有人认为它难以使用,退出 Vim 是 StackOverflow 上可能搜索量最多的问题之一。 (毕竟不好用)这里不介绍,有兴趣可以自行 Google 或者百度查找更多的资料。

History

如果你忘记了某个命令,history​ 命令就派上用场了。这个命令会显示一个已使用过的命令的编号列表:

history

Passwd

passwd​ 允许你更改用户帐户的密码。首先,它提示你输入当前密码,然后要求你输入新密码和确认密码。

这与你在其他地方看到的更改密码的方式类似,但在这种情况下,它是直接在你的终端中进行的:

passwd

Which

which​ 命令输出 shell 命令的完整路径。如果它无法识别给定的命令,它会抛出错误。

例如,我们可以使用它来检查 Python 和 Brave 浏览器的二进制文件路径:

which python

# /usr/bin/python

which brave

# /usr/bin/brave

Shred

如果你想让一个文件几乎无法恢复,shred​ 就能帮你完成这个任务。该命令会重复覆盖文件的内容,从而使文件极难被恢复。

下面是一个内容很少的文件:

# A testing file
console.log('Hello, world')

现在,让 shred​ 执行它的任务,输入以下命令:

shred file_to_shred.txt

文件的内容被覆盖。

如果你想立即删除文件,可以使用 -u​ 标志:

shred -u file_to_shred.txt

Less

less​(与 more​ 相反)是一个允许你向前和向后查看文件的程序:

less large_text_file.txt

less​ 的好处在于它在其界面中包含了 more​ 和 vim​ 命令。如果你需要比 cat​ 更交互式的工具,less​ 是一个不错的选择。

Tail

类似于 cat​,tail​ 打印文件的内容,但有一个主要的区别:它只输出最后的行。默认情况下,它打印最后的 10 行,但你可以用 -n​ 修改这个数字。

例如,要打印大型文本文件的最后几行,你会使用:​tail​ 命令。

tail long.txt

要仅查看最后四行:

tail -n 4 long.txt

head​ 与 tail​ 互补。head​ 输出文本文件的前 10 行,但你可以使用 -n​ 标志设置要显示的行数:

head long.txt

head -n 5 long.txt

Grep

grep​ 是处理文本文件中文本的最强大的工具之一。它搜索与正则表达式匹配的行并打印它们:

grep "linux" long.txt

你可以使用 -c​ (count) 标志计算模式重复的次数:

grep -c "linux" long.txt

# 2

Whoami

whoami​ 命令(缩写为 “who am i”)显示当前正在使用的用户名:

whoami

# sora

你可以通过使用 echo​ 和环境变量 $USER​ 来获得相同的结果:

echo $USER

# sora

Whatis

whatis​ 打印任何其他命令的单行描述,成为一个有用的参考:

whatis python

# python (1) - an interpreted, interactive, object-oriented programming language

whatis whatis

# whatis (1) - display one-line manual page descriptions

Wc

wc​ 代表 “word count”,顾名思义,它返回文本文件中的字数:

wc long.txt

# 37 207 1000 long.txt

如果只需要单词的数量,使用 -w​ 标志:

wc -w long.txt

# 207 long.txt

Uname

uname​(缩写为 “Unix name”)打印操作系统信息,这在你知道当前 Linux 版本时非常有用。

大多数时候,你将使用 -a​(--all​)标志,因为默认输出并不那么有用:

uname

# Linux

uname -a

# Linux sora-pc 5.15.146.1 #1 SMP GNU/Linux

Neofetch

neofetch​ 是一个显示有关你的系统的信息,如内核版本、shell 和硬件,以及你的 Linux 发行版的 ASCII 图标的工具:

在大多数机器上,默认情况下可能没有安装此命令,所以请确保首先使用包管理器进行安装。

Find

find​ 命令基于正则表达式在目录层次结构中搜索文件。要使用它,请按照以下语法:

find [flags] [path] -name [expression]

要在当前目录中搜索名为 long.txt​ 的文件,输入以下命令:

find ./ -name "long.txt" # ./long.txt

要搜索以 .py​(Python)为扩展名的文件,你可以使用以下命令:

find ./ -type f -name "*.py"
# ./get_keys.py
# ./github_automation.py
# ./binarysearch.py

Wget

wget​(World Wide Web get)是一个从互联网上搜索内容的实用程序。它具有最丰富的 flag 之一。

一般可以用它来下载文件,如下所示:从 GitHub 上下载文件:

wget https://raw.githubusercontent.com/vitejs/vite/main/LICENSE

小抄

命令用法
ls列出目录内容
alias定义或显示别名
unalias删除别名定义
pwd显示当前工作目录
cd切换目录
cp复制文件和目录
rm删除文件和目录
mv移动(重命名)文件和目录
mkdir创建目录
man显示其他命令的手册页
touch创建空文件
chmod更改文件权限
./运行可执行文件
exit退出当前 shell 会话
sudo以超级用户身份执行命令
shutdown关闭计算机
htop显示进程和资源信息
unzip解压缩 ZIP 文件
apt, yum, pacman软件包管理器
echo显示文本行
cat打印文件内容
ps报告 shell 进程状态
kill终止程序
ping测试网络是否连接
vim高效文本编辑
history显示先前命令列表
passwd更改用户密码
which返回程序的完整二进制路径
shred覆盖文件内容以隐藏其内容
less交互式查看文件
tail显示文件的最后几行
head显示文件的前几行
grep打印与模式匹配的行
whoami输出当前用户名
whatis显示单行描述
wc统计文件中的字数
uname显示操作系统信息
neofetch显示操作系统和硬件信息
find匹配模式搜索文件
wget从互联网查找文件