目录相关操作
切换目录(cd)
cd ~acount:回到该账户的家目录

cd ~: 回到当前目录的家目录,cd不加任何参数功能等同cd ~

cd ..: 回到上层目录

通过相对路径选择目录

显示路径(pwd)
-P: 显示目录真实路径

创建目录(mkdir)
-m: 指定权限创建目录
-p: 递归创建目录
参数p和m连接使用的时候,m在后面
![]()
删除目录(rmdir)
待删除的目录需要是空目录才能删除成功
-p:递归删除目录
![]()
环境变量
问:系统是怎么执行ls的呢?
答:输入ls后,系统会去环境变量所定义的目录中查找ls文件;找到就执行成功,否则失败,查找顺序是从左到右
打印环境变量目录, 注意PATH是大写

添加目录到环境变量中![]()
文件与目录管理
文件与目录的查看(ls)
-l:列出详情(常用)
-a:显示全部文件,包含隐藏文件(常用)

-A:显示全部文件,包含隐藏文件,但是不包含.和..两个目录

-d:列出目录本身,不列出目录中的文件(常用)

-F:列表文件的类型

-h:以容量单位列出文件(常用)

-i:列出文件的inode号

-n:列出UID与GID,不列出用户和用户组

-r : 文件名反向排序列出,默认是正向排序

-R:递归列出所有文件

-S:以容量排序列出文件

--full –time:列出文件修改时间

--time=atime:列出文件的权限改变时间
--time=ctime:列出文件创建时间

复制(cp)
复制.bashrc文件到tmp目录并命名为bashrc
![]()
复制/etc目录到tmp目录并命名为etc1

复制多个文件到目录

复制到当前目录:目标目录写点号

由于没加-a参数,目标和原始文件的属性会变化;目标文件的权限会变成命令执行则的权限

-a: 目标文件原始或目录的属性一致(常用),等同-dr --perserve=all
-r:递归复制目录
-d: 原文件为链接文件时,属性也被复制
--perserve=all:复制所有属性


-i:带提示的复制

-s: 生成一个链接文件,是符号链接,相当于快捷方式
-l:生成一个链接文件,是硬链接,属性与原始文件一致

-u:原始文件比目标文件新时,才复制

-d: 原文件为链接文件时,属性也被复制

-f:强制复制
注意:复制文件时,当执行者非root账户,即使使用-a参数,目标文件的属性也有可能改变,因为只有root账户才能修改所有文件的属性
删除(rm)
-f:强制删除文件
-r:递归删除文件,默认带提示

-i:带提示删除文件,root执行rm时,默认加上参数i

删除带-的文件方式

移动(mv)
-f:不带提示,强制移动

-i:带提示移动

-u:源文件或目录新,才移动
移动文件到目录

移动多个文件到目录

修改名称

获取文件名与文件路径(basename|dirname)

文件内容查看
直接文件内容查看
cat
-b:显示行号,空白行不显示(常用)

-n:显示行号,空白行显示

-A: 显示所有的特殊字符;$表示换行符,^I表示Tab符号

tac(反向打印)
与cat显示内容相反,从最后一行打印
nl(添加行号打印)
-b a:添加行号打印

-b t:添加行号打印,空白行不添加行号

-n ln:行号不添加0显示,行号在最左

-n rn:行号不添加0显示,行号在最右

-n rz:行号添加0显示,行号在最右

-w:设置行号位数

翻页查看
more

空格键:向下翻页
回车键:向下翻一行
/字符串:查询字符
:f:显示当前文件名和行号
q:离开
b:向前翻页
less

空格键:向下翻页
[pagedown]:向下翻一行
[pageup]:向下翻一行
/字符串:向下查找字符串,输入n继续查找下一个,N反向查找
?字符串:向上查询字符串
g:跳到第一行
G:跳到最后一行
q:离开
截取文本
head(取前面几行)
默认显示10行

-n:指定显示的行数


tail(取后面几行)
默认显示10行

-n: 指定显示的行数


-f:动态打印

组合截取
非存文本文件
od:读取数据流或二进制文件
-t:指定类型输出
-t a:利用默认的字符来输出
-t d:以十进制来输出
-t f:以浮点型来输出
-t o:以八进制来输出
-t x:以16进制来输出
-t c:以ASCII字符来输出

-t oCc:列出ASCII和八进制对照表,c要写在后面

Ascii与进制转换,c要写在后面

修改文件时间或创建文件
Linux文件的三个时间属性:修改时间,状态时间,读取时间
修改时间(mtime):当文件数据内容变化时,更新该时间,ll显示的就是该时间
状态时间(ctime):当文件状态,既是属性和权限发生变化时,更新该时间
读取时间(atime):当文件被访问时,改时间发生变化

touch 文件名:文件的三个属性时间都会更新为执行命令的时间点,若文件不存在,则创建

