2 文件目录与管理

目录

2.1&2.2 系统目录结构

2.3 ls命令

2.4 文件类型   

2.5 alias命令

2.6 相对和绝对路径   

2.7 CD命令    

2.8 创建和删除目录mkdir rmdir

2.9 rm命令   

2.10 环境变量PATH

2.11 cp命令   

2.12 mv命令

2.13 文档查看cat_more_less_head_tail

2.14 文件或目录权限chmod  

2.15 更改所有者和所属组chown   

2.16 umask

2.17 隐藏权限lsattr_chattr

2.18 特殊权限set_uid

2.19 特殊权限set_gid

2.20 特殊权限stick_bit

2.21 软链接文件

2.22 硬链接文件

2.23 find命令(上)

2.24 find命令(中)

2.25 find命令(下)

2.26 文件名后缀

2.27 Linux和windows互传文件


心得:

1.记笔记的截图可以直接复制命令行的显示内容,节省时间

2.学习的进度比较快,笔记比较生疏,熟悉了就会快

3.提前预习,尽快往后学,这样才轻松

2.1&2.2 系统目录结构

tree -L 1 /
which alias #查出绝对路径 在path找
which ls # alias ls='ls --color=auto'
ls -l #详细列表
ls -h #合适单位大小显示
ls -a #显示隐藏文件
ls -t #按照时间排序,最新的在最上

ls #list 列取目录,默认家目录
ls /
ls /root/ #root家目录
ls /root/.ssh/authorized_keys #创建密匙文件、公钥
useradd panyu
ls /home/panyu/
useradd lingling
ls /home/lingling/ #sshd的配置文件决定公钥名称authorized_keys
tree #树形显示,需先安装 tree命令用来显示文件的目录结构(用命令:yum install -y tree 安装此命令),-L 指定查看的层次:tree -L 3 目录,我们可以用man 命令来查看tree的详细用法。
yum install -y tree #自动安装并有依赖包,不交互
tree -hep #显示简略帮助
man tree #用来显示帮助文档,具体含义
tree -L 2 / #根目录
ls /bin/ #/bin/ /sbin/ /usr/bin/ /usr/sbin/ 存放常用命令,sbin:super bin  超级用户命令 /usr/bin/ /usr/sbin/做了软链接
ls /bin 
ls /boot/ #系统内核
ls /dev/ #系统文件 硬盘、鼠标、键盘
ls /etc/ #系统配置文件
ls /etc/ssh/sshd_config #ssh配置文件
ls /home/ #家目录
ls /lib #/lib 库文件 /lib64 64位库文件 32位内存3.2g内存数
ldd /bin/ls #看ls命令依赖哪些库
ls /media/ #底下放置的就是可移除的装置,ru盘临时挂在目录,包括软盘、光盘、DVD
ls /mnt/ #mount 可直接理解为“挂载”挂接光驱、USB设备的目录,加载后,会在mnt里多出相应设备的目录。有了mdia就临时挂载
ls /opt/ #空目录
ls /proc/ #进程文件与目录 进程ID
ls /proc/1 #1号进程文件
ls -l /proc/1 #1号进程文件具体
ls /run/ #进程产生的文件,一重启就消失
ls /srv/
ls /var/
ls /var/ #log系统日志
ls /var/ #包含系统一般运行时要改变的数据

  • /:根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。
  • /bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。
  • /boot: 该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小200M即可。
  • /dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件,包括字符设备和块设备等,常用的是挂载光驱mount /dev/cdrom/mnt。 
  • /etc: 系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11(X Window系统有关)、/etc/sysconfig(与网络有关)、/etc/xinetd.d修改配置文件之前记得备份。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。
  • /home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,~表示当前用户的宿主目录,~test表示用户test的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。
  • /lib,/usr/lib,/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,该目录下存放了各种编程语言库典型的linux系统包含了C、C++和FORTRAN语言的库文件。/lib目录下的库映像文件可以用来启动系统并执行一些命令,目录/lib/modules包含了可加载的内核模块,/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下
  • /lost+fount: 在EXT2或EXT3文件系统中,当系统意外崩溃或机器意外关机,产生的一些文件碎片放在这里。在系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方法来修复,或者移动文件到运来的位置上
  • /mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点,如floppy,cdrom。这样当挂载了一个设备如光驱时,就可以通过访问目录/mnt/cdrom下的文件来访问相应的光驱上的文件了。
  • /opt: 给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下。
  • /proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。
  • /root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
  • /sbin,/usr/sbin,/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
  • /tmp: 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。存放临时文件目录,一些命令和应用程序会用的到这个目录。该目录下的所有文件会被定时删除,以避免临时文件占满整个磁盘。
  • /srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
  • /usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。
  • /usr/share/man:  程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间。
  • /var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。/var/log/message: 所有的登录文件存放目录。/var/spool/mail: 邮件存放的目录。 /var/run: 程序或服务启动后。建议单独分区,设置较大的磁盘空间。

