前言
相对于
linux
操作系统,其实window
也是操作系统,我们这节课说的是Linux
的基本指令
那么在window
上有没有基本指令呢,答案是有的,我们可以使用windows+r
进入cmd
就可以用我们的基本指令
基本指令
在本文中,我们基本上都使用类比的思路来进行学习,使用
window
操作系统进行类比学习linux
我们学的操作就是相当于window
的某种操作
(1)登录指令
在上篇文章我们介绍了
Xshell
登录云服务器,我们入门一般用的都是root
用户,等到了后面我们再使用自己的用户。
那么怎么登录呢,输入
ssh root@公网ip
,也就是我们购买的云服务器的地址。
(2)ls
指令
-
显示当前目录下的文件列表(包括目录,普通文本文件)
类比到windows
中就是显示文件夹中的内容,既可以包括目录也可以包括普通的文本文件。
什么叫做当前路径(目录)?<这也是一个指令,看指令(3)>
-
在
windows
下就是文件存放位置的路径看下图,下图表示的就是文件的路径。
ls
指令作用
ls
默认只显示文件名,就是当前路径下的文件列表如果想显示文件的更多内容,就要使用
ls -l
指令
-
为什们用
-
我们通过上面的东西我们知道,
ls
是一个命令,而后面跟的l
是命令选项,他的作用是显示文件的更多属性。
⭐我们在以后的学习过程中,携带选项是正常的,大家不要觉得奇怪,同时这也是很简单的。
那么这两个有什么区别?
-
首先我们知道,
ls
只显示文件名,但是ls -l
显示文件的属性,也就是文件的更多内容。
类比到在windows
中就是ls
想当于只查看文件而ls -l
就是点击鼠标左键查看文件的基本属性。
什么是文件属性?
-
我们文件的名字,保存修改时间,以及文件的类型,大小,等等,我们叫做文件的属性数据,属性也是一种数据
用ls -l
就全部能看到,看到文件的属性
⭐所以我们知道 文件=文件的内容+属性 -
显示更多的隐藏文件。
在linux
下,如果文件/目录名如果以.
开头就是一个隐藏文件
-
ls -l
可以简写为ll
ls -l -a
可以简写成ls -la
ls -l
?
ls -l -a
的作用
ls
后的简写
ls
后的其他选项
常用选项 | 作用 |
---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐含文件。 |
-d | 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录 |
-i | 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件 |
-k | 以 k 字节的形式表示文件的大小。ls –alk 指定文件 |
-l | 列出文件的详细信息。 |
-n | 用数字的 UID,GID 代替名称。 (介绍 UID, GID) |
-F | 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“ |
-r | 对目录反向排序。 |
-t | 以时间排序。 |
-s | 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件) |
-R | 列出所有子目录下的文件。(递归) |
-1 | 一行只输出一个文件。 |
(3)pwd
指令
- 显示当前路径。 建议
-
每一次登录的时候,或者长时间没有操作,用
pwd
确认以下操作路径
pwd
指令的作用
(4)cd
指令
我们发现在每一次创建完文件都会有这一个点,两个点的东西是什么呢。
dr-xr-x---. 6 root root 4096 Nov 11 10:46 .
dr-xr-xr-x. 18 root root 4096 Nov 3 17:20 ..
#.
表示当前路径
#..
表示上级路径
-
改变工作目录,进入指定目录
cd
进入当前路径(注意有空格的,大家注意一下下面也是)可以随便进入。
cd ..
退到当前上一个路径
cd
的作用
window
下的路径
D:\a代码存放架\test_11_11
\
:路径分割符
linux
下的路径
/
:Linux
下的路径分隔符
如果回退到低,就不允许回退了,就变成了一个
/
,
所以最后一个的/
叫做Linux
的根目录
Linux
的目录结构,整体是一个多插树的结构
-
找到
-
我们可以用文件的路径来找到文件
所以我们在linux
也可以用文件路径来找到文件
只是因为它具备唯一性。
windows
的文件夹或文件,通常用什么定位这个文件?
绝对路径和相对路径
-
绝对路径
-
从根目录开始,定位文件的路径,就是绝对路径,用起来不会错
但是麻烦,一般在配置文件中,进行对某种文件进行配置的时候采用
相对路径
-
在兄弟文件中先用
cd ..
,退到上一级,在进入该文件,就是相对路径
相对于你当前所处的路径!!
如果当前相对路径变了,就失效了
用起来简单,后续指令操作的时候,常用的路径定位方案
cd
的快捷键
cd ..
: 返回上级目录
cd /home/lihua/linux/
: 绝对路径
cd ../day02/
: 相对路径
cd ~
:进入用户家目
cd -
:返回最近访问目录
(5)热键tab
(很常用)
进入目录时,如果不知道目录中有那些内容,可以按tab键,一下不行按两下,如果没有,说明路径写错了
如果你找a开头的文件,但是忘了名字是啥可以按tab键,会将所有a开头的文件写出来
在我看来就相当于是查找功能,查看改目录下有那些东西,和看看以a或其他开头的东西。
(6) tree
命令
以树状结构的形式显示当前路径下的目录的结构
但是如果我们自己想用这个结构,我们是不可以的,他会报下图的错误。
那是因为我们没有下载这个tree
命令,我们就需要另一个命令来进行下载
yum install -y tree
,输入这个命令我们就可以使用这个命令。即装即用。
这个命令可以让我们图形结合,更方便观察。
(7)touch
指令
其实
touch
命令十分简单,其用法如下
touch
+filename
(文件名),然后就再当前路径下创建一个普通的文本文件
touch
也可以在指定路径,在该路径下创建一个文件。具体操作就是touch
后加路径然后在加文件名
例如:touch ../test.c
,意思就是在上级目录下创建了一个test.c
文件
如果要创建的文件存在,
touch
的功能就是将文件是的三个时间修改到最新的。
(8)nano
指令
相当于打开记事本,写一些我们写的简单的代码,在我早期学习已经够用了。
nano test.c
就默认打开这个文本文件,如果该路径下有就是打开该路径下的文本文件,如果没有就相当于自己创建一个这个文本文件然后就可以编写代码了。
我们如果想上面的tree
命令没有安装,我们就使用下面这个命令安装,即装即用yum install -y nano
,就可以使用记事本了
(9)cat
指令
查看(打印)文件的内容。例如我们在
nano
中写了代码我们我想查看一下写的什么代码我们就可以用nano
。
cat
+-n
,将每一行的内容,标上行号。
cat
+-s
作用:不输出多行空行。
表示将多余的空行都删除,只留下一个空行。
(10) gcc
指令
那么对于我们写完的代码,要怎么进行编译呢,我们就可以使用
gcc
对我们的代码进行编译。
在编译进行完,就会形成一个可执行程序a.out
。
-
怎么显示
-
./a.out
我们就可以显示编译下的结果,.
表示当前路径,/
表示路径分割符。表示执行当前路径下的可执行程序。
a.out
下的内容,也就是在编译后的结果。
(11)stat
指令
stat
+fliename
作用:查看文件的属性,任何一个文件,都会有三种时间ACM。
a
c
m
(12)mkdir
指令(重要):
mkdir dirname...
作用:在当前目录下创建一个名为 “dirname”的目录 如果想创建一串目录我们可以用mkdir -p
递归创建多个目录看下图
(13)rmdir
指令 &&rm
指令(重要):
我们从名字就可以看出来
rmdir
是一个与mkdir
相对应的命令。mkdir
是建立目录,而rmdir
是删除命令。
- 只能删除空目录----(没事们用) 怎么删除不是空目录的东西呢?
-
rm
命令 可以删除普通文件,但是不能删除目录,
那么我们怎么删除目录呢,我们可以用rm -r
,表示递归删除,我们就可以删除目录了
还有一个选项rm -rf
,f表示强制的意思,当我们有东西不能删除,我们没有权限删除,我们就可以用这个强制让他删除。
注意
- 在我们的使用当中,我们要注意使用,在linux中没有回收站,所以删的时候一定要注意。慎重使用。
rmdir
功能
(14) man
指令
作用:访问Linux手册页的命令。在我们的Linux中,命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
怎么用呢:
man
(选项)+命令,就可以查找该命令的手册。
我们可能还是会出现上面
tree
的问题,但是我们还是可以用
yum install -y man-pages
进行安装。
-
我们在
-
这我们就需要弄明白
man
手册是什么?
我们就可以用man man
,用man
指令查找man
手册。请看下图
我们能发现在man
手册中,还有9个手册,我们在man
后的数字就是他的第几个手册。
🐕例子:请看下图
我们有时候也能看到man后没有数字,其实也是可以的,就是默认从第一条手册开始,查看有没有这个指令。然后再从后面的手册依次查找。
man
后通常能发现数字,那么那是什么呢?
解释一下men
各个手册分别表示什么?
- 是普通的命令
- 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
- 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
- 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
- 是给游戏留的,由各个游戏自己定义
- 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
- 是系统管理用的命令,这些命令只能由root使用,如ifconfig
(15)cp
指令
功能介绍:从单词的角度我们就可以看出来,其实就相当于我们windows中的复制粘贴。
-
怎么用
-
cp
+空格+拷贝的文件+空格+拷贝到那个地方
对于cp
命令来说,只能拷贝普通文件,不能拷贝目录,如果想拷贝目录就需要用到下面的命令
cp -r
就是进行递归处理,就可以将目录也拷贝了。
但是有的时候我们没有权限做拷贝的东西,我们就可以强迫让他实行,就用cp -rf
,我们就可以随便拷贝,但是我们拷贝必须按照规则,最好不要在根目录下进行拷贝。
cp
指令
(16)mv
指令
功能介绍:就是相当于我们计算机中的剪切功能。
用法:
mv +dir +rsc
就是将需要拷贝的东西dir放到src中。
第二个功能:重命名功能
用法:
mv +旧名字+新名字
,如果都是在当前路径进行操作,我就是重命名功能,如果不是在同一个路径就是我们的剪切功能。
-
对于
mv
指令,我想信大家可能还是没有太明白,我现在做个总结,给大家分析一下什么时候是什么功能。
当我们mv
后面跟的第二个参数是一个路径,那么我们就进行剪切功能。
如果我们mv
后面跟的第二个参数是一个名字,那么我们就进行重命名功能
但是我们如果想在进行剪切的时候直接重命名呢可以吗?
其实是可以的,就是我们在第二个参数后路径后加上新的名字就可以了,也是很容易理解,就是需要我们的多加练习而已
mv
指令的总结
(17)echo
指令
-
将我们从键盘写入的东西显示到键盘上。请看下面的例子。
输出重定向
-
先看个例子
echo "aaaa bbb ccc" >log.txt
,我们在我们的目录中没有log.txt
文件,会自动创建,并且将本来应该显示到显示器上的文本,写入到文件中。
我们就可以用cat
显示log.txt
的文本内容
输出重定向的一下操作以及注意事项
-
我们重定向是一种覆盖式写入,在准备写入之前,会将文件的内容清空,然后再写入,所以不管我们
echo
几回,我们输出的都是最后一回,覆盖的东西。请看下图
那么怎样在
输出重定向的时候可以一直写,将所有写的东西都记录下来呢?
-
我们将这种方式叫做
追加重定向,不断的向目标文件新增内容。
方法就是将一个>
变为两个>>
,其他的东西都保持一样,这样就可以保持追加重定向。
补充一个命令
-
会统计文本的内容,如果想知道文本的行数我们就是
wc
+-l
输入重定向
-
就是将
>
变为<
,我们就变为了输入重定向,
我看一下下图在作解释
虽然他们的效果好像看似都一样,但是他们的本质确实完全不同的一个是通过命令行的形式将他打印,而 另一个就是通过输入重定向来打印的。
说明
-
我们在
echo
打印字符串,默认显示到显示器上的,但是如果我们加上>
符号我们就将字符串放到了文件里,也就是我们常说的输出重定向。
其实我们可以这样理解,默认显示到显示器上,其实可以理解上向显示器写入,我们可以把显示器当作一种文件,而从键盘中写入信息,我们也可以将键盘当作一种文件。
结论
-
linux
下一切皆文件这是一个抽象的东西,但是我们需要多看看,多练习,才能更加理解这个概念。
echo
功能
wc
命令
(18)more
和less
命令
more
的功能:是一个内容分屏命令,可以分页显示大文本文件的内容,使用户可以逐页阅读文件中内容,它默认是内置在各个Linux发行版中的。
但是他只能向下翻阅,不能向上翻阅,并且他不能进行查找,所以我们一般不经常用他。
more
的语法是 :more
+[选项]+ 文件名
less
的功能:less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。并且也支持查找。
查找的方法就是在下面输入/+内容
less
的语法是 :less
+[参数] +文件名
(19)head
命令
功能:就是将文本的前10行打印出来,没有10行,有几行打印几行。功能就是怎么简单。
-
可不可以自己想打印几行就打印几行呢?
-
答案是可以的,只需要加上
-n
+数字就可以,或者直接加数字也可以。就可以打印自己想要的行数。
(20)tail
命令
功能:基本跟
head
命令一样。就是将文本的后10行打印出来,没有10行,有几行打印几行。功能就是怎么简单。
-
可不可以自己想打印几行就打印几行呢?
-
答案是可以的,只需要加上
-n
+数字就可以,或者直接加数字也可以。就可以打印自己想要的行数。
(21)命令行管道"|
"
所谓管道,就是也有入口也有出口。
但是在我们的计算机中最重要的资源就是数据
计算机的管道,就是连接两条指令,传送数据的指令。
例子cat mylog,.txt | wc -l
表示显示mylog.txt
文件的行数。
其实我们可以把这个管道就是一个文件。
-
如果一个文件有200行的内容,我们要提取100~120的内容,并且不许创建临时文件我们该怎么做呢?
-
这时就需要我们的管道,先看操作在解释
cat mylog.txt | head -120 | tail -20
。
首先用cat
先将文件的内容打印出来,然后我们在用head
提取前120行的内容,最后再用tail
提取后20行的内容。
此时,管道就可以集连数据的多条指令,进行数据的加工,处理。
时间相关的指令
(22)data
指令
data
指令:可以显示我们当前的时间
date
用法:date
+ [OPTION]… [+FORMAT]
用
data
可以显示我们当前的时间
如果想看具体的年或其他时间按,就加上具体的选项,我们的选项很多比如
- %H : 小时(00…23)
- %M : 分钟(00…59)
- %S : 秒(00…61)
- %X : 相当于 %H:%M:%S
- %d : 日 (01…31)
- %m : 月份 (01…12)
- %Y : 完整年份 (0000…9999)
- %F : 相当于 %Y-%m-%d
-
时间戳(非常重要)
-
时间转换为时间戳:
date +%s
时间戳转换为时间: date -d@+时间戳
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。他是自增的。能够和我们现在使用的时间进行转换。
(23)cal
指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”
-
常用选项
-
-3
显示系统前一个月,当前月,下一个月的月历
-j
显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示前月在一年中的天数)
-y
显示当前年份的日历
(24)sort
指令
作用: 将文本的每行内容进行排序。(按照ASCⅡ值的大小排序)
-
怎么可以逆序的排列?
-
使用
sort
+-r
+文件名就可以了。
那怎么去重呢?
-
就是在排序完后加上
| uniq
我们就可以去重了
(25)find
指令(十分重要) -name
功能:Linux下find命令在目录结构中搜索文件,并执行指定的操作
用法:find
+路径+ 选项。
(26)which
指令
功能:搜索我们使用的指令,并显示他的路径
用法:whilch
+指令
-
注意
- 指令就是文件
(27)where is
功能:搜索我们使用的归档文件,并显示他的路径
用法:whilch
+文件名
(28)alias
指令
功能:就是起别名,之后就可以用别名了
用法:alias
+别名+ '原本的指令'
(29)grep
指令
功能: 行文本过滤工具,能够将文本中你要搜索的东西都过滤出来
用法:grep
+'搜索的东西'
+文件名
-
怎么将过滤的东西进行排序
-
grep
+-n
+'搜索的东西'
+文件名
反向过滤
-
将匹配到的不显示,显示没有匹配到的东西。
使用grep +-v
grep +-i
忽略大小写。
(30)top
指令
就是相当于我们windows的任务管理器。
(31)zip/unzip
指令
zip
功能:将文件进行打包
zip
用法:zip
+打包后的文件名+要打包的文件或目录
但是注意的点就是:这个打包只是将文件的目录进行打包,并不能将文件的内容进行打包,如果想要将文件的内容进行打包需要加上下面这个选项。
zip -r
+打包后的文件名+要打包的文件或目录
unzip
功能:将打包的文件进行解包到指定的路径
unzip
:unzip
+要解包的文件名
怎么文件进行解包到指定的路径?
加上一个-d
+指定的路径。就可以了
如果没有
zip
,我们可以直接下载,像上面一样yum install -y zip unzip
-
为什们要进行打包?
- 打包是因为防止他丢失,压缩就是为了传输更多的文件。
(32)tar
命令
功能:既可以压缩,又可以解包,但是要看选项
选型 | 作用 |
---|---|
-c | 建立一个压缩文件的参数指令(create 的意思); |
-x | 解开一个压缩文件的参数指令! |
-t | 查看 tarfile 里面的文件! |
-z | 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? |
-j | 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? |
-v | 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! |
-f | 使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! |
-C | 解压到指定目录 |
所以我们可以通过上面的选项组合一下,就可以进行压缩和解压包,
-czf
我们就可以将包进行压缩,就是上面一样的操作,
而将c
换成x
就可以解压了,操作还是一样,
区别就是怎么这个压缩包的形式时tgz
.
加一个-C
+指定的路径
(33)bc
bc命令可以很方便的进行浮点运算
(34)uname
指令
功能:
uname
用来获取电脑和操作系统的相关信息。
uname
可显示linux
主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a
或–all
详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
(35)热键
按键 | 作用 |
---|---|
[Tab] | 具有『命令补全』和『档案补齐』的功能 |
[Ctrl]-c | 让当前的程序『停掉』 |
[Ctrl]-d | 通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit |
[Ctrl]-r | 在历史命令中搜索 |
总结
我们上面总结的命令,才不过两两,这个还需要我们多多学习,指令还很多,我们的路还很长,让我们一起加油。一起进步。