Linux 文件与目录管理

Linux 文件与目录管理:

一、绝对路径与相对路径

1、绝对路径:写法由根目录“ / ”写起,例如在目录/home/shu/temp下有一个文件file.txt那么file.txt文件的绝对路径就是/home/lshu/temp。绝对路径写法复杂,但肯定不会出错。

对于文件的正确性来说,绝对路径的正确度更高,如果在写程序(shell scripts)进行管理系统时,则必须使用绝对路径。

2、相对路径:如果当前路径是在/home/shu下,那么file.txt文件的相对路径就是./temp,当前目录“./”;当前目录的上一级目录(如果有上一级目录的话)“../”;

相对路径的用途,适用场景:假设一个所写软件共有三个目录,分別是 etc, bin, lib,然而由于不同的人喜欢安裝在不同的目录之下, 假如甲安裝的目录是 /usr/local/pack/etc, /usr/local/pack/bin 及 /usr/local/pack/lib ,而乙喜欢安裝在 /home/pack/etc, /home/pack/bin, /home/pack/lib 中,这样在共同维护代码时,如果使用绝对路径就会发生错误,这种情况下,使用相对路径则比较简单。

但相对路径会出现在因执行的工作环境不同,导致出错。

二、操作目录的相关命令

1、系统中比较特殊的目录

.         代表此层目录
..        代表上一层目录
-         代表前一个工作目录
~        代表“目前用户身份”所在的home目录
~account  代表 account 这个用户的home目录(account是帐户名称)

注:

1)在所有目录下都存在2个目录:“ . ”和“ .. ”,分别代表此层目录和上层目录;

2)在根目录下使用“ ls -al /  ”去查询,可以看到根目录下存在“ . ”和“ .. ”2个目录,这2个目录的属性与权限完全一致,这说明根目录的“ . ”和“ .. ”是同一个目录。


2、常见操作目录的命令:

1)cd:变换目录,使用方法:

[shu@Test ~]$ su -  # 可先切换身份成为 root
[root@Test ~]# cd [相对路径或绝对路径]

其中:如果只输入 cd ,代表“ cd ~ ”的意思,即会回到自己的home

使用中可利用Linux预设命令列模式 (bash shell)  的文件名补齐功能, 常常利用 [tab] 键完成目录完整性。

2)pwd:显示当前目录,使用方法:

[root@Test ~]# pwd [-P]
-P  :显示真实的路径,而非使用链接 (link)路径。
3)mkdir:建立一个新的目录,使用方法:

[root@Test ~]# mkdir [-mp] 目录名称
选项与参数:
-m :直接设置文件权限
-p  :帮助你直接将所需要的目录(包含上层目录)建立起來!

[root@Test tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
# 提示没有建立test3目录
[root@study tmp]# mkdir -p test1/test2/test3/test4
#加了 -p 的选项,可以自行建立多层目录,如果该目录已存在,也不会显示错误信息,但如果打错字,则目录名称会显得很乱

[root@Test tmp]# mkdir -m 711 test2 #建立权限为rwx--x--x的目录
[root@Test tmp]# ls -ld test*
drwxr-xr-x. 2 root   root  6 Jun  4 19:03 test
drwxr-xr-x. 3 root   root 18 Jun  4 19:04 test1
drwx--x--x. 2 root   root  6 Jun  4 19:05 test2
# 如果没有加上 -m 來强制设定权限,系統会使用预设权限。

4)rmdir:刪除一个空的目录

[root@Test ~]# rmdir [-p] 目录名称
选项与参数:
-p :连同"上层 " " 空的 "目录一起刪除
[root@Test tmp]# rmdir test   #可直接刪除掉
[root@Test tmp]# rmdir test1  #因为尚有内容,所以无法删除
rmdir: failed to remove ‘test1’: Directory not empty
[root@Test tmp]# rmdir -p test1/test2/test3/test4
[root@Test tmp]# ls -ld test*    #查看存在的目录
drwx--x--x. 2 root   root  6 Jun  4 19:05 test2
# 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次性删除
# 注意: rmdir 仅能“ 刪除空的目录 ”

rmdir删除目录需要一层一层的进行,而且被刪除的目录必须是空目录。如果要将目录下的所有东西都删除,需要使用 rm -r 目录 ,这个比较危险,也可以使用 -p 的选项,刪除上层目录。


3、关于执行文件路径的变量 $PATH

       当执行一个命令时,如 ls,系统会按照 PATH 的设定去每个 PATH 定义的目录下查找文件名为 ls的可执行文件, 如果在PATH定义的目录中含有多个文件名为 ls 的可执行文件,那么先查询到同名命令先被执行。

       使用echo $PATH 可查看有哪些目录被定义? echo有『显示/打印』的意思,而 PATH 前面加的 $ 表示后面接的是变量,所以会显示目前的 PATH :

