首次接触Linux,边学习边写出了这一篇博客,一方面为了巩固自身的知识,另一方面希望可以给其他刚入门的朋友提供一点点帮助。如果有内容有错误或者不准确欢迎指正。
本篇及系列文章均在CentOS虚拟机上展开。
上篇文章带大家了解了Linux,但是对于Linux怎么操作我们还是两眼一抹黑。那么从这一篇开始,我们就来学习如何操作Linux!
首先,我们来回答一个问题:操作系统中对于我们普通用户来说,最常用最基本的功能是什么呢?进程管理?存储管理?设备管理?还是作业管理 ?我认为都不是。最基本的,当我们拿到电脑,打开系统后最常做的事情应该是文件管理。
所以,这篇文章就带大家学习Linux里处理目录的常用命令!
列出文件目录(ls)
在刚刚进入Linux文字界面的时候,我们只能看到下列这样的代码行:
[root@hostname ~]#_
这里显示的是提示符,内部的意思我们上一篇文章也分析过了,里面会显示当前目录信息,但是我们无法像Windows里一样,进了目录就可以看到目录里的内容。
这时就会有人问了:难道我们在Linux里只能两眼一蒙进行操作吗?那也太不像话了!也就黑盒测试这么玩!
诶,客官先别慌,蒙眼睛操作那是真的不像话,但是都说顾客是上帝,所以我们不能那么不像话。这不,我们提供了列出文件目录的命令ls嘛^_^。
下面给出了它的命令格式:
[root@hostname ~]#ls [选项] 参数
常用选项列表:
-a:表示列出全部文件,包括隐藏文件(.开头的文件就是隐藏文件)
-l:长数据串列出,包括文件的属性以及权限等等数据(文件属性权限信息参照上篇文章)
也可以把选项进行组合,像是-al:以长数据串列出全部文件
操作示范(环境为CentOS虚拟机,由于/目录下文件过多,ls -l会显示溢出,所以新建了个TEXT1文件夹进行演示ls命令):
切换目录(cd)
学会了ls命令,我们又发现了个问题,我们能看到了,但是好像还不会动。怎么办?还是那句话,不要慌,我们还有一个“秘法”叫做cd!
下面给出了它的命令格式:
[root@hostname ~]cd [参数]
cd 后面可以接三种参数:
1.相对路径:比如cd ..就是返回上一级目录
2.绝对路径:完全的路径名称,比如我想去根目录下的TEXT1文件夹,我们就这么写: cd /TEXT1
3. 空着不写,就是返回对应用户的默认目录 ' ~ '(等会会在pwd中讲到默认目录)
例子(注意文件目录的变化,TEXT1的上一级目录是 / )
显示目前所在目录(pwd)
大家可能会对这个命令表示疑惑,既然我的提示符里都有地址了,为什么还要有这个命令呢?这不是多此一举嘛。然而,这个命令并不是多此一举,我们的提示符在显示路径的时候有两点不足:其一是显示不完全,其二是他可能在 “骗” 我们。所以这时候就需要我们用到pwd命令了。
按照惯例,下面是命令格式:
[root@hostname ~]#pwd [选项]
常用选项列表:
-P:显示出确实的路径,而非使用软链接路径。在Linux中有两种链接,一种是硬链接,
另一种是软链接。软链接可以连接到文件夹,进入软链接后显示的并不是链接到的文件
夹,而是软链接下,使用pwd -p就可以显示软链接所链接的实际路径而不是软链接本身
的路径。
实例:
- 显示完全路径
- 显示实际默认路径
诶,这两个的默认地址不都是~嘛?为什么用pwd显示出现了这么两种情况呢?
这是因为Linux是多用户操作系统,不同用户的数据进行分别存储。其中root用户的数据就是存储在 /root目录下的,而其他普通用户的数据存储在 /home/对应用户名的目录下。比如我的普通用户的用户名叫做chenxuan,那么存储它的数据的目录就是 /home/chenxuan。 - 显示软链接的实际路径
首先我们可以看到a是一个指向text1/text1_! 的软链接,进入a目录后使用无选项pwd命令,发现显示出来的是 /TEXT1/a,显然是软链接的路径。使用pwd -P后发现显示出软链接所指向的链接 /TEXT1/text1/text1_1,也就是实际路径。
创建新目录(mkdir)
文章到这里,我们已经大致的学会了看,但我们的目标是不光要看,还要着手创建,创建属于自己的目录树!
假如说文件是一个个人,目录显然就是房子了。那么从现在开始,我们开始学习如何创建房子,这时候就要用到mkdir命令了。
下面是命令格式以及常用的选项:
[root@hostname ~]#mkdir [选项] [参数]
常用的选项:
-m:创建目录的同时配置目录的权限。
-p:递归建立目录,即可以直接建立一串目录,比如TEXT1/text1/text1_!
-v:创建目录成功后显示创建信息.
例子(为了方便理解,添加-p选项的命令会添加-v选项)(除-p选项外每个选项的例子都会添加无选项命令的结果做对照):
- 无选项和添加了-v选项创建目录
首先用ls -l显示TEXT1下的所有文件、目录及他们的属性,然后用无选项mkdir创建text2目录,再用ls -l显示文件、目录,可以看到text2目录已经被成功创建。
接着用mkdir -v创建目录text3,可以发现执行后显示了提示:created directory ‘text3’,再用ls -l显示出文件,目录中包含我们想要创建的text3目录,成功。 - 无选项及添加-m选项(注意观察目录权限)
首先用无选项mkdir创建目录text2,我们发现其默认权限为drwxr-xr-x.,再用带有-m选项的mkdir创建目录text3,并将其权限设置为777(每个数字都是rwx所代表的数字和,r代表4,w是2,x为1),用ls -l显示发现目录text3的权限为drwxrwxrwx. - -p选项
删除空目录(rmdir)
既然有创建,那么就会有毁灭。在文件管理系统中,删除同创建一样重要。接下来我们就着手删除空目录进行讨论。
下面是命令的格式以及常用的选项::
[root@hostname ~]#rmdir [选项] [参数]
常用的选项:
-p:级联删除
-v:删除后显示提示信息
例子
- 无选项rmdir
首先用ls -al显示TEXT1目录下的所有文件,再用rmdir text3命令移除text3目录,再次调用ls -al,发现text3成功删除。 - rmdir -p —— 级联删除(为了方便观察,加上了-v选项来显示删除信息).
-p选项的作用是级联删除空目录,比如说这个例子里面text3_1里面只有text3_1_1目录,删除text3_1_! 后rmdir -p命令就会将上一层级联删除。但是如果删除text3_1_1后text3_1里面还具有其他文件或者目录text3_1就不会被删除.。 - -v选项
复制文件或目录(cp)
复制在文件管理中同样重要,接下来就说一下cp命令
命令格式以及常用选项:
{root@hostname ~}#cp [选项] [参数...]
常用的选项:
-d:复制软连接。不是复制链接所指向的文件,而是链接本身。
-f:强制运行,不显示提示信息。
-l:复制硬链接,而不是目录本身。
-p:连同文件属性一起复制过去。
-r:递归持续复制,用于复制目录。
-s:复制成为软链接文件,即捷径文件。
-a:相当于-pdr。
-i:若是目标已存在,覆盖时会提示。默认存在于cp命令中。
例子:
- 无参数(不复制属性)
测试无选项cp是否复制属性: 先用ls -al显示所有文件以及属性,可见hello.txt的属性为rw-rw-rw-.,用cp命令复制为hello1.txt,发现属性为rw-r–r--.,所以可知无选项cp命令只复制文件本身,不复制文件属性。
测试无选项cp是否可以复制软链接: 先用ls -l显示所有文件及目录,可以发现link1是一个软链接(符号链接),然后我们动用无选项cp命令复制link1为link2,再用ls -l显示所有文件及目录,可以发现复制后并不是软链接,而是一个文件。也就是说动用无选项cp命令复制软链接复制的并不是链接本身,而是链接所指向的文件。
测试无选项cp是否能复制硬链接: 依旧是先用ls -l显示所有文件及目录,里面的hardlink1是我创建的一个hello.txt的硬链接。我们动用无选项cp来复制hardlink1为hardlink2
可以看到的是复制成功,但是看起来和普通文件没有区别。那么怎么才能知道他是一个硬链接亦或仅仅是一个普通的文件呢?那么首先说一下硬链接的一个特点,大家注意看原文件以及他的硬链接的属性。会发现源文件和硬链接的权限一模一样。而且如果这时候改变原文件的权限,硬链接的权限会相应的进行改变。所以我们可以用这个特点判断一个文件是否为硬链接。
我们修改一下hello.txt的权限为777也就是rwxrwxrwx,可以发现hardlink1的权限相应的改变了,而复制后的hardlink2的权限并没有改变。所以判定无选项的cp不能复制硬链接本身,而是复制硬链接所指向的原文件。 - cp -d——复制软链接
首先用ls -l显示非隐藏文件及目录,可以看到link1是指向hello.txt的软链接,运用cp -d复制link1为link2,ls -l显示所有非隐藏文件及目录,可以看到link2为指向hello.txt的软链接。 - cp -f —— 强置执行,不显示覆盖提示信息
先用ls -l显示文件及目录,再用 \cp -f命令强置复制并覆盖a.txt。为什么要用 \cp而不是cp呢?因为cp命令是有别名 (alias cp=‘cp -i’) 的,也就是说 cp默认具有-i选项 ,所以单单用 cp -f 的话 -f选项是不会起作用的。 - cp -l——复制硬链接
依旧是用ls -l显示文件及目录,hardlink1是一个指向hello.txt的硬链接,动用 cp -l直接复制hardlink1为hardlink2,然后改变原文件的权限,再用ls -l显示文件及目录,可以发现hardlink2同原文件一样改变权限,可以判断hardlink2为硬链接 - cp -p——连同属性一起复制
首先用ls -l显示文件及目录,可以看到hello.txt的权限为rw-rw-rw-.,用cp -p复制hello.txt为hello1.txt,再次用ls -l显示文件及目录,可以看到hello1.txt的权限为rw-rw-rw-.。 - cp -r ——递归持续复制,用于目录的复制行为
ls -l显示文件及目录,用cp -r复制目录text1为text3。再用ls -l查看。 - cp -s——复制为符号连接档(即软链接)
用ls -l显示文件及目录,再用cp -s复制hello.txt 为软链接link2 ,再用ls -l显示文件及目录进行查看。 - cp -a——递归复制目录软链接以及他们的属性,效果同cp -pdr
移除文件或目录(rm)
之前我们了解过了如何移除空目录,但是想要用rmdir一下删除目录以及其内的文件显然是不可能的。那么我们该如何才能删除文件或者非空目录呢?接下来我们来了解一下rm命令
命令格式以及常用选项:
[root@hostname ~]#rm [选项] [参数]
常用的选项:
-f:强制删除,无提示信息。
-r:递归删除,用于删除目录。
例子:
1.无选项rm
首先用ls -l显示文件及目录,用rm命令删除a.txt,再用ls -l显示文件及目录,可以发现a.txt已经被删除。
2. rm -f ——强置删除,不提示信息
用ls -l显示文件及目录,用rm -f命令删除hello1.txt,可以发现删除时并没有确认删除信息,再用ls -l显示文件及目录,发现hello1.txt已经被成功删除。
3. rm -r —— 递归删除,删除目录
用ls -l显示文件及目录,text3是一个非空目录,用rm -r进行删除。
移动文件与目录,或修改名称(mv)
有了复制,就应该有剪切。接下来学的就是剪切操作——mv移动文件与目录。
命令格式与常用选项:
[root@hostname ~]#mv [选项] [参数]
常用的选项:
-f:强制执行,若目标文件存在则不询问直接覆盖。
-u:若目标已经存在,进行判断时间,如果目标文件较新则不覆盖。
例子:
- 无选项mv
移动:
将text1中的hello.c移动到TEXT1目录下。
如果目标文件已经存在会提示是否进行覆盖
改名:
将hello.txt名字修改成rename.txt。 - mv -f —— 强制覆盖
首先用ls -l显示文件及目录,用mv -f移动hello.c到hel.c进行强制覆盖。会发现没有提示信息。再次用ls -l显示文件及目录,移动成功。 - mv -u——按照时间判断是否覆盖
首先用ls -l显示文件及目录,观察创建时间,可以发现hello.c创建时间新于hel.c,用mv -u移动hel.c到hello.c。经判断hello.c创建时间新于hel.c,覆盖失败。