Keywords: Ubuntu, Linux
1. 学习教程
《Lecture 1: Course Overview + The Shell (2020)》
2. 发行版信息
lsb_release -a
uname -r
3. 常见术语
根目录:/
4. 常见配置目录
4.1 /etc
: 存储系统级配置的目录
讯飞星火:
etc
是“etcetera”的缩写,意为“等等”;
4.1.1 /etc/apt/sources.list
: 软件包源配置
4.2 /usr/share/
: 共享数据文件(by Claude3.7-Sonnet-Poe)
"/usr/share/"目录主要用于存储与系统架构无关的共享数据文件。这个目录包含了许多应用程序可以共同使用的数据,例如:
- 图标、主题和壁纸
- 应用程序的文档和手册页
- 字体文件
- 本地化文件(翻译和语言支持)
- 声音文件
- 模板文件
- 应用程序的共享配置数据
这个目录中的文件通常可以被多个程序共享使用,而且它们通常是只读的,不会在程序运行时被修改。"/usr/share/"目录下的内容对于系统的正常运行非常重要,不过,作为普通用户,一般不需要直接修改这里的文件。
5. 常用快捷键
快捷键 | 功能 |
---|---|
Ctrl + Alt + T | 打开终端 |
Alt + Prtsc + [REISUB] | 使用系统管理器重启电脑 ([REISUB]需要等待1-2秒) |
6. 管理员模式
su root
7. 环境变量
Ubuntu中的环境变量是区分大小写的;
8. 基础指令
查看指令的文档:man cmd
查看指令对应的程序路径:which cmd
查看当前工作目录(当前目录所在的绝对路径):pwd
登出(关闭终端):logout
9. Bash中的通配符(*?[]
)
通配符 | 含义 |
---|---|
* | 0或多个字符 |
? | 单个字符 |
[] | 指定字符集,如:[0-9] 匹配数字 |
10. 终端使用
修改终端启动设置:
gedit ~/.bashrc
9.1 常见操作
(1)“在终端中执行bash
命令”
Note
在Linux系统中,在已登录的会话中执行bash
命令会启动一个新的 bash shell,这个新启动的shell是非登录shell,它会读取并执行~/.bashrc
文件来进行初始化设置。
我们咨询了ChatGPT:
ChatGPT4:
在开发环境中,在终端执行bash
命令可能有几个原因:
- 启动新的 Bash 实例:执行
bash
命令会启动一个新的 Bash shell 实例。这可能是为了确保使用的是标准的 Bash 环境,特别是在不确定当前终端使用的是哪个 shell(比如 zsh, fish, 或其他)的情况下。- 初始化环境变量和设置:新的 Bash 实例会读取并执行
~/.bashrc
文件(针对非登录shell)。如果在开发工作中有特定的环境变量或别名设置在~/.bashrc
中,这会确保这些设置被正确加载和应用。- 清晰的会话开始:在一些情况下,开发人员可能想要一个干净的、未受之前命令影响的shell环境。执行
bash
命令可以提供一个新的、干净的工作环境。总的来说,这样做是为了确保在一个预期的、配置正确的 Bash 环境中工作,特别是在多shell环境或复杂的开发设置中。
9.2 使用代理
在雷锋V中开启系统代理,然后重启终端;
9.3 重启终端
(gnome-terminal &) && exit
Ubuntu 22.04 LTS 默认使用的是GNOME桌面环境。
11. 查看硬件信息
5.1 查看显卡信息
lspci | grep -i vga
12. 文件管理
12.1 常见文件格式
12.1.1 tar.gz
:压缩文件格式
以tar.gz
为后缀的文件是一种压缩文件,在Linux和macOS下常见,Linux可以直接解压使用这种压缩文件。
12.2 查看文件:cat
12.3 文件解压缩
10.3.1 解压文件
解压.zip
文件
unzip file.zip
这将会将压缩文件解压到当前目录下;
解压文件到特定目录下
unzip file_zip -d _home_user_target_directory
10.3.2 压缩文件
Bash命令压缩打包文件夹
使用tar
命令打包文件夹
tar zcvf FileName.tar.gz DirName
参数说明:
z
:使用gzip指令处理备份文件;
12.4 创建软链接(ln
)
12.5 更改文件夹所有者:chown
13. 软件安装
snap
可以提供更新的、隔离的或跨平台的软件包;一般来说,会比apt提供的软件包版本更高;
Apt: Advanced Packaging Tool,用来管理Linux上的软件包;是高于dpkg的high-level接口工具。
13.1 从仓库中安装软件
Apt安装
sudo apt-get package-name
13.2 Snap命令无法安装deb文件
13.3 .deb
文件安装:apt > dpkg
sudo apt install <path>/<package_name>.deb
13.4 .run
文件安装
修改安装文件权限
chmod +x Install.run
+x
:给文件添加可执行权限。
运行安装文件
sudo ./Install.run
11.5 Bash安装
./Software.sh
Note
如果提示:“bash: ./xxx.sh: 权限不够”,需要为安装脚本添加运行权限,chmod u+x Anaconda3-2022.10-Linux-x86_64.sh
11.6 Tar.gz安装
11.6.1 解压文件
右键单击文件,选择提取到此处;
13. 软件卸载:apt > dpkg
关于Ubuntu中用于卸载软件包相关命令的讲解,请参考博文《Ubuntu apt-get彻底卸载软件包》
13.1 查询应用包名:apt search keywords
13.2 卸载软件及其配置文件:apt purge
sudo apt purge package_name
14. 运行文件
7.1 文件类型介绍
.sh
: Shell文件,一般Bash脚本文件。
7.2 文件执行
# 执行.sh脚本
./script.sh
# 需要加上./才能执行
如果出现“权限不够”的提示:
bash: …/…/script.sh: 权限不够
这可能是因为此sh脚本的文件权限不够,可以使用chmod 777 ./script.sh
给改变文件的权限:
15. 流的使用
14.1 “管道符|
,跟重定向符>
的区别是什么?”
管道和重定向符号是不同的概念,有着不同的用途。管道用于将命令的输出传递给另一个命令,而重定向符号>
用于将输出写入另一个文件中。
16. 权限管理
11.1 赋予.sh文件“sudo NOPASSWD”权限
请参考资料《python - How do I sudo a command in a script without being asked for a password? - Ask Ubuntu》
这个设置最主要的作用是:执行sudo */script.sh
不需要输入密码。
要实现这个设置效果,需要使用visudo
修改sudoers
文件,sudoers
文件对用户使用sudo
的权限进行管理,
这里我们准备修改sudoers
文件,使script.sh程序在sudo
执行时不需要输入用户密码;
在修改时,我们发现sudoers
文件提示:
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
这里是说Ubuntu希望关于sudoers的设置请考虑放在本地设置/etc/sudoers.d/
(目录)中,
相关的具体操作请参考《Ubuntu Manpage: sudoers — default sudo security policy plugin》
首先我们需要创建本地内容文件(local content)
sudo visudo -f /etc/sudoers.d/$usr_local
# usr_local: 自定义的本地内容文件,这里我用“usr_local”的格式命名
# 注意:这里一定要使用绝对路径“/etc/sudoers.d/...”
这里我们添加下面的设置:
$usr_name$ ALL=(ALL) NOPASSWD: /home/usr_name/.../script.sh
# 这里usr_name为当前用户的用户名
# command部分需要填写指令的绝对路径
这里设置的格式请参考《Ubuntu Manpage: sudoers — default sudo security policy plugin》,搜索关键字NOPASSWD
;
如果是其它命令的话,设置语句的格式相同,不过注意:这里要使用命令程序的绝对路径,可以使用which
指令来获得指令程序的绝对路径;
17. 输入法
11.1 英文输入法:ibus-typing-booster
添加输入法时,搜索boost
或其他
;
18. 文本编辑
在Ubuntu系统中,编辑文件可以使用Gedit和Vim这两个程序进行编辑,使用时这样来选择:
- 图形界面:
gedit
- 终端界面:
vim
(如果无法使用图形界面就只能用vim
了)
12.1 vim
12.1.1 vim
的工作模式
命令模式:刚刚启动vim进入的模式
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符,比如我们此时按下i,则会进入输入模式;
于是,常用的几个命令有:
i
:切换到输入模式,以输入字符。x
:删除当前光标所在处的字符。:
:切换到底线命令模式,以在底线行输入命令。
可视模式:“选中模式”
可以底色加灰的方式高亮选中的字符区域;
模式切换
模式切换 | 按键 |
---|---|
命令模式 ⇒ 插入模式 | i 键 |
插入模式 ⇒ 命令模式 | Esc 键 |
7.1.2 vim
中的常用命令
退出vim
::q
退出vim
(不保存)::q!
撤销:u
19. 文件管理
mkdir
:创建文件夹
迭代删除文件夹
rm -r folder
重命名文件
mv oldname newname
查看软链接指向的具体路径
使用 long listing format 查看软链接:
ls -l /<path>/soft_link
20. 进程管理
19.1 查找进程:pgrep
pgrep
是一个在Linux系统中广泛使用的工具,它允许用户根据进程名或其他属性来查找正在运行的进程ID(PID)。例如,如果想要查找名为“firefox”的进程,可以在Ubuntu终端中输入以下命令:
pgrep firefox
这将返回与“firefox”进程名称匹配的所有进程的PID。
21.TTY使用
在开机引导界面进入控制台:Ctrl + Alt + F1~F6(可以分别进入6个tty界面)
22.内存查看(gnome-system-monitor
)
图形化资源查看器:gnome-system-monitor
终端查看进程信息:top
11.2 Top查看内存信息
按内存排序进程信息:
top -o %MEM
参数说明:
%MEM
:进程占用的物理内存与总内存的百分比
23. 硬盘管理
12.1 在Ubuntu系统中查看有几块物理硬盘——lsblk
step 1:打开终端,输入lsblk;
step 2:看到输出的结果如下:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 223.6G 0 disk
├─sdb5 8:21 0 30.5G 0 part [SWAP]
├─sdb3 8:19 0 135.9G 0 part
├─sdb1 8:17 0 1K 0 part
└─sdb6 8:22 0 57.2G 0 part /
sdc 8:32 1 119.3G 0 disk
└─sdc4 8:36 1 119.3G 0 part /media/yucheng/Ubuntu 16.0
sda 8:0 0 1.8T 0 disk
├─sda5 8:5 0 1.8T 0 part
└─sda1 8:1 0 1K 0 part
这里“sd+a”:“sd”是硬盘标识,“a”是硬盘序号;
可以看到上面的提示信息有3块硬盘:分别是sda、sdb和sdc。
12.2 查看磁盘剩余空间
df -hl
查看根目录空间占用
在文件浏览器中打开根目录,在右键菜单中查看文件夹属性;
12.3 磁盘空间清理
12.3.1 根目录磁盘清理
查看根目录可用空间
df -h /
常用清理命令
可以使用下面的命令进行清理:
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove
查看/
目录中占用空间最大的文件夹
关于如何查看最大占用的一级目录,可以参考博文《Ubuntu / 根目录 100%(清理 / 根目录)》
12.3.2 Home分区清理
- 删除不用的conda环境;
12.4 如何查看硬盘的读写速度
12.4.1 Ubuntu测试硬盘的读取速度
示例代码如下,
sudo hdparm -Tt /dev/sda
其中,
sudo
:此命令需要管理员权限;
/dev/sda:表示硬盘的编号。
24. 环境变量
15.1 配置PATH环境变量
在配置编程环境时,我们有时候需要设置PATH
环境变量,
请参考博文《Ubuntu 更改环境变量 PATH》;
修改Ubuntu系统中的环境变量一共有4种方式
15.1.1 直接修改PATH值:
生效方法:立即生效。
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置。
作用范围:仅对当前用户。
echo $PATH //查看当前PATH的配置路径
export PATH=$PATH:/xxx/xxx //将需配置路径加入$PATH 等号两边一定不能有空格
//配置完后可以通过第一句命令查看配置结果
15.1.2 修改.bashrc文件:
gedit .bashrc //编辑.bashrc文件
//在最后一行添上:
export PATH=$PATH:/xxx/xxx //等号两边没空格
生效方法:(有以下两种)
1. 重新启动终端
2. 输入“source .bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户
25. update-alternatives
:切换基础运行库版本
update-alternatives
可以通过设置alternatives
来指定可执行指令(例如:gcc
)对应的程序路径;
设置指令软链接
格式:--install link name path priority [--slave link name path]
参数说明:
priority
:在auto
模式中用于选定最佳的链接选项。
slave
:从属选项,在主选项生效时,会同时激活从属选项,例如:
update-alternatives --install /usr/bin/java java /usr/local/jre1.6.0_20/bin/javac 100
update-alternatives --install /usr/bin/java java /usr/local/jre1.6.0_20/bin/javac 100 --slave /usr/bin/javac javac /usr/local/jre1.6.0_20/bin/javac
移除name指向path的可选项
例如:sudo update-alternatives --remove java $JAVA_HOME/bin/java
移除name的所有选项:--remove-all name
关于如何移除name对应的所有选项,请参考官方文档《Ubuntu Manpage: update-alternatives - maintain symbolic links determining default commands》
26. 系统界面设置
14.1 使用GNOME插件设置系统标题栏(顶部通知栏)
之前我是用的GNOME-Chrome插件设置的,现在我们还是使用这个插件进行设置,
打开Chrome浏览器,点击右上角插件按钮,选择插件GNOME Shell integration
,
然后进入插件管理器中进行设置;
27. 网络连接
27.1 判断是否可以连接公网
curl https://www.baidu.com
如果可以正常连接,则会出现如下信息:
27.2 判断是否可以连接外网
curl https://api.ipify.org
27.3 打开VPN后需要重启终端才会生效
28. 远程连接
27.1 URL格式
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
也可认为由4部分组成:协议、主机、端口、路径
URL的一般语法格式为(带方括号[]
的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
12.2 SSH密钥连接
使用SSH协议进行密钥连接的基本步骤如图所示
12.3 退出连接
logout
29. 故障处理
29.1 显示器黑屏,键盘按键和移动鼠标都无法唤醒
因为 ToDesk Linux客户端存在问题,会“不断产生左上角的托盘图标”,我们猜测长期使用会导致内存泄露,于是导致系统崩溃;