Linux档案与目录管理

Linux档案与目录管理
1. 目录与路径
1.1 相对路径与绝对路径
1.2 目录的相关操作: cd, pwd, mkdir, rmdir
 cd [相对路径或绝对路径]
cd ~ [用户]: 切换家目录
cd ~tom/ :切换到tom家目录
cd ~/tom :切换到当前家目录下的tom文件夹
cd - :返回前一个工作目录(可以连续使用,其实就是两个目录之间的切换)




. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表『目前用户身份』所在的家目录
~cenyu 代表 account 这个用户的家目录(account 是个账号名称)




pwd [-P]
显示当前所在目录(print working directory)
接收参数: -P(大写) 显示确实的路径,而不是连接的路径




mkdir [-mp] 目录名称
创建新目录,接收两个参数
-m :配置文件的权限,是直接设定的 mkdir -m 711 test1
-p :帮助你直接将所需的目录递归建立起来 mkdir -p test1/test2/test3  此处会把原本不存在的test2文件也创建出来


rmdir [-p] 目录名称
删除空的目录,不能删除非空目录
接收参数-p:表示连同上层空的目录也一起删除 rmdir -p test1/test2/test3




1.3 关于执行文件路径的变量: $PATH


$PATH 环境变量,$表示后面接的是变量,可以直接调用的命令都必须添加在环境变量里面去


echo $PATH :显示出环境变量里已经存在的文件。
不同文件之间用冒号(:)分隔


PATH="$PATH":绝对路径 
往PATH里面定义一个环境变量 PATH="$PATH":/root  root文件被添加到PATH里面


2. 档案与目录管理
2.1 档案与目录的检视: ls


ls [-aAdfFhilnrRSt] 目录名称
档案与目录的检视,接收的参数很多
-a :全部的档案,连同隐藏档一起列出来
-d :仅列出目录本身,不管目录下面的档案数据
-h :将档案容量以人类易读的方式列出来
-l :长数据串行,包含文档的属性和权限等等
ls [--time={atime,ctime}] 目录名称
--time=atime :显示访问时间
--time=ctime :显示创建时间






2.2 复制、删除与移动: cp, rm, mv


cp [选项] /path1/xx /path2/yy
若yy是一个文件夹,则将xx复制到yy文件夹下;
若yy不存在,则将xx复制到path2下面,并从命名为yy


cp [-asfilprsu] 来源文件(source) 目标文件(destination)
-p :连同档案的属性一起复制过去,而非使用默认属性(备份常用);
-r :递归持续复制,用于目录的复制行为;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身;
-a :相当于 -pdr 的意思,至于 pdr 请参考下列说明;(常用)


rm [-fir] 档案或目录
-f :忽略不存在的档案,不会发出警告;
-i :互动模式,在删除前会询问一下
-r :递归删除!最常用也是最危险的




mv [-fiu] source destination
移动文件到另外一个文件,source可以是多个
-f :force强制的意思,如果目标档案已经存在,不会询问直接覆盖
-i :若目标档案 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在,且(source)比较新,才会更新(update)




2.3 取得路径的文件名与目录名称


basename 完整文件名(包含目录名称和文件名)
获取完整文件名中的最后的档案名
dirname 完整文件名
获取完整文件名中的目录






3. 档案内容查阅:
3.1 直接检视档案内容: cat, tac, nl


cat [-AbEnTv] 文件名
concatenate,将文件全部显示在该条命令下面,从第一行显示到最后一行,适合小文件,大文件的话只会显示最后一屏
-n :打印出行号,连同空白行也会有行号
-b :打印出行号,空白的不会打印




tac 文件名
反向列示,同cat,不同的是,这个查看是从文档的最后一行倒着显示到第一行


nl [-bnw] 文件名
  添加行号打印,同cat -n




3.2 可翻页检视: more, less


more 文件
一页一页的显示档案信息,往下翻的时候有几个命令需要注意一下:
空格键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该档案内容;
b 或 [ctrl]-b :代表往回翻页,不过这动作只对档案有用,对管线无用。


less 档案
也是一页一页的显示,只不过功能比more的功能更多一些,首先推荐这个
空格键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字符串 :向下搜寻『字符串』的功能
?字符串 :向上搜寻『字符串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!),从上到下
N :反向的重复前一个搜寻 (与 / 或 ? 有关!),从下到上
q :离开 less 这个程序;




3.3 资料撷取: head, tail


head [-n number] 档案
取出前面几行
-n :后面接数字,代表显示几行的意思。
head -n 20 /etc/man.config 显示该文件中的前20行,默认情况是前10行
head -n -100 /etc/man.config 去掉后100行的所有。


tail [-n number] 档案
取出档案的后面几行,默认显示最后10行
-n :后面接数字,代表显示几行的意思。
tail -n +100 /etc/man.config 100行以后的信息都会被显示出来




3.4 非纯文本档: od


od [-t TYPE] 档案
用来显示非纯文本文件,-t后面可以接参数
a:利用默认字符串输出   c:利用ASCII输出





3.5 修改档案时间与建置新档: touch


档案的三个是时间:
modification time (mtime): 最近内容修改的时间,默认显示的时间
status time (ctime): 最近权限和属性被修改的时间
access time (atime): 最近访问设备的时间


touch [-acdmt] 档案
修改档案的时间,最常用的是:1.建立一个空的档案;2.将某个档案日期修订为目前(mtime 和 atime)
-a :仅修订atime
-c :仅修改档案的时间,若档案不存在则不建立新档案
-d :后面可以接欲修订的日期而不用目前的时间,也可以使用 --date="日期或时间"
touch -d "2 days ago" bashrc  时间变为两天前,ctime没有变,其他有变
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
touch -t 0709120202 bashrc  ctime没有变,其他的有变
touch testtouch 修改三个时间都是当前时间,若文件不存在,则创建这个新文件






4. 档案与目录的默认权限与隐藏权限
4.1 档案预设权限:umask


umask的功能:
目录的文件权限最高是777,文件预设没有可执行权限所以最大为666;但是umask默认的值是022,
umask是权限过滤符,文件或者目录的权限减去umask的值,就是目录和文件新创建时默认的权限值了


umask=数值
为umask赋值,更改了文件和目录新创建时的默认权限




4.3 观察文件类型:file


file 档案
观察文件类型,可以查看档案是属于哪个类型的:ASCII,data档案,或者binary
file ~/.dashrc




5. 指令与档案的搜寻:
5.1 脚本文件名的搜寻:which
which [-a] command
用来查找指令的完整文件名放在什么地方,默认只在PATH中的文件中查找
-a :将所有由PATH目录中可以找到的指令均列出,而不止第一个被找到的指令名称
which -a ls




5.2 档案档名的搜寻:whereis, locate, find


whereis [-bmsu] 档案或目录名
用来搜索档案的,直接查找的出具库,所以会很快
-b :只找binary格式的档案
-m :只找在说明文件manual路径下的档案
-s :只找source来源档案
-u :搜索不在上述三个项目中的其他特殊档案




locate [-ir] keyword
用来搜索档案
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式


updatedb
whereis和locate是直接查找数据库里面的,但是数据库档案一天更新一次,所以当天的文件是查找不到的,
这个时候只要更新一个数据库就可以了,通过这个指令用来更新




find [PATH] [option] [action]
find查找比较慢,是通过在硬盘上查找的。
[PATH] 用来指定路径,默认是在当前所在路径查找
[option] 属性,指出按照什么属性来查找,比如按照时间,名称,大小等查找
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的档案;
        -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的档案档名;
        -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的档案档名。
        -newer file :file 为一个存在的档案,列出比 file 还要新的档案档名
        其他略过
[action] 值,属性下对应的值



6. 极重要!权限与指令间的关系:


6.1、让用户能进入某目录成为『可工作目录』的基本权限为何:
可使用的指令:例如 cd 等变换工作目录的指令;
目录所需权限:用户对这个目录至少需要具有 x 的权限
额外需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限。


6.2、用户在某个目录内读取一个档案的基本权限为何?
可使用的指令:例如本章谈到的 cat, more, less 等等
目录所需权限:用户对这个目录至少需要具有 x 权限;
档案所需权限:使用者对档案至少需要具有 r 的权限才行!


6.3、让使用者可以修改一个档案的基本权限为何?
可使用的指令:例如 nano 或未来要介绍的 vi 编辑器等;
目录所需权限:用户在该档案所在的目录至少要有 x 权限;
档案所需权限:使用者对该档案至少要有 r, w 权限


6.4、让一个使用者可以建立一个档案的基本权限为何?
目录所需权限:用户在该目录要具有 w,x 的权限,重点在 w 啦!


6.5、让用户进入某目录并执行该目录下的某个指令之基本权限为何?
目录所需权限:用户在该目录至少要有 x 的权限;
档案所需权限:使用者在该档案至少需要有 x 的权限

作者:岑宇
出处:http://www.cnblogs.com/cenyu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
>
原文地址:https://www.cnblogs.com/cenyu/p/5710138.html