Linux文件与目录管理
1. 相对路径与绝对路径
相对路径:根据当前目录情况会变,不是由根目录写起,例如:
cd ../man
绝对路径:写脚本,由根目录写起 (写程序来管理系统一定要从根目录写起!!!)例如:
/user/share/doc
2.目录的相关操作
. 代表此层目录 .. 代表上一层目录 - 代表一个工作目录 ~ 代表[目前用户身份]所在的家目录 ~account 代表account用户的家目录
*根目录下有上级目录,那个目录是它自己
cd:变换目录
pwd:显示当前目录
mkdir:建立一个新的目录
rmdir:删除一个空的目录
cd(变换目录):
cd ~dmtsai 即 /home/dmtsai cd ~ 即 /root
cd 即 /root (等同于cd ~)
cd- 回到刚才的目录
cd /var/spool/mail 切到这个位置/var/spool/mail
pwd(显示目前所在目录) :
pwd [-P]
-P:显示确实路径而不是连接路径
例:单纯显示出目前的工作目录:
[root@study ~]# pwd
/root
得进去之后才可以展示连接档的位置
输入: [root@localhost /]# pwd -P / 错误不显示 输入: [root@localhost /]# cd bin [root@localhost bin]# pwd -P /usr/bin 展示当前真实位置,最终链接到的位置
不加-P展示从哪里进
mkdir(建立新目录):
-m :创建目录可以给它指定权限
-p :加了它可以一层一层创一堆文件夹
建立权限为rwx--x--x的目录:
[root@study tmp]# mkdir -m 711 test2
[root@study tep]# ls -ld test*
[root@study tmp]# mkdir -p test1/test2/test3/test4
rmdir(删除[空]的目录)
rmdir [-p] 目录名称
[root@study tmp]#rmdir -p test1/test2/test3/test4
在home下建文件test
[root@study tmp]#rmdir -p /home/test
3.$PATH 环境变量(环境变量:让系统找到这个软件)
echo $PATH 可以打印出所有针对于用户的环境变量
PATH这个变量的内容是由一堆目录所组成,每个目录中间以[:]为分隔,每个目录之间有顺序之分。
无论是root还是dmtsai都有/bin或/usr/bin这个目录在PATH内,所以所可以在任何地方执行ls来找到/bin/ls执行档。因为/bin在CentOS7中,就是连接到这里面去的



不加容易中病毒!
4. ls 文件与目录的检视
-a :全部的文件连同隐藏档 -A: 全部的文件连同隐藏档,但不包括.与..这两个目录 -d: 目录本身 -f : 列出结果,不排序 -F: 根据文件、目录等信息附加数据结构 -h: 文件容量 -i :列出inode号码 -l :列出详细数据 -n:列出UID和GID -r: 反过来排序 -R:将子目录一起列出来,一个递归展示 -S:根据容量大小排序 -t : 根据时间排序
--color=never:不要根据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:让系统判断是否显示颜色
--full-time:展示完整时间
--time={atime,ctime}:分别表示输入access时间或者修改权限属性时间ctime
5.cp(复制文件或目录)
-a:完全复制 -d:用它就相当于复制超链接本身,不用它复制的是文件本身 -f:对于没办法复制的东西强制再试一下 -i:询问是否覆盖那个文件 -l:创建硬链接 -p:连同文件本身属性一起复制(备份)(普通属性复制) -r:持续递归复制 -s:复制成为符号链接(软连接) -u:做更新,复制过去的时候,如果这个文件比那个文件老就不会覆盖,这个文件比那个文件新就会覆盖。
--preserve==all :完全复制
6.rm(移除文件或目录)
-f :强制删除
-r:递归删除 非常危险的一个指令 !
-i:互动模式 询问你删不删除