2 文件目录与管理_第1张图片


2.3 ls命令

ls -l #第二列数字显示多少个文件使用了相同inode,表示是一个文件,如果是文件则表示有几个子目录,包括隐藏文件和.和..
ls -i anaconda-ks.fg #加文件名,inode号:文件属性权限所属大小时间等是信息存储在inode。唯一性。
ls -a #查看所有隐藏文件,.开头的都是隐藏文件
ls -la
ls -lt #t表示时间,按照时间排序
ls -d
ls -ld #只列目录本身,如:ls -ld /
ld -lh #大小自动抓换合适单位
ll #ls -l
alias
which ll 
/bin/ls /

  • ls 列出当前目录下的文件和目录,不包含隐藏文件
  • ls -a 列出所有文件和目录(包含隐藏文件)
  • ls -l 列出目录或文件的详细信息,包含权限,所有者,所属组以及文件创建日期时间(包含隐藏文件)
  • ls -lt 时间会从最近的开始排序
  • ls -lh  h显示文件大小如(kb )
  • ls -i 显示inode信息

组合用法;ls -lth 显示权限,所有者,所属组,隐藏文件,时间排序,大小单位 

2 文件目录与管理_第2张图片

2 文件目录与管理_第3张图片
2 文件目录与管理_第4张图片
2 文件目录与管理_第5张图片


2.4 文件类型   

2 文件目录与管理_第6张图片

 

第一列:inode索引节点号
第二列:文字类型及权限(共10个字符,第一个字符为类型,后9个字符为文字权限)
第三列:硬连接数(详细参看ln命令的讲解)
第四列,第五列:归属组及所属组
第六列:文件大小
第七列,第八列,第九列:最近修改时间。
第十列:文件或目录名。

第一列第一个字母表示文件类型:
d 表示目录directory

-普通文件:文本文档、二进制

l 链接文件(粉绿色) :软链接文件类型

b 块设备(比如磁盘)

c串行端口设备(键盘、鼠标等等):(字体×××):字符串设备类型

s 套接字文件,用于进程之间通信 (紫红色)

 


2.5 alias命令

  which 查看命令绝对路径和别名

which ls #which 查看命令绝对路径和别名
/bin/ls #使用绝对路径来使用命令(不过没颜色显示)
alias #查看系统所有命令的别名
alias  abc='ls -lth' #自定义别名
unalias abc #删除别名命令 unalias
echo $PATH #就是系统命令一系列的路径

2 文件目录与管理_第7张图片2 文件目录与管理_第8张图片2 文件目录与管理_第9张图片


2.6 相对和绝对路径   

相对和绝对路径
绝对路径:以根目录/写起,如/etc/sysconfig/network-scripts/ifcfg-ens33
相对路径:不是从根写起;(指当前目录)
cd - 是上一次的目录
cd ~是进入家目录 
cd ..进入上一级目录


2.7 CD命令    

cd命令是用来变更当前目录(CD后面跟路径)
pwd显示当前目录所在位置
cd - 可以返回上一次所在目录
cd ..进入上一级目录

[root@localhost tmp]# cd ~
[root@localhost ~]# cd / #进入根目录
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cd ..
[root@localhost sysconfig]# cd ..
[root@localhost etc]# cd ..
[root@localhost /]# cd ..
[root@localhost /]#pwd #显示当前目录


2.8 创建和删除目录mkdir rmdir

mkdir创建目录命令

