Linux教程

Linux命令学习一:pwd,cd,ls

本文主要是介绍Linux命令学习一:pwd,cd,ls,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

    了解完Linux操作系统的整个目录体系之后,现在可以登陆到Linux系统,开始“命令之旅”了。不同的用户,刚刚登陆到Linux系统的时候,使用的目录是不一样的。比如,root用户刚登陆系统 的时候,用的是 /root 目录。而其他普通用户,登陆到Linux系统的时候,使用的是/home目录下,跟自己用户名一样的目录。如 bob 用户,登陆到Linux系统的时候,使用的就是 /home/bob 这个目录。为了检验这个说法,开始学习第一个命令:pwd。

打印当前工作目录:pwd

    pwd就是print working directory的缩写,就是打印当前的工作目录啦。pwd应该是为数不多的简单的命令之一了。

基本语法

pwd [参数]

参数说明

参数 参数说明
P 大写字母P,显示当前目录的真实路径

实例

    为了验证root用户登陆到系统时,默认使用的是/root目录。而其他用户登陆到系统是“/home/username"目录这个说法。可以用pwd命令来验证一下。

# 使用root 用户登陆到系统
$ pwd
/root
# 切换用户,使用普通用户登陆到系统,(前提是跟前面第一章装系统的时候,有添加admin用户)
$ su - admin   # 这个命令是切换到admin这个身份登陆到系统。
上一次登录:日 4月 17 13:44:48 EDT 2022pts/1 上
# 再打印一下当前的工作目录
$ pwd
/home/admin

    pwd命令还有一个参数,大写字母P。前面在讲 Linux系统目录结构的有提到过,/bin 这个目录,是 /usr/bin 目录的一个链接文件(相当于windows系统下的快捷方式)。为了验证这个说法,可以使用pwd 加上参数 P 来验证一下。

# 先进入到/bin目录,cd命令在下一节介绍 
cd /bin
# 查看/bin目录的真实路径
$ pwd -P
/usr/bin

    可以看到,/bin目录的真实路径,真的是/usr/bin目录呀。

切换目录:cd

    cd命令是change directory的缩写,就是更改当前工作目录的意思啦。上面验证 /bin 目录是 /usr/bin 目录的一个链接文件的时候,就使用了cd命令进行了一次目录的切换。这个是Linux用户每天都必须会用到的命令,就像使用windows系统的时候,要打开不同的文件夹去使用不同的软件或者文件呀。

基本语法

cd [目录路径]

特殊符号

符号 符号说明
. 一个小数点,代表的是当前目录
.. 两个小数点,代表的是上一级目录
~[用户] 键盘Tab键上面的按钮,[用户]是可选参数
如果忽略了用户,则代表的是当前登陆了Linux系统的用户home目录;如果指定了用户,则代表指定用户的home目录
- 一个减号,代表切回到上一次使用的工作目录

    熟记上面的这些符号,可以一定程序上提高工作效率哦。

    在进入实例之前,还有两个概念需要说明一下,就是“绝对路径”和“相对路径”。

    相对路径:就是相对于当前的工作目录,以当前工作目录为参照物,另一个目录的路径;

    绝对路径:就是一个完整的路径,从根目录 / 开始,一直到目标目录,一个完完整整的目录路径;

实例

    比如:admin用户,对应的home目录是 /home/admin。同时,admin用户的家目录下,还有一个名为Movie的目录存放了小电影。那么,当admin用户登陆到系统的时候,可以使用以下两种方式进入到Movie目录:

# 使用绝对路径进入Movie目录
cd /home/admin/Movie
# 使用相对路径进入Move目录
cd ./Movie
# 相对路径,还可以简写
cd Movie

    因为admin用户,登陆到Linux系统的时候,当前的工作目录是/home/admin,所以使用相对路径径进入Movie目录,cd命令后面直接输入目录名就可以了呀。

