linux学习笔记之 文件和目录管理

这里列这些常用的命令提醒一下自己,免得老是会忘记那么几个

cd pwd mkdir rmdir ls mv cp rm cat tac nl more less head tail od

ls -l file                    <==显示的是默认的mtime
ls --time={ctime|atime] file  <==显示指定的时间类型
ls --full-time                <==显示完整的时间 mtime
 
mtime(modification time), ctime(status tim), atime(access time)

#touch [-acdmt] 文件名
选项和参数:
    -a :仅修订 access time;
    -c :仅修改文件的时间,若该文件不存在则不建立新文件;
    -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
    -m :仅修改 mtime ;
    -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]

# touch -d "2 days ago" bashrc <==日期改为2天前
# touch -t 0709150202 bashrc    <==日期改为 2007/09/15 2:02
日期在 atime和mtime 都改变了,但是 ctime则是记录目前的时间!

文件预设权限:umask
#umask    <==查看默认设置
设定umask
#umask 002        <==umask后直接接要减去的权限即可
文件和目录的初始权限:
    文件: (-rw-rw-rw-)
    目录: (drwxrwxrwx)
所以用户建立的文件和目录的权限为
    [文件|目录]初始权限-用户umask
预设 umask 的设定可以参考 /etc/bashrc 这个文件的内容,不过,不建议修改该文件

文件隐藏属性:
不过要先强调的是,chattr 指令只能在 Ext2/Ext3的文件系统上面生效, 其他的文件系统可能就无法支持这个指令了。

chattr (配置文件隐藏属性)

#chattr [+-=][ASacdistu] 文件或目录名称
选项和参数:
+ :增加某一个特殊参数,其他原本存在参数则不动。
- :移除某一个特殊参数,其他原本存在参数则不动。
= :设定一定,且仅有后面接的参数
A :当设定了 A 这个属性时,若你有存取此文件(或目录)时,他的访问时间atime将不会被修改,可避免 I/O 较慢的机器过度的存取磁盘。这对速度较慢的计算机有帮助
S :一般文件是异步写入磁盘的,如果加上 S这个属性时,当你进行任何文件的修改,
该更动会『同步』写入磁盘中。
a :当设定a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root才能设定
c :这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存,对于大文件似乎蛮有用。
d :当dump 程序被执行的时候,设定 d 属性将可使该文件(或目录)不会被dump 备份
i :这个 i 可就很厉害了!他可以是让一个文件『不能被删除、改名、设定连结也无法写入或新增资料!』对于系统安全性有相当大的帮助!只有 root 能设定此属性
s :当文件设定了s属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!
u :和s相反的,当使用u来配置文件案时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!
注意:属性设定常见的是 a和i的设定值,而且很多设定值必须要身为 root才能设定
更多详细使用自行man

由于这些属性是隐藏的性质,所以需要以 lsattr才能看到该属性
lsattr (显示文件隐藏属性)
#lsattr [-adR] 文件或目录
选项和参数:
-a :将隐藏文件的属性也显示出来;
-d :如果接的是目录,仅列出目录本身的属性而非目的内的文件名;
-R :连同子目录的数据也一并列出来

使用 chattr设定后,可以利用 lsattr来查阅隐藏的属性。不过, 这两个指令在使用上必须要特别小心,否则会造成很大的困扰。例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录文件给他设定成为具有 i的属性,那么过了若干天之后, 你突然要新增使用者,即一直无法新增!别怀疑,赶快去将i的属性拿掉吧!

SUID SGID SBIT
Set UID
当 s 这个标志出现在文件拥有者的x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个文件的权限状
态:『-rwsr-xr-x』,此时就被称为 Set UID,简称为 SUID 的特殊权限。SUID的功能和限制:
    仅对二进制程序有效;
    执行者对于该程序需要具有x的可执行权限;
    本权限只在执行该程序的过程中有效(run-time);
    执行者将具有该程序拥有者的权限。
另外,SUID仅可以用在二进制程序上,不可以用在shell script上。

Set GID
当 s 这个标志出现在文件群组的x 权限时就称为 Set GID,简称为 SGID 的特殊权限。

用于二进制程序:
    执行者对于该程序需要具有x的可执行权限;
    本权限只在执行该程序的过程中有效(run-time);
    执行者将具有该程序群组的权限。

用于目录,此时:
        用户若对于此目录具有r与x权限时,该用户能够进入此目录;
        用户在此目录下的有效群组将变成该目录的群组;
        用途:若用户在此目录下具有w权限,则用户新建的新文件的群组与此目录的群组相同

Sticky Bit :
        只针对目录有效:
            当用户对于此目录具有w,x权限,亦即具有写入权限时;
            当用户在该目录下建立文件或目录,仅有用户自己与root才有权力删除该文件或目录。
