所有的文件都有.和..包括根目录。
-上一个目录 .当前目录 .. 上一层目录
~当前用户的家目录 ~accout accout的家目录
PATH文件路径变量:
PATH: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin/:/home/name/.local/bin:/home/name/bin
有一定顺序在里面,执行找到的第一个命令。
添加路径: PATH="${PATH}:/root"
PATH:提示1.本路径不要放在PATH当中。
2.PATH对于不同用户是不同的
3.PATH是可以修改的
mtime 文件内容修改时间
ctime 权限修改时间。 cp -a 会修改ctime时间
atime 文件的最近一次读取时间
umask 代表默认权限去除的权限。有4位数,后三位是权限
umask 默认对目录是0022,对文件是0002
umawk 002 修改权限为0002
文件默认权限:-rw-rw-rw-
目录默认权限:-rwxrwxrwx
代码:
su - 进入root用户
su - name 进入name用户
cd :切换目录
cd - 回到上一个目录
cd ~回到家目录 和 cd 等价
cd ..回到上一层目录
pwd 显示当前目录
pwd -P 显示真实路径,而不是链接的路径
mkdir创建目录
mkdir -p 一层一层创建目录
mkdir -m 设置目录权限 否则是默认权限umask
rmdir 删除目录
rmdir 智能删除没有文件的目录
echo 打印
${PAHT}其中$表示的是变量
test* 输出test开头的文件
mv 源文件 目标目录
ls 操作:
ls -l 查看详细信息
ls -a 查看所有文件和目录
ls -d 仅列出目录本身,而不列出目录中的数据
文件权限和类型 硬链接的文件总数(包括自己) 所有者 用户组 文件容量 修改时间 文件名 -> 代表链接到的地方
rm 删除操作
rm -i 删除操作,在每一次删除前进行询问
rm -I 对于少于3个文件等情况下,不询问,多于是询问。
rm -r 目录删除
rm -f 忽略不存在的文件,全部删除
在root权限下,rm -r会默认带着-i操作.如果不想询问则 \rm
如果文件名当中带有-,可以使用./来表示文件,防止误判
cp 复制,创建连接文件,更新文件,复制整个目录。
-i 文件存在,询问是否继续复制
-p 文件的属性也一同复制,没有权限的部分不能复制。比如用户名和用户组。
-r 递归复制,用于目录复制
-a复制更多的信息包括links.xattr等属性。 但是如果你对文件没有所有的权限,也不能复制完整的权限。
-s 软链接,快捷方式,只记录地址。符号链接
-l 硬链接,复制内容过来,且在后续的修改源文件时,硬链接文件也会修改。而删除源文件硬链接文件不会删除。硬链接文件属于常规文件,不是链接文件。
复制操作会更改权限和所有用户。
链接文件有自己的大小,并且软链接通常拥有所有的权限。
mv 移动文件或目录
-f 强制移动
-i 询问移动
-u 判断目标文件是否更新
mv : 可以进行重命名
操作中:通常默认最后的是目录,前面的文件可以有多个。
basename 取得最后的文件名
dirname 取得最后的目录名
rename expression replacement file : 将文件名中的expression转换成replacement
文件读取:(tail,head,less,od 即可)
od 二进制方式读取文件内容
cat 顺序读取 tac 倒叙读取
more 按页读取
less 按页,但可向前翻页
nl 显示的时候,输出行号
head 读前面多少行 head -n 20
head -n -20 后面20行不读
tail 多后面的多少行 tail -n 20
tail -n +20 前面20行不读
tail -f 可以一直刷新,知道俺ctrl + c停下
cat -n 显示所有行号 -b 只显示非空行号
nl 对行号有很多操作
tac 是将内容反过来打印出来
more 命令行输入 :f 显示当前行号 /字符串 查找
|管道操作 ,让上一个语句输出的值,在下一个语句中使用.
head -n 20 1.txt | tail -n 10
显示11到20行的数据
od 二进制方式读取文件内容
od [-t TYPE] 文件
c ASCII除数
a 默认输出
d[size] 10进制输出,size表示多少个字节组成一个
f[size] 浮点数
o[size] 8进制数
x[size] 16进制数
od -t cC 文件
其中C是sizeof(char)
echo 输出相应的信息
echo password 输出password字符串
BASH代码:一行当中可以有多个代码,但要使用;分隔。
touch 自定义文件时间
-t和-d自定义时间:不会修改ctime的时间。
ll 代表 ls -l
文件:
/etc/bashrc 其中装有umask的默认值.
隐藏属性:
chattr
chattr -aAidS-a 只允许写
-i 什么都不允许操作
-A 进制修改atime时间
-d dump备份的时候,不备份当前文件
-S 直接写入磁盘
lsattr显示隐藏属性
-R 显示所有子目录的隐藏属性-a 显示隐藏文件的属性
-d 只显示当前目录属性
特殊属性:SGID,SUID,SBIT分别是4,2,1,对应---s--s--t。对于其中的S和T分别意味着没有x执行权限,但是又设置了特殊属性。
特殊属性的是指也是使用chmod进行设置。
SUID:
1. 针对二进制文件
2. 必须具有x权限
3.在执行的过程当中会获得用户的权限。
SGID:
对文件时:和SUID一样
对目录时:用户需要具有rwx才会生效,因为进入目录后用户的用户组会变成当前目录的用户组,在其中创建程序的时候其用户组会是当前用户组。
文件的用户,用户组,其他没有必然联系。
SBIT只针对目录:()
SBIT使得用户只能对自己创建的文件进行w权限操作。
file 观察文件类型:
可以看到文件的类型,是否使用了动态链接库,使用的压缩方式。
查找指令:which和type
which是在PATH当中查找。which会列出指令的别名情况。
which -a 列出所有的同名指令
type会查找bash当中的指令。
指令并不都是在PATH路径当中,还有一部分指令是bash提供的。如history
whereis locate find
whereis 只查找特定目录下的文件
locate 查找数据库当中的文件。数据库是/var/lib/mlocate数据库
locate操作不需要完整的文件名.
updatedb更新数据库 调用/etc/updatedb.conf配置文件,然后在磁盘中进行更新。
find全盘查找:
时间查找:
-atime n n天到n+1天
-atime +n n+1天开始不包含n
-atime -n n天之前
-uid 所有者id
-gid 用户组id
-user name 所有者
-group name 用户组名
-nouser :所有者在/etc/passwd中没有
-nogroup : 用户组在/etc/group中没有
出现这种情况:1.网上下载的东西 。 2.清除用户后,忘记删除其创建的文件。
对于ls -l 中所有的属性都可以进行查找
-name 文件名查找
-type 类型查找
-size [+-]SIZE: +比SIZE大,-比SIZE小,单位是BYTE。
-perm mode 完全匹配
-perm -mode 拥有mode的所有权限
-perm /mode 拥有mode中的某一个权限.
特殊操作:-exec command \; 可以执行command额外命令。在其中对于之前的结果要使用{}引用。
习题中的代码:
groupadd 添加新用户组
useradd -G pro aaa 添加新用户aaa且给用户添加pro用户组
id aaa 查看用户
实际情况下,在一个团队进行编写项目的时候,如果对目录设置为0770这样会导致,团队中自己创建的文件只有自己能看,别人用不了。但是如果使用GUID的特殊权限,则团队中的其他人对文件也会有r的权限。为什么是r的权限?是因为默认的权限是666,而umask默认是0002,所以此时的权限是664,只有r的权限。