7.mv(移动文件或目录,更名)
-f:强制移动
-u:移动的时候只有比较新才会更新
-i:互动
mv 文件名 目录名:把这个文件移动到这个目录里面去
将mvtest改名为mvtest2:
mv mvtest mvtest2
建立两个文件,全部移动到/tep/mvtest2当中
cp ~/.bashrc bashrc1
cp ~/.bashrc bashrc2
mv bashrc1 bashrc2 mvtest2
8.取得路径的文件名与目录名称
[root@study ~]# basename /etc/sysconfig/network network [root@study ~]# dirname /etc/sysconfig/network /etc/sysconfig
9.文件内容查询 使用的时候按执行顺序进行使用
cat 由第一行开始显示文件内容
tac 由最后一行开始显示文件内容
nl 显示的时候会显示行号
more 一页一页显示
less 往前翻页
head 看头几行信息
tail 看尾几行
od 以二进制方式读取
cat:(ctrl+c退出)
-A:可列出一些特殊字符而不是空白 -b:列出行号,空白行不标行号 -E:将结尾的断行字符¥显示出来 -n:列出行号,空白行也会被列出 -T:将[Tab]以^I显示出来 -v:列出一些看不见的特殊字符
tac (反过来列)方便查找最新的东西
nl(添加行号打印)(不用记):
-b : -b a:不论是否空行,都列出行号 -b t:有空行不列出行号 -n: -n ln:行号在屏幕最左边显示 -n rn:行号在自己字段的最右端显示,不加0 -n rz:行号在自己字段的最右端显示,加0 -w: 行号字段占用的字符数
more (一页一页翻)
空格:向下翻一页
Enter:向下翻一行
/字符串:在这个显示的内容中寻找这个字符串
[:f] :显示出文件名和目前显示的行数
q :离开more
b或[ctrl]-b:往回翻页(用于文件)
less(一页一页翻动)
空格:向下翻一页
[pagadown]:向下翻一页
[pageup]:向上翻一页
/字符串:向下搜寻这个字符串功能
?字符串:向上搜寻这个字符串功能
n:重复上一个搜寻
N:反向重复前一个搜寻
g:到这个资料第一行
G:到这个数据的最后一行
q:离开less这个程序
head(取出前面几行,默认前十行)
显示前20行:
[root@study ~]#head -n 20 /etc/man_db.conf
不显示后100行
[root@study ~]#head -n -100 /etc/man_db.conf
tail(取出后几行)
-n:接数字,表示显示几行
-f:表示连续预测后面接的档名 要按[Ctrl]-c才会停止侦测
列出/etc/man_db.conf100行以后
[root@study ~]# tail -n +100 /etc/man_db.conf
持续侦测/var/log/messages内容
[root@study ~]# tail -f /var/log/messages
显示/etc/man_db.conf的11行到20行
head -n 20 /etc/man_db.conf | tail -n 10
管线(|)代表前面指令输出的讯息通过它交由后续的指令继续执行
10.修改文件时间或者建立新档 touch
modification time(mtime):更新时间 最关心的东西
status time(ctime):状态时间 记录这个文件最近的状态被修改的时间
access time(atime):文件内容被取用的时间
使用举例:
[root@study ~]#date;ls -l /etc/man_db.conf;
为了让数据输出比较好看,三个指令中间可以用;隔开来进行输入
[root@study ~]#date;ls -l /etc/man_db.conf;ls -l --time=atime /etc/man_db.conf;ls -l --time=ctime /etc/man_db.conf
默认情况下ls显示出来的是mtime
touch 修订日期和时间,还可以创立一个空的文件
-a:修订access time -c:修改文件时间 -d:后面接想要修改的日期 -m:修改mtime -t:加预修改的时间 格式:YYYYMMDDhhmm
修改badhrc文件,把日期调整为两天前
[dmtsai@study tmp]# touch -d "2 days ago" bashrc
当我们复制一个文件时,可以复制它所有的属性,但是没办法复制ctime属性
11.umask文件预设权限
[root@localhost ~]# umask 0022 看后三个数字 [root@localhost ~]# umask -S u=rwx,g=rx,o=rx
7减去已经有的权限的数字放在umask -S下面表示默认的权限
umask 002代表 拥有者拥有全部权限 同组拥有全部权限 其他人拥有读和执行的权限

文件默认权限是-rw-rw-rw-
12.文件隐藏属性
chattr(配置文件隐藏属性)
尝试再/tmp底下建立文件,并加入i的参数,尝试删除
[root@localhost ~]# cd /tmp [root@localhost tmp]# touch attrtest //建立空文件 [root@localhost tmp]# chattr +i attrtest //给予i的属性 [root@localhost tmp]# rm attrtest //尝试删除 rm: remove regular empty file ‘attrtest’? y rm: cannot remove ‘attrtest’: Operation not permitted [root@localhost tmp]# chattr -i attrtest //删除
lsattr(显示文件隐藏属性)
-a:将隐藏文件展示出来
-d:如果是目录,仅列出目录本身属性而不是目录内的文件名
-R:连同目录的数据一起列出来
[root@localhost tmp]# chattr +aiS attrtest [root@localhost tmp]# lsattr attrtest --S-ia---------- attrtest
13.文件特殊权限 SUID,SGID,SBIT
s这个标志出现在rwx中的x上,会替代x
这个s是一个特殊权限
Set UID(SUID)得到所有者的支持:
(1)仅对二进制有效,不可以用在脚本上,因为脚本可能执行的是二进制文件,但脚本本身可能不是二进制。
(2)需要对该文件有执行权限,需要有x
(3)本权限仅在执行该程序的过程中有效
(4)执行者拥有该程序拥有者的权限
Set GID(SGID)得到组的支持:
当文件在执行的时候拥有者x的项目为SUID,那s在群组里面被叫做SGID
当-rwx--s--x
(1)对二进制有效
(2)程序执行者对该程序来说具备x权限
(3)执行者在执行中将会获得该程序组的支持
SGID也能用在目录树,当一个目录设定了SGID,他将有这几个功能:
(1)用户对此目录有r和x权限,用户可以进入这个目录
(2)用户对他的有效群组会变成该目录的群组
(3)如果在文件夹上有这个东西,在文件夹上面建的群组和外面是一个群组
Sticky Bit(SBIT):
有一个目录上面有这个权限之后,甲进来创建的文件归甲管,除了管理员别人都删除不了
SUID 4 SGID 2 SBIT 1
[root@localhost tmp]# cd /tmp [root@localhost tmp]# touch test [root@localhost tmp]# chmod 4755 test;ls -1 test
4755中的4就是由这几个特殊权限相加
除了数字,也可以用符号来处理
SUID为u+s
SGID为g+s
SBIT为o+t
将权限设定成-rws--x--x的样子
[root@localhost tmp]# cd /tmp [root@localhost tmp]# touch test [root@localhost tmp]# chomd u=rwxs,go=x test;ls -l test bash: chomd: command not found... Similar command is: 'chmod' -rws--x--x. 1 root root 0 Jul 22 09:34 test
加上SGID和SBIT在上述的文件权限中:
[root@localhost tmp]# chmod g+s,o+t test;ls -l test
-rws--s--t. 1 root root 0 Jul 22 09:34 test
14.观察文件类型file 列出详细信息
[root@localhost tmp]# file ~/.bashrc /root/.bashrc: ASCII text [root@localhost tmp]# file /usr/bin/passwd /usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=1e5735bf7b317e60bcb907f1989951f6abd50e8d, stripped [root@localhost tmp]# file /var/lib/mlocate/mlocate.db /var/lib/mlocate/mlocate.db: data
15.脚本文件名搜索
which(寻找[执行档]在哪个位置) 在一般情况下可执行程序的那几个文件夹下去搜寻
只能找二进制 找不到脚本 在几个特定目录下去搜索 优点:找的快,缺点 不一定找得到
16.文件档名搜寻
whereis (文件或目录名称)在几个特定的目录下去搜索 优点:找的快,缺点:不一定能找到
-l:列出whereis查询的几个主要目录 -b:只找binary格式文件 -m:找说明文档 -s:只找source来源文件 -u:搜寻不在上述三个项目中的其他特殊项目
locate 在一个数据库里面去找

经由数据库来搜寻,数据库默认每天更新一次
updatedb 可手动更新数据库
find(什么都可以搜索)
1.与时间有关 -mtime n :n为数字,代表在n天之前的[一天之内]被更动过内容的文件 -mtime +n:列出在n天之前(不含n天本身)被更动过内容的文件 -mtime -n: 列出在n天之内(含n天本身)被更动过内容的文件档名 -never file:file为存在的文件,列出比file还要新的文档名
find / -mtime 0 从当前这个时间点以前推24小时,0代表的目前时间
寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
find /etc -newer /etc/passwd
2.与组名有关的参数
-user name:找出账号为name的文件
-group name :找所拥有组的
-nouser:寻找文件拥有者不存在/ete/passwd的人
-nogroup:找没有组的
3,与文件权限及名称有关的参数
-name filename:搜寻文件名为ilename的文件
-size [+-]SIZE:搜寻比SIZE还要大(+)或小(-)的文件,这个SIZE的规格有:
c:代表byte k:代表1024bytes,
要找比50KB还要大的文件,[-size +50k]
-tupe TYPE: 搜寻文件的类型为TYPE的,类型主要有:一般正规文件(f),装置文件(b,c),目录(d)
连接档(l)
-perm mode :搜寻文件权限[刚好等于]mode的文件,这个类似chmod的属性值
-perm -mode:必须完全攘括mode权限
-perm /mode:包含任意mode权限

不允许运用命令集

浙公网安备 33010602011771号