数值代表:
    SUID    4
    SGID    2
    SBIT    1

观察文件类型:file
#file file

指令和文件的搜寻:
因为我们常常需要知道那个文件放在哪里,才能够对该文件迚行一些修改或维护等动作。有些时候某些软件配置文件的文件名是不变的,但是各 distribution 放置的目录则不同。此时就得要利用一些搜寻指令将该配置文件的完整文件名捉出来,这样才能修改
脚本文件名的搜寻:
我们知道在终端机模式当中,连续输入两次[tab]按键就能够知道用户有多少指令可以下达。那你知不知道这些指令的完整文件名放在哪里?举例来说,ls 这个常用的指令放在哪里呢? 就透过 which或type来寻找!
# which [-a] command
选项和参数:
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
 which 预设是找 PATH 内所规范的目录

文件文件名的搜寻:
whereis (寻找特定文件)
# whereis [-bmsu] 文件或目录名
选项和参数:
-b :只找 binary 格式的文件
-m :只找在说明文件 manual路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件

#locate [-ir] keyword
选项和参数:
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式
whereis和locate是经由数据库来搜寻的,而数据库的建立默认是在每天执行一次 (每个distribution
都不同,CentOS 5.x 是每天更新数据库一次),所以当你新建立起来的文件, 即还在数据库更新之前搜寻该文件,那么 locate 会告诉你『找不到』,因为必须要更新数据库,手动更新locate 数据库的方法非常简单,直接输入『 updatedb 』就可以了, updatedb 指令会去读取 /etc/updatedb.conf 这个配置文件的设定,然后再去硬盘里面进行搜寻文件名的动作, 最后就更新整个数据库文件。因为updatedb会去搜寻硬盘,所以当你执行 updatedb 时,可能会等待数分钟的时间。
    
updatedb:根据 /etc/updatedb.conf的设定去搜寻系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件;
locate:依据 /var/lib/mlocate内的数据库记载,找出用户输入的关键词文件名。

find命令:
#find [PATH] [option] [action]
选项和参数:
1. 和时间有关的选项:共有 -atime, -ctime 和 -mtime,以 -mtime 说明
-mtime n     :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n     :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
-mtime -n     :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名

2.和使用者或组名有关的参数:
uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID是记录在/etc/passwd里面和账号名称对应的数字。
-gid n :n 为数字,这个数字是组名的ID,亦即 GID,这个 GID 记录在/etc/group。
-user name :name 为使用者账号名称喔!例如 dmtsai
-group name:name 为组名喔,例如 users ;
-nouser:寻找拥有者不存在 /etc/passwd 的文件
-nogroup :寻找拥有群组的不存在于/etc/group的文件
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的,在这个时候,就可以使用
-nouser 和 -nogroup 搜寻。

3.和文件权限及名称有关的参数:
-name filename:搜寻文件名为 filename 的文件;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE的规格有:
    c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB还要大的文件,就是『 -size +50k 』
-type TYPE:搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),装置文件 (b, c), 目录 (d),
 连结档 (l), socket (s),及 FIFO (p) 等属性。
-perm mode :搜寻文件权限『刚好等于』 mode的文件,这个 mode 为类似chmod的属性值,举例来说,
-rwsr-xr-x属性为 4755
-perm -mode :搜寻文件权限『必须要全部包括 mode 的权限』的文件,举例来说,我们要搜寻 -rwxr--r--,亦即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经包括了 -rwxr--r-- 的属性了。
-perm +mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,
我们搜寻-rwxr-xr-x ,亦即-perm +755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在

4. 额外可进行的动作:
-exec command :command 为其他指令,-exec 后面可再接额外的指令处理搜寻到的结果。
-print:将结果打印到屏幕上,这个动作是预设动作
例如:
# find / -perm +7000 -exec ls -l {} \;
该范例中特殊的地方有 {} 以及 \; 还有 -exec 这个关键词,这些东西的意义为:
{} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;
-exec 一直到 \; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是find 指令内的额外动作。
在本例中就是『 ls -l {} 』!因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。

另外,find 还可以利用通配符来找寻文件名呢!
举例来说,你想要找出 /etc 底下文件名包含 httpd的文件, 那么你就可以这样做:
#find /etc -name ‘*httpd*‘
不过由于find 在寻找数据的时候是搜寻硬盘,所以没事情不要使用 find

时间: 2024-07-31 14:33:16

linux学习笔记之 文件和目录管理的相关文章

Linux 程序设计学习笔记----POSIX 文件及目录管理

转载请注明:http://blog.csdn.net/suool/article/details/38141047 问题引入 文件流和文件描述符的区别 上节讲到ANSI C 库函数的实现在用户态,流的相应资源也在用户空间,但无论如何实现最终都需要通过内核实现对文件的读写控制.因此fopen函数必然调用了对OS的系统调用.这一调用在LINUX下即为open, close, read, write等函数.这些都遵循POSIX标准. so,在linux系统中是如何通过POSIX标准实现对文件的操作和目

