Linux笔记_1
用户
-
可以查看
/etc/passwd
文件, 得到系统用户信息- 这个目录最早用来存储用户密码的哈希, 但是所有用户都可以访问
- 现在用户密码的哈希存储在
/etc/shadow
中, 只有root
可以访问
-
如果执行
apt update
发现权限不足, 可以使用sudo !!
进行补救, 因为!!
表示上一条命令
用户组
- 一组用户的集合, 使用
groups
命令查看当前用户组 - 一般用户在创建的时候, 都会创建一个与用户名相同的用户组
添加用户
Debian
系列使用adduser
可以实现添加用户, 添加组, 将用户添加到组- 添加用户:
sudo adduser 用户名
- 添加组:
sudo adduser --group 组名
- 将用户添加指定用户组:
sudo adduser 用户名 组名
- 一般创建的用户没有
sudo
权限, 可以将用户添加到sudo
用户组中
- 添加用户:
文件
文件权限
ls -l
可以查看文件的详细信息- 第一位是文件类型:
-
表示普通文件,d
表示目录 - 接下来三位是所属用户的权限
- 再三位是所属用户组的权限
- 最后三位是其他人的权限
- 第一位是文件类型:
文件层次
Linux
下所有的文件从/
开始, 以树结构的形式, 其他的分区以挂载的形式挂在了树上
目录 | 内容 |
---|---|
/bin |
存放程序文件, 所有用户均可用 |
/boot |
存放启动系统的文件 |
/dev |
存放设备文件 |
/etc |
存放系统和配置文件 |
/home |
存放用户的信息 |
/lib |
存放程序库文件 |
/media, /mnt |
都用于挂载其他文件系统, /media 用于挂载可移除文件系统, /mnt 挂载临时使用的文件系统 |
/opt |
存放额外的程序包, 一些大型 商用程序 |
/root |
root 用户的家目录 |
/srv |
存放网络服务数据 |
/usr |
大多数软件存放于此 |
/tmp |
临时目录, 所有用户均可使用 |
/var |
存放会发生变化的程序的相关文件 |
特殊权限位
/etc/shadow
存储密码, 只有root
用户可以查看修改, 但是普通用户可以通过passwd
查看和修改自己的密码- 这是因为有三个特殊权限位
权限 | 解释 |
---|---|
setuid |
以文件所属的用户身份执行此程序 |
setgid |
对文件来说, 以文件所属用户组的身份执行此程序, 对目录来说, 在这个目录下创建的文件的用户组都与目录的用户组一致, 而不是文件本身的用户组 |
sticky |
目录中的所有文件只能由除了root 以外的所有者删除或者移动 |
比如
/tmp
下, 可以删除修改自己的文件, 无法删除修改别人的文件
ls -l /usr/bin/passwd
查看文件, 可看到权限为-rwsr-xr-x
,s
表示有特殊权限位setuid
实际用户与有效用户
- 使用
sudo
命令修改passwd
, 文件却知道具体用户是你, 而不是root
- 这是因为有两个获取当前进程
UID
的函数,getuid(), geteuid
- 前者对应实际用户, 后者对应有效用户, 使用
sudo
命令, 前者是自己, 后者是root
I/O
重定向
echo "hello world" > file
可以将hello world
输入到file
中, 如果不存在则会创建, 如果已存在则覆盖echo "new" >> file
可以将new
追加到file
中, 如果不存在则创建, 如果已存在则追加
wget
- 使用
HTTP, FTP
协议从网上下载 - 可以在用户注销以后的后台工作, 支持断点续传
curl
- 可以下载文件, 也可以模拟
web
请求
文本处理
wc file
可以统计文本行数, 单词数, 字节数- 如果包含中文, 可以使用
wc -m file
统计宽字符
- 如果包含中文, 可以使用
diff file1 file2
比较两个不同的文件, 列出差异-b
忽略空白字符的数量变化,-w
忽略空白字符
head, tail
查看文本开头末尾head -n 24 f
查看文本开头24行head -24 f
查看文本开头24行tail -c 10 f
查看文本结尾10个字节tail -f file
tail
命令独有, 持续输出文本末尾新增加的内容
grep
查找文本内容grep -i "System" f
查找文本中包含System
的行grep -R "hello"
递归查找当前目录下包含hello
的文件
sed
替换文本字符串sed 's/hello/world/g' f
使用world
全局替换文本中的hello
输出sed 's/hello/world' f
使用world
替换文本第一个hello
输出sed -i 's/hello/world/g' f
使用-i
表示直接写入文件sed -i.bak 's/hello/world/g' f
使用-i.bak
可以备份到f.bak
中再写入f
shell
位置变量 | 含义 |
---|---|
$# |
命令行参数个数, 不包括$0 |
$? |
最后命令退出代码, 0表示成功, 其他表示失败 |
$$ |
当前进程的PID |
$! |
最近一个后台运行进程的进程号 |
$* |
所有参数构成一个字符串 |
$@ |
使用双引号扩起所有参数构成字符串 |
-
read
读取用户输入, 使用-p
添加提示, 使用-r
避免转移字符 -
echo
输出,-e
解析转义字符,-n
结尾不换行 -
sort
选项 | 功能 |
---|---|
-r |
倒序 |
-o |
输出指定文件 |
-u |
去除重复 |
-n |
数值排序, 否则是字典序 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sangs Blog!