您的位置:首页 > 运维架构 > Linux

第六章Linux文件与目录管理

2017-12-19 16:06 169 查看

几个常见的处理目录的指令:

cd:变换目录

pwd:显示当前目录

mkdir:建立一个新的目录

rmdir:删除一个空的目录

cd (change directory, 变换目录):

cd ..
#返回上层目录

cd /home/robin
#绝对路径去到robin文件夹

cd ./test
#相对路径去到当前文件夹下的test文件夹

cd
#只有cd指令返回当前用户的home目录。


注意:cd 指令后接的一定要是目录,比如上方的test一定要是目录,不能是文件。

pwd (Print Working Directory,显示目前所在的目录)

robin@robin-Latitude-E6330:~$ pwd
/home/robin


mkdir (make directory,建立新目录)

[root@study tmp]# mkdir test
#建立一名为 test 的新目录
[root@study tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
# 多层级目录建立直接这样用会报错,需要加上-p选项。
[root@study tmp]# mkdir -p test1/test2/test3/test4
# 原来是要建 test4 上层没先建 test3 之故!加了这个 -p 的选项,可以自行帮你建立多层目录!


rmdir (删除『空』的目录)

[root@study tmp]# rmdir test <==可直接删除掉,没问题
[root@study tmp]# rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: failed to remove ‘test1’: Directory not empty
[root@study tmp]# rmdir -p test1/test2/test3/test4
#同样,层级删除文件夹需要-p选项。


注意:rmdir指令只能删除空文件夹!!!不能有任何其他的文件等。上方的test1234其实也是层层空文件夹。要删除带文件的,需要rm指令。

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

查阅文件属性的指令 ls 完整文件名为:/bin/ls(绝对路径),

但是在使用时,在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令!这是因为环境变量

PATH 所致!

显示定义的环境变量:

[root@study ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


当我们在执行一个指令的时候,例如『ls』,系统会依照 PATH 的设定去每个 PATH 定义的目录下搜寻文件名为 ls 的可执行文件, 如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件,那么先搜寻到的同名指令先被执行!

PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)来隔开, 每个目录有『顺序』之分。仔细观察可以发现,无论是 root 还是 dmtsai 都有 /bin 或/usr/bin 这个目录在 PATH 变量内,所以就能够在任何地方执行 ls 来找到/bin/ls 执行文件了!

简单说一下自己的理解,并不确定对不对:

指令本质上也是可执行程序,本来运行一个程序应该老老实实的敲上路径,找到它并运行。但是,环境变量提供了一个解决方案就是,我用这个变量事先连接好一堆文件夹,这些文件夹里存放的各种指令(其实也是可执行程序)。这样,我在任何目录下直接敲指令,也能运行,因为PATH自己去连接好的目录里去找了。所以在表面使用上实现了任何目录下都能调用常用的指令。

文件与目录管理

文件与目录的检视: ls:

[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称..
[root@study ~]# ls [--color={never,auto,always}] 文件名或目录名称..
[root@study ~]# ls [--full-time] 文件名或目录名称..

选项与参数(仅列些常用的,其实还有很多):
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串行出,包含文件的属性与权限等等数据;(常用)


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

cp (复制文件或目录)

[root@study ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination)
[root@study ~]# cp [options] source1 source2 source3 .... directory

**选项与参数(仅列写常用的):**
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r :递归持续复制,用于目录的复制行为;(常用)
-s :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;


示例:

cp ./hehe.txt ./folder1
#将当前文件夹中的hehe.txt文件复制到当前文件夹中的folder1文件夹内。

cp ./hehe.txt ./folder1/hehe_copy.txt
#将当前文件夹中的hehe.txt文件复制到当前文件夹中的folder1文件夹内。并更名为hehe_copy.txt

-i选项用时最好是加上,因为启动交互确认后,会防止误操作导致的覆盖等等问题。
-a和-p操作一般用于备份,将文件的属性也一起copy过去。

-r为递归操作,用于copy文件夹,不然会报cp: 略过目录。
cp ./folder1 ./folder2
#将当前文件夹下的folder1复制到当前文件夹下的folder2文件夹内。
-s复制为一个快捷方式。用法跟普通默认的一样,只是copy的结果是快捷方式。
cp ./hehe.txt ./folder1
#在folder1内创建一个hehe.txt文件的快捷方式。会标示此文件为快捷方式。


rm (移除文件或目录)

首先说一下,这个删除是真正的删除,不会估计是否目录为空等等。就是用于删除数据的,所以也比较危险。

[root@study ~]# rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

例1:删除一个文件:
rm ./hehe.txt

例2:删除前询问:
rm -i hehe.txt
rm: remove regular file `hehe.txt'? y

例3:用*模糊删除
rm -i a*.txt
# 删除a开头的txt文件。星号代表的是 0 到无穷多个任意字符!也就是说a1.txt甚至是a10000.txt都能被删掉,不用说对齐位数,因为*就代表一切字符串。

另外,-r删除文件夹时,若是root用户,自动加了-i功能,会询问,但是若不是root用户,就不会询问了,直接删掉。


mv (移动文件与目录,或更名)

[root@study ~]# mv [-fiu] source destination
[root@study ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)

例1:移动文件
mv b1.txt test1
#将b1.txt移动到test1文件夹

例2:移动文件并更名
mv b1.txt test1/b1_mv.txt

例3:移动文件夹
mv test2 test1
#跟文件没区别,直接动就是了。

例4:文件更名
mv test2 test3
#将目录下的test2更名为test3,本质相当于向本文件夹移动并更名。当然还可以用rename,后面再说。

例5:多文件移动
mv bashrc1 bashrc2 hehe.txt mvtest2
# 注意!如果有多个来源文件或目录,则最后一个目标文件一定是『目录!』
# 意为将所有的数据移动到该目录!


强调一遍,在复制删除删除操作式,由于涉及到数据文件的变更,所以尽量用-i选项,来确保不会误操作!!!!

取得一个文件的名称和路径:

这个写程序时经常用。

basename /etc/sysconfig/network
#取得了最后面文件的名称~
network
dirname /etc/sysconfig/network
#取得了文件所在的目录~
/etc/sysconfig


6.3 文件内容查阅

查看文件内容:

说白了就是让其在terminal显示文件内容。

cat [-AbEnTv]

选项与参数:
-n :打印出行号,连同空白行也会有行号

例1,显示文档:
cat haha.txt
im robin
#文档内容为一行:im robin

例2,显示文档并添加行号:
cat -n haha.txt
1  im robin
#内容前会有行号。


touch指令创建新文件:

touch指令有两个主要的功能就是修改文件时间,和创建文件。暂时先不管修改文件时间了,因为没用到感觉。。。

touch hehe.txt
#创建一个hehe.txt文件。


file指令观察文件的类型:

file haha.txt
haha.txt: ASCII text
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: