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的用户都必须得知道输出 的到底是什么东东才行呀。
这里从左到右,画了6个部分。第一部分说明了文件的类型以及操作权限,第二部分说明了文件的inode信息,第三部分是文件所属的用户和组,第四部分是文件的修改时间,第五部分是文件名。
第一部分:文件类型及权限
文件的类型及权限还可以拆分成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
涉及到inode,可能一时半会说不明白。简单总结一下,如果文件类型是文件,那么inode列代表的就是文件的硬链接数,如果文件类型是目录,则inode列所代表的就是该目录下,所拥有的子目录数。
需要注意就算是一个空的目录,它的inode列显示的也是2。因为每个目录下,都有两个隐藏的子目录, 分别是代表当前目录的 .
目录,和代表上一级目录的 ..
目录。每个文件的inode列也至少是1,因为他自己也有inode信息呀。
第三部份:文件的所属用户和组
通过这部份,可以看到文件所隶属的用户和组。通过上面的图片可以看到,当前目录下所有文件都是root用户和root组所有的。后面结合前面第一部份的文件类型和权限,会有更多的理解和说明。
第四部分:文件大小
这部份就是文件的大小,默认是以字节(Byte)为单位显示,可以通过加上 -h
参数,以人类更容易读懂的方式进行显示 。
第五部份:文件修改日期
第五部分显示了文件最一次的修改时间。
第六部份:文件名称
最后这部份,显示文件的名称。Linux下,一切皆是文件,就算是设备,也是一个文件呀。
实例
最后,通过几个实例,巩固一下之前的知识。
第一行,文件类型及权限的第一个字母是 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”。
混迹IT行业多年,技术依然渣渣,故名zaza-h
记录和分享自己的学习历程,如果有错漏,请各路大神帮忙指正。也欢迎大家多多讨论,共同成长
本文来自博客园,作者:zaza_h,转载请注明原文链接:https://www.cnblogs.com/zaza-h/p/16167700.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!