Linux
Linux是一个免费的面向开发人员的操作系统,且自由开源
那么在这里。自由这个字眼我们可以来细说一下
自由(Free):
打个比方,你拥有自由发表言论的权利,自由呼吸空气的权利,但是并不代表你可以到处去蹭去白嫖“免费的啤酒”,这里也就是说自由软件的重点不是免费,而是指自由度,也就是这个自由并不是完完全全的自由,他是有一些限制的,那么到底是什么样的限制呢,我们接着往下看
用户可以自由的执行,复制,发行,学习。修改更新自由软件等等
自由软件的特点
1.取得软件与源代码:你可以根据自己的需求来使用这个软件
2.复制:你可以自由的复制该软件
3.修改:你可以将开源的源代码进行程序修改工作
4.发行:你可以将你修改过的程序再度自由发行,并且不会与原先的编写者冲突
下面这两项注意
5.修改授权:你不能将一个授权的自由软件,在你修改后又将它取消GPL授权
GPL:版权授权声明
6.单纯销售:不可以单纯销售自由软件
- 下面这两个的意思是,既然GPL是在互助互利的角度上去开发的,那么你自然不能将我们所有人的成果占为己有,所以在这里不可以将一个GPL软件的授权取消。
- 但在这里如果你对该软件程序进行了大幅度修改,那么自由软件难道不能销售么?当然不是,自由软件是可以销售的,不过不可以仅仅的销售自由软件,应同时搭配售后服务还有相关手册等等,这也就是第6条所说的,不可以单纯销售自由软件程序,其实这里我们也可以理解为,你卖的不单单是产品更多的是服务,这么说也许大家更容易理解一点。
- 目前自由软件工作者。他们所赖以维生的,几乎都是在“服务这一块上”,自由软件还是具有商业空间的
Linux的发行版
既然讲到了销售自由软件,那么这里就再来说说Linux的发行版,发行版也算是自由软件商业化的一个体现,但也有其他发行版是免费的
如上图所看到的,Linux的发行版有很多
这里就给大家简单介绍几个,如果感兴趣的话可以看看度娘
1.centos
CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,是免费的、开源的、可以重新分发的开源操作系统。
CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于Red Hat Enterprise Linux(RHEL)依照开放源代码(大部分是GPL开源协议 )规定释出的源码所编译而成。
centos也是在企业中比较常见的Linux系统,比较普遍
2.Ubuntu
Ubuntu是一个以桌面应用为主的Linux发行版操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了GNOME桌面环境,改为Unity。此前人们认为Linux难以安装、难以使用,在Ubuntu出现后这些都成为了历史。Ubuntu也拥有庞大的社区力量,用户可以方便地从社区获得帮助。
3.红帽(RedHat)
rhel全称“RedHat Enterprise Linux”,中文意思为“红帽企业 Linux”,是Red Hat专为企业设计的基于Linux的操作系统。RHEL 可以在桌面,服务器,虚拟机管理程序或云中运行。基于红帽企业Linux操作系统,企业可整合裸机服务器、 虚拟机、基础设施即服务(IaaS)和平台即服务(PaaS),以构建一个强大稳健的数据中心环境,满足不断变化的业务需求。
红帽的商业还挺不错的,是专门为企业所服务的
这里就给大家介绍几个比较常见知名度较高的,接下来我们就开始上正菜了
Linux文件,目录管理
前言:普通用户与ROOT
shell:翻译官
翻译人类输入的代码 ,将代码翻译成二进制给计算机内核进行识别,然后计算机的内核分配相应的资源来执行你发出的指令
计算机内核反馈的信息同样是二进制。将计算机语言再翻译成人类能够识别的语言
默认shell:都叫做bash,类似于编译器 。
在正式开始前,我们先了解一下Linux里面的文件权限的一个概念
在Linux系统中,默认的情况下,所有的系统上的账号与一般身份用户,还有root的相关信息,都记录在/etc/passwd 这个文件中,而个人的密码是记录在 /etc/shadow文件内。还有一个组名,也就是用户组是记录在/etc/group中。
这三个文件都很重要,不要随便删除这里面的文件,这里要注意一下
Linux与我们所熟知的windos系统有很大的差别
这个里面的操作,都是用命令敲出来的。Linux里面所有的一切,不管是命令还是程序都是文件,可以这么说,Linux一切皆文件
下面我先演示一下账号的登录以及显示的信息是什么意思,供大家能更快的上手
[czy@localhost ~]$ su - root
密码:
上一次登录:六 8月 26 01:11:23 CST 2023从 192.168.233.1pts/4 上
[root@localhost ~]#
那么在这里,我们可以看到,我本来登录的是普通用户的账号
在输入 su - root 这个命令后系统提示我输入密码
在这里输入密码是不会显示出来数字的,所以有些刚接触Linux的朋友遇到这种情况不用慌,不是系统问题,而是它就是这样设置的,输入密码的时候不会显示出具体的信息。所以这个也可以侧面的看出来Linux对系统的安全性是比较看重的
su - root 这个命令的意思就是我要切换到root账户也就是管理员,因为有很多的命令都是需要管理员权限才能操作的,所以后面的系统命令讲解我都是会以root权限开始
[root@localhost ~]# su - czy
Last login: Sat Aug 26 08:00:49 CST 2023 from 192.168.233.1 on pts/1
[czy@localhost ~]$
如果我们要切换回普通账户的话就再次输入这个命令
要记住的是su - (这里输入的就是你所要切换的账号的名称)
[root@localhost ~]#
[czy@localhost ~]$
在上图中我们可以看到两个账号显示出来的信息是不同的
[czy@localhost ~]$
这里的czy 就是我当前的登录用户 这里的@没有什么实际意义
localhost 就是你的主机名,这个应该不难理解,就跟windows的计算机名称一样的道理
~ : 这个符号的意思就是在当前用户的家目录里面
我自己个人的理解就是在当前登录用户的家里面
每个用户的家目录里面文件内容都是不一样的,后面我会给大家演示看一下便于理解
$:这个符号的意思就是代表普通用户
通过上图我们可以看到
# 是root账户,也就是管理员 我们也可以通过这个符号来看登录的是不是管理员权限
那么既然讲到普通用户跟root 这里我演示一下如何查看有多少用户
[czy@localhost ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
czy:x:1000:1000:czy:/home/czy:/bin/bash
这里所出现的cat就是我后面会讲到的一个查看命令
查看文件命令,可以查看文件内的内容
这里我是单独把我创建的用户给拎出来了,其实通过cat进入到这个文件查看,里面的信息是很多的,那么我们如何分辨哪些是用户呢,看他们后面的路径 ,上图中的两个用户信息都有/bin/bash 就靠这个来看
命令执行的方式:
[root@localhost ~]# command [-options] parameterl parameter2 ...
命令(可执行文件) 选项 参数 参数2
下面我们先来讲第一个命令
1.ls(列出目录的内容)
[root@localhost /]# ls
bin boot dev etc home lib lib64
这里我们要注意英文大小写字母是不一样的,一定要严格区分
如果我们将这里的ls打成LS的话,那么系统会报错,因为没有大写的LS命令
在命令输入完成后 按下回车就会开始执行命令
所有的命令都是文件
ls这个命令的功能是列出目录的内容就如上图所示,前面括号内的/就是我当前所在的目录,我是在这个/目录里面打的ls命令,所以这里显示的是/目录下的目录
这里跟大家讲解一下,/这个目录是根目录,你可以理解为这是最初始的地方,所有的文件都是在/目录下
ls命令参数是指在使用ls命令时可以加上的一些选项或参数,用于修改ls命令的输出结果。
这里的ls可以增加其他的参数来执行,给大家演示一下
常用的ls命令参数包括:
ls -l :以长格式输出文件或目录的详细信息,包括文件权限、所有者、文件大小、修改时间等。
[root@localhost /]# ls -l
total 36
lrwxrwxrwx. 1 root root 7 Aug 24 19:24 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Aug 24 19:40 boot
drwxr-xr-x. 20 root root 3320 Aug 26 06:05 dev
drwxr-xr-x. 138 root root 8192 Aug 26 06:05 etc
drwxr-xr-x. 3 root root 17 Aug 24 19:30 home
lrwxrwxrwx. 1 root root 7 Aug 24 19:24 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Aug 24 19:24 lib64 -> usr/lib64
ls -a:显示所有文件和目录,包括隐藏文件和目录。
[root@localhost /]# ls -a
. .. bin boot dev etc home lib lib64 media mnt opt
通过ls -a可以看到隐藏文件,所有的隐藏文件都有一个特点,那就是在文件前会有一个小点
例如这样的 .czy.txt 像这种的都是隐藏文件
ls -h: 以人性化的方式显示文件和目录的大小,以K、M、G等单位表示。
[root@localhost /]# ls -lh
total 36K
lrwxrwxrwx. 1 root root 7 Aug 24 19:24 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K Aug 24 19:40 boot
drwxr-xr-x. 20 root root 3.3K Aug 26 06:05 dev
drwxr-xr-x. 138 root root 8.0K Aug 26 06:05 etc
drwxr-xr-x. 3 root root 17 Aug 24 19:30 home
lrwxrwxrwx. 1 root root 7 Aug 24 19:24 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Aug 24 19:24 lib64 -> usr/lib64
这个命令参数我们要注意一个问题,那就是单独的一个h是不起作用的,要与其他参数配合使用
可以通过这个代码对比下-l的信息,我们可以看出来,这些文件的大小是不是显示出了大小单位
这里我们以boot目录为例
-l:dr-xr-xr-x. 5 root root 4096 Aug 24 19:40 boot
-lh:dr-xr-xr-x. 5 root root 4.0K Aug 24 19:40 boot
看出来区别了么,文件的大小给出了单位,原来的4096现在是显示为4.0k
所以通过上面的 ls -lh 命令可以看出来命令参数可以加在一起使用
除了上述常用的ls命令参数外,还有一些其他的参数可以根据具体需求使用,可以通过man ls命令查看完整的ls命令参数列表。
[root@localhost /]# man ls
在键入man命令后系统会列出可用的命令参数(linux里面基本都是英文,还是比较不方便的,可以借助翻译工具来进行查看)
接下来就是第2个命令了
2.cd (确定要进入的目录)
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root
[root@localhost /]# cd /bin
[root@localhost bin]#
在这里我们可以看到,括号内的所在目录是不是已经去到了bin
在这里我们要注意一个事情,那就是cd 后面第一个永远是/因为/是根目录
我在前文也提过了,/就是根目录,开始的地方
如果这里我们要去etc目录的话 那就是 cd /etc 回车
这里cd去到要进入的目录是需要将完整路径打出来的,而且你所要去的目录一定要存在
如果目录不存在的话 系统报错 就像下面这样
[root@localhost /]# cd /bin1
-bash: cd: /bin1: No such file or directory
那么我们是一定要将完整的路径打出来才能去到要去的目录么
当然不是 接下来教大家另一种办法 --相对路径
[root@localhost /]# cd bin
[root@localhost bin]#
在这里我们可以看到 即使没有打/是不是也还是照样进入了目标目录
cd bin 没有加/的这种 其实有一个缺点,那就是只能进入到当前目录里面的子目录
如果你要去的目录是其他目录下的话,那这个命令是无效的,要去其他的目录就只能用第一种
第一种cd的路径也称为绝对路径,要完整的打出所有路径
还有几个cd 的操作命令
[root@localhost bin]# cd ..
[root@localhost /]#
这里我们输入的是cd .. 这个命令的意思就是返回上级目录
---------------------------------------------
[root@localhost /]# cd .
[root@localhost /]#
而这个命令 cd . 就是留在当前目录(听上去好像有点鸡肋对吧,但存在即合理)
---------------------------------------------
[root@localhost bin]# cd /etc
[root@localhost etc]# cd -
/bin
[root@localhost bin]#
最后一个就是cd - 的命令
这个命令是什么意思呢,就跟这上面显示的一样
返回上一个执行的目录
也就是你在etc目录之前在哪个目录里面 cd - 就可以帮助你快速回到之前的目录,就如图上
的bin
附加:pwd命令
[root@localhost rh]# pwd
/opt/rh
[root@localhost rh]#
这个命令的作用就是查看自己当前所在的位置
可以看到 /opt/rh 这里就写明了你当前所处的位置路径是在哪里,也是一个基础常用命令
下面是第3个命令来了
3.cat(文本输出命令)
cat命令也是我们很常用的,查看文本或者查看配置文件等等,这个命令的作用就是查看文件内容 ,下面我来做个例子
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
czy.txt rh
现在我们进入的是opt这个目录
通过ls命令我们可以看到在该目录下有一个文本文件 czy.txt
现在我们来使用cat命令来查看该文件中的内容是什么
[root@localhost opt]# cat czy.txt
12345
那么现在可以看到,通过cat这个命令是不是可以将文件内的内容显示出来
这就是cat的作用
通过上面的实验例子可以看到里面的czy.txt是一个文件,通过cat可以将文件里的内容显示出来
现在来看看下面的命令 创建文件与目录
4.创建文件与创建目录
4-1.touch(创建文件 )
创建空文件:如果文件不存在,touch命令可以创建一个空文件,例如touch test.txt。
实验例子:
[root@localhost opt]# touch test1.txt
[root@localhost opt]# ls
czy.txt rh test1.txt
[root@localhost opt]#
可以看到通过上面的实验,在opt本身的目录下是没有test1.txt文件的
我们可以通过touch命令来创建文件
格式为 touch 文件名称
我们现在就可以通过上面的实验命令cat来查看现在所创的文件内容
[root@localhost opt]# cat test1.txt
[root@localhost opt]#
在这里可以看到输入cat命令之后并没有内容显示出来,因为这个文件目前只是个空文件
后面会介绍输入命令
除了上面的实验例子,我们也可以通过touch命令后面加上绝对路径来创建一个指定目录下的文件
[root@localhost opt]# touch /opt/rh/ czy2.txt
[root@localhost rh]# ls
czy2.txt
除了创建文件的命令还有创建目录的命令
我们接着往下看
4-2.mkdir(创建目录)
mkdir命令的主要功能为创建一个或多个空目录,其几种使用方法为: ① mkdir 目录名 作用:创建一个空目录文件 如:mkdir test 创建一个目录名为test的空目录文件
[root@localhost opt]# mkdir czy123
[root@localhost opt]# ls
czy123 czy2.txt czy.txt rh test1.txt
[root@localhost opt]# ls -l
total 12
drwxr-xr-x. 2 root root 6 Aug 27 05:59 czy123
-rw-r--r--. 1 root root 0 Aug 27 05:26 czy2.txt
-rw-r--r--. 1 root root 6 Aug 27 05:08 czy.txt
drwxr-xr-x. 2 root root 22 Aug 27 05:27 rh
-rw-r--r--. 1 root root 0 Aug 27 05:14 test1.txt
在上面的实验里我们可以看到已经在当前目录下创建了czy123目录
在ls -l 命令下
drwxr-xr-x. 2 root root 6 Aug 27 05:59 czy123
d开头的都是文件夹
通过mkdir命令我们也可以一次性创建多个目录就像下面这样
[root@localhost opt]# mkdir 1 2 3 4 5
[root@localhost opt]# ls -l
total 12
drwxr-xr-x. 2 root root 6 Aug 27 06:01 1
drwxr-xr-x. 2 root root 6 Aug 27 06:01 2
drwxr-xr-x. 2 root root 6 Aug 27 06:01 3
drwxr-xr-x. 2 root root 6 Aug 27 06:01 4
drwxr-xr-x. 2 root root 6 Aug 27 06:01 5
创建文件的时候也可以这样操作,同理
在这里再教大家一个命令参数
mkdir -p 创建嵌套文件夹
[root@localhost opt]# mkdir -p a/b/c
[root@localhost opt]# ls
1 2 3 4 5 a czy123 czy2.txt czy.txt rh
[root@localhost opt]# cd a
[root@localhost a]# ls
b
[root@localhost a]# cd b
[root@localhost b]# ls
c
这个命令参数的主要作用就是创建a目录并且在a目录中再创一个b目录依次往下递
除了上面讲的 -p 还有很多的命令参数可以使用 可以通过man来查看了解
5.find(强大的查找命令)
为什么这里要加上强大两个字
没有为什么,因为真的很强
下面我们来详细了解下
[root@localhost ~]# find /opt -mtime -10
/opt
/opt/rh
/opt/rh/czy2.txt
/opt/czy.txt
/opt/test1.txt
/opt/czy2.txt
在这里我们要提到一个东西
那就是时间参数,也就是实验中的 -mtime -10
那么这个 -mtinme -10的意思是什么呢
-10 代表的是小于等于10天内的文件
如果我们这里输入+10的话会是什么样的呢
我们接着来往下看
[root@localhost ~]# find /opt -mtime +10
[root@localhost ~]#
看到区别了么,这里再输入这行命令后系统并未给予反馈
这是因为在 /opt 里面并没有大于等于10天前的文件 这个系统我也才装没多久
现在我们再来改一下看看
----------------------------------
[root@localhost ~]# find /opt -mtime 0
/opt
/opt/rh
/opt/rh/czy2.txt
/opt/czy.txt
/opt/test1.txt
/opt/czy2.txt
/opt/czy123
/opt/1
/opt/2
/opt/3
/opt/4
/opt/5
/opt/a
/opt/a/b
/opt/a/b/c
在这里我们可以看到我输入的是0 0代表的意思就是24小时内有修改过的文件
系统给我的反馈就是24小时内修改过的文件列表
下面再来演示一个例子
根据用户来搜索文件
[root@localhost opt]# find -user czy
./rh
[root@localhost opt]#
在这里我们命令选项可以改为根据用户名来查找
这里可以看到系统是不是已经将czy用户的所属文件显示出来了
处了上述的几个命令 find的操作还有很多 这里所描述的也才冰山一角
可以通过man 查询详细说明
他甚至还可以在查找时执行其他处理,像这样
[root@localhost opt]# find -user czy -ls
68863147 0 drwxr-xr-x 2 czy czy 22 Aug 27 05:27 ./rh
find命令强不强? 很强!
我们再来一个
[root@localhost opt]# find /opt -mtime 0 -exec rm -r * { } \;
rm: cannot remove ‘{’: No such file or directory
rm: cannot remove ‘}’: No such file or directory
这个命令代表的是什么意思呢
-exec {} \; --这个命令我们可以理解为额外的操作,这里我添加的是删除操作
可以看到系统的提示消息,显示是没有找到这样的目录,但其实已经删除掉了
我们用ls命令来看下
[root@localhost opt]# ls -la
total 0
drwxr-xr-x. 2 root root 6 Aug 27 09:01 .
dr-xr-xr-x. 18 root root 236 Aug 27 08:55 ..
已经删除掉了 都没了
rm:删除命令
6.rm命令(删除)
这里用到的rm命令要注意一下
rm -rf * 删除当前目录下的所有文件,这个命令其实危险系数非常大的
因为这个命令打出来是直接清楚不会询问你是还是否的
并且你在登录管理员账户的时候
rm -fr * / 它甚至可以删除掉根目录 系统直接就GG
这里给大家做个例子看一下
[root@localhost opt]# touch 123.txt
我们再这里先给这个目录创一个文件然后我们再来删除(因为前面find实验的时候全删掉了)
[root@localhost opt]# ls
123.txt
好的到了这里可以看到文件已经创造好了
[root@localhost opt]# rm 123.txt
开始删除
rm: remove regular empty file ‘123.txt’? y
在你删除的时候系统会提示你是否确认 这里按y即可也就是yes的意思
[root@localhost opt]# ls -a
. ..
到了这一步就可以看到已经删除完毕了
rm这个命令也有很多的参数可以用
感兴趣的话可以man去查看一下自己敲一敲看看
慎用rm -rf * !