touch -t 文件名
注意:touch不能修改文件的citme
文件与目录的默认权限与隐藏权限
默认权限
umask:设置文件或目录的默认权限
文件权限 = (rw-rw-rw-) - 默认权限
目录权限 = (rwxrwxrwx) - 默认权限
一定是权限相减,不是数字权限相减,数字权限相减有问题
查询默认权限


设置默认权限

例子

test1权限=rw-r--r--
原因:
test1是文件,利用公式:文件权限 = rw-rw-rw- - 默认权限, 进入如下转换后计算
(rw-rw-rw-) - (----w--w-) = rw-r--r--
test2是目录,利用公式:文件权限 = 777 - 默认权限, 进入如下转换后计算
(rwxrwxrwx) - (----w--w-) = rwx-r-x-r-x
文件隐藏属性
设置文件隐藏属性
chattr +a 文件:设置a参数后,文件只能增加数据,不能删除和修改数据,只有root才能设置
chattr +i 文件:设置i参数后,不能对文件做任何操作

lsattr文件:查看文件的隐藏属性

chattr -i 文件:删除文件的i属性

文件特殊权限
SUID
当s出现在文件拥有则x的位置上时,此时就被叫着Set UID,简称SUID权限

SUID限制与功能
- 仅对二进制文件有效(不能用在shell脚本上)
- 执行者可以执行该程序
- 在程序执行过程中,执行者将具有该程序拥有者权限,执行完毕后就权限收回
SGID
当s出现在用户组x的位置上时,此时就被叫着Set GID,简称SGID权限
SGID对文件
- 对二进制程序有用
- 执行者对该文件具备可以执行权限
- 在程序执行过程中,执行者将会获得该程序用户组的支持
SGID对目录
- 若用户对于该目录有rx权限,用户可以进入到该目录
- 若用户在此目录下具有w权限,用户就可以在该目录下创建文件,则该文件的用户组就是此目录的用户组
SBIT
仅对目录有效

- 用户对于此目录具有wx权限
- 用户在该目录下新建文件或目录时,仅有root和用户自己具备删除该文件
SUID,SGID,SBIT设置
4:表示SUID权限
2:表示SGID权限
1:表示SBIT权限
方式1:数字方法进行设置

因为用户,用户组,其他人都么有可以x权限,所以下面的SUID,SGID,SBIT为大写,大写表示么有SUID,SGID,SBIT权限

用户加上SUID权限
用户组加上SGID, 其他人加上SBIT权限

注意:权限添加直接没有空格
观察文件类型(file)
file 文件路径

命令和文件查找
脚本文件查找(which)
which 文件/命令, 该命令仅能找PATH目录下进程查找
-a:列出所有在PATH中找到的目录

不加-a, 只列出第一个找到的目录

别名:意思是输入which,等价于输入后面的一串命令

文件的查找(whereis|locate|find)
whereis
whereis系统中某些特定目录下查找

-m:在说明文件目录下查找

-l:列出找出的目录

-b:只查询对应二进制文件的目录

-s: 查找source源文件
locate
locate:通过关键字进行查找, 数据来源是从已建立的数据库,为了防止数据没有被更新到数据库中,可以通过命令updatedb进行更新,然后再查找

-l:指定回显多少条记录

-S:列出查找的数据库文件名以及文件个数

-i:忽略大小写

-c:仅列出文件的数量

-r:通过正则表达式进行查找

find
用法:find [目录] [参数][动作]
时间相关的参数有
-ctime
-atime
-mtime
以-mtime为例
-mtime n: n为数字,表示在前n天之内(24H)被修改过的文件


-mtime +n: 列出在n天(不含n天本身)之前被修改过的文件
-mtime -n: 列出在n天(含n天本身)之内被修改过的文件
如:find / -mtime -1:表示列出1天前被修改过的文件
-newer file: 列出比file 更新的文件

用户,用户组相关参数
-uid n:n表示用户的账号ID, ID记录在/etc/passwd文件中
-gid n:n表示用户组的账号ID记录在/etc/group文件中
-user name: name为用户的账号

-group name: name为用户的账号
-nouser: 查找文件的拥有者不在/etc/passwd中

-nogroup:查找文件的拥有则不在/etc/group中
用户权限及文件相关参数
-name 文件名:通过文件名查找

-size 文件大小[c|k|M], c为字节
-size +50k:查找大于50K的文件
-size -50k:查找小于50K的文件
-size +50c:查找大于50字节的文件
-size -50c:查找小于50字节的文件
-type [f|b,c|d|l|s|p]
f: 表示文件
b,c:表示设备文件
d:表示目录
l:表示链接文件
s:表示socket文件

p:表示FIFO文件

-perm [mode|-mode|/mode]
mode: 查找文件权限刚好等于mode的文件
-mode:查找文件的权限包含mode权限,文件权限比mode大
/mode:查找文件权限在mode中,文件权限比mode小

额外可进行的操作
-exec command: commond为处理find出来的结果的命令
