Linux学习之旅2——终端和文件操作(下)
一.用户与权限
-
sudo(Substitute User do)超级用户
1
2
3
4sudo command # 运行root才可以运行的命令
sudo su # 成为root用户(exit或Ctrl+D退出)
sudo su # 成为root用户并定位到家目录
sudo -i -
adduser 命令:添加新用户
1
adduser user1 # 添加一个名为user1的用户
-
passwd 命令:修改密码
1
passwd user1 # 修改用户user1的密码
-
deluser 命令:删除用户
1
2deluser user1 # 删除用户user1
deluser --remove-home user1 # 删除用户同时删除用户的家目录
二.群组管理和文件权限管理
群组管理
-
addgroup 命令:添加群组
1
addgroup friends # 添加一个名为"friends"的群组
-
usermod 命令:修改用户账户
1
2
3
4usermod -g friends user1 # 将用户user1置入名为"friends"的群组
usermod -G friends,happy user1 # 将用户user1置入多个群组(先移出原来的群组再置入)
usermod -aG happy user1 # 将用户user1追加至新群组(不移出原来的群组)
groups user1 # 查询用户user1属于哪个群组 -
delgroup 命令:删除群组
1
delgroup friends # 删除名为"friends"的群组
文件管理
-
chown (change owner)命令:改变文件所有者
1
2
3chown user1 file.txt # 将文件所有者改为user1
chown user1:friends file.txt # 将文件所有者改为user1,群组改为friends
chown -R ... # 使用-R递归更改 -
chgrp (change group)命令:改变文件群组
1
chgrp friends file.txt # 将文件所属群组改为"friends"
-
chmod 命令:修改访问权限
1
2
3
4
5
6
7
8
9
10
11
12
13首先要知道:
使用ls -l时,显示的第一列其实就是文件访问权限符
d(directory):目录
l(link):链接
- :普通文件
r(read):可读
w(write):可写
x(execute):可运行
Linux中,访问权限按照用户来划分,即:
d rwx rwx rwx- 下面一张图说明访问权限的标志符划分:
-
若rwx处对应的位置若为 - ,则表示没有相应权限,下面回到chmod命令的介绍
-
chmod不需要root来执行,但需要你是文件的所有者
-
chmod用法一:数字来分配权限
然后使用三个数字组合在一起,代表三组用户rwx权限,例如(777):所有者,群组用户,其他用户均有读写和运行的权限。
1
chmod 777 file # 改变file的权限为777
-
chmod用法二:字母
1
2
3
4
5
6
7
8u(user),表示所有者
g(group),表示群组用户
o(other),表示其他用户
a(all),表示所有用户
+:添加权限
-:去除权限
=:分配权限
用法举例:
文件file.txt的所有者添加读和运行的权限
1
chmod u+rx file.txt
文件file.txt的群组用户移除写的权限
1
chmod g-w file.txt
文件file.txt的所有用户添加运行权限
1
chmod +x file.txt
-R 递归修改访问权限
1
chmod -R ...
三.文本编辑器——Nano
-
Ubuntu启动Nano
1
nano
进入nano后,底部会有快捷键提示,^是Ctrl键
1
2# 用nano打开file.txt
nano file.txtnano参数
1
2
3-m 激活鼠标,可通过鼠标控制光标位置
-i 激活自动缩进功能
-A 激活智能Home键,光标自动回到缩进后 -
设置Nano默认参数
1
2
3
4
5
6nano .nanorc
set mouse
set autoindent
set smarthome
# 上面设置等同于开启nano后默认参数为-miA -
修改全局Nano配置文件
1
sudo nano /etc/nanorc
去除文件前的注释(#)即可
-
通过.bashrc配置终端
1
2
3
4
5#.bashrc文件位于家目录下
nano ~/.bashrc
#全局的.bashrc文件
sudo nano /etc/bash.bashrc设置别名
1
alias name='command'
还有很多可以修改的东西,不一一举例
家目录下的.bashrc文件优先级要比系统/etc/bash.bashrc文件高
-
profile配置文件(非图形界面终端的配置文件)
1
2
3
4
5#家目录下
nano .profile
#全局下
sudo nano /etc/profile -
修改.bashrc和profile文件,重启生效,或者使用source命令:
1
source .bashrc
四.软件的安装
-
Debian一族软件包后缀为.deb,RedHat一族为.rpm
-
package:软件二进制安装包
-
dependency:软件包需要其他软件包作为运行基础,为依赖关系
-
repository:软件的仓库
-
常用命令
常用命令 描述 sudo nano /etc/apt/sources.list 管理软件仓库 sudo apt update 更新可安装的软件列表 sudo apt search … 搜索软件 sudo apt install … 安装软件 sudo apt autoremove … 删除软件 sudo apt upgrade 升级所有已安装的软件 apt-cache show package_name 查询软件包信息 sudo dpkg -i *.deb dpkg安装本地.deb软件包 sudo dpkg -r … dpkg卸载软件
五.RTFM(Read The Fucking Manual)阅读手册
-
Ubuntu中使用命令安装一些缺失的手册
1
sudo apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix
-
使用man命令查询
1
2
3
4
5
6
7
8
9
10
11
12# 使用man命令查询ls命令使用手册
man ls
NAME:手册页对应的命令或函数名字,后接简单描述
SYNOPSIS:概要
DESCRIPTION:描述:包括所有参数及用法
AUTHOR:命令的作者
REPORTING BUGS:故障报告联系方式
COPYRIGHT:版权(许可证)
SEE ALSO:拓展阅读
一般来说,前三个区域是最重要的 -
SYNOPSIS区域(以man mkdir为例)
- mkdir:使用mkdir命令
- [option]:选项,即参数
- DIRECTORY:目录,必须参数
-
小总结
- 省略号代表可以拥有多个此类型参数
- 粗体表示必须原封不动输入的字段,下划线表示要替换的实际内容,**[ ]**表示可选内容
- a | b表示可以输入a或b选项,但不能同时输入
- 具体可添加的参数在DESCRIPTION中查找
-
apropos 命令:查找命令
1
2# 举例:我想知道如何使用终端命令控制音量
apropos sound -
其他查找命令(-h / whatis)
1
2
3
4
5# 举例 使用-h查找man命令帮助文档
man -h
# 举例 使用whatis查找ls命令简单解释
whatis ls
六.查找文件
-
locate 命令:快速查找
1
2# 搜索包含关键字的所有文件和目录(file.txt)
locate file.txt但是这有个缺点:locate只能在文件数据库中查找,而Linux系统一般一天更新一次文件数据库,意味着你刚创建的文件是无法被locate查找到的,下面是解决办法
-
updatedb 命令:强制更新文件数据库(root用户可执行)
1
sudo updatedb
-
find 命令:深入查找
1
2find "where""what""what to do"
其中"what"是必须指定的举例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#查找文件(file.txt)
find file.txt
find -name file.txt # 加上-name表示查找的是文件名
#限定目录查找文件
find /var/log -name "syslog"
#使用通配符查找来匹配名字的多个文件
find /var/log -name "syslog*"
#根据文件大小查找 -size(正负 k/M/G)
find / -size +10k
#根据最近访问时间查找 -atime(几天内)
find / -name "file" -atime -3
#只查找文件或目录 -type(d/f)
find / -name "file" -type -d
#注意:以上命令没有限定位置查找,则会在当前目录及其子目录查找
#输出Permission denied表示没有权限查找 -
find命令的"what to do"
1
2
3find -name "file"
find -name "file" -print
# 上述命令等价,下面介绍一些其他的"what to do"参数-
格式化打印
1
find -name "file" -printf "%p - %u\n"
- %p:文件名
- %u:文件所有者
- \n:换行
-
删除查找到的文件(不会有确认提示)
1
find -name "file" -delete
-
执行文件 (-exec / -ok)
1
find -name "file" -exec chmod 777 {} \;
- 执行语句:{}会被查找到的文件替换,必须以;结尾
- -ok可用来替换-exec,会对每个文件操作进行确认提示
-
-
locate命令与find命令差异
-
locate会查找所有包含关键字的文件,而find查找完全匹配"what"的文件
-
下面用两张图比较locate与find命令
-
下一篇文章推荐:Linux学习之旅3——数据流与进程(上)