文章目录

 


前言

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。
GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码, Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都 可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。

 

一、指令详解

1. ls 指令:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

9ad0f16097f849e09fab15be71f36c2c.png

我们可以看到在家目录下,ls将显示家目录下的所有子目录与文件

a1ba9742b69c47c786db81a891661d55.png

当我们进入test目录后,ls显示的是test目录下的所有子目录与文件 

2. mkdir指令: 在当前目录下创建一个新目录

642328c0469340c2b75d9c514eb80802.png

 我们在家目录下创建了一个新目录叫new,在家目录下用ls指令能够查到

mkdir -p :递归建立多个目录 后面的每个目录要用 / 隔开

ed338412265348628b65cfbb3467e640.png

 d936c415563b41a198b45974e70c29f4.png

3.pwd指令:显示用户当前所在的目录

16a303ee998a4c9fa096f81b2ff06711.png  我在哪个路径下就显示哪条路径,比如现在在家目录下就显示了家目录的路径

4.cd指令:进入指定的目录下

0e1f333b431d4931a0ff15af32af835c.png

比如进入家目录下的new目录,cd new即进入,由于new目录下并没有其他子目录或者文件所以在当前目录下使用ls指令什么也没有。

5.touch指令:创建指定的普通文件

touch是创建一个文件,mkdir是创建一个目录,在我的linux环境下,目录是蓝色,文件是白色,红色则是压缩文件。

5e39e1cee0f54788848af3a18b8f3566.png

在new目录下,我们创建了一个名为newbook的普通文件,ls查看当前目录下的文件可以看到new目录下有一个newbook的普通文件。

6.whoami指令:查看我是谁(显示用户名)

由于linux支持多个用户同时登陆使用所以在使用的过程中必须得知道自己是谁

42fcc40f3a6744e4a69ea360470c4d8b.png

我在当前环境下用root的身份登陆所以显示的是root,这里每个人的用户名都不一样。

7.echo指令:为某个普通文件中写入内容

echo + " " + >  (>为输出重定向,即使原来文件中有内容也会先清空在写入新的内容)

c7cf0d7e15a34c3699ca25246ba4926b.png

 我们可以看到当我们在newbook文件中写入“这里是第一行”后,然后用echo+>符号继续在newbook文件中写入新内容时原先里面的“这里是第一行”的内容没有了,这就是输入重定向的意思。