#用root的身份列出PATH
[root@Test ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#用shu的身份列出PATH
[root@Test ~]# exit    # 离开之前的 su -,变回原本的帐号!
[shu@Test ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
       PATH(一定大写)这个变量的内容由一堆目录组成,每个目录使用(:)分隔, 每个目录有顺序之分。无论是root还是shu都有 /bin 或 /usr/bin 这个目录在PATH变量内,所以就能在任何地方执行ls来找到/bin/ls执行文件

1)在PATH当中加入目录的方法如下,例如:在任何目录均可执行/root底下的命令,那么就将/root加入PATH当中即可。

[root@Test ~]# PATH="${PATH}:/root"
2)PATH的特点:
不同身份用户预设的PATH不同,预设能够随意执行的指令也不同;
PATH是可以修改的;
使用绝对路径或相对路径直接指定某个命令的文件名进行执行,会比查找PATH正确性更高;
命令应该要放到正确的目录下,执行才会比较方便;
本地目录(.)最好不要放到PATH当中。

三、文件与目录管理

1、查看文件与目录:ls

[root@Test ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称..
[root@Test ~]# ls [--color={never,auto,always}] 文件名或目录名称..
[root@Test ~]# ls [--full-time] 文件名或目录名称..
选项与参数:
-a  :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出來(常用)
-A  :全部的文件,连同隐藏文件,但不包括 . 和 .. 这两个目录
-d  :仅显示目录本身(.),而不是列出目录内的文件资料(常用)
-f  :直接列出结果,而不进行排序 (ls 预设会以文件名排序)
-F  :根据文件、目录等信息,给出附加的信息,例如:
      *:代表可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件;
-h  :将文件的大小(例如 GB, KB 等等)列出來;但只用ls -h是看不见文件或者目录大小的。必须加上ls -lh。
-i  :列出 inode 号码;
-l  :显示详细信息,包含文件的属性与权限等等信息;(常用)
-n  :列出 UID 和 GID 而非用户和群组的名称 ;
-r  :将文件的排序反序输出,例如:原本文件由小到大,反向则由大到小;
-R  :连同子目录的内容一起列出來,这样该目录下的所有内容都会显示;
-S  :以文件的大小排序,而不是用文件名排序;
-t  :以文件的更新时间排序,而不是用文件名排序。
--color=never  :不根据文件的特性进行颜色区分;
--color=always :显示颜色区分
--color=auto   :系统自动根据设定判断是否进行颜色区分
--full-time    :显示完整的时间 (包含年、月、日、时、分)
--time={atime,ctime} :显示 access 时间或修改权限的时间 (ctime) 
                       而非文件内容的修改时间 (modification time)

因为常常使用-l,所以快捷方式 ll 表示 ls -l 的意思。

2、复制、删除、移动:cp、rm、mv

1)复制文件或目录cp:

[root@Test ~]# cp [-adfilprsu] 来源文件或目录(source) 目标文件或目录(destination)
[root@Test ~]# cp [options] source1 source2 source3 .... directory
选项与参数:
-a  :相当于 -dr --preserve=all 的意思(常用)
-d  :若来源为链接文件或目录(link file),则复制链接文件或目录而非文件或目录本身;
-f  :强制执行复制动作,例如目标文件或目录已经存在且无法打开,则移除文件后再次尝试复制操作;
-i  :如果目标文件或目录(destination)已存在,在覆盖时会提示用户(常用)
-l  :复制硬式链接(hard link)文件,而非复制文件或目录本身;
-p  :连同文件或目录的属性(权限、用户、时间)一起复制,而非使用预设属性(备份常用);
-r  :用于目录的循环复制;(常用)
-s  :复制成为快捷键文件 (symbolic link);
-u  :目标文件 比 源文件 旧才更新 目标文件,或 目标文件 不存在的情况下才复制。
--preserve=all :除了 -p 的参数外,还复制 SELinux, links, xattr的属性。
注意:如果来源文件有两个以上,则最后一个必须是目录才能进行复制。
其示例如下:

[root@Test ~]# cp ~/.bashrc /tmp/bashrc  #用root身份,将home目录下的 .bashrc 复制到 /tmp 下,并更名为 bashrc
[root@Test ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n   #n不覆盖,y为覆盖,由于/tmp 底下已存在bashrc 了,加上 -i 后,则在覆盖前进行提示用户来进行第二次确认。

[root@Test tmp]# cp /var/log/wtmp . #将/var/log/wtmp复制到当前目录(.)
[root@Test tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 /var/log/wtmp
-rw-r--r--. 1 root root 28416 Jun 11 19:01 wtmp
# 注意:不加任何选项时,文件的某些属性或权限会进行修改;

[root@Test tmp]# cp -a /var/log/wtmp wtmp_2 #将文件的所有属性都进行复制,使用-a选项
[root@Test tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 /var/log/wtmp
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 wtmp_2

#复制 /etc/ 这个目录下的所有内容到 /tmp 下
[root@Test tmp]# cp /etc/ /tmp  
cp: omitting directory `/etc'       #因为是目录所以不能直接复制,要加上 -r 选项
[root@Test tmp]# cp -r /etc/ /tmp  #-r进行复制目录,但权限还是可能会
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值