学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第7章 Linux档案与目录管理 笔记

Linux目录与路径

特殊的目录

   .  代表当前目录
   ..  代表上级目录
   -   代表前一个工作目录
   ~  代表(目前登录用户)home目录  如当前登录人为master则代表(/home/master)

常见的处理目录的指令

  • cd 切换目录
  • pwd 显示当前目录
  • mkdir 建立一个新目录
  • rmdir 删除一个空的目录
cd (Change Directory) 
 cd ~master 进入master的home目录;   cd 回到登录人员home目录

pwd (Print Working Directory) [-P] 显示当前路径   
  pwd -P(P是大写)显示实际路径而不是链接路径

mkdir [-mp] 新建目录       
mkdir [-mp] 目录名称     -m:设置目录权限    -p:建立递归目录(包括所需上层目录)

rmdir [-p] 删除目录  
mkdir[-p] 目录名称 -p 连同上级空目录一起删除

复制、删除和移动

  • cp(copy)
  • rm(remove)
  • mv(move)

cp [-adfilprsu] 源文件 目标文件

cp [-options] source1 source2 source3 source4 ... directory



rm [-fir] 文件或目录


mv [-fiu] source directory
mv [-option] source1 source2 source3 source4 ... directory


另外,获取文件的文件名,或者路径名还有两个命令:basename filename 和 dirname filename


查看文件内容

查看文件内容有以下这些常用命令

cat  由第一行开始显示档案内容 
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写! 
nl   显示的时候,顺道输出行号! 
more 一页一页的显示文件内容 
less 与 more 类似,但是比 more 更好的是,他可以往前翻页! 
head 只看头几行 
tail 只看尾巳几行 
od   以二进制的方式读取文件内容! 

cat(concatenate)[-ABeNTV]



nl [-bnw] 文件

more 和 less 命令能提供一页一页的翻页查看功能

more  filename
1、空格键 (space):代表向下翻一页; 
2、Enter         :代表向下翻『一行』; 
3、/字符串         :代表在这个显示癿内容弼中,向下搜寻『字符串』这个关键词; 
4、:f            :立刻显示出文件名以及目前显示的行数; 
5、q             :代表立刻离开 more ,不再显示该档案内容。 
6、b 或 [ctrl]-b :代表往回翻页,不过过这个命令对文件有用,对管线无用。 

less filename(逐页翻动)
1、空格键    :向下翻一页; 
2、[pagedown]:向下翻一页; 
3、[pageup]  :向上翻一页; 
4、/字符串     :向下搜寻『字符串』
5、?字符串     :向上搜寻『字符串』 
6、n         :重复前一个搜寻 (与 / 或 ? 有关!) 
7、N         :反向的重复前一个搜寻 (与 / 或 ? 有关!) 
8、q         :离开 less 这个程序; 
9、j           :向下一行
10、k :向上一行

修改文档时间或创建新文档:touch

在使用ls命令时  可以看到很多时间,其实主要的就是以下三个:默认显示的是mtime
  • modification time (mtime)在修改文件内容时改变
  • status time (ctime)在文档状态发生改变时变化,例如修改文档权限
  • access time (atime)在文档内容被读取时修改,例如cat 文件
touch [-acdmt] 文件
-a :修改access time;
-c :修改文件时间,若该文件不存在则不建立新文件;
-d :后面可以接要修订的日期而不是使用当前时间,也可以用 --date="日期或时间"
-m:修改mtime;
-t :后面可以接需要修改的时间,格式为[YYMMDDhhmm]

文件和目录的默认权限和隐藏权限

除了基本 r, w, x权限外,在 Linux的Ext2/Ext3 文件系统下,我们还可以设定其他的系统隐藏属性,
这部份可使用 chattr 来设定,而以 lsattr 来查看,最重要的属性就是可以设定其不可修改的特性!
就连文件的拥有者都不能进行修改 这个属性是相当重要的,尤其是在安全机制上面 (security)! 

文件预设权限:umask

umask 就是指定[目前用户在建立文件或目录时候的权限默认值]。