echo + " " + >> (>>为追加重定向,当原来的文件内有内容时不会清空原有的文件而是在原先内容的基础上追加。

2d844a4503f84f04b4e4e7cb8045852d.png

 也就是说如果我们在一个文件内写入写入内容又不想删除原先文件内的内容,这样的话就用>>的追加方式,如果写入内容的同时想清空文件内的内容则用>的方式。

<符号位输入重定向,拿cat举例,cat默认是从键盘获取数据的,但是如果加上<符号cat就会从文件获取数据

ab7280a387ee4ade8cfd16b06eadad85.png

 51d16cf063514cbd81f6884394370544.png

 

8.ll指令 : 显示当前路径的文件夹及文件的大小权限等

0291bd12a0f44c2a92c7f239e4531bc4.png

 可以看到ll指令比ls全的多,有文件创建的时间以及大小和权限。

9.    .和..  两个快捷命令   

.  : .是当前路径  

.. : ..是上一级路径

f88f2524e5fa408ab511ad9fe59fc8e2.png

我们可以看到在new路径下,cd .还是在new路径, 而cd ..后回到了上一级路径root,这两个指令在进行文件拷贝或者移动的时候非常方便

10.cd ~ :cd~可以直接返回家目录。

当我们进入某一个目录太深的时候,依靠返回上一级目录回到家目录太麻烦,这个时候我们直接cd ~即可,在linux中大部分命令都需要带上空格。

fa95d7025e7244fa8afa226f9a7643ed.png

11.热键Tab  (命令的自动补齐)

比如说你现在要创建一个目录,但是你把创建目录的指令忘记了只记住了第一个字母m,这个时候快速tab两个即可出来以m开头的所有命令。

87d22c0de8e5445e96ef91f308f9399b.png

12.ctrl + c 终止程序运行

比如我们用tree来展示根目录的时候一直刷屏停不下来,这个时候我们就可以用ctrl + c来终止 

13.tree命令:以树状结构显示linux执行的目录结构

c15b77a640eb43bbb71ec6b412a94fcf.png

比如我们tree d1目录就可以看到d1以及d1的子目录。

14.cat指令:查看文件夹的内容

 fdabb5a1d593403d84de928ac1c9b276.png

要查看哪个文件夹的内容在cat后跟上文件夹即可。

15.gcc指令:编译一段C语言代码

3ba5a82994c24bed910db7da0620ddf2.png

我在book文件中写了一个C语言程序,然后再gcc编译的时候发现出错了原因是一开始的book文件并不是后缀为.c的文件,所以在当我将book重命名为book.c的时候编译成功了,这时候就用到了第十六个指令./a.out指令,这个指令能让C语言程序运行起来,第一个.是当前路径,/是路径分隔符,整体就是在当前路径运行程序。

16. ./a.out指令 :  让C语言程序运行起来

aa1ae8ed472748258fd312b2c7257d7c.png

 使用这个指令后会生成一个a.out文件。

17.stat指令:获取文件的所有属性

726473b5dd2f48898e78852bad307406.png

18.rmdir :删除空目录

182871d077fd476bb487cb026e6f2139.png

 当我们删除d1目录的时候提醒我们只能d1目录不为空,所以这个指令只能删除空目录。

0f25d8abd3df431e8103e22d7754e9d5.png

我们重新创建了个目录empty,里面为空在rmdir后直接删除。

19. rm -r 递归删除

rm -rf 加一个f就变成了强制递归删除,这里的强制是指不会再告诉你是否要删除某某文件。

0d65f70917d2457f90ed74b9fe1c2468.png

前面我们已经看到过d1是一个递归目录,当我们用指令rm -rf递归删除后d1及其他的子目录都被删掉了。

20.rm -rf./* 删除当前目录下的所有内容

96d00e6ce973410f85fc3111583e2674.png

可以看到使用此命令后new目录下的内容都被清空了

21.man : 查看各个指令的手册

比如查看ls指令的手册

f442c27ac1b34ed8bbe50bc6baca6e66.png

ab0e550ddc5f4271a48a36b9f35a839f.png

 22.printf:打印

printf在linux中也是一条指令,使用方法为printf"%d:%s\n 10 "hello"

23.cp指令 :拷贝文件到指定目录

5907ba7e7d9449f48ee41722e31d64cb.png

图中将root/new/路径下的newtest拷贝到test目录中

也可以直接拷贝到上级目录我们介绍过..就是上级目录

cp -r:递归式拷贝

6ce55efe78c34d55943c29ea53fee8e5.png 

mv 指令:剪切移动

cbe774cff3bc4c0f8ee512b2c58b8f7e.png 

如图我们将家目录下的test.c文件移动到new目录中,移动后原先家目录下的test.c就不在了

mv也可以起到对文件重命名的作用

比如将刚刚的test.c文件重命名为oldtest

b5d1ea83d07540b29803c8446f951159.png 

24.cat -n :在文本内容前面显示行号

3df86efd8c5a43bf92300d03bbf9153f.png

25.cat -s :不输出多行空行

26.wc指令 :统计文本内容

06a5f5be65504cef9ff035938f12ccb0.png

 

27.wc -l指令: 统计文本内容的行数

f1ddcd0f46ae4403bb071f634c47253d.png

28.more指令:与cat指令相似,查看文本内容

59cf959233a64250b3a465efdea36912.png

 29.less指令:对文件或其他输出进行分页显示的工具,用pageup和pagedown进行翻页

a5f55ef74dfa4b7fb35b51668f11885d.png

7a485dd80a714b748bebe1380ddc96af.png

进入展示页面后用q退出。

30.head指令 :默认打印文本前10行

 8a7fc17591a34b449c2564678d429d7c.png

head -5  :打印文本内容前5行

526b9b0ac88644628d87fe250e13dfe2.png

 31.tail指令:默认显示文本内容后10行

812ae382e8524d26907e1853b3ee4368.png

 tail -3 :文本后三行

bcb9ba345c3b446e82098fc917afea74.png

32.  |  :管道   可以连接多个命令

比如:cat newtest | wc-l     文件内容一共几行 

3b331e8ea9f64e8197319261f3280bf6.png

33. date :显示当前日期

d6c33090c7974876b0d17024177c66d7.png

 date +%Y:显示年

66d35aaf54c541d3a98411b666dd7a05.png

date +%Y -%m :显示年月

b8f63330df4b4233b36d3f3f8c71109b.png

date +%Y-%m-%d :显示年月日

6fbcda81a84741a999d46d124b22cc4e.png date +%Y-%m-%d_%H:%M:%S :显示年月日以及具体时间

2996ab78eb804f8a997ea6d4f1326d2f.png 

 

34.cal 指令:查看日历

aa232eb1c36e4fcdaac32b09cb95994d.png

35.sort指令:排序文本内容

d5373c3baec74e5b81ef801a4218ea2a.png

 

 36.uniq指令:对文件内容去重

e104542017764f48a16ca1b966f6771b.png

37.find指令:查找某个文件的路径

c7532793919443d3b8f70e00f4f6aa3c.png

 ~的意思是在家目录下查找,-name是通过文件名的方式后面跟上文件名。

38.alias指令:对指令重命名

1b3a65805c8d42f69b76cf48c5d22703.png

如图所示我们用alias指令将ls重命名为myls。 

39.grep指令:查找文件内容中含有关键字的内容

0d017959bf54412fab1abb440b6a2953.png

我们以f为关键字在newtest文件中查找。

grep -n  :显示行号

ff3a40e761174cb2ab287143ef3c7fcd.png

40.>+某文件  :清空这个文件的内容

因为>为输入重定向

21590f9991064a809830b4c0ac7720a0.png

41. grep -v :不显示有关键字的内容

3c2ff921cbef4250bad53e63007cf264.png

v的含义其实就是反转的意思。

grep -i :忽略大小写的显示文本内容

35e9654c0b5645f68b6af8a5f6fdf2d2.png

42.top指令: 相当于任务管理器

bbb45a9fd53b4b2786f7f570f7299c26.png

ctrl + c 退出

43.which指令:查看指令路径 

771ab41498b04a35919c2477b13d02e5.png

a999dba02d9249eda42a6be603cdb11f.png

44.whereis指令:搜索包含关键字的文档

3bfd32fc197c4e10b5cbba37027c65b5.png

45.zip 指令:打包一个文件夹

4cf06cf9f27047e4b20d9168ddf88ec5.png

 46.unzip指令:解压文件

b9e4f2d66f964e91a9899a914ad9ece0.png

 cce65dded0fd44cc909b22e0428a68f8.png

可以看见刚刚删除的newtest文件又回来了

47.zip -r 指令:递归打包一个文件夹

递归的区别在于可以将文件夹内的子文件夹通通打包

48.tar指令:与zip一样都是打包一个文件夹

tar -c :压缩文件  tar -x:解压   tar -z :用gzip压缩  tar -v :压缩过程显示文件 

tar -f :使用文档名   tar -t :查看文件   tar -C :默认解压到当前路径下,指明后可解压到其他路径

30a414c830e24641a8184c282d8bd1f7.png

tar -czf的意思是使用文档名用gzip压缩文件

b022433856584481a50a73d682c0d9ff.png

 tar -xzf的意思是使用文档名用gzip解压文件,我们可以看到在我们将newtest文件删掉后对newtest.zip文件解压然后newtest文件又恢复了

49.uname指令:查看计算机的体系结构

083bc23a03a94266bfef6a8cee13c5b7.png

uname -a 和 uname -r 可以查看到更详细的信息

50.cat /etc/redhat-release指令:查看系统内核版本的命令

65ac3a9298924d33ae552023191f952a.png

 51.热键ctrl + d 自动退出

52.上键和下键

数字键盘旁边的上键和下键有着翻阅以往用过的命令的功能

53.文件的权限

我们在用ll指令时可以看到各个文件的权限信息,那么这些权限信息该怎么理解呢?我们来看一张图:

2d6bc41a3126498ba07238ded1f82bdb.png

文件名和文件创建的时间相信我们大家都并不陌生,主要陌生的地方在于文件拥有者和文件所属组是什么?文件拥有者就是谁创建的这个文件谁就是这个文件的拥有者,而文件所属组又是什么呢?我们都知道一个大型项目往往是由很多人一起完成的,如果一个文件只能由创建这个文件的人去打开使用那么其他人就没办法使用,所以有了所属组的概念,当你不是文件的拥有者但是你是文件的所属组的时候也可以使用此文件。而在文件属性中一共有十个字母,第一个字母是用来区分文件类型的,-:代表普通文件,文本,可执行,归档文件

d:目录     b:块设备   block磁盘   c:字符设备,键盘或者显示器  p:管道文件   s:网络socket文件

l: 链接文件 link

剩下的9个字母我们三个三个分为一组一共三组,第一组为拥有者权限,第二组为所属组权限,第三组为其他权限。拥有者权限就是文件拥有者所拥有的权限,所属组权限就是文件所属组的权限,而除了这两个以外的就是其他人,其他人也有权限。

接下来讲解如何给文件加权限或者减权限。

54.chmod指令:给文件添加或者删除权限

在添加或删除的过程中有三个字母需要认识,u代表拥有者,g代表所属组,o代表其他。a代表所有,所有就是拥有者,所属组和其他。

745b3f1268494700b334413ddf66c655.png

我们可以看到刚开始newtest文件的拥有者权限并没有可执行x权限,通过chmod命令后newtest文件的拥有者权限多出了x权限。

0e74194e6f974afb95ea77bdbc8d752e.png

 同时我们可以多个权限一起添加或删除如图所示。

进制法加权限

一共有三个组,每个组都由三个比特位构成rwx,当三个比特位为111说明这个组的权限是满的,而二进制的111换算为十进制是7,二进制为110说明只有rw权限没有x权限,二进制110换成十进制为6,所以我们想要给一个文件的权限修改为rwx rwx rwx 我们可以直接chmod 777 newtest

b776217664e14ef199c935a10ccac04d.png

如图所示我们成功将权限修改为满权限。

55.chown指令:更改文件的拥有者

3245420dd22b4fa6b3906750bf39be28.png 比如说我们要将文件的拥有者改为root,那么直接chown root newtest即可成功修改。

56.yum的使用(在root下或者sudo下)

74c7f7baae6b401ca1ed3cac99ff971b.png

 比如我的系统中没有man手册,那么我们用yum install man就成功安装好了man手册。

yum list | grep ls:在yum列表中查找某软件

9ca729d339cb47f685584cf469f2a58f.png

比如我要查的ls,查找后就将结果显示出来了

yum -y install XXX   : 用yum安装名为XXX的软件

yum -y remove XXX :删除名为XXX的软件

57.更新yum源(注意你自己的yum源能正常使用的情况下不需要更新)

1.先进行备份老的yum源 Centos-Base.repo
2.wget 获取新的yum源配置文件 -- 可以通过网络搜索得到 -- centos 7 非常成熟的平台
3.mv 重命名成为Centos-Base.repo
4.yum clean all && yum makecache

 57.粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

为什么要有粘滞位这个概念呢?我们大家都知道linux是支持多个用户同时登陆并使用的,假如说有两个用户分别为A和B,B创建了一份文件只能B自己看,有一天A也想看这个文件但是发现自己没有权限打开这个文件而这个时候A心里不开心了既然我不能看那么你也别想看所以A把B创建的文件删掉了,这合理吗?当然不合理,所以就有了粘滞位的概念,粘滞位就是为了防止有人没有权限查看我的文件然后直接删除我的文件。

88299b7442824d91b56fdd6fda6e93a1.png

我们可以看到newtest文件的其他权限一开始为x,在我们chmod+t后变成了t,这个时候就说明我们为这个文件添加了粘滞位。

权限的总结:

目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件) 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

 

总结

要简单的上手linux系统一些简单的指令是必须要掌握的,linux与windows不同,windows通过简单的图形化界面可以清楚的知道自己每一步都在干什么,而linux则需要时刻输入代码来确认自己在哪个步骤。

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作统,它包括GUI组件和许多其他实用工具。

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