[root@localhost ~]# mkdir /tmp/aminglinux/
[root@localhost ~]# ll /tmp/aminglinux/
总用量 0
[root@localhost ~]# ll -d /tmp/aminglinux/
drwxr-xr-x. 2 root root 6 12月 17 17:18 /tmp/aminglinux/
[root@localhost ~]# 
加参数-p,可以递归创建
[root@localhost ~]# mkdir -p /tmp/aminglinux/1/2/3
[root@localhost ~]# ll -d /tmp/aminglinux/1/2/3 #只列出目录文件夹而不显示文件
drwxr-xr-x. 2 root root 6 12月 17 17:21 /tmp/aminglinux/1/2/3
[root@localhost ~]# mkdir -pv /tmp/aminglinux/4/5/6 #在递归创建的时候加参数-pv,可视化进程
mkdir: 已创建目录 "/tmp/aminglinux/4"
mkdir: 已创建目录 "/tmp/aminglinux/4/5"
mkdir: 已创建目录 "/tmp/aminglinux/4/5/6"


删除目录的命令rmdir

[root@localhost ~]# rmdir /tmp/aminglinux/1
rmdir: 删除 "/tmp/aminglinux/1" 失败: 目录非空

从上面的提示可以看出,rmdir只能删除空目录,如果里面有文件或者其他目录,那么它将不能删除。如果要删除这个文件夹,必须要将文件夹里面的全部东西都删除。

删除命令rm #可以删除非空目录

  • -r 可以删除级联目录不过会弹询问删除
  • -f 强制删除不提示
  • rm -rf {路径} 强制删除不询问。

[root@localhost ~]# rm /tmp/aminglinux/1/3.txt
rm:是否删除普通空文件 "/tmp/aminglinux/1/3.txt"?
你在删除文件或目录的时候他会询问你是否删除,如果单个的文件可以,如果文件很多的话那就会很麻烦。这时我们在命令后面加参数-f,就不会再询问了
[root@localhost ~]# rm -f /tmp/aminglinux/1/3.txt
[root@localhost ~]# rm -r /tmp/aminglinux/1/2/3/ #删除文件夹
rm:是否删除目录 "/tmp/aminglinux/1/2/3/"?
这样删除还是会先询问,我们在加参数-f,这样就不会再有询问的提示了
[root@localhost ~]# rm -fr /tmp/aminglinux/1/2/3/

工作中先可以利用mv移走,如果不出问题可以rm删除,不建议用rm直接删除。

history #查看之前使用命令的历史

 

2.9 rm命令   

删除命令rm #可以删除非空目录

  • -r 可以删除级联目录不过会弹询问删除
  • -f 强制删除不提示
  • rm -rf {路径} 强制删除不询问。

[root@localhost ~]# rm /tmp/aminglinux/1/3.txt
rm:是否删除普通空文件 "/tmp/aminglinux/1/3.txt"?
你在删除文件或目录的时候他会询问你是否删除,如果单个的文件可以,如果文件很多的话那就会很麻烦。这时我们在命令后面加参数-f,就不会再询问了
[root@localhost ~]# rm -f /tmp/aminglinux/1/3.txt
[root@localhost ~]# rm -r /tmp/aminglinux/1/2/3/ #删除文件夹
rm:是否删除目录 "/tmp/aminglinux/1/2/3/"?
这样删除还是会先询问,我们在加参数-f,这样就不会再有询问的提示了
[root@localhost ~]# rm -fr /tmp/aminglinux/1/2/3/

工作中先可以利用mv移走,如果不出问题可以rm删除,不建议用rm直接删除。

history #查看之前使用命令的历史


2.10 环境变量PATH

环境变量PATH(类似自定义命令):命令是一个文件,命令在PATH里就无须敲绝对路径
示例;
首先查找ls命令绝对路径,复制ls文件在/tmp目录下自定义ls2,此时用绝对路径是可以使用

现在更改为不使用绝对路径使用,需要添加到$PATH环境变量中。/tmp/已经添加到PATH变量中了。这时使用变名可以使用

2 文件目录与管理_第10张图片

还需要到/etc/profile 里添加一次,不然重启失效;
 在末尾添加PATH=$PATH:/tmp/

2 文件目录与管理_第11张图片

删除方法:

  1. 在/etc/profile 删除添加的值重启系统
    2 文件目录与管理_第12张图片
  2. 重新PATH赋值原来的参数

