Linux基础-2、基本命令
了解完Linux的相关的基础知识之后,我们来了解了解Linux的基本命令吧!
1、目录管理
首先我们先回顾下相对路径和绝对路径的一些知识:
绝对路径是啥啊,就是我们平常计算机上那些能表示一个文件位置,唯一的一个路径。
比如说D:\WeChat\wechat.exe 就是个绝对路径。
相对路径就是相对我们当前所处目录,那个文件的具体位置。
其中…代表上一级目录。
比如说我们现在在D:\WeChat\locales里,想去访问D:\WeChat\zjj这里。
需要通过cd…\zjj这个命令来。
我们先来看看一些常用命令!
- ls: 列出目录
- cd:切换目录
- pwd:显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录,或修改文件与目录的名称
我们分别来试试。
ls
ls可以列出目录中的东西,就有点像我们的眼睛一样,想看啥看啥。后面跟上需要看的目录即可,下面是根目录下的文件夹。
其中后面还可以跟两个参数。
-
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
- ls -al / #列出根目录下所有文件(包括隐藏文件的具体信息)
cd
cd一般用于切换目录,这个命令与我们在windows cmd中的操作基本一致。
cd home #进入home目录
cd ../media #从home目录中进入media目录
cd / #回根目录
pwd
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
我们这是在根目录。
mkdir
想创建目录就用mkdir
mkdir 后面添加目录名即可创建!如图可以发现我们在home目录中创建了zjj目录。
这里还有两个可选参数
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
我们创建多层级文件夹试试。
我们发现压根就不能创建,这是因为平常的mkdir只能创建单级目录,要想创建多级目录需要递归创建,在mkdir后面要加-p.
加了-p之后,创建成功!
rmdir
删除目录咋办啊?这时我们使用rmdir,不过他只能删除空的目录。
比如说我们想删除slsl目录
rmdir slsl
这样就删除了,与mkdir同样,如果想递归删除的话需要在后面加上-p
比如说我们想删除下zjj目录,我们就需要再后面加-p(因为里头有个smlm目录。)
rmdir -p zjj/smlm #将zjj/smlm一并删除
cp
复制东西就用cp嘞。
其中还包含以下参数:
- **-a:**相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- **-p:**连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- **-d:**若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
- **-r:**递归持续复制,用於目录的复制行为;(常用)
- **-f:**为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- **-i:**若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- **-l:**进行硬式连结(hard link)的连结档创建,而非复制文件本身。
- **-s:**复制成为符号连结档 (symbolic link),亦即『捷径』文件;
- **-u:**若 destination 比 source 旧才升级 destination !
我们来试试
cp /root/install.sh /home #拷贝/root下的install.sh到 home里
最后发现确实有的!
rm
删除文件一般我们使用rm命令
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
这里我们还是试一下
rm -i install.sh #删除install.sh 再删除前进行确认
这里还有一个梗,大家老能在网上调侃程序员说要删库跑路,其实常用的就是这条指令
rm -rf / #递归删除根目录下所有文件,并且不会提示任何警告信息
千万别瞎尝试hhhh
mv
如果我们想移动文件或者修改文件的名称,我们常用mv命令
其中还是包含以下参数:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
试试!
我们试试把当前目录下的install.sh移动到根目录下
mv install.sh / #把当前目录下的install.sh移动到根目录下
还真有!
想给他改个名字咋办
mv第二个参数不写目录,直接写要改的名字就行啦!
mv install.sh test #把install.sh重命名为test
改完了!
2、文件管理
(1)文件属性
我们在使用ls -l查看文件的时候可以看到这么一组东西,
这到底是干啥的?
其实这正好对应着我们文件属性以及类别的内容,各位可以根据这一串东西来判定该文件的类别以及权限属性,是不是非常神奇?
首先我们这串东西的第一位代表着文件的类别,主要来说分为以下几种。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);(指向另一个东西的文件,就有点像快捷方式那样子)
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
再之后的9位代表文件的权限,按每三位为一组,分别代表属主,属组以及其他用户的权限。其中r代表读,w代表写、x代表执行,如果没有相关权限就会用-表示,下面的图可以使大家更好理解。
上面这个文件的类型是目录文件,属主拥有全部读写执行的权限,属组和其他用户没有写的权限。
更改文件属性
有文件属性这么个东西,我们当然是可以根据自己的需要进行修改,主要要使用以下几个命令。
1、chgrp:更改文件属组(不常用)
语法:
以下的-R都是递归操作的意思
chgrp [-R] 属组名 文件名
2、chown:更改文件属主,也可以同时更改下文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
我们来试一下这个命令,改一下文件的属主以及属组。下面是文件最开始的信息。
执行下
chown xjj:xjj install.sh #将属主和属组改为xjj
3、chmod:更改文件9个权限属性
在chmod指令中,我们不使用传统的rwx来表示权限,而是使用阿拉伯数字对权限进行表示,r为4,w为2,x为1,将每一个用户类别的权限相加,得到唯一一位不大于7的阿拉伯数字就是其拥有的权限。
-rwxrwxrwx
比如说它的权限就是777,
rwxrwx–
它的权限是770
chmod的具体语法如下:
chmod [-R] xyz 文件或目录
我们来试着改一下!
发现权限更改成功!
文件查看
最重要的看文件怎么能少不了呢?看文件主要使用以下命令:
1、cat
由第一行开始显示文件内容
选项与参数:
- -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
- -E :将结尾的断行字节 $ 显示出来;
- -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T :将 [tab] 按键以 ^I 显示出来;
- -v :列出一些看不出来的特殊字符
我们来试一下:
2、tac
如果我们想倒着读,用tac就可。
3、nl
大家伙到这会不会有些问题,如果我们想让这文件显示行号咋整?除了在cat和tac后面加参数,linux还为我们提供了一个命令,那就是nl命令。
选项与参数:(不常用)
- -b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值); - -n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
试一下:
发现确实在前面增加了行号嘞。
4、more
当我们的文件太长,需要一页一页的翻动时,我们一般会使用more命令,在more命令执行中也可以按这几个键。
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
我们快来试试:
5、less
less是加强版的more,可以往上翻页。
在操作时可以有以下的命令
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
我们来试一试
发现显示照常!并且还可以通过上下键进行翻页
6、head、tail
取出文件的前几行用head,反之取出文件的后几行可以用tail。在指令后面添加-n 行数即可。
如下就是显示前20行的命令。
7、硬链接、软链接
硬链接:两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。(就有点像你拷贝出来备份了一个,删了一个不影响另一个的使用)
软链接:相反,软链接就有点像我们平常所说的快捷方式,如果源文件删了,他就没啥用了。
下面我们来测试下吧!
[root@s6 home]# touch jj #在这里我们使用touch命令创建一个jj文件
[root@s6 home]# ls
jj www xjj
[root@s6 home]# ln jj jj1 #使用ln命令为jj创造jj1的硬链接
[root@s6 home]# ln -s jj jj2 #添加-s为jj创造jj2软链接
[root@s6 home]# ls
jj jj1 jj2 www xjj
[root@s6 home]# echo "jj handsome" >>jj #往jj里写入一段话
这里我们用到了touch命令以及echo命令
touch主要就是用于创建一个文件
echo是用来往文件中写入东西的
输出一下
[root@s6 home]# cat jj
jj handsome
[root@s6 home]# cat jj1
jj handsome
[root@s6 home]# cat jj2
jj handsome
不出所料,可以显示的!
这时我们将jj删除,看看会发生啥情况。
我们发现jj2变红了,这里变红说明他的源文件已经丢失了。
输出一下:
[root@s6 home]# cat jj1
jj handsome
[root@s6 home]# cat jj2
cat: jj2: No such file or directory #已经找不到了。。