目录
3.5 basename与dirname(获取完整文件名的文件与目录名)
1. 关于执行文件的路径变量:$PATH
系统会根据所设置的PATH(一定是大写)路径去寻找文件名为命令的可执行文件。这也就是为什么我们可以在任何地方使用命令。注意,所有的命令都要放到PATH中,否则需要将命令的完整路径写出才能执行。例如:如果有一命令abc,在/root路径下,使用时需要完整写出绝对路径/root/abc或者相对路径来使用。
echo $PATH
显示PATH中的路径
PATH = “${PATH}:绝对路径”
将某路径加入到PATH中
2. 目录相关操作
2.1 cd(切换目录)
进入目录可以用cd命令。
cd 目录路径 进入指定目录
cd .. 返回上一级目录
cd - 代表前一个工作目录
cd ../.. 返回上两级目录
cd或cd ~ 返回home目录
★注意两个特殊的目录:
- . :代表当前目录,也可以用./来代表
- .. :代表上一层目录,也可以用../来代表
2.2 pwd(显示目前所在的目录)
pwd [-P]
-P:显示出真正的路径而非使用链接的路径
2.3 mkdir(建立新目录)
mkdir [-mp] 目录名称
选项与参数:
-m:设置目录的权限(若果不加就默认使用umask设置的权限)
-p:帮助直接对所需要的目录进行递归
例:
mkdir -m 711 test2
mkdir -p test1/test2/test3 (不建议使用,如果输错名字会导致目录乱七八糟)
2.4 rmdir(删除空目录)
rmdir [-p] 目录名称
-p:连通上层的空目录也删除
3 文件与目录管理
3.1 ls(查看文件命与目录)
ls [选项、参数] 文件名或者目录名称
选项与参数:
-a:显示出包括隐藏文件在内的所有文件
-d:仅列出目录本身,而不是目录内的文件数据
-l:显示出信息显示包含文件的属性与权限
ls还可以用--color={never,auto,always}控制显示的颜色{无,自动,显示}
--full-time 以完整的时间格式输出
--time={atime,ctime} 输出atime或者ctime
3.2 cp(复制)
cp有很多用途:
- 复制
- 建立链接文件(快捷方式)
- 对比两文件的新旧予以更新
- 复制整个目录
cp [options] 源文件 目标文件
cp [options] 源文件1 源文件2 源文件3 .... 目录
选项与参数
-i:若目标文件存在则覆盖前询问
-p: 连同文件的属性(权限、用户、时间)一起复制
-r:递归复制
--perserve=all: 除了-p的权限外还加如SELinux的属性,以及links,xattr
-a:相当于 -dr --perserve=all
-l: 硬连接
-s:符号链接(快捷方式)
-d: 若源文件为链接文件则复制链接文件属性而非文件本身
例 建立链接
cp -l bashrc bashrc_slink
cp复制后的目标文件通常是操作者本身所有。一些配置文件必须要加上-a,-p完整复制权限才可以。
3.3 rm(删除文件或者目录)
rm [] 文件或者目录、
-f: 忽略不存在的文件,不会出现警告信息
-I: 删除前询问
-r: 递归删除,非常危险
例
通过通配符*,删除特定文件名
rm -i bashrc* 删除bashrc开头的文件
删除一个-开头的文件可能会被系统误判成选项,需要用相对路径来删除
rm ./-aaa- 或者 rm -- -aaa-
3.4 mv(移动文件与目录,或者重命名)
mv [] 源文件 目标文件
mv [] 源文件1 源文件2 源文件3 .... 目标文件
选项与参数
-u: 若目标文件已经存在,源文件较新的时候才会更新
-i: 覆盖前询问
-f:强制覆盖
3.5 basename与dirname(获取完整文件名的文件与目录名)
basename /etc/sysconfig/network 获取到文件名network
dirname /etc/sysconfig/network 获取到目录名/etc/sysconfig
4 文件内容查看
4.1 cat(将一个文件内容连续打印在屏幕上)
cat [] 完整文件名
选项与参数
-n:打印出行号,空白行也会有
-b:打印出行号,但是不包括空白行
-A:列出一些特殊字符
4.2 tac(反向列示)
一行一行反向打印在屏幕上。
4.3 nl(添加行号打印)
与cat -n 有点不太一样,nl可以将行号进行较多的显示设计。
nl [] 文件
选项与参数:
-b: 指定行号方式,有两种:
-b -a:空白行显示行号(类似于cat -n)
-b -t:空白行不显示行号(默认)
-n:列出行号表示方法,有三种:
-n -ln:行号在屏幕最左边显示
-n -rn:行号在自己栏位最右方显示,不加0
-n -zn:行号在自己栏位最右方显示,加0
-w:行号栏位占用的字符数
4.4 more(一页一页翻动)
more 文件
空格键 | 向下翻一页 |
enter | 向下翻一行 |
/字符串 | 查找这个关键词 |
:f | 立刻显示文件名以及目前显示行数 |
q | 离开 |
b 或者ctrl+b | 往回翻页,只针对文件,管道不可以 |
4.5 less(一页一页翻动,可以往上)
less 文件
相比于more更加的有弹性
空格键 | 向下翻一页 |
pagedown | 向下翻一页 |
pageup | 向上翻一页 |
/字符串 | 向下查找这个关键词 |
?字符串 | 向上查找这个关键词 |
n | 重复前一个查找(与? / 有关) |
N | 反向重复前一个查找(与? / 有关) |
g | 前进到这个数据第一行 |
G | 前进到这个数据最后一行 |
q | 离开 |
4.6 head(取出前面几行)
head [-n 数字] 文件
-n :后面接数字代表显示几行的意思
4.7 tail(取出后面几行)
tail [-n 数字] 文件
-n:取出几行
-f:持续刷新后面所接文件的内容,ctrl+c才会结束(用于检测持续被写入数据的文件)
4.8 od(读取非文本文件)
od [-t 类型] 文件
选项与参数:
-t:
a:默认字符输出
c: 使用ASCII输出
d: 十进制输出
f:浮点输出
o:八进制输出
x:十六进制输出
5 文件时间修改与创建 touch
修改时间(mtime) | 内容数据出现变化的时间 |
状态时间(ctime) | 文件的状态(属性,权限等)出现变化的时间 |
读取时间(atime) | 文件内容被读取的时间 |
touch [] 文件
选项与参数:
-a: 自定义atime
-c:修改文件时间,若不存在不创建新文件
-d:自定义日期 也可以使用--date=“日期”
-m: 修改mtime
-t:自定义日期 格式【YYYYMMDDhhmm】
6 默认权限与隐藏权限
6.1 umask(默认权限)
umask
直接显示默认权限所减去的权限数字 (目录默认权限777 文件默认权限666)
umask -S
以符号类型显示
例如:创建一个文件,umask是022,则666-022 为644 所以文件权限是-rw-r--r--。注意数字最好是4,2,1分别对应xwr来做权限相减,不要出现6-3即rw- - -wx = -wx这种错误的权限变换。
6.2 隐藏属性
6.2.1 chattr(配置隐藏属性)
chattr [+-=][参数] 文件或者目录名称
+:增加某一个参数
-:删除某一个参数
=:直接设置
参数:
a:只能增加数据不能删除和修改数据
i:不能被删除、改名、设置链接、也无法写入或者新增数据。
6.2.2 lsattr(显示文件隐藏属性)
lsattr [] 文件或者目录
选项与参数:
-a:显示隐藏文件的属性
-d:仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据也列出来
6.3 文件的特殊属性
6.3.1 SUID
文件具有SUID的特殊权限时,当用户执行此二进制程序时会暂时获得拥有者的权限。
6.3.2 SGID
文件具有SGID的特殊权限时,当用户执行此二进制程序时会暂时获得程序用户组的支持。
目录具有SGID的特殊权限时,当用户在这个目录下面新建的文件的用户组与该目录组相同。
6.3.3 SBIT
目录具有SBIT的特殊权限时,当用户在这个目录下面新建的文件只有自己和root能删除。
6.3.4 特殊权限表示
若一个文件的权限是-rws rws rwt,在user权限上的s是SUID,在group权限上的s是SGID,在others权限上的是t是SBIT。
用chmod可以来设置特殊权限。
例
chmod 7755 test
后三个数字755代表一般的权限
第一个数字7 代表所设置的特殊权限
其中:
SUID 4
SGID 2
SBIT 1
所以例子中设置的权限设置了所有特殊权限
6.4 file(观察文件类型)
查看某个文件的基本数据,例如查看是数据文件或者是二进制文件或者是ASCII文件等信息
7 命令与文件查找
7.1 which(查找执行文件)
根据PATH这个环境变量来找所规范的路径去找执行文件的文件名。
which [] 命令
-a:找出PATH中所有可以找到的命令,而不是第一个被找到的命令名称
7.2 whereis(由特定的目录中去查找文件)
whereis [] 文件名目录名
7.3 locate(在数据库中查找)
locate [] 关键词
7.4 find(在实际的硬盘中查找)
find [路径] [参数] [额外动作]
find的参数及其多,具体的参数可以用man或者查找书203页