# 离开Movie目录,返回上一级目录
# 使用绝对路径
cd /home/admin
# 使用相对路径
cd ..

    相对路径,对于绝对路径来说,使用起来就是方便很多。但是相对路径使用起来,同一个命令可能会有不同的效果。

    假设,eve用户 和 bob用户的家目录下,都有一个Movie目录,他们的绝对路径分别是 /home/eve/Movie 和 /home/bob/Movie。当eve用户和bob用户登陆到Linux后,同样的输入同命令 cd Movie 命令,因为这里使用的是相对路径,所以eve用户进入了/home/eve/Movie 目录,而bob用户进入的是 /home/bob/Movie目录。为了避免这种歧义,就可以使用绝对路径来避免。

# 最后演示一下 - 及 ~ 的用法
# 假设当前admin刚登陆系统,当前的工作目录是/home/admin
# 进入/var/log 查看 日志
cd /var/log
# 工作完了,需要切回自己的家目录
$ cd ~
# 查看当前的工作目录
$ pwd
/home/admin
# 又有新的日志产生,需要马上返回到/var/log目录
$ cd -
# 查看当前的工作目录
$ pwd
/var/log

查看目录里面的内容:ls

    ls可以理解 为list的缩写,作用是打印指定目录所包含的目录以及文件。ls命令,默认展开指定目录下的文件以及目录,如果指定目录下面还有子目录,默认只显示子目录名称,不会展开显示子目录下面包含的文件及目录。

基本语法

ls [参数] [目录路径]

参数说明

参数 参数说明
-a 列出所有的文件,连同隐藏(文件名是以 . 开头的文件)文件 . 和 ..
-l 列出所有文件的同时,显示所有文件的详细属性,如文件大小,修改日期,修改权限等
-d 只显示指定的目录,不展开显示目录下面包含的文件和目录
-h 以方便人类查阅的方式显示,例如GB,KB等

实例

# 假设当前登陆的是root用户,当前工作目录是/root
# 如果ls命令后面不带任何参数,默认输出当前工作目录里的文件和目录
$ ls
abc  anaconda-ks.cfg  anaconda-ks.tar
# 使用ls -l 查看文件更详细的内容
$ ls -l
drwxr-xr-x. 2 root root    20 4月  15 17:35 abc
-rw-------. 1 root root  1524 4月  15 13:39 anaconda-ks.cfg
-rw-r--r--. 1 root root 10240 4月  15 16:23 anaconda-ks.tar
# 其实ls -l ,可以使用ll 命令代替,ll命令,是ls -l命令的别名
$ ll
drwxr-xr-x. 2 root root    20 4月  15 17:35 abc
-rw-------. 1 root root  1524 4月  15 13:39 anaconda-ks.cfg
-rw-r--r--. 1 root root 10240 4月  15 16:23 anaconda-ks.tar
# 带上参数 -h, 更直观的看到文件大小
$ ll -h
drwxr-xr-x. 2 root root   20 4月  15 17:35 abc
-rw-------. 1 root root 1.5K 4月  15 13:39 anaconda-ks.cfg
-rw-r--r--. 1 root root  10K 4月  15 16:23 anaconda-ks.tar

ll命令详解

    展开说明一下ll命令输出的信息,这部份信息太重要了,使用Linux的用户都必须得知道输出 的到底是什么东东才行呀。

image

    这里从左到右,画了6个部分。第一部分说明了文件的类型以及操作权限,第二部分说明了文件的inode信息,第三部分是文件所属的用户和组,第四部分是文件的修改时间,第五部分是文件名。

第一部分:文件类型及权限

image

    文件的类型及权限还可以拆分成4个小部分查看。从左到右,每行开头的第一个字母是文件的类型;第二个框指的是文件所有者对文件的操作权限;第三个框是,跟文件所有者同一个用户组下的用户对文件的操作权限;第四个框是,其他用户对文件所拥有的操作权限。

文件类型

第一行的第一字母是 d ,说明是一个目录,而第二行的第一个字母是 - ,说明 anaconda-ks.cfg 是一个普通文件。下面用表格列出了一些常用的文件类型。

字符 字符说明
d 目录
- 普通文件
l 链接文件
b 块设备,比如硬盘,U盘,SD卡等
c 字符设备,比如打印机,键盘等

操作权限