查看的方式有两种,一种是直接输入umask可以产看到数字形态的权限设定分数,一种是加入-S(Symbolic),就会以符号的形式显示出权限。但是可以看到umask有四组数字,这里的第一个就是特殊权限的权限,后三个就是user group 和other了。

需要注意的是,在默认权限的属性上,目录与文件是不一样的,x对于目录来说是很重要的,但是一般的文件是不需要x的,因此默认情况下:
       如果是文件,则预设的是没有X权限的,只有rw,因此最大值为666 默认的是 -rw-rw-rw-
       如果是目录的话,则是可以进入的,有X权限,因此默认为777 drwxrwxrwx
但是需要注意的是!!!umask的分数指的是[该默认权限需要扣除的权限!]因为r、w、x分别是4、2、1.
所以当要去除掉写的权限时,就是输入2.

拿上面的例子来说,因为umask为022,所以user并没有去除任何权限,不过group 和 other都拿掉了2权限,那么,当用户
创建文件时:(-rw-rw-rw-) - (-----w--w-) == > -rw-r--r--
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
下面来试一下


修改umask

例如想让group中拥有w权限


关于umask的设定可以在 /etc/bashrc 查看


文件隐藏属性

chattr (配置文件隐藏属性)

chattr [+-=] [ASacdistu] 文件或目录    i 和 a会比较常使用




lsattr [-adR] 文件或目录


文件的特殊权限 SUID、SGID、SBIT

Set UID

当s标志在文件拥有着(user)的执行位置x上时
SUID 权限仅对二进制程序(binary program)有效; 
执行者对于该程序需要具有 x 的可执行权限; 
本权限仅在执行该程序的过程中有效 (run-time); 
执行者将具有该程序拥有者 (owner) 的权限。 
SUID 仅可用在binary program 上, 不能够用在 shell script 上面

Set GID

当s标志在文件或者目录的(group)的执行位置x上时

SUID可以针对文件和目录设置

SGID 对二进制程序有用; 
程序执行者对于该程序来说,需具备 x 的权限; 
执行者在执行的过程中将会获得该程序群组的支持。


目录设定了 SGID 的权限后,他将具有如下的功能: 
用户若对亍此目录具有 r 和 x 的权限时,该用户能够进入此目录; 
用户在此目录下的有效群组(effective group)将会变成该目录的群组; 
用途:若用户在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。 

Sticky Bit

SBIT仅对于目录有效:
当用户对于此目录具有 w, x 权限,亦具有写入的权限时; 
当用户在该目录下建立档案或目录时,仅有自己和 root 才有权力删除该档案 。

SUID/SGID/SBIT 权限设定

在权限数字前再添加一个数字就可以了
4 为 SUID 
2 为 SGID 
1 为 SBIT 

例如要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在用户权力中,所以是 SUID ,因此, 在原先癿 
755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来设定!

也可以通过符号法来处理,其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t。  

查看文件类型:file

如果想知道文件是什么类型,例如是属亍 ASCII 或者是 data 文件,或者是 binary , 且其中
有没有使用动态函数库 (share library) 等等的信息,就可以利用 file 这个命令来查看。



搜索可执行命令 which [-a] command
搜索文件 whereis或者是locate 如果找不到了再用find
whereis和locate使用数据库来查询的,比较快

whereis [-bmsu] 文件或目录

-b 只查找binary类型文件
-m 只找在说明文件manual路径下的文件
-s  只找source来源文件
-u   搜索不在上面三个目录中的文件

locate [-ir] keyword

-i :忽略大小写差异
-r :后面可以接正则表达式

locate是使用自己的数据库进行查询,因此速度很快。locate数据库建立在/var/lib/mlocate.db
但是数据库是需要更新的,centos 默认的是一天更新一次,如果需要更新数据库可以使用updatedb命令

find

find [PATH] [option] [action] 
find /home -size +500k -exec ls -l {} \;

-exec后面可以接要执行的操作 {}表示find的结果 \;表示结束。 ;千万不能漏掉,不然会提示find: 遗漏“-exec”的参数



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值