【笔记】关于Linux目录/文件的一些常用操作(b1)

本文详细介绍Linux环境下目录操作的常见指令,包括变换目录(cd),显示当前目录(pwd),创建新目录(mkdir),删除空目录(rmdir)等。同时讲解了特殊目录的意义,如.、..、-和~等,以及如何利用环境变量$PATH执行文件。
来自:《鸟哥的Linux私房菜-基础篇》
复制代码

变换、进入目录都是用cd指令,还有哪些是对目录操作的指令呢?比如新建目录,删除目录等操作;要明白这些,必须要先知道一些特殊目录,如:

  • 1/ . 代表当前目录
  • 2/ .. 代表上一层目录
  • 3/ - 代表前一个工作目录(比如你先通过命令:cd /home/testUser进入了/home的testUser目录下,然后再进入到了cd /home/testUser2目录,那么你再进行cd - 的时候就是回到上一个操作的目录,也就是回到了testUser目录了)
  • 4/ ~ 代表的是当前用户的家目录。
  • 5/ ~testUser 代表testUser这个账户的家目录(testUser是账号名)。

这里也需要特别注意一下的是,所有目录下都有2个目录,就是.和..目录,分别代表的是当前目录和上一层目录.

对目录操作的常见指令有:cd(变换目录)、pwd(显示当前目录的路径,更准确的应该是pwd -P,注意-P是大写的)、mkdir(创建一个新目录)、rmdir(删除一个空目录,仅仅只能删除空目录,如果要删除一个非空目录则是用rm -r命令)。

一、cd(change directory,变换目录)

变换目录很简单,就是cd /aaa/bbb/ 就是变换目录的意思,比如:

  • 要进入当前目录的家目录,则直接cd即可,或者cd ~。
  • 要进入某个用户的家目录,则是用cd ~someUser;很简便哦。
  • 要回到上一个操作的目录,则是用:cd -。
  • 要回到上一层目录,则是用:cd ..。
  • 要去上一层目录下的其他目录,则是用:cd ../otherDir。

注:是用tab键可自动补全目录/文件名,但是一个前提是上一层目录必须要有r权限。

二、pwd(print working directory,显示当前所在的目录)

pwd -P // -P:(大写)显示出确切的路径,而非使用链接(link)路径。

pwd // 单纯显示出当前的路径,有可能是链接路径哦。

这个指令也非常简单,而且很常多。

三、mkdir(make directory,创建新目录)

mkdir [-mp]

-m:配置文件的权限,直接设定而无需看umask的设定哦;比如:mkdir -m 755 dir1意思就是创建dir1目录,并指定它的权限是755(rwxr-xr-x)。

-p:(这里的是小写的哦)递归建立目录,意思就是如果:mkdir /home/userName/test1/test2/ 要在test1下创建test2目录,如果test1没有,则自动把test1也创建起来了。 该指令也是非常简单常用。

四、rmdir(remove directory,移除空目录)

rmdir -p dirName // -p:(小写哦)连同所指定路径的上层空的目录也一起删除掉。比如:rmdir -p /test1/test2/test3/test4,假设test2和test3都为空,test4空,则连同test2和test3都会被删除,test1下有其他文件的话就不会被删。

rmdir dirName // 如果dirName为空,则可删除。

五、关于执行文件的变量:$PATH

为什么cd、ls等等指令可以直接被执行?这是因为环境变量PATH的功劳。

比如当你输入ls的时候,系统会在PATH中找名为ls的可执行文件,先找到谁就谁先执行。

我们可以通过echo来查看PATH,echo有显示的意思,而PATH前面加个$表示后面接的是一个变量。

root ~# echo ¥PATH(dollar符号) /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

someUser ~# echo ¥PATH(dollar符号) /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin echo会把当前用户下的环境变量搜索的路径给打印出来。

关于PATH我们来举几个简单的例子:

1.假设你用root账户将指令ls移到了其他目录,比如/root目录(mv /bin/ls /root),然后你本身也在root目录,请问(1)你能不能直接输入ls来执行?(2)如果不行,你该如何执行ls指令?(3)如果要直接输入ls即可,那么要怎么做?

首先第一个问题,其实不管你在哪一个目录,都没有办法执行ls了,也就是说不能直接执行ls了,因为/root这个目录不再PATH中,所以即使你在/root目录下页无法执行ls。

关于第二个问题,如何执行呢? 你可以输入:/root/ls (绝对路径方式) 你也可以输入: ./ls (如果在当前目录下)

关于第三个问题,如果想在任何目录下都能执行ls,则需要将/root加入到PATH环境变量中。(PS:测试完之后,需要将ls搬回/bin目录哦,要不然可能会出现问题的,搬回去后,注销一下就可以了)。

2.如果我有两个ls指令在不同的目录中,比如/usr/loca/bin/ls和/bin/ls,那么当我执行ls的时候,哪个ls会被执行呢?

关于这个问题,我们就得看PATH环境变量了,哪个目录先被搜索到,就哪个先被执行咯。

3.还有一个问题就是PATH中最好不要有本目录.的出现。

文件和目录的管理

Linux在文件目录的管理上无外乎就是显示属性、拷贝、删除、移动等。

一、ls

root ~# ls [-aAdfFhilnrRSt] fileName_OR_dirName root ~# ls [--color={never,auto,always}] fileName_OR_dirName root ~# ls [--full-time] fileName_OR_dirName

解释:

(常用的有:)

-a:全部的文件,连同隐藏的文件一起列出来。

-d:仅仅列出当前目录。

-l:列出长数据串信息,包含文件的属性和权限等数据。

(剩余其他:)

-A:全部的文件,连同隐藏的文件名,但不包含.和..目录。

-f:直接列出结果而不排序(默认以文档名排序)。

-F:根据文件目录等信息给予附加数据结构,例如:*-代表可执行文件;/-代表目录;=-代表socket文件;|-代表FIFO文件。

-h:将文件以人类易读的方式列出(例如GB、KB)。

-i:列出inode号码

-n:列出UID和GID而非使用者与群组的名称。

-r:将排序结果反响输出,例如:原文档名由大到小,反向则为有小到大。

-R:连同子目录也一起列出来,也就是该目录下的所有东西都罗列出来,包含子目录下的文件数据,子目录的子目录同理,所以等罗列完毕需要很长的时间。

-S:以文件的容量大小排序

-t:以时间排序

--color=never:ls带上这个参数选项则列出来的文件列表不带颜色。

--color=always:列出来的数据显示颜色。

--color=auto:让系统自行依据设定来判断是否带颜色。

--full-time:以完整时间模式输出(包含年月日时分秒的形式)。

--time={atime,ctime}:输出access时间或者改变权限属性时间(ctime),而非内容变更时间(modification time)。

我们在实际操作中,对于某些操作可能没有必要展示全部信息,于是用ls就可以了,但如果还要查看文件/目录的其它信息,则需要用到ls -l(ll),以及将隐藏档也罗列出来的-a选项。

暂时先寄到这里,剩下的接下在b系列再记!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值