2.11 cp命令   

CP格式:CP{选项}{来源文件}{目的文件}
复制目录方式;(复制目录需要加-r)

  • 当目的目录存在时,则复制到该目录文件下
  • 当目的目录不存在时,则重命名一个目录
  • 当目的文件存在时,会询问是否覆盖
  • 当目的文件不存在时,则拷贝过去

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

实例:
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

cp ../mary/homework/assign .

所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
将文件file复制到目录/usr/men/tmp下,并改名为file1

cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh

cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。

查看上一行,最后一个命令: !$是查看上一行的最后一个命令,也就是/tmp/wzq1

cp -r /tmp/wzq/ /tmp/wzq/
tree $! #查看上一行,最后一个命令。!$是查看上一行的最后一个命令,也就是/tmp/wzq1


2.12 mv命令

mv命令:移动
格式:mv{选项}{来源文件或目录}{目的文件或目录}
当目的文件不存在时,则重命名
当目的目录不存在时,则重命名一个目录
跟CP命令方式一样。

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

将文件ex3改名为new1

mv ex3 new1

将目录/usr/men中的所有文件移到当前目录(用.表示)中:

mv /usr/men/* .

把mv放在后面,移动时不再询问。

2 文件目录与管理_第13张图片


2.13 文档查看cat_more_less_head_tail

cat 
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏按Ctrl+Q键可以恢复滚屏按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;

more
不过这个命令可以查大文件,按空格可以翻页

less
按J可以向下翻,按K可以按上翻,按下/键输入字符串查找,灰色的就是查找出来的字符串!

head
用于显示文件前10行;head -n 2 {文件名}:查看前2行

tail
用于显示文件最后10行;head -n 2 {文件名}:查看后2行;加-F参数可以动态,实时查看更新信息!


 

2.14 文件或目录权限chmod  

文件和目录权限chmod
chmod 命令作用:更改文件权限

输入ls - ld {查询目录属性要加d}

[root@localhost tmp]# touch 333.txt
[root@localhost tmp]# ls -l 333*
-rw-r--r--. 1 root root 0 8月   4 16:45 333.txt

r代表可读权限 数字表示4;w代表写入权限 数字代表2;x代表可执行文件  数字代表1
第一种更改权限方法;chmod  {数字}{文件}
级联更改权限+R {chmod -R {权限数字} {目的文件}}
示例:途中sky权限和ing权限不一样、利用-R命令可以级联更改sky下的子目录和文件的权限

[root@localhost tmp]# chmod 700 333.txt 
[root@localhost tmp]# ls -l 333.txt
-rwx------. 1 root root 0 8月   4 16:45 333.txt

chmod还有一个“a+”“a-”选项参数,给三段都加上权限

[root@localhost tmp]# chmod a+x 333.txt
[root@localhost tmp]# !ls
ls -l 333.txt
-rwx--x--x. 1 root root 0 8月   4 16:45 333.txt


2.15 更改所有者和所属组chown   

  • chown命令作用:更改所有者和所有组 change owner

命令格式{chown {账户名:组名} {文件名}
示例:test为账号 组名为root
示例:级联更改方法加-R

[root@localhost tmp]# chown panyu001 333.txt
[root@localhost tmp]# !ls
ls -l 333.txt
-rwx--x--x. 1 panyu001 root 0 8月   4 16:45 333.txt

[root@localhost tmp]# lsattr test01/111.txt
----i----------- test01/111.txt
[root@localhost tmp]# chattr -i test01/111.txt
[root@localhost tmp]# chown -R panyu:panyu001 test01
chown: 无效的用户: "panyu:panyu001"
[root@localhost tmp]# chown -R lingling:panyu001 test01
chown: 无效的用户: "lingling:panyu001"
[root@localhost tmp]# chown -R panyu001:panyu test01
[root@localhost tmp]# ls -l test01
总用量 4
-rw-r--r--. 1 panyu001 panyu 12 7月  31 21:24 111.txt
-rwxr-xr-x. 1 panyu001 panyu  0 8月   4 17:27 222

  • chgrp命令 (所属组,change group)

命令格式:chgrp [组名] [文件名]


2.16 umask

umask:文件和目录的默认权限022
创建目录默认权限是777;创建文件默认权限是666
以上权限是{目录文件默认权限}-{设定umask默认权限}

  • 目录减法777{rwx-rwx-rwx}-022{----w---w-}=744{rwx-r-x-r-x}
  • 文件减法666{rw--rw--rw-}-022{----w---w-}=644{rw--r---r--}

自定义赋值umask默认权限命令 umask {数字} 


2.17 隐藏权限lsattr_chattr

概念:chattr设置隐藏文件;lsattr查看隐藏文件;隐藏权限 ls -l  看不到
设置隐藏权限的命令位chattr 
2.17隐藏权限 lsattr_chattr

命令chattr格式 : chattr [+-=] [Asaci] [文件或者目录名],其中,+ - =分别表示增加、减少和设定。 各个选项的含义如下:
A :增加该属性后,表示文件或目录的atime(时间)将不可修改,访问时间(access time)
s:增加该属性后,会将数据同步写入磁盘中
a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性。
c:增加该属性后,表示自动压缩该文件,读取时会自动解压。
i:增加该属性后,表示文件不能删除、重命名、设定链接、写入以及新增数据。

[root@zhangzhen-01 ~]# mkdir dior3 #创建一个目录
[root@zhangzhen-01 ~]# chattr +i dior3 #添加不能删除重命名等操作
[root@zhangzhen-01 ~]# touch dior3/test1 #创建文件
touch: 无法创建"dior3/test1": 权限不够 #设定成功,创建不了文件
[root@zhangzhen-01 ~]# chattr -i dior3 #给该权限取消
[root@zhangzhen-01 ~]# !touch #继续创建文件
touch dior3/test1
[root@zhangzhen-01 ~]# ls dior3/test1 #ok,取消成功,正常创建文件
dior3/test1
[root@zhangzhen-01 ~]# chattr +i dior3
[root@zhangzhen-01 ~]# rm -fv dior3/test1 #在这里,如果目录有了“i”权限以后,里面的文件也是删除不了的
rm: 无法删除"dior3/test1": 权限不够



打开写入东西 写不进去,下面提示:你正在更改一个只读的文件 ;写不进去东西 保存不了
查看权限 查看隐藏权限
2 文件目录与管理_第14张图片
新建文件是什么权限也没有的

无法更改名字无法删除
2 文件目录与管理_第15张图片
带~号的为缓存文件 编辑的时候自动创建的缓存文件;在创建也不可以 因为 touch 会更改文件的时间 

去掉隐藏权限然后可以更改编辑
2 文件目录与管理_第16张图片
+a 权限 只能追加不能删除更改 
2 文件目录与管理_第17张图片
只能往文件末尾加东西 重定向也不可以 可以 touch 更改文件时间 内容不更改
2 文件目录与管理_第18张图片
2 文件目录与管理_第19张图片
去掉

给目录加权限 和 给文件加权限一样 不可加入删除东西
如果给目录加了i权限不可以创建新文件或目录 但是如果里面有文件就可以写东西或者重定向追加进去
如果给目录加了a权限 可以创建新文件或目录或者写入追加重定向内容
不可创建目录但不影响给原有文件写东西

lsattr命令
概念:该命令用于读取文件或目录的特殊权限
格式:lsattr [-aRd] [文件/目录名]
选项:

-a:类似于ls -a选项,目录里隐藏文件一同列出
-R:连同子目录的数据一并列出。
-d 查看目录本身

-R可以看到所有目录和子目录的权限
2 文件目录与管理_第20张图片
-d只查看目录本身


2.18 特殊权限set_uid

passwd这个命令是linux中普通用户改密码的命令,他的文件权限是

[root@localhost ~]# which passwd
/usr/bin/passwd
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

这里面多了一个“s”这个权限,这就是set-uid权限。它的作用是只要不是root用户去执行set-uid这个命令时,在执行的那一瞬间临时获得root的身份。前提是这个文件必须是二进制的文件,而且是一个可执行的文件。
哪个如何给文件设置set-uid的权限呢?
我们可以输入chmod u+s 【二进制文件的绝对路径】

 


2.19 特殊权限set_gid

这是作用在组上的权限位。

[root@localhost ~]# chmod g+s /usr/bin/ls
[root@localhost ~]# ll /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

这是让普通用户拥有所属组的权限,他不仅可以作用在文件上,也可以作用在目录上。

[root@localhost ~]# chmod g+s aming
drwxr-sr-x. 2 root root 6 1月 6 09:15 aming

当作用在文件上时,和set-uid是类似的。当做用在目录上时,当你创建子目录或者子文件的时候,创建的子文件和子目录的所属组和该目录的所属组保持一致。


2.20 特殊权限stick_bit

[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 29 root root 4096 1月 8 21:16 /tmp
这个t,这就是stick-bit权限,是防删除位。只有有权限的人才可以删除,比如所有者和root。
这里还有一个知识点,就是你的文件权限是按照目录的权限来执行,而不是按照文件的权限来执行。但是你如果加了stick-bit,你就不能删除了,但是你可以修改。

总结如下:

chmod u+s xxx # 设置setuid权限
chmod g+s xxx # 设置setgid权限
chmod o+t xxx # 设置stick bit权限,针对目录
chmod 4775 xxx # 设置setuid权限
chmod 2775 xxx # 设置setgid权限
chmod 1775 xxx # 设置stick bit权限,针对目录


2.21 软链接文件

相当于windows中的快捷方式,由于软连接所创建的文件为一个独立的新的文件,所以会占用掉indoe与block系统有个/root/crontab,它是/etc/crontab的软连接,如果删掉源文件/root/crontab,那么/etc/crontab这个文件的数据也不能查看了,就好像windows里面的桌面快捷方 式,源文件被删除了,快捷方式也失效了

语法:ln -s  【源文件或目录】  【软件链名字】
软连接总结:
(1)可以应用于目录
(2)可以跨文件系统
(3)不会增加被链接文件的链接次数
(4)大小为指定的绝对路径所包含的字符总数(5)有自己的inode号(6)权限无关紧要


2.22 硬链接文件

 

[硬链接]-->指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户 就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和 其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
语法:ln 【源文件】 【硬连接文件】
硬连接总结:
(1)硬链接的inode相同
(2)只能对文件创建,不能应用于目录
(3)不能跨分区


2.23 find命令---重点

快捷键:

Ctrl + l  :清屏
Ctrl + d :退出终端(相当于执行了:exit 或logout)
Ctrl + c : 强制中断
Ctrl + u : 在命令输入行,删除光标前的字符串
Ctrl + e :  光标移到末尾
Ctrl + a :  光标移到开始

一些搜索的命令:which ,whereis,locate,find
which命令是查找命令是否存在,以及命令的存放位置。
whereis命令只能用于搜索程序名,而且只搜索二进制文件。
locate命令不是实时查找,所以查找的结果不精确,但查找速度很快。
find命令:最强大的搜索

  • which与whereis

[root@mylinux ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls
[root@mylinux ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

  • 安装使用locate

[root@mylinux ~]# yum install -y mlocate
[root@mylinux ~]# locate ls
locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录 (没有文件路径数据库)
[root@mylinux ~]# updatedb (每天自动生成,这里手动生成)
[root@mylinux ~]# locate 123
/root/123 (查找123目录)
/usr/lib/golang/test/fixedbugs/bug123.go
/usr/lib/golang/test/fixedbugs/issue12347.go
/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/media/dvb-frontends/cx24123.ko.xz
/usr/lib64/gconv/IBM1123.so
/usr/share/man/man1/perl5123delta.1.gz
/usr/share/perl5/pod/perl5123delta.pod

  • find基本用法

[root@mylinux ~]# find /etc/ -name "sshd_config" (在/etc/目录下寻找名字叫sshd_config的文件或者目录)
/etc/ssh/sshd_config
[root@mylinux ~]# find /etc/ -name "sshd*" (在/etc/目录下寻找名字前缀是sshd的文件或者目录,其实就是模糊搜索)
/etc/ssh/sshd_config
/etc/systemd/system/multi-user.target.wants/sshd.service
/etc/sysconfig/sshd
/etc/pam.d/sshd
[root@mylinux ~]# find /etc/ -type d -name "sshd*" (指定只要目录)
[root@mylinux ~]# find /etc/ -type f -name "sshd*" (指定文件和目录都显示,l为软链接文件,b为block文件一般在/dev/下)
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/etc/pam.d/sshd
 

stata查看文件详情,详解三个time

[root@mylinux ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1418       块:8          IO 块:4096   普通文件
设备:802h/2050d   Inode:33574978    硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2017-12-23 10:34:56.694021406 +0800
最近更改:2017-12-12 23:42:39.669873370 +0800 (更改文件内容的时间)
最近改动:2017-12-12 23:42:39.669873370 +0800 (改动inum的时间)
创建时间:-
find的 -mtime是文件最近改动的时间,即是文件内容改动
    -atime是最近访问时间
-ctime是最近改动时间,是改动如权限一类文件信息,而不是文件内容


查看一天内发生更改的文件
[root@mylinux ~]# find /etc/ -type f -mtime -1
/etc/resolv.conf
/etc/resolv.conf.save

[root@mylinux ~]# find /etc/ -type f  -mtime -1 -o -name "*.conf" (-o表示或者)

[root@mylinux ~]# mkdir 1
[root@mylinux ~]# touch 1.txt
[root@mylinux ~]# ln 1.txt 1/1.txt
[root@mylinux ~]# ls -l 1.txt 
-rw-r--r--. 2 root root 0 12月 24 14:23 1.txt
[root@mylinux ~]# ls -i 1.txt 
33575016 1.txt
[root@mylinux ~]# find / -inum 33575016
/root/1/1.txt
/root/1.txt

查找一小时以内的更改过的文件
[root@mylinux ~]# find /root/ -type f -mmin -60
/root/1/1.txt
/root/1.txt
查看并用ls -l的方式展现
[root@mylinux ~]# find /root/ -type f -mmin -60 -exec ls -l {} \;
-rw-r--r--. 2 root root 0 12月 24 14:23 /root/1/1.txt
-rw-r--r--. 2 root root 0 12月 24 14:23 /root/1.txt
更改找到文件或文件夹名称
[root@mylinux ~]# find /root/ -type f -mmin -60 -exec mv {} {}.bak \;
[root@mylinux ~]# find /root/ -type f -mmin -60 
/root/1/1.txt.bak
/root/1.txt.bak
查找小于10k的文件
[root@mylinux ~]# find /root/ -type f -size -10k -exec ls -lh {} \;


2.26 文件名后缀

 

Linux下可以自由定义文件后缀名,不存在指定的程序对指定后缀名文件打开,不像Windows。 
类似Linux下的.conf文件都是一种配置文件,但是这只是约定俗成的。
常用的文件后缀名:
1.*.php ------这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;
2.*.so -------这类是库文件;
3.*.doc  *.obt --------这是OpenOffice 能打开的文件;
4..bz2 ------bzip2的压缩文件
5..gz ------gzip的压缩文件
6..tar ------tar打包文件(是包文件不是压缩文件)
7..tbz------tar打包并用bzip压缩文件
8..tgz-----tar打包并用gzip压缩的文件
9..au -----audio文件
10..gif -----gif图象文件
11..html/.htm-----HTML文件
12..jpg-----JPEG图象文件
13..pdf------电子文档(PDF格式的)
14..png-----PNG图象文件
15..ps------postscinpt文件(打印格式文件)
16..txt------纯文本文件
17..wav-----audio文件
18..xpm-----图象文件
19..conf-------配置文件
20..lock-------LOCK文件(用来判断一个文件或设备是否被使用)
21..rpm------REDHATPackage.Manager文件(套件包或软件包)
22..c -------C源程序代码文件
23..cpp------C++源程序代码文件
24..h -------C或C++程序的头文件
25..o------程序目标文件
26..pl------perl脚本文件
27..so-----类库文件


2.27 Linux和windows互传文件

  1. xftp :是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。
  2. winscp :WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统
  3. sz、rz:简单说就是,可以很方便地用这两个sz/rz工具,实现Linux下和Windows之间的文件传输(发送和接收),速度大概为10KB/s,适合中小文件。rz/sz 通过Zmodem协议传输数据。

[root@hao-01 ~]# yum install -y lrzsz #1. yum安装 lrzsz:
[root@hao-01 ~]# sz 1.txt #2. Linux上的文件,传输给windows下:sz 跟文件
[root@hao-01 ~]# rz #3. windows上的文件,传输给Linux下:

 

你可能感兴趣的:(2 文件目录与管理)