Linux 入门笔记 - Ubuntu
本文为笔记,分为前章和正文两部分。全文介绍简略,适合有基础速通。
前章
Ubuntu 系统安装
下面提供三种安装方式,自行选择。
- WSL (Windows Subsystem for Linux),Windows 官方支持的 Linux 子系统,可以参考 我的文章 。
- 虚拟机安装 Linux,传统的比较重量级的方式,可以参考 我的文章。
- 双系统安装 Linux,获取完备的计算机性能,但无法同时运行两个系统,可以参考 Windows 和 Ubuntu 双系统的安装和卸载 - Bilibili。
图形界面
虽然一般不会将 Linux 作为日用机,而是作为远程开发平台。但如果你打算将 Ubuntu 作为你的日用机的话,下面为你使用 Ubuntu 图形界面提供一些建议。
安装应用
应用程序安装方式主要有三种:apt
、dpkg
、snap
、appimage
。
其中 apt
可以直接从网络获取并完成安装,是 Ubuntu 上最常用的安装方式,正文会有介绍。
snap
提供沙盒化的软件安装,提供隔离的软件环境。
appimage
是一个可以直接运行的单体文件,无需安装过程,直接运行即可。
dpkg
用于安装从网络下载的 .deb
应用包,此处主要对此介绍。
deb 应用程序安装
从网络下载 .deb
文件,使用命令 dpkg -i {文件}
安装。当然也可以直接双击安装,个人体验比较屎。
dpkg 常用命令 | 功能 |
---|---|
dpkg -i {文件} |
安装 .deb 应用包 |
dpkg -l |
打印已安装应用列表 |
dpkg -r {包名} |
移除应用,保留配置 |
dpkg -P {包名} |
移除应用,移除配置 |
dpkg -L {包名} |
打印应用关联文件 |
创建桌面快捷方式
如果需要,安装的应用通常会自动创建快捷方式到指定的目录,我们只需将需要的快捷方式拷贝到桌面即可。
从 /usr/share/application
中找到应用对应的 *.desktop
拷贝到桌面并右键允许运行,如 vscode
为 code.desktop
。当然你也可以手动创建,如果一定要这么做你可以参考已有的 *.desktop
文件,这是一个文本文件。
终端热键
热键 | 功能 |
---|---|
Ctrl Shift = |
放大终端字体 |
Ctrl - |
缩小终端字体 |
Ctrl Insert |
命令行复制文本 |
Shift Insert |
命令行粘贴文本 |
Up / Down |
切换最近使用命令 |
Tab |
命令 / 目录 / 文件自动补全,如有多选择打印待选项 |
Ctrl C |
退出命令 / 终止进程 |
Ctrl L |
清屏,上滑找回清除内容 |
终端命令帮助
-
终端命令格式为
command [-option] para
,其中[]
表示可选,|
表示选一。 -
command --help
终端命令支持的内置帮助。 -
man command
(manual) Linux 手册支持的命令帮助,后文仅介绍命令的常见使用,更多内容需自行参照手册。敲击
q
(quit) 退出,敲击f
(forward) 前滚一页,b
(backward) 回滚一页,/word
在手册中搜索word
。
命令 | 英文 | 功能 |
---|---|---|
clear |
clear | 清屏 |
man |
manual | 手册 |
exit |
exit | 退出终端 |
文件目录管理
命令 | 英文 | 功能 |
---|---|---|
ls |
list | 查看工作目录下文件 |
pwd |
pwd | 显示工作目录位置 |
cd {目录} |
chang directory | 切换工作目录 |
touch {文件} |
touch | 如果文件不存在,创建 |
mkdir {目录} |
make directroy | 新建文件目录 |
rm {文件} |
remove | 移除文件 |
cp {源文件} {目标文件} |
copy | 拷贝文件 |
mv {源文件} {目标文件} |
move | 移动文件或文件重命名 |
ls 查看目录
Linux 文件系统命名
在 Linux 文件系统中,.
表示当前目录,..
表示上一级目录,/
表示根目录,~
表示当前用户的 Home 目录。
所有文件名不能超过 256 个字符,区分大小写,任何以 .
开头的文件为隐藏目录。
其他一些文件系统也有相似。
在 ls 命令中,不同颜色显示的名称表示不同的文件类型。其中蓝色表示文件夹,白色表示普通文件,除此之外还有绿色表示可执行文件等。
ls 常用命令 | 功能 |
---|---|
ls {目录} |
查看普通文件,目录默认为 . |
ls -a |
查看所有文件 |
ls -A |
查看所有文件,除 . 和 .. 外 |
ls -l |
以列表方式查看文件,更详细 |
ls -l -h |
人性化显示文件大小,需配合 -l |
ll
命令等价于 ls -l -a
,查看所有文件详细信息。
-l
命令显示的详细信息中第一字段表示文件类型和权限,此处不详细介绍。
tree 显示文件树
我们发现 ls
只能显示当前目录文件,使用 tree
可以打印文件树。
tree 不是 Linux 内置命令,需要用户安装。其中 sudo
表示提权,后面关于安装程序会有专门的章节。
1 | sudo apt install tree |
tree 常用命令 | 功能 |
---|---|
tree {目录} |
查看文件树,目录默认为 . |
tree -d |
仅查看目录,不显示文件 |
cd 切换目录
Linux 文件系统命名
在 Linux 文件系统中,有绝对路径和相对路径之分。绝对路径表示从根目录开始的路径,以 /
(或 ~
) 开始;相对路径是从当前工作目录开始的目录,如 ..
。
cd 常用命令 | 功能 |
---|---|
cd {目录} |
切换到制定目录,可以是绝对或相对目录 |
cd .. |
切换到上级目录 |
cd ~ |
切换到当前用户的 home 目录 |
cd / |
切换到根目录 |
cd - |
切换到上次目录 |
touch 创建文件
使用 touch {文件}
创建文件。
- 如果文件不存在,创建空白文件。
- 如果文件已存在,修改文件修改日期。
mkdir 创建目录
使用 mkdir {目录}
创建目录。
- 如果需要创建多级目录,使用命令
mkdir -p {目录}
。
rm 移除文件
使用 rm {文件}
移除的文件 / 目录无法还原,所以请养成使用低等级移除的习惯。
rm 常用命令 | 功能 |
---|---|
rm {文件} |
移除文件 |
rm -i {文件} |
移除每个文件时询问,请回复 y/n ,默认 n |
rm -d {目录} |
移除空目录,rmdir 等价于 rm -d 。 |
rm -r {目录} |
移除目录及其文件 |
rm -f {文件} |
强制移除文件,永不提示 |
rmdir
命令等价于 rm -d
,只能移除空目录。
cp 拷贝文件
使用 cp
拷贝文件时默认直接覆盖,所以最好每次拷贝时加上 -i
。
cp 常用命令 | 功能 |
---|---|
cp {源文件} {目标文件} |
拷贝源文件到目标文件(文件名可变) |
cp {源文件} {目标目录} |
拷贝源文件到目标目录(文件名不变) |
cp -i |
覆盖时询问,默认直接覆盖 |
cp -r |
拷贝目录及其文件 |
mv 移动文件
mv
也可以为文件重命名。
使用 mv
移动文件时默认直接覆盖,所以最好每次移动时加上 -i
。
mv 常用命令 | 功能 |
---|---|
mv {源文件} {目标文件} |
移动源文件到目标文件(如果目录相同表示重命名) |
mv {源文件} {目标目录} |
移动源文件到目标目录(文件名不变) |
mv -i |
覆盖时询问,默认直接覆盖 |
与 cp
不同的是,mv
可以直接操作目录,无需 -r
选项。
ln 建立软链接
软链接可以理解为快捷方式。
1 | ln -s {源文件位置} {软链接文件名} |
如果不加 -s
表示建立硬链接,通常不需要建立硬链接。
源文件位置注意区分相对路径和绝对路径,使用相对路径创建的软链接会使用相对路径访问,使用绝对路径建立的软链接会使用绝对路径访问。一般使用绝对路径创建软链接。
文件通配符
可以使用文件通配符批量删除、拷贝、移动文件。
也可以使用文件通配符在 ls
查找文件等等。
符号 | 功能 |
---|---|
* |
匹配任意多个字符,包含零个 |
. |
匹配一个字符 |
[abc] |
匹配字符组中任意一个字符 |
[a-z] |
匹配字符区间任意一个字符 |
[^abc] |
匹配不包含字符组所有的字符 |
编辑显示文本
命令 | 英文 | 功能 |
---|---|---|
cat {文件} |
concatenate | 打印、创建、合并、追加文件,此处仅打印文本 |
more {文件} |
more | 打印文件内容(分屏显示) |
grep {文本} {文件} |
grep | 在文件中查找文本 |
echo {文本} |
echo | 打印文本或变量值 |
more 显示文本
cat
和 more
命令都可以显示文本,区别是当文件内容较多时,more
可以逐渐打印部分内容,cat
一次性打印。
cat 显示文本
cat 常用命令 | 功能 |
---|---|
cat {文件} |
打印文件全部内容 |
cat -n {文件} |
打印文件全部内容时显示行号 |
grep 查找文本
grep
可以在文件中查找带文本的行并高亮打印。
grep 常用命令 | 功能 |
---|---|
grep {文本} {文件} |
在文件中查找带文本的行 |
grep -n {文本} {文件} |
打印时显示行号 |
grep -i {文本} {文件} |
查找时忽略大小写 |
grep -v {文本} {文件} |
查找不匹配的行 |
与大多数命令行相同,如果搜索的文本中包含空格,需要使用引号包含。
搜索文本是正则表达式
搜索中的文本实际是正则表达式,自行学习。
需要注意的是,其中一些需要转义,如 .
在正则中表示匹配任意字符,而如果需要匹配 .
需要在匹配写 \.
。
grep
提供了正则开关,包括:-F
(仅匹配文本)、-G
(基础正则,默认)、-E
(拓展正则) 。如果您是小白,建议经常加上 -F
,当然会使用正则更好。
wc 统计字数
另外提一嘴,可以使用 wc 进行字数统计,详见 man wc
。
echo 打印变量
echo 常用命令 | 功能 |
---|---|
echo {文本} 如 echo "Hello World" |
打印文本 |
echo ${变量} 如 echo $HOME |
打印变量值 |
echo {文本}
很少单独使用,下面我们将介绍文件重定向与管道。
文件重定向与管道
< {文件}
:重定向命令读自文件。
> {文件}
:重定向命令写到文件,使用覆盖而非追加。
>> {文件}
:重定向命令写到文件,使用追加而非覆盖。
更多重定向操作
<<<
:将文本当做文件读入,如:cat <<< "Hello World!"
。
0<
:重定向标准输入(文件描述符 0
),与 <
相同。
1>
:重定向标准输出(文件描述符 1
),与 >
相同。
2>
:重定向报错输出(文件描述符 2
)。
&>
:同时重定向普通和报错输出,可用 1> ... 2>&1
替代。
同时你可以通过数字和 <
/ >
/ >>
进行自定义文件描述符,也可以使用形如 2>&1
进行绑定,如:
1 | ./main < test.in > result.out 2>> report.log 3>&1 |
如 cat test1.txt >> test2.txt
将文件 test1.txt
的内容追加到 test2.txt
中。另外如果想要隐藏输出可以将输出重定向到 /dev/null
(空设备,黑洞),这是一个隐藏输出的专用文件。
管道符:|
,可以将前一个命令的输出当作第二个命令的输入,常用的第二个命令有 more
、grep
。
如 ls -l -h | more
分屏显示目录信息,相应的 grep
可以用于高级搜索。
远程系统控制
关机 / 重启
shutdown 常用命令 | 功能 |
---|---|
shutdown {时刻} |
计划在该时刻关机,可以使用相对或绝对时间 |
shutdown |
默认时间为 +1 ,在一分钟后关机 |
shutdown now |
立即关机 |
shutdown -r |
重启计算机 |
shutdown -c |
取消关机 / 重启计划 |
注意尽量不要使用关机命令,因为关闭远程系统后你就打不开系统了。
查看配置网卡
需要使用 ifconfig
和 ping
命令,其中 ifconfig
用于查看本地网卡配置,ping
用于测试网络连接。
ifconfig
不是 Linux 内置命令,需要用户安装。
1 | sudo apt install net-tools |
查看网卡信息:可以结合 grep
筛选。
1 | ifconfig |
测试网络连接:可以查看 IP 地址、网络延迟等信息,使用 ctrl c
退出。
1 | ping localhost # 测试本地网卡是否正常 |
远程 SSH 控制
SSH
可以通过命令行远程控制 Linux 主机,如果电脑为 Windows 系统需要其他设置。
安装 Openssh-Server
在服务机 (被控制) 上要求安装 openssh-server
,而在客户机 (控制) 上安装 openssh-client
。
在服务机上进行如下操作:
1 | apt list --installed | grep ssh # 查找是否安装了 openssh-server, 如果以安装结束此步骤 |
连接 SSH 服务
在客户机上进行如下操作:
1 | apt list --installed | grep ssh # 查找是否安装了 openssh-client, 我的计算机默认安装, 因此跳过安装 |
当然,你也可以在本机上测试 {用户名}@localhost
。
scp 远程文件拷贝
scp
命令与 cp
相似,但用于通过 SSH
协议在远程主机间传输文件。下面仅提供一些演示:
1 | scp -P 22 {用户名}@{远程地址}:{目标路径} {本地路径} # 拷贝到本地路径. -P 22 表示 ssh 服务端口, 可缺省; 远程路径需使用实例表示 |
SSH 端口映射
使用端口映射可以在连接到远程的同时,将端口映射到本地或其他网络路径。
1 | ssh -L {远程端口}:{映射地址}:{映射端口} {正常登录命令} |
SSH 免密登陆
配置本地 SSH 密钥
Win+R 键入 cmd
或 powershell
回车打开命令行
1 | $ ssh-keygen -t rsa # 生成本地的RSA加密的SSH密钥,一路回车 |
配置虚拟机 SSH 密钥
1 | $ ssh-keygen -t rsa # 生成虚拟机的RSA加密的SSH密钥,一路回车 |
此时重新使用 SSH 登录不再提示输入密码。
用户权限设置
sudo 超级用户权限
用户 / 权限 / 组的基本概念
用户是进行工作的单位,用户对不同的文件或目录有不同的权限,其中包括:读 read
r
、写 write
w
、执行 excute
x
。
为方便用户的管理,产生了组的概念。用户组可以包含多个用户,具有相同的权限。一个用户可以属于多个组。
超级用户即 root
用户,具有系统的最高权限。为避免误操作,日常用户一般不运行在 root
用户上。
sudo
命令本义为切换用户执行,默认为使用超级用户权限执行语句,临时获取超级用户需要输入密码,初始用户与 root 用户密码相同,密码有效时间为 5 分钟。
我们之前使用的 sudo apt install tree
等命令就是临时获取超级用户权限,因为包管理需要超级用户权限,而需要代为执行命令为 apt install tree
。
在后续的操作中,创建与管理用户和组等都需要超级用户权限。
su 代理其他用户
su
和 sudo
类似可以获取其他用户的权限。不同的是 sudo
用于临时获取用户权限执行一条命令,而 su
命令可以进入其他用户的终端,使用 exit
退出用户代理。
1 | su {用户名} # 代理其他用户, 用户名的缺省值为 root |
which 查找程序位置
1 | which {命令} # 查找命令路径 |
1 | which useradd # /usr/sbin/useradd |
程序常用目录 | 程序文件类型 |
---|---|
/bin/ |
一般内置程序 |
/sbin/ |
用于系统管理的内置程序 |
/usr/bin/ |
一般用户安装程序 |
/usr/sbin/ |
用于系统管理的用户安装程序 |
组管理
后续与用户管理相关的命令请使用 sudo
提权。
groupadd / groupdel 增删组
增删组常用命令 | 功能 |
---|---|
groupadd {组名} |
新建组 |
groupdel {组名} |
移除组 |
cat 查看组信息
查看组常用命令 | 功能 |
---|---|
cat /etc/group |
查看所有组信息 |
/etc/group
文件:使用 :
分割字段,组名:x:GID:组成员
。可以使用前面提到的 | grep
提高查看效率。
用户管理
useradd / passwd / userdel 增删用户
增删用户常用命令 | 功能 |
---|---|
useradd -m -g {组名} {用户名} |
创建用户。-m 表示新建用户家目录;-g {} 表示规定用户主组,默认新建同名组。 |
passwd {用户名} |
修改用户密码。用户名默认为当前用户。未设置密码的用户是未激活的,以此设置。 |
passwd -l {用户名} |
锁定用户密码。被锁定的用户永远无法通过密码认证。 |
userdel -r {用户名} |
移除用户。-r 表示同时删除用户家目录。提供的一些报错信息可以忽略。 |
从 Ubuntu 不知道哪个版本开始,对修改密码有了严格的要求,比如重复用户名、使用连续序列、密码过短都是无法通过修改的。
cat / id / who 查看用户信息
查看用户常用命令 | 功能 |
---|---|
cat /etc/passwd |
查看所有用户信息。 |
id {用户名} |
查看用户 UID 和所属组 GID 。这些信息都包含于 /etc/passwd 。 |
who |
查看当前登陆机器的所有用户。 |
whoami |
我是谁? |
/etc/passwd
文件:使用 :
分割字段,用户名:密码(加密):UID:GID:昵称:家目录:终端
。
usermod 更改用户权限
需要注意的是,用户所属的组分为主组和附加组,主组即 etc/passwd
中的 GID
,而附加组可以通过 /etc/group
文件和 id
命令查看,表示用户的附加权限。例如,新建用户不属于 sudo
组,因此不可以使用 sudo
提权。
usermod 常用命令 | 功能 |
---|---|
usermod -g {组名} {用户名} |
设置用户主组。用户主组通常在新建用户时确定,很少修改。 |
usermod -G {组名} {用户名} |
设置用户附加组。用户需要具有附加组才能访问一些文件和程序。 |
usermod -aG {组名} {用户名} |
设置用户附加组。追加而非重写的,必须与 -G 连用。 |
usermod -s {终端} {用户名} |
修改用户登陆终端。如 /bin/bash ,默认终端为 /bin/sh 比较丑。 |
文件权限与所有者
文件权限与所有者概念
我们使用 ls -l
命令显示的第一个字段就表示文件权限。例如:
1 | 总计 20 |
d | rwx | rwx | rwx |
---|---|---|---|
文件类型,如 d 表示目录 | 文件所有用户权限 | 文件所有组权限 | 其他用户权限 |
可以将文件权限字段划分为四个部分 d|rwx|rwx|rwx
,通常权限是递减的。
命令输出的第二个字段表示硬链接数,及访问到该文件的方式,其中目录 a/
可以通过 a
、.
、..
(如果 a/
有多个子目录就会有多个 ..
) 访问,所以硬链接数为 3 。
命令还会显示两个用户名字段 jamhustao
,分别表示文件所有者和文件所有组。
chown 修改文件所有者
1 | chown -R {用户名} {文件/目录} # 修改文件 / 目录所有者, -R 表示同时修改下属文件所有者 |
chgrp 修改文件所有组
1 | chgrp -R {用户名} {文件/目录} # 修改文件 / 目录所有组, -R 表示同时修改下属文件所有组 |
chmod 修改多级权限
使用 chmod +/-rwx {文件/目录}
修改文件权限。例如:
1 | # 以下实例每条语句独立, 而非顺序执行 |
关闭可读权限的文件无法显示内容,关闭可写权限的文件无法修改其内容,打开执行权限的文件可运行 (如果支持) 。
关闭可读权限的目录无法查看文件 (ls
) ,关闭可写权限的文件无法管理目录,关闭执行权限的文件无法查看和切换至。
选项 | 功能 |
---|---|
+r |
为所有用户添加可读权限。 |
+w |
为所有者、所有组添加可写权限。 |
+x |
为所有用户添加可执行权限。 |
-r |
移除所有用户的可读权限。 |
-w |
移除所有用户的可写权限。 |
-x |
移除所有用户的可执行权限。 |
之所以称之为修改多级权限,是因为我们发现使用该命令会同时修改多级用户的权限,如果仅仅粗糙地修改文件权限,这样通常够用,后面我们也可以针对每级用户管理权限。
chmod 修改不同级权限
前面提到文件权限被表达为 rwxrwxrwx
的形式,我们可以将权限表示为八进制的形式,每一位当作二进制,每三位即一级用户进行绑定。例如:八进制 664
的二进制表示为 110110100
再对应到权限表达式为 rw-rw-r--
。修改不同权限就是通过这种方式表达。
1 | chmod {八进制权限表示} {文件/目录} # 最常用的权限为 664, 因为多数文件不可执行 |
chmod
也可以使用 -R
同时修改目录下属文件权限。
系统状态查询
date 查看系统时间
1 | date # 查看系统时间 |
df / du 查看磁盘占用
df
是 disk free
的意思,表示查看磁盘余量。
1 | df -h # 查看磁盘占用, -h 表示以人性化方式显示内存 |
du
是 disk usage
的意思,表示查看目录大小。
1 | du -h # 查看当前目录磁盘占用, -h 表示以人性化方式显示内存 |
使用 ls
也可以查看各个文件的占用,但无法查看目录占用,它不会统计目录内文件大小。
进程管理
ulimit 查看进程资源限制
1 | ulimit -a // 查看全部进程资源限制 |
ps 查看进程状态快照
1 | ps aux // 或 ps ajx |
-
(默认)
:显示当前终端进程及其子进程的粗略信息。 -
a
:显示终端上的所有进程,包括其他用户进程。 -
x
:显示无终端的所有进程,不包括其他用户进程。 -
u
:显示进程详细信息。多为用户关注信息,如:CPU
占用、内存占用、STAT
状态。 -
j
:显示进程详细信息。多为控制相关信息,如:PPID
、GID
、STAT
状态。
STAT
状态:
1 | 状态: |
top 监视实时进程状态
1 | top |
按键操作:
-
h
:相关帮助。 -
P
:按CPU
占用排序。 -
M
:按内存占用排序。 -
T
:按运行时长排序。 -
U
:按用户名筛选。 -
k
:杀死进程,输入无效数据退出。 -
q
:退出top
。
kill 杀死进程
kill
命令实际是向进程发送信号,通常用于杀死进程。
1 | kill {pid} // 杀死进程(默认通过 15 号信号) |
打包压缩安装
不同的操作系统有其不同的压缩文件格式,例如 Windows
使用 rar
,macOS
使用 zip
,Linux
使用 tar.gz
。
tar 打包文件
tar
只对文件进行打包,不进行压缩。
tar 常用命令 | 功能 |
---|---|
tar -cvf {目标.tar文件} {源文件/目录} |
打包文件,-c 表示打包,-v 表示显示进度,-f 表示文件名。 |
tar -tf {.tar文件} |
查看包内容。 |
tar -xvf {源.tar文件} -C {目标目录} |
解包文件,-x 表示解包,-C 表示指定解包目录默认 . 。 |
gzip 压缩文件
gz
用于压缩 tar
打包的文件,打包压缩后缀为 .tar.gz
。
在 tar
打包与解包时可以同时使用 -z
选项进行压缩与解压缩。
gzip 常用命令 | 功能 |
---|---|
tar -czvf {目标.tar.gz文件} {源文件/目录} |
打包文件同时压缩。 |
tar -xzvf {源.tar.gz文件} |
解包文件同时解压。如果已压缩,解包时自动解压。 |
gzip -k {源.tar文件} |
压缩已打包文件,-k 表示压缩完不删除源文件。 |
gzip -dk {源.tar.gz文件} |
解压已打包文件,-d 表示解压。 |
gzip -1~9 |
可以使用 1-9 表示压缩程度,与压缩时间呈反相关。 |
bzip2 压缩文件
用法与 gzip
相似,打包压缩后缀为 .tar.bz2
。
bzip2 常用命令 | 功能 |
---|---|
tar -cjvf {目标.tar.bz2文件} {源文件/目录} |
打包文件同时压缩。 |
tar -xjvf {源.tar.bz2文件} |
解包文件同时解压。如果已压缩,解包时自动解压。 |
bzip2 -k {源.tar文件} |
压缩已打包文件,-k 表示压缩完不删除源文件。 |
bzip2 -dk {源.tar.bz2文件} |
解压已打包文件,-d 表示解压。 |
bzip2 -1~9 |
可以使用 1-9 表示压缩程度,与压缩时间呈反相关。 |
zip 压缩文件
zip
也是一种非常常用的压缩文件格式,这么多格式确实也挺头大的。
zip 常用命令 | 功能 |
---|---|
zip -r {目标.zip文件} {源文件/目录} |
压缩文件,-r 表示递归添加文件。 |
unzip {源.zip文件} -d {目标目录} |
解压文件,-d 表示目标目录,可缺省默认当前目录。 |
apt 软件管理
apt 常用命令 | 功能 |
---|---|
sudo apt install {包名} |
安装程序。 |
sudo apt remove {软件名} |
卸载程序。 |
sudo apt list |
查看已安装程序,可以使用 --installed 、--upgradable 筛选。 |
sudo apt upgrade |
批量更新应用程序。 |
sudo apt autoremove |
自动卸载无关程序。 |
实用工具推荐
find 文件查找
内置命令,用于在繁杂的文件中找到匹配的文件。功能类似 Everything
,但查找速度偏慢。
find 常用命令 | 功能 |
---|---|
find {目录} -name {逻辑通配符} |
使用逻辑通配符匹配文件名,目录可缺省默认为 . 。 |
find -regex {正则表达式} |
使用正则表达式匹配文件路径。 |
find -type {文件类型} |
按文件类型筛选,有如 f :文件 / d :目录。 |
find -size {文件大小} |
按文件大小筛选,可有单位,可用 +/- 表示大于或小于。 |
find -ctime {时差} |
查找若干天前创建的文件。 |
find -cmin {时差} |
查找若干分钟前创建的文件。 |
find -atime {时差} |
查找若干天前访问的文件。 |
find -amin {时差} |
查找若干分钟前访问的文件。 |
find -mtime {时差} |
查找若干天前修改的文件,通常使用 mtime/mmin 筛选。 |
find -mmin {时差} |
查找若干分钟前修改的文件,通常使用 mtime/mmin 筛选。 |
find -user {用户名} |
按文件所有者筛选。 |
find -group {组名} |
按文件所有组筛选。 |
find -perm {八进制权限表示} |
按文件权限筛选,可用 +/- 表示大于或小于。 |
注意时差部分可以填写一个数字表示一个时刻,如 find -mtime 10
表示第 天前;使用 +/-
则可以表示大于或小于若干时间,如 find -mtime -10
表示第 天前,find -mtime +10
表示第 天前,其余关于时间的选项同理。
类似于 -size
选项也可以使用 +/-
符号表示大于和小于。size
文件大小单位中使用 G
:GB
/ M
:MB
/ k
:KB
/ c
:Bytes
注意区分大小写,默认单位为 b
(块) 512 Bytes
。
diff 比对文本
内置命令,使用过 git
都知道文本比对是什么样的。
1 | diff a.txt b.txt # 比对 a.txt 和 b.txt 内容差异, 用过 git 的都知道 |
time 运行计时
内置命令,即使程序运行时间,包含 real
、user
、sys
时间。
1 | time a.out # 测试 a.out 运行时间, 如果程序异常退出会返回退出值 |
factor 分解质因数
内置命令,用于分解质因数。其内部实现是 Pollard Rho
算法。
1 | factor 1234567 |