1.目录与路径
1.1 相对路径与绝对路径
对目录的操作需要知道目录的路径,路径分为相对路径和绝对路径:
- 相对路径:路径不加/,表示相对于当前工作目录的路径
- 绝对路径:从根目录(/)开始一直到当前目录
还存在一些特殊的目录:
特殊目录 | 含义 |
---|---|
. | 代表此层目录 |
.. | 代表上一层目录 |
- | 代表前一个工作目录 |
~ | 代表目前用户的家目录 |
~account | 代表该account的家目录 |
1.2 目录相关操作:cd,pwd,mkdir,rmdir
cd:变换目录
change directory的缩写。
用法:
[root@linux ~]# cd [相对路径或绝对路径]
pwd:显示目前所在的目录
print working directory缩写。
用法:
[root@linux ~]# pwd [-P]
参数:
-P :显示出确实的路径,而非使用连结 (link) 路径。
mkdir:创建新目录
make directory缩写。
用法:
[root@linux ~]# mkdir [-mp] 目录名称
参数:
-m :设定文件的权限
-p :建立多层级目录
实例:
$ mkdir -m 711 test1 #创建目录并设置目录的权限
$ mkdir -p test1/test2/test3 #创建多层目录
rmdir:删除一个空目录
只能删除空的目录,若其中有文件,需要用rm命令。
用法:
[root@linux ~]# rmdir [-p] 目录名称
参数:
-p :连同上层空的目录也一起删除
1.3 执行文件的路径变量:$PATH
系统会根据PATH的值去搜寻可执行文件。
[root@linux ~]# echo $PATH
/usr/local/bin:/usr/local/sbin…
2.文件与目录管理
2.1 文件与目录查看属性:ls
用法:
[root@linux ~]# ls [-adFhlRS] 目录名称
[root@linux ~]# ls [–full-time] 目录名称
参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来
-d :仅列出目录本身
-F :根据文件、目录等信息,给予附加数据结构,例如:
*:代表可执行文件; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案
-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来
-l :以列表形式列出,包含文件的属性等等数据
-r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小
-R :连同子目录内容一起列出来
-S :以档案容量大小排序
-t :依时间排序
–full-time :以完整时间模式 (包含年、月、日、时、分) 输出
2.2 复制、移动、删除:cp,rm,mv
cp(复制)
用法:
[root@linux ~]# cp [-fipr] 来源文件(source) 目的文件(destination)
[root@linux ~]# cp [options] source1 source2 source3 … directory
参数:
-f :若有重复或其它疑问时,不会询问使用者,而强制复制
-i :若目的文件(destination)已经存在时,在覆盖时会先询问是否真的动作
-p :连同文件的属性一起复制过去,而非使用预设属性
-r :递归持续复制,用于目录的复制行为
rm(删除)
用法:
[root@linux ~]# rm [-fir] 档案或目录
参数:
-f :强制移除
-i :在删除前会询问使用者是否动作
-r :递归删除
mv(移动文件或目录,或更名)
用法:
[root@linux ~]# mv [-fi] source destination
[root@linux ~]# mv [options] source1 source2 source3 … directory
参数:
-f :强制直接移动而不询问
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
2.3 取得路径的文件名称和目录名称
$ basename /etc/sysconfig/network
network #取得最后的文件名
$ dirname /etc/sysconfig/network
/etc/sysconfig #取得目录名
3.查看文件
命令 | 描述 |
---|---|
cat | 从第一行开始显示文件内容 |
tac | 从最后一行开始显示文件内容 |
nl | 显示文件内容带行号 |
more | 一页一页的显示内容 |
less | 与more类似,可以向前翻页 |
head | 只看头几行 |
tail | 只看最后几行 |
od | 以二进制的方式读取文件 |
3.1 直接查看文件:cat,tac,nl
cat(concatenate)
用法:
[root@linux ~]# cat [-EnTv] 文件
参数:
-E :将结尾的断行字符 $ 显示出来
-n :打印出行号
-T :将 [tab] 按键以 ^I 显示出来
-v :列出一些看不出来的特殊字符
3.2 翻页查看文件:more,less
more
在运行more时,可以执行以下指令:
指令 | 描述 |
---|---|
空格键 | 代表向下翻一页 |
enter | 代表向下翻一行 |
/字符串 | 代表向下搜寻字符串 |
:f | 显示出文件名以及目前显示的行数 |
q | 退出more命令 |
less
在运行less时,可以执行以下指令:
指令 | 描述 |
---|---|
空格键 | 代表向下翻一页 |
pagedown | 代表向下翻一页 |
pageup | 代表向上翻一页 |
/字符串 | 代表向下搜寻字符串 |
?字符串 | 代表向上搜寻字符串 |
n | 重复前一个搜寻(与/或?有关) |
N | 反向的重复前一个搜寻(与/或?有关) |
q | 退出less命令 |
3.3 截取查看文件:head,tail
head
用法:
#默认显示前10行
[root@linux ~]# head [-n number] 档案
参数:
-n :后面接数字,代表显示几行的意思
tail
用法:
[root@linux ~]# tail [-n number] 文件
参数:
-n :后面接数字,代表显示几行的意思
3.4 touch:修改文件时间或建立新文件
Linux下文件的三种时间:
- mtime(modification time):文件内容变更的时间。
- atime(access time):当文件被取用时,变更的时间。
- ctime(status time):当文件状态变更时,变更时间(例如属性变化)。
#查看不同的时间,默认情况下ls显示的是mtime
$ ls -l /etc/main.config
$ ls -l --time=atime /etc/main.config
$ ls -l --time=ctime /etc/main.config
用法:
[root@linux ~]# touch [-acdmt] 文件
参数:
-a :仅修订 access time;
-c :仅修改时间,而不建立文件;
-d :后面可以接日期,也可以使用 --date=“日期或时间”
-m :仅修改 mtime ;
-t :后面可以接时间,格式为[YYMMDDhhmm]
实例:
#修改文件,将日期调整为两天前
$ touch -d "2 days ago" demo.txt
#将日期改为2021/7/5 9:01
$ touch 2107050901 demo.txt
4.文件与目录权限
4.1 文件预设权限:umask
umask就是指定目前用户在建立文件或目录时候属性默认值。
查看的方式:
[root@linux ~]# umask
0022
[root@linux ~]# umask -S
u=rwx,g=rx,o=rx
umask有四组数字,第一组是用户特殊权限用的,一般取决于后面三组。
在预设权限的属性上,目录与文件时不一样的。文件一般是不会赋予可执行权限的。
- 用户建立文件则预设没有可执行权限,最大为666分,预设属性为:-rw-rw-rw-
- 用户创建目录,最大分为777分,预设属性为:drwxrwxrwx
umask指的是该默认值需要减掉的权限,r、w、x分为为4、2、1分,umask为022,user并没有拿掉属性,group和other被拿掉了w这个属性,所以当用户创建文件或目录是的权限如下:
- 文件:(-rw-rw-rw-) => (-rw–r--r–)
- 目录:(drwxrwxrwx) => (drwxr-x-r-x)
设置umask:
$ umask 002
4.2 文件隐藏属性:chattr,lsattr
chattr(设定文件隐藏属性)
用法:
[root@linux ~]# chattr [±=][ASacdistu] 文件或目录名称
参数:
+ :增加某一个特殊参数,其它原本存在参数则不动
- :移除某一个特殊参数,其它原本存在参数则不动
= :设定一定,且仅有后面接的参数
A :文件(或目录)的存取时间 atime (access) 将不可被修改
S :将数据同步写入磁盘当中
a :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root
才能设定这个属性。
c :会自动的将此档案压缩,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存
d :当 dump(备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)不具有 dump 功能
i :让一个文件不能被删除、改名
s :被完全的移除出这个硬盘空间
u :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中
实例:
chattr +i demo #这个文件不能被删除
lsattr(显示隐藏属性)
用法:
[root@linux ~]# lsattr [-aR] 文件或目录
参数:
-a :将隐藏文件的属性也秀出来
-R :连同子目录的数据也一并列出来
4.3 文件特殊属性:SUID/SGID/SBIT
SUID
有s和t权限,是为了让一般用户在执行某些程序时,能暂时拥有该程序拥有者的权限。
例如道账号与密码的存放档案其实是 /etc/passwd 与 /etc/shadow 。 而 /etc/shadow 这个档案的权限是『-r--------』。且他的拥有者是 root 。但一般用户去更新自己的密码时,也可以存取这个密码文件。这就是s权限(-r-s–x--x)。s权限在user用户上,称为SUID。
SUID只可以用在二进制文件上,对于目录是无效的。
SGID
若s的权限在group上,就是SGID。SGID可以在目录和文件上设定。
- 文件:如果SGID是设定在二进制文件上面,无论是使用者是谁,在执行该程序时,它的有效群组将会变成该程序的群组所有人。
- 目录:如果SGID是设定在A目录上,则在A目录内所建立的文件或目录的group,将会是此A目录的group。
SBIT
只针对目录有效。
作用:在具有SBIT的目录下,用户若在该目录下具有w和x的权限,则当用户在该目录下建立文件或目录时,只要文件拥有者与root才有权力删除。
/tmp 本身的权限是(drwxrwxrwt), 在这样的权限内容下,任何人都可以在 /tmp 内
新增、修改文件,但仅有该文件/目录建立者与 root 能够删除自己的目录或文件。
权限设定
- SUID为4
- SGID为2
- SBIT为1
[root@linux ~]# chmod 4755 test;ls -l test
-rwsr-xr-x
[root@linux ~]# chmod 6755 test;ls -l test
-rwsr-sr-x
[root@linux ~]# chmod 1755 test;ls -l test
-rwxr-xt-t
[root@linux ~]# chmod 7666 test;ls -l test
-rwSrwSrwT
4.4 文件类型:file
查看文件的类型。
用法:
file 文件名
5.文件的查找:which,whereis,locate,find
which(寻找可执行文件)
根据PATH变量中的路径,去搜寻可执行文件名。
用法:
[root@linux ~]# which [-a] command
参数:
-a :将所有可以找到的指令均列出
whereis(寻找特定文件)
用法:
[root@linux ~]# whereis 文件或目录名
Linux系统会将系统内的所有文件都记录在一个数据库文件里面,使用whereis或者locate时,都会以此数据库文件的内容为准。问题是找到的文件不一定是最新的,有可能是被已经删除的文件,因为数据库没有更新。
locate
用法:
locate filename
locate 寻找的数据是由已建立的数据库 /var/lib/slocate/ 里面的数据所搜寻到的,速度较快。对于新创建的数据可能搜索不到,因为数据库未更新。
find
用法:
[root@linux ~]# find [PATH] [option] [action]
参数:
- 与时间有关的参数:
-atime n :n 为数字,意义为在 n 天之前被 access 过的文件
-ctime n :n 为数字,意义为在 n 天之前被 change 过状态的文件
-mtime n :n 为数字,意义为在 n 天之前被 modification 过的文件
-newer file :file 为一个存在的文件,意思是说,只要文件比 file 还要新,就会被列出来
- 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的账号 ID,亦即 UID
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID
-user name :name 为使用者账号名称
-group name:name 为群组名称
- 与文件权限及名称有关的参数:
-name filename:搜寻文件名称为 filename 的文件
-size [±]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE有:
c: 代表 byte, k: 代表 1024bytes
-type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f),装置档案 (b, c), 目录 (d),连结档 (l), socket (s),及 FIFO § 等属性。
-perm mode :搜寻文件属性刚好等于mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755
- 额外可进行的动作:
-exec command :command 为其它指令,-exec 后面可再接额外的指令来处理搜寻到
的结果。
-print :将结果打印到屏幕上,这个动作是预设动作
实例:
#将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
$ find / -mtime 0
#寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
$ find /etc -newer /etc/passwd
#搜寻 /home 底下属于 dmtsai 的文件
$ find /home -user dmtsa
#找出名为 passwd 这个文件
$ find / -name passwd
#搜寻文件属性为 f 的文件
$ find /home -type f
#找出系统中,大于 1MB 的档案
$ find / -size +1000k