Linux System Programming 学习笔记(八) 文件和目录管理

1. 文件和元数据 每个文件都是通过inode引用,每个inode索引节点都具有文件系统中唯一的inode number 一个inode索引节点是存储在Linux文件系统的磁盘介质上的物理对象,也是LInux内核通过数据结构表示的实体 inode存储相关联文件的元数据 ls -i 命令获取文件的inode number /* obtaining the metadata of a file */ #include <sys/types.h> #include <sys/stat.h>

CentOS学习笔记--基本命令--文件与目录管理

Linux基本命令--文件与目录管理 本节节选自鸟哥的 Linux 私房菜 -- 基础学习篇目录  第七章.Linux 文件与目录管理  ls(文件与目录的检视) ls命令就是list的缩写,ls可以说是最常用命令,因为我们随时都要知道文件或者是目录的相关属性. [[email protected] ~]# ls [-aAdfFhilnrRSt] 目录名称 [[email protected] ~]# ls [--color={never,auto,always}] 目录名称 [[email p

Linux学习笔记3-文件与目录管理一

目录的相关操作 cd命令用来切换工作目录,可以用相对目录,也可以用绝对目录:~表示当前用户的主目录,-表示上一个工作目录,有点类似windows的后退,.表示当前目录,..表示上层目录. pwd命令用来显示当前的工作目录,-p参数可以显示非连接文件的路径. mkdir用来新建目录,-m参数可以直接指定新建目录的权限而不看默认的,-p参数可以递归的把每一层的目录一次都创建出来. mkdir -m 711 test2 mkdir -p test1/test2/test3/test4 rmdir用来删

Linux学习笔记之文件管理,用户管理

学而不用,总是忘记,今天又整理一下,记在这里,方便以后自己查看 常用操作命令 目录常用操作命令: pwd, cd, ls, mkdir, rmdir, tree. 文件常用操作命令: find,locate, whereis, which, touch, file, cp, rm,mv,ln,cat,tac,head,tail,more,less,grep,wc. 用户及用户组管理 Linux系统中用户分为3类:root用户,普通用户和虚拟用户.其中虚拟用户是不具备登录系统的能力,但却是系统运行

Linux学习笔记(6)-工作管理

什么是工作管理 工作来自job命令的翻译,job命令可以查看后台工作的进程.举例来说什么是工作管理,当你要打包一个比较大的目录时,很耗时间,但是你同时又需要使用别的命令.你会想我可以到开几个终端进行登录.在/etc/security/limits.conf里面可以设定使用者同时可以登入的连接数,如果设为1,那不是没辙了?由于耗时的打包命令并不需要与用户进行交互,可不可以让程序在后台打包呢?答案是可以的. 将进程放入后台运行 使用"&"符号让命令在后台工作 #tar -zcf e

python学习笔记九——文件与目录

1.python进行文件读写的函数是open或file类 mode:r  只读 r+   读写 w  写入,先删除原文件,再重新写入,如果文件没有则创建 w+  读写,先删除原文件,再重新写入,如果文件没有则创建(可写入和输出) a  写入,在文件末尾追加新的内容,文件不存在则创建 a+  读写,在文件末尾追加新的内容,文件不存在则创建 b  打开二进制文件,可与r,w,a,+结合使用 U  支持所有的换行符号,"\r","\n","\r\n"

Linux学习笔记(5)-进程管理

进程简介 进程是正在执行的一个程序或命令,每一个进程都有自己的地址空间,并占有一定的系统资源.感性的认识,进程就是一个正在运行的程序 进程管理的作用 判断服务器的运行状态 查看系统中有哪些进程 杀死进程(很少用,一般会采用正常的关闭手段) 查看系统所有的进程 #ps aux #ps -le 输出信息各字段的含义 USER:进程是由哪个用户产生的 PID:进程的ID号 %CPU:进程占用CPU资源的百分比 %MEM:进程占用物理内存的百分比 VSZ:该进程占用虚拟内存的大小,单位KB RSS:该进

linux 学习笔记之文件与管理

前言: 对于windows来说,文件的系统管理都是非常简单的(这个应该有一个捂脸),通常就是重命名,复制,移动,删除,查看文件属性,查看文件内容,寻找文件.其实在图形化行中的linux也是有这样子功能,但是几乎没有多少人会去使用图形化的linux(一脸懵B).命令行中的重命名,复制,移动,删除是如何的呢?接下来为大家一一介绍. 绝对路径和相对路径 绝对路径:由根目录(/)开始写起的档名或目录名称,例如/home/dmtsai/.bashrc; 相对路径:.相对于目前路径的档名写法例如./home