Linux-第1集-基础指令 pwd、cd……入门
欢迎来到Linux操作系统的世界,本集我会用最简单的语言给大家讲解最基础的指令。
首先我们要明确Linux是通过指令完成相应的操作,
由于Linux的用户都是行内人,所有我们在学习此操作系统时看到的都是指令界面,而非像Windows操作系统那样是图形化界面
指令的本质就是程序,而为了让一个指令能够实现多样的功能,由此出现了选项
同一个指令下的不同选项,能让指令展现出不同的功能
我们详细学指令也就是学其配套的功能
tip:操作系统的学习不需要死记硬背,重要的是经常练习,久而久之自然可以记住很多常用的重要的指令了
whoami:当前正在使用Linux的账号名称
ls:显示当前路径下的文件名称
再具体介绍ls之前,我们先来了解一下有关文件的相关知识
文件结构:
文件 = 文件内容 + 文件属性
所谓属性就是文件的名称,创建时间之类的
很多人都会误把文件当成文件的内容,文件内容是空的,不代表文件是空的,因为文件还包括了它自身的属性,这也是需要存储空间的
文件内容和文件属性都是数据
对文件的操作也就分为对文件内容的操作和对文件属性的操作
因此啊,我们知道了文件它不单单有名字这一个属性,还有别的
而ls只能显示当前目录下的所有文件的名称,显示不出这些文件更为详细的属性
这个时候就体现了选项的灵活性啦
ls -l 就可以显示出当前目录下所有文件更为详细的信息了
ls -a -l 会显示全部文件的详细信息
那这里这个“全部”的含义是啥嘞?
这里又涉及到了一个小知识点也就是隐藏的概念
隐藏文件:
很多操作系统为了防止用户误操作,比如全选、误删了系统的重要文件
就会把这些重要的配置文件以隐藏文件的形式保存在操作系统当中
隐藏的含义自然就是正常情况下,我们是不会看见的,这样也就不会出现误操作了
在Linux操作系统中以.开头的文件或者是目录都称之为隐藏文件
另外指令对应的选项是可以组合传入,也可以分开传入
因此上面的ls -a -l 也可以写成 ls -al
pwd:显示所处路径
阅读到这,不知道你有没有疑惑,上面的内容里面我一会写目录,一会又写文件的,它们都是啥啊?或者说有啥关系啊
这里就给大家解答一下,目录和文件的关系
其实目录是Linux操作系统中常用的专有名词,在Windows操作系统中也就是大家所熟知的文件夹,所以下次大家再看见目录的时候,就把它理解成一个文件夹就行
在Linux的一个目录下呢,会包括普通文件和其子目录:
普通文件:以-开头 ; 文本文件、二进制可执行程序、视频、音频等都属于普通文件
目录:以d开头
Linux里面访问所有的文件都需要路径,而所有的路径开头都是从根目录开始的
这也就说明Linux所有的文件结构是一个树形的结构(多叉树)
那么这个树形结构当中非叶子结点一定是一个一个的目录,而叶子结点一定会是一个普通文件或者说是空目录
路径分为两种:
绝对路径:从根目录开始,定位目标文件,具有唯一性
相对路径:相对于当前目录开始,查找定位目标文件
在实际操作中由于相对路径写起来较为简便,因此相对路径用的更多一些
而pwd指令就是显示当前所处路径
工作路径里面的目录由路径分隔符分开(Linux里面是/,Windows里面是\反斜杠)
cd:进入一个目录
明白了访问文件需要路径,那么自然也要聊到如何进入一个文件吧
cd指令后面加上某指定文件的绝对路径或者是相对路径都能够访问到该目标文件
补充一下,ls不仅能够显示当前路径下的文件,也可以显示指定路径下的文件
我们要明确的是任何一个文件都存在. 和 ..
. 指的是当前目录
.. 指的是上一级目录
cd .. 也就相当于Windows操作系统里面的回退
这里有个方便的小知识点就是,cd - 能够切换到上一次我们访问的路径,即最近访问的路径
cd ~ 指的是回到当前用户的家目录
根用户(管理员)的家目录是root,
普通用户的家目录是home
桌面其实就是个文件夹,Windows在登陆的时候,会把对应用户的桌面内的文件呈现出来了
而家目录,就是在用户首次登录的时候,给用户呈现的东西,这就是家目录存在的作用
touch:创建一个文件
咱这又聊到了文件是吧,嘿嘿
创建文件这也是有讲究的,我们建议是把文件的后缀给带上
虽然Linux中不是用后缀区分文件类型的(即文件的类型与其后缀无关)
不过Linux中的软件,对文件后缀还是有要求的
所以为了方便后面的使用,咱还是在一开始创建文件的时候就把后缀带上,也方便自己能够一眼看出这是啥类型的文件
当然,如果忘记文件什么类型,也可以使用file 指令
file 指令,后面加文件名,就能够准确识别出给文件的类型
touch 再次创建之前已有的文件,就相当于修改了该文件的时间
stat 后面加文件,可以查到文件中的三个时间ACM
mkdir:创建一个目录
mkdir默认是只能创建一个空目录
不过使用选项-p就可以创建一串目录,
mkdir -p表示一次可以创建一串路径 : mkdir -p a/b/c
如果说我们想要去验证是否创建好这一串路径,基于上面告诉大家的指令,我们自然会想到不断的cd 和 ls
心动不如行动,很明显非常的麻烦
这里告诉大家一个简单的方法
上面我们有说到Linux操作系统中的文件结构是多叉树的结构,那么打印出多叉树就能一目了然,验证这串路径是否创建成功
而tree指令就是把指定的目录 ,以树形结构展示出来
用tree指令之前,要在Linux当中安装对应的软件,安装指令:yum install -y tree
如果说,我们用tree指令查看其他目录的树状结构出现了非法现象也就是刷屏了,我们可以不断的按ctrl + c 跳出来
rm:删除目录或者文件
有创建自然也会有删除
Linux中rmdir指令用来删除空目录
而rm指令就是专门用来删除有内容的目录了
由于Linux里面存文件都是以递归的形式,所以在用rm删的时候要加上 -r,
但是删起来非常的麻烦,因为是管理员用户,所以每次删的时候,系统都会提示确定删吗
所以要删一个非空目录的话,就 rm -rf 强制删除该目录以及该目录下的所有子目录
如果用rm删除一个普通文件,那么直接 rm -f 强制删除即可
man:查找手册,在线查询指令
当我们想要查找某个指令的详细内容的时候就可以使用man指令,man相当于一个在线手册,可以查C语言里面的一些接口,也可以查指令、系统调用里的接口
man后面跟数字就是代表直接去到该对应手册中查找
man手册里面有九个章节,依次按章节查找,哪个章节先查到就不会往下继续查找,即1手册就是man的默认手册
1.查的是可执行程序或者是命令行的命令
2.系统调用
3.函数调用
剩下的手册不用关心,用不上
要注意的是,一些云服务器上,man手册是残缺的,要完整的使用man手册就要安装,安装指令:yum install -y man-pages
现阶段嘞,man手册的用处不大,但是往后阶段,man还是很重要的
echo:输出文本信息
在这里要强调的一点就是Linux下一切皆文件
如何去理解呢?其实就是显示器、键盘也是文件,打印到显示器或者从键盘上读取数据,在Linux上来说就是写入到显示器文件、从键盘文件中读取数据
同样我们写Linux指令的这个黑框叫作终端,终端也是文件,该文件的位置就是/dev/pts中的0
当我们在登陆终端的时候,就会在/dev/pts下创建一个以c开头的文件
echo是默认打印到显示器上的,但是加上 > 可以写入到指定文件上,若文件不存在,则顺便创建这个文件
>这个符号叫作输出重定向,重定向操作会把目标文件先清空再写入,也就是说如果重复echo输入到同一个文件,则文件里面的内容会被替换
由此就得到了>的两种用法:
①>会直接从清空一个文件
②若>清空一个未存在的的文件,则清空变为新建一个文件
任何一个具有输出含义的指令都可以使用输出重定向
那如果我们不想替换文件内容,想不断的向文件内写入,也就是有指令可以完成的
>>叫追加重定向,也就是在文件原本内容的基础上,往后新增内容
cp:拷贝
语法:cp 要拷贝的 目标地点
在拷贝目录,由于我们知道目录是树形结构所以要加上-r,一步到位就-rf表示强制
拷贝的时候,如果在指定路径下又指定了名称(这个名称是之前没有,新的名称),可以起到拷贝又修改名称的作用
mv:剪切
mv的语法和cp一样
同样mv也有重命名的作用
剪切和重命名也可以同时使用
cat:查看文件内容
cat后面加一个文件就可以查看这个文件里面的内容了
要注意的是,若cat后面不加文件,默认从键盘文件读,从键盘中读到的内容打印到显示器上
cat < 和cat用法一样,只不过<叫作输入重定向
cat -n就是在查看的时候带上行号, -s是合并空行
补充一个新的小指令,就是tac,tac是把文件内容逆向打印出来,但是tac没有选项,-n,-s都不支持
虽然说cat指令是用来查看文件内容的,但是在实际操作时,我们只会用cat去查看小文件
那么既然有小文件,与之对应的就有大文件,有一个典型的大文件就是日志
日志:
日志其实就相当于是程序的日记,记录着程序运行时的一些输出
程序运行期间,不向显示器写入,反而是向日志文件中写入,也就是把程序的执行痕迹写到日志里,这个行为就叫做写日志
提一嘴日志是有自己的格式的
让程序不断的向日志中输入操作记录,那么发生问题的时候,我们就可以通过日志进行排查,找出问题在哪,这也就是日志的作用了
因此任何项目都是要存在日志的
而Linux操作系统本身就是一个大项目,所以也存在日志,日志一般在/var/log/messages里面
当我们用cat查看的时候,发现刷屏了
所以不难发现用cat查看小文件可以,但是查看大文件是有局限性的
那么自然是有指令可以去替代cat指令,查看大文件里面的内容,也就是接下来介绍的more指令
more:查看文件内容
当more查看大文件的内容时,会先把一屏打满
然后不断的回车就可以看到下一行的内容了,退出按q即可
但是more指令还是不方便,功能上受限,比如说它不可以上下翻,只能回车键向下翻
故more不推荐使用
而more有个平替指令就是less指令
less:查看文件内容
less也是先把一屏打满,支持向上下翻,同样是按q退出
/ 指定内容,不仅能帮我们查到指定内容,而且还会高亮出来,以此醒目
找到指定内容,输入n(就是next的意思),就会跳转到下一个指定内容所在的位置了
我们发现cat more less 都是查看一个文件的全部内容,所以当我们只想查文件的部分内容,比如只是开头、结尾,用以上三种指令,未免就有些小题大做,由此出现了head和tail指令
head:从开头查看文件
head默认查看目标文件的前10行
head -20 目标文件,就是查看前20行
tail:从末尾查看文件
同样tail指令就是默认查看目标文件尾部后10行的内容
管道 |
如果想要查看某个区间的文本内容就得用到管道了
啥意思嘞,举个例子head -300 目标文件 | tail -20
就是把目标文件的前300行交给后面的指令,让后面的指令做处理,提取在前者基础上的后20行
简单来说,就是把|前面的输出结果喂给|后面的,让tail进行二次加工
当然我们也可以用管道集联多组指令,对文本内容进行流水线式批量处理
date:查看时间
Linux用date指令查看时间,但是输出结果是外国人常用的不是我们国人看时间的习惯
因此我们要对date进行一些格式化处理,使其输出结果符合我们国人看时间的习惯
date +%Y-%m-%d_&H:%M:%S [注意大小写]
如此,输出结果就是 年月日时分秒
要明确一点的是,date指令不重要,但是时间很重要
就比如日志里面报错的时间
在date里面,最重要的一条指令就是date +%s
该指令会打印出一串数字,而这串数组就叫作时间戳
时间戳:
我们知道每个国家的时间其实是不一样的,那全球性贸易购物下单时间如果不统一,有时差的话,会造成很大的问题,由此出现了时区的概念
但是如何让全球的计算机以统一的步调进行时间统计呢?
因此就出现了时间戳的概念时间戳就是从1970的1月1日0点到现在累积的秒数
计算机里面的时间其实是时间戳,只不过转成了我们此时此刻对应的时间
时间戳的意义:时间戳从技术上是一个线性递增的数据,从应用和业务上,可以让我们根据时间戳进行内容的批量化分段式的查找和定位
同样我们也可以通过时间戳翻译成对应的时间: date +%Y-%m-%d_&H:%M:%S -d @时间戳
意思就是把指定的时间戳格式化显示
cal:显示日历
cal指令默认是显示本月日历的
cal后面加某一年,就可以显示那一整年的日历了
find:在目录结构中查找文件
语法:find 路径 -name 文件名称 (find不只是能用文件名称,还可以用文件类型,等等,以后再说
即find能在指定的目录下面进行深度优先遍历,查找对应名称的文件
which:查找给定命令的绝对路径
find和which都是查找指令
二者的区别就是find是真的去查找而which只能够去查找可执行程序,咱可以理解成which是只能在/uesr/bin/路径下进行查找
whereis 指令也能够进行查找,只是whereis查到的是非常详细的,不用指定路径,这里只是提一嘴,当我们用以上查找指令都查不到的时候,就可以使用whereis,whereis相当于一个备用查找指令
grep:打印指定文件的指定内容
语法:grep 'xxx' 目标文件
grep又叫作行文本过滤工具,与其说打印指定内容,不如说把其他不要查找的内容进行过滤
grep -n在打印指定内容的同时也会显示行号,方便我们快速查找内容所在行
grep -v(反向匹配),就相当于把匹配到的指定内容不打印出来,其他没有匹配的打印出来
也就相当于一个逆操作了
注意!grep在匹配的时候默认是大小写敏感的,若让其大小写不敏感就加上-i选项(忽略大小写)
grep也可以在进程中进行筛选,结合管道使用,当然这也是后话了
以上就是grep的两种应用场景了
bc:计算器
bc相当于Linux里面的命令行计算器
bc存在的意义在于,我们以后可能会用到 echo 1+2+3*7 | bc 类似的操作
那么把统一要算的东西全部让bc帮我们进行计算,就会比较方便
uname:用于获取电脑和操作系统的相关信息
uname是关于体系结构的命令 ,在Linux说体系结构的时候,重点指的是芯片、体系架构
在Windows里面,想查看相关信息一般都是去“此电脑”中查看
那如果我们想去查云服务器的相关信息,就可以使用uname -a(查看全部相关信息)
如果只想看内核版本和体系结构的话,可以使用uname -r
以上呢就是介绍了一些Linux入门级的基础指令,不过博主在这里还是想说明一点,本篇文章重要的不是指令,而是通过这些指令给大家介绍的相关知识,
从头阅读到这里的小伙伴一定对Linux操作系统有了个基本的认识,这也是博主最想看到的,你们的收货就是对我最大的鼓励啦
希望这篇本章对你有所帮助呀~
原文地址:https://blog.csdn.net/2401_83883881/article/details/143805282
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!