字符 文件权限说明 目录权限说明
r 可读(read) 查看目录里面的文件及子目录(read)
w 修改(write) 修改目录里面文件或子目录(write)
x 执行(execute) 进入目录(execute)
- 没有权限 没有权限

    通过表,可以看到 rwx 三个字母分别对应的是什么样的操作权限。同样的权限,对于文件和目录,权限也不大一样。文件的操作权限必须是rwx这个顺序,不能随意排序。第一个位置可读权限位置上只能是 r 权限 ,或者是 - 没有“可读”权限,同理第二个位置修改权限位置上只能是 w 权限,或者是 - 没有“可写”权限。第三个位置可执行位置上,只能是 x 权限,或者是 - 没有“可执行”权限。

第二部份:inode

image

    涉及到inode,可能一时半会说不明白。简单总结一下,如果文件类型是文件,那么inode列代表的就是文件的硬链接数,如果文件类型是目录,则inode列所代表的就是该目录下,所拥有的子目录数。

    需要注意就算是一个空的目录,它的inode列显示的也是2。因为每个目录下,都有两个隐藏的子目录, 分别是代表当前目录的 . 目录,和代表上一级目录的 .. 目录。每个文件的inode列也至少是1,因为他自己也有inode信息呀。

第三部份:文件的所属用户和组

image

    通过这部份,可以看到文件所隶属的用户和组。通过上面的图片可以看到,当前目录下所有文件都是root用户和root组所有的。后面结合前面第一部份的文件类型和权限,会有更多的理解和说明。

第四部分:文件大小

image

    这部份就是文件的大小,默认是以字节(Byte)为单位显示,可以通过加上 -h 参数,以人类更容易读懂的方式进行显示 。

第五部份:文件修改日期

image

第五部分显示了文件最一次的修改时间。

第六部份:文件名称

image

    最后这部份,显示文件的名称。Linux下,一切皆是文件,就算是设备,也是一个文件呀。

实例

image

    最后,通过几个实例,巩固一下之前的知识。

    第一行,文件类型及权限的第一个字母是 l , 说明这个链接文件。同时可以通过文件名称这一列,可以观察看,链接文件的文件名是“grub2.cfg”,该链接文件所指向的文件是“../boot/grub2/grub.cfg”。还记得 .. 是什么意思吗?它代表的相对路径,当前目录上一级目录的意思呀。

    通过第三部份可以看到,文件“grub2.cfg”所隶属的是root用户,和root用户组。再看看文件类型和权限部分,文件类型 l 后面的rwx为文件所有者对文件所拥有的权限,即root用户可以对“grub2.cfg”这个用户进行读、写、执行操作。接下来的是文件所有者,同一个用户组下的用户,对文件所拥有的权限。同样也是 rwx,所以root用户组下的其他用户,也可以对“grub2.cfg”文件进行读、写、执行操作。最后就是既不是文件所有者,也不是跟文件所有者同一个用户组下的其他用户,对文件所拥有的操作权限 ,也都是 rwx。所以是大家都可以对“gruub2.cfg”这个文件进行读、写、执行等操作。

    通过第四部份,可以看到“grub2.cfg” 这个文件,是22Byte大小。通过第五部份,可以看到文件的修改时间,是2021年的10月9日。至此整个文件的详细信息基本都分析完啦。

    下面再对“grub.d”这个文件进行分析。

    通过文件及权限这部份的第一个字母,可以得知,“grub.d”是一个目录文件。后面文件的操作权限显示,除了文件的所有者拥有读、写、执行权限之外,其他用户都没有任何权限呀。然后通过第三部份可以知道,“grub.d”这个目录,是root用户所拥有的,就是除root用户,谁都没办法操作“grub.d”这个目录呢,无法进入目录,无法通过ll 命令查看“grub.d”目录里的文件及子目录,也无法在“grub.d”这个目录里进行增加、删除文件的操作。

    通过第四部份,288 说明这个目录占用了288KB的磁盘空间。这只是说明了这个目录本身占了288KB的磁盘空间,并不包含目录下面的子目录和文件的大小。

    最后第五部份显示了这个文件夹最后一次修改的时间是“今年4月15日 13:28”。

这篇关于Linux命令学习一:pwd,cd,ls的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!