Ubuntu 教程(二) | 常见命令整理和学习
唠唠闲话
初学 Linux ,在这里记录 Linux 常用命令和语法等,方便查阅。部分语法合并到了另一篇博客中:Ubuntu 教程(三) | shell 编程入门
基本使用
常用命令
-
软件管理
apt
,参考这里1
2
3
4
5
6
7apt install <package> # 安装软件包
apt remove <package> # 移除软件包,保留配置文件
apt purge <package> # 移除软件包及配置文件
apt update # 刷新存储库索引
apt upgrade # 升级所有可升级的软件包
apt autoremove # 自动删除不需要的包
apt search <package> # 搜索软件包 -
移动文件夹
将path
中的文件移动到newpath
中,有下边几种方法1
2
3
4
5mv path/* newpath # 不建议
mv path/* newpath/
mv path/* newpath/ -i
mv path/* path/.[^.]* newpath/
cp path/* newpath/ -rf && rm path/* -rf方法区别:
- 第一行当文件夹
newpath
不存在,且path
下只有一个文件时,执行“文件重命名操作”,不建议用 - 第二行是一般用法,缺点是自动覆盖同名文件,且不移动隐藏文件
- 第三行
-i
设置覆盖前提醒 - 第四行
path/*
匹配所有非隐藏文件,path/.[^.]*
匹配隐藏文件,移动多个文件用空格隔开 mv
命令不能覆盖同名目录,第五行用cp
和rm
组合来实现目录覆盖
- 第一行当文件夹
-
wget
下载文件
使用wget --help
查看使用方法,常用参数:-c
断点续传-P <path>
指定下载目录-O <filename>
指定文件名
-
关于
mv
命令mv
常用于文件或文件夹的重命名- 用于文件夹重命名时,
mv path1/folder1 path2/folder2
有两种可能结果 - 如果文件夹
folder2
不存在,则将path1/folder1
移动为path2/folder2
- 如果文件夹
folder2
已存在,则将path1/folder1
移动为path2/folder2/
目录下
查看目录
-
安装软件
1
sudo apt-get install tree
-
输入
tree
查看当前目录树
-
设置显示深度
1
2# tree <path> -L <depth>
tree . -L 2 # 显示当前目录的两层目录结构
压缩解压
几种文件后缀:
.tar
是打包.tar.gz
才是压缩过的文件.tar.gz
常见于unix系统,在 ubuntu 或 macos 可以直接解压.zip
常见于 windows 系统.tar.bz2
也是一种
-
.tar
文件1
2
3
4
5# 仅打包,并非压缩
tar -xvf FileName.tar # 解包
tar -xvf FileName.tar -C newpaht/ # 解包到指定路径
tar -xvf FileName.tar.bz2 # 解包 .bz2 文件
tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹)打包 -
.gz
文件1
2
3
4# .gz
gunzip FileName.gz # 解压1
gzip -d FileName.gz # 解压2
gzip FileName # 压缩,只能压缩文件 -
.tar.gz
文件1
2
3
4# .tar.gz 和 .tgz
tar -zxvf FileName.tar.gz # 解压
tar -zcvf FileName.tar.gz DirName # 将 DirName 和其下所有文件(夹)压缩
tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径 -
.tar.bz2
文件,使用-j
参数1
2tar -xjf FileName.tar.bz2 # 解压文件
tar -cjf File FilePath # 压缩文件 -
.zip
文件1
2
3
4# 感觉.zip占用空间比.tar.gz大
unzip FileName.zip # 解压
zip FileName.zip DirName # 将DirName本身压缩
zip -r FileName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩 -
.rar
文件1
2rar x FileName.rar # 解压
rar a FileName.rar DirName # 压缩linux 没有自带 rar ,需下载安装
1
sudo apt install rar
参考 CSDN:Ubuntu 常用解压与压缩命令
其他
连接蓝牙
参考知乎:ubuntu连接AirPods
设置图标
TODO
文件权限控制
文件权限
参考 B 站视频。
Linux 是多用户的操作系统,允许多个用户在系统上登录和工作,为了确保系统和用户安全,Linux 采取了很妒忌安全措施。
-
输入
ls -al
查看文件权限
-
权限信息如下
1
2
3# ls -ahl
drwxrwxr-x 11 rex rex 4.0K 6月 8 16:20 .
-rw-rw-r-- 1 rex rex 1.2K 6月 9 17:15 package.jsondrwxrwxr-x
为权限信息,分为“用户”,“组”,“其他”三个区域d
代表目录,-
代表文件,l
代表链接- 第一处
rwx
代表用户(文件拥有者)拥有可读,可写,可执行权限 - 第二处
rwx
代表同组用户拥有可读,可写,可执行权限 - 第三处
r-x
代表其他用户拥有可读,可执行权限,没有可写权限
11
暂不了解- 第一处
rex
代表文件所有者 - 第二处
rex
代表文件所有者所在组 4.0K
代表文件大小6月
代表文件最后修改时间8
暂不了解16:20
代表文件最后修改时间
-
对于文件夹,
rwx
有其他含义:r
代表文件夹可以被ls
查看属性w
代表可以文件夹内创建或删除文件x
代表是否能进入该目录
-
修改权限使用
chmod
命令,比如chmod u+x <file>
为用户赋予文件的执行权限,u
代表用户,+
代表赋予,x
代表可执行权限chmod ug-rx <file>
将拥有者和同组用户的执行读取权限r
和执行权限x
移除- 第一个处
u
代表用户,g
代表组,o
代表其他用户,a
代表所有用户 - 第二个处
+
代表赋予,-
代表移除 - 第三处
r
代表读,w
代表写,x
代表执行
-
关于三种权限的赋予一共 8 种可能:
整数简写 二进制 字母形式 权限含义 0
000
---
无权限 1
001
r--
只读权限 2
010
-w-
只写权限 3
011
rw-
读写权限 4
100
--x
只执行权限 5
101
r-x
读执行权限 6
110
-wx
写执行权限 7
111
rwx
读写执行权限 -
因此,
chmod
可以用二进制来赋予权限,比如chmod 777 <file>
等价于chmod a+rwx <file>
chmod 755 <file>
等价于chmod go+rx <file>; chmod a+rwx <file>
-
如果需要递归地赋予权限,可以使用
chmod -R
命令,比如chmod -R 777 <file>
将会赋予<file>
的所有子文件夹和子文件的所有权限(不包括文件夹自身)
-
chmod
为 change mode 的缩写,用于修改文件权限;chown
为 change owner 的缩写,用于修改文件所有者和组,比如chown <user> <file>
将<file>
的所有者改为<user>
chown :<group> <file>
将<file>
的所有者改为<group>
注意:
chown
命令需要root
权限才能使用
setgid
“setgid”(设置组 ID)可以确保一个文件夹中新创建的文件和子文件夹自动继承其父文件夹的组。这对于多用户环境中共享文件非常有用,可以确保所有组成员都能访问和编辑文件。
使用以下命令进行设置:
1 | sudo chmod g+s /path/to/directory |
终端演示:
可以看到,新创建的文件都是 cubenlp
组的,而不是用户的默认组 zhihong
。组权限也被设置为 rws
,而不是 rwx
。
1 | ❯ ls -al |
umask
umask
用于设置新创建文件和目录的默认权限。
umask 的值是一组数字,通常是三位数,每一位对应文件和目录权限的设置。“mask” 顾名思义,就是掩码的意思,将权限减去该数字。默认地,文件的权限是 666,目录的权限是 777。
比如 umask
值为 002
则创建文件的权限是 666-002=664
,用户和同组用户有读写权限,其他用户只有读权限;创建目录的权限是 777-002=775
,用户和同组用户有读写执行权限,其他用户只有读执行权限。
通常,组共同工作的文件夹的 umask
值为 002
,这样所有用户都可以读写文件,但其他用户只能读取文件。
使用 Access Control Lists (ACLs)
另一个方法是使用 ACLs 对特定文件和目录设置更细致的权限控制。例如,为特定用户或组设置默认的读/写权限,这些设置可以超越基本的文件系统权限。
安装了 acl
包:
1 | sudo apt-get install acl |
使用 setfacl
命令来设置默认的访问控制列表:
1 | sudo setfacl -dm "g:groupname:rwx" /path/to/directory |
这里 groupname
是组名,/path/to/directory
是目录路径。这个命令设置了一个默认的 ACL,使得组内所有用户对目录有读、写和执行权限。