来自:《鸟哥的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系列再记!