入门概述

我们为什么要学习Linux

linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,
任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,
想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老
百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情

用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一
个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中,并不意味着linux就没有用
武之地了。在服务器端,在开发领域linux倒是越来越受欢迎,很多程序员都觉得不懂点linux
都觉得不好意思,linux在开源社区的地位依然岿然不动。

尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛
了,所以不得不学习!

Linux 简介

Linux内核最初只是由芬兰人林纳斯·托瓦茨(LInux Torvalds)在赫尔辛基大学上学时出于
个人爱好而编写的。

Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操纵系统

Linux发行版

Linux发行版说简单点就是将Linux内核与应用软件做一个打包。
2021030811093549.jpg
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
20210308111006228.jpg

Linux应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域
确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux
+Nginx+ MySQL + PHP)组合。
目前Linux不仅在家庭与企业中使用,并且政府中也很受欢迎

  • 巴西联邦政府由于支持 Linux 而世界闻名
  • 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux
  • 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如
    Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex
  • 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件
  • 法国和德国同样开始逐步采用 Linux

    Linux和Windows的区别

20210308111254604.jpg

环境搭建

Linux的安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想
搭建,也可以直接买一台学习使用!

Windows搭建Linux环境

  1. 使用虚拟机安装,非常耗费资源
  2. 可以通镜像进行安装
  3. 官方下载地址:
  4. 可以通过制作好的镜像安装(找到安装好的Linux系统根目录,打成压缩包拷贝,在别电脑上,解压到指定目录,打卡虚拟机导入即可)注意:系统磁盘一般就选择自动就行了,也可以手动选择看需求

    购买云服务

  5. 购买阿里云服务器:https://www.aliyun.com/minisite/goods?userCode=0phtycgr

  6. 获取云服务器的公网IP地址,重置一个服务器密码
  7. 下载xShell、xftp工具,xshell用于连接云服务器,xftp用于向云服务器传送文件

注意事项:
如果要打开端口,需要在阿里云的安全组面板中开启对应的出入规则,不然的话会被阿里拦截

如果前期不好操作,推荐使用宝塔面板,傻瓜式一键安装

  1. 安装教程:https://www.bt.cn/bbs/thread-19376-1-1.html
  2. 安装之后,会得到访问远程面板的地址、账号、密码(注意保存)
  3. 开放需要的端口,设置完成后还需在阿里云安全组里面设置
  4. 一键安装自己需要的软件

20210308111401975.png

关于域名

如果自己的网站想要上线,就一定要购买一个域名然后进行备案
20210308111452243.png
备案的话需要一些认证和时间,备完完毕后,就可以解析到自己的网站了,这个时候就可以使用域名来进行服务器的访问!

走进Linux系统

开机登录

开机会启动许多程序。它们在Windows叫做”服务”(service),在Linux就叫做”守护进程”(d
aemon)。
开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可
一般来说,用户的登录方式有三种

  • 命令行登录
  • ssh登录
  • 图形界面登录

最高权限账户为root,可以操作一切

关机

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令为:shutdown

  1. sync #将数据由内存同步到硬盘中
  2. shutdown -h 10 #系统10分钟后,关机
  3. shutdown -h +10
  4. shutdown -h now #立刻关机
  5. shutdown -h 20:25 #指定时间关机
  6. shutdown -r now #系统立刻重启
  7. shutdown -r 10 #系统10分钟后,关机
  8. shutdown -r +10
  9. reboot #系统重启
  10. halt #关闭系统,等同于shutdown -h row poweroff

最终总结一下,不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中

系统目录结构

登录系统后,在当前命令窗口中输入命令:

  1. ls /

20210308111526571.png
树状目录结构:(Linux的一切资源都挂载在这个 / 根节点下)
20210308111738930.jpg
以下是对这些目录的解释:

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin: 系统用户使用的应用程序。
  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src: 内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除

    目录管理

    绝对路径和相对路径

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
绝对路径:

  • 路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。

相对路径:

  • 路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man 这就是相对路径的写法啦!

    处理目录的常用命令

ls :列出目录

cd:切换目录

pwd:显示当前所在目录

mkdir:创建目录

rmdir:删除目录

cp:拷贝文件或目录

rm:删除文件或目录

mv:移动文件或目录

ls (列出当前目录下,所有文件或目录)

在Linux系统中,ls 命令可能是最常用的,默认使用参数-a,参数可以任意选择

  1. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls [-al] 文件名
  2. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls -a usr

选择参数:

  • -a:显示全部文件,包括隐藏文件(开头为 . 的文件) 常用
  • -l:显示全部文件,包括文件属性与权限等等数据,不包括隐藏文件 常用

将目录下所有文件列出来,包含属性和隐藏文件

  1. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls -al usr

cd(切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令 语法:

  1. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# cd [绝对路径|相对路径]

测试:

  1. # 查看当前目录下,所有文件
  2. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
  3. install.sh openjdk-14+36_linux-x64_bin.tar.gz xiaoding520
  4. #进入指定目录,查看所有文件
  5. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# cd xiaoding520
  6. [root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# ls
  7. apache-tomcat-9.0.41.tar.gz openjdk-14+36_linux-x64_bin.tar.gz
  8. #创建目录,并进入指定
  9. [root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# mkdir test
  10. [root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# cd test
  11. #返回上一级目录
  12. [root@iZbp17c0g2qa8xtpuihqm0Z test]# cd ..
  13. #返回根目录
  14. [root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# cd /
  15. #注意:在根据目录下使用:ls或ls /命令都是,查询系统目录结构的
  16. [root@iZbp17c0g2qa8xtpuihqm0Z /]# ls
  17. bin dev home lib64 media opt proc run srv tmp var xiaoding520
  18. boot etc lib lost+found mnt patch root sbin sys usr www
  19. #使用绝对路径,进入指定文件
  20. [root@iZbp17c0g2qa8xtpuihqm0Z /]# cd /root/xiaoding520/test
  21. #表示回到自己的家目录,亦即是 /root 这个目录
  22. [root@iZbp17c0g2qa8xtpuihqm0Z test]# cd ~

pwd(显示目前所在的目录)

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令

  1. [root@iZbp17c0g2qa8xtpuihqm0Z /]# pwd [-p]

选项与参数:-P :显示出确实的路径,而非使用连接(link) 路径
测试:

  1. # 进入root目录底下的xiaoding520目录
  2. [root@iZbp17c0g2qa8xtpuihqm0Z /]# cd /root/xiaoding520
  3. # 返回当前所在的目录
  4. [root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# pwd
  5. /root/xiaoding520

mkdir(创建目录)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧

  1. [root@iZbp17c0g2qa8xtpuihqm0Z /]# mkdir [-mp] 目录名称

选择参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来

测试:

  1. #进入root目录,并创建test目录
  2. [root@iZbp17c0g2qa8xtpuihqm0Z /]# cd root
  3. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# mkdir test
  4. #查询root目录底下所有文件
  5. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
  6. install.sh openjdk-14+36_linux-x64_bin.tar.gz test xiaoding520
  7. #创建多层级目录
  8. #注意:创建多层目录必须加上 -p 命令和想要创建层级的目录名称,否则创建失败
  9. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# mkdir -p 电影/微电影/美国大片
  10. # 查询所有文件,并进入刚才创建的目录
  11. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
  12. install.sh openjdk-14+36_linux-x64_bin.tar.gz test xiaoding520 电影
  13. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# cd 电影/微电影/美国大片
  14. [root@iZbp17c0g2qa8xtpuihqm0Z 美国大片]#
  15. # 创建 权限为111的xiaoming目录
  16. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# mkdir -m 111 xiaoming
  17. # 查询所有文件属性和权限
  18. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls -l
  19. total 193968
  20. -rw-r--r-- 1 root root 25386 Jan 9 12:00 install.sh
  21. -rw-r--r-- 1 root root 198578061 Jan 26 17:09 openjdk-14+36_linux-x64_bin.tar.gz
  22. drwxr-xr-x 2 root root 4096 Jan 28 13:44 test
  23. drwxr-xr-x 3 root root 4096 Jan 27 23:07 xiaoding520
  24. d--x--x--x 2 root root 4096 Jan 28 13:52 xiaoming
  25. drwxr-xr-x 3 root root 4096 Jan 28 13:45 电影
  26. [root@iZbp17c0g2qa8xtpuihqm0Z ~]#

rmdir(删除目录)

语法:

  1. [root@iZbp17c0g2qa8xtpuihqm0Z ~]# rmdir [-p] 目录名称

选项与参数:-p :连同上一级『空的』目录也一起删除
测试:

# 进入root目录,并查询文件
[root@iZbp17c0g2qa8xtpuihqm0Z /]# cd root
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
install.sh  openjdk-14+36_linux-x64_bin.tar.gz  test  xiaoding520  xiaoming  电影

#删除test文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# rmdir test

# 如果目录不为空,则删除失败
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# remidr xiaoding520
-bash: remidr: command not found

# 如果要删除目录有层级,可以使用-p命令,加上层级目录的名称
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# rmdir -p 电影/微电影/美国大片

注意:这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录,后面我们会将!

cp(拷贝目录或者文件)

语法:

[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp [-adfilprsu] 源文档 目标位置
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp [-adfilprsu] 文件夹1/文件夹2/源文档 文件1/文件2/目标位置

选择参数:

  • -a:保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination

测试:

# 查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
install.sh  openjdk-14+36_linux-x64_bin.tar.gz  xiaoding520  xiaoming

#创建层级目录,查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# mkdir -p  电影/微电影/美国大片
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
install.sh  openjdk-14+36_linux-x64_bin.tar.gz  xiaoding520  xiaoming  电影

#保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp -a 电影 xiaoding520
#进入指定目录
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cd xiaoding520
#查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# ls
apache-tomcat-9.0.41.tar.gz  openjdk-14+36_linux-x64_bin.tar.gz  test  电影
#进入指定目录,并查询
[root@iZbp17c0g2qa8xtpuihqm0Z xiaoding520]# cd 电影
[root@iZbp17c0g2qa8xtpuihqm0Z 电影]# ls
微电影

#返回root目录
[root@iZbp17c0g2qa8xtpuihqm0Z 微电影]# cd /root/
#创建目录
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# mkdir test

#如果拷贝目录不为空,必须加上-r或-a命令,否则报错
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp 电影 test
cp: omitting directory ‘电影’
# 递归拷贝目录
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp -r 电影 test
#进入指定目录
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cd test
# 查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z test]# ls
电影
#进入指定文件
[root@iZbp17c0g2qa8xtpuihqm0Z test]# cd 电影/微电影
[root@iZbp17c0g2qa8xtpuihqm0Z 微电影]# cd /root/

# 查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
install.sh  openjdk-14+36_linux-x64_bin.tar.gz  test  xiaoding520  xiaoming  电影

# 将文件拷贝到test目录
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp install.sh test
# 使用-i命令,如果文件存在,进行覆盖时,会提示
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cp -i install.sh test
cp: overwrite ‘test/install.sh’? y
[root@iZbp17c0g2qa8xtpuihqm0Z ~]#

rm(删除目录或文件,默认使用-i命令)

语法:

[root@iZbp17c0g2qa8xtpuihqm0Z ~]# rm [-fir] 删除的文件或目录名

选择参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项

测试:

mv(移动文件与目录,或修改名称)

语法:

[root@iZbp17c0g2qa8xtpuihqm0Z ~]# mv [-adfilprsu] 源文档 目标位置
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# mv [-adfilprsu] 文件夹1/文件夹2/源文档 文件1/文件2/目标位

选择参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

测试:

# 查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
install.sh  openjdk-14+36_linux-x64_bin.tar.gz  test  xiaoding520  xiaoming  电影

# 将install.sh文件和电影目录,移入test目录
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# mv 电影 test
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# mv install.sh test
# 查询所有文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
openjdk-14+36_linux-x64_bin.tar.gz  test  xiaoding520  xiaoming

# 进入test目录,并查询文件
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# cd test
[root@iZbp17c0g2qa8xtpuihqm0Z test]# ls
install.sh  电影

# 将当前目录的所有内容,移入到当前目录的上级目录
[root@iZbp17c0g2qa8xtpuihqm0Z test]# mv * ../
# 查询文件
[root@iZbp17c0g2qa8xtpuihqm0Z test]#ls
#返回上一级目录,并查询文件
[root@iZbp17c0g2qa8xtpuihqm0Z test]# cd ../
[root@iZbp17c0g2qa8xtpuihqm0Z ~]# ls
install.sh  openjdk-14+36_linux-x64_bin.tar.gz  test  xiaoding520  xiaoming  电影
[root@iZbp17c0g2qa8xtpuihqm0Z ~]#

Linux文件基本属性

看懂文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不一样的权限。为
了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了
不同的规定。

在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和
组,如:
20210308114229251.png
实例中,boot文件的第一个属性用“d”表示,“d”在Linux中代表是一个目录文件。
在Linux中所有文件的第一个字符表示它的类型:文件、目录、链接等等
文件类型参数:

  • 【d】表示目录
  • 【-】表示文件
  • 【l】表示链接文档(link file)
  • 【b】表示为装置文件,文件里面的可供存储的接口设备(可随机存取装置)
  • 【c】表示为装置文件,文件里面包含了:串行端口设备,比如键盘、鼠标(一次性读取装置)

    文件权限的拥有者和用户组、其他用户的访问权限

接下来的字符中,以三个为以一组,均为【r w x】的三个参数组合。

  • r 表示读
  • w 表示写
  • x 表示执行

要注意的是:这个三个权限字符的位置不会更改,如果没有权限则会显示减号【-】。
每个文件的属性由左边第一部分的10个字符来确定(如下图):
20210308114249241.png

从左至右用0~9这些数字来表示。

第0位确定文件类型,第13位确定属主(该文件的拥有者)拥有该文件的权限,第46位
确定属组(所有者的同组用户)拥有该文件的权限,第7~9位确定其他用户对该文件的权限
其中:

  • 第1、4、7表示读权限,使用【r】表示,如果没有权限,则使用【-】来表示
  • 第2、5、8表示写权限,使用【w】表示,如果没有权限,则使用【-】来表示
  • 第3、6、9表示执行权限,使用【x】表示,如果没有权限,则使用【-】来表示

对于文件来说,它都有一个特定的拥有者,也就是对该文件具有所有权限的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件拥有者以外的用户又可以分为文件拥有者的同组用户和其他用户。
因此,Linux系统按文件的拥有者、文件拥有者同组的用户和其他用户来规定了不同的文件
访问权限。
在以上实例中,boot文件是一个目录文件,属主和属组都为root

修改文件属性

●chgrp:更改文件属组

[root@xiaoding /]# chgrp [-r] 更改的属组名 文件名

-r:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

  • chown:更改文件属主,也可以同时更改文件属组

    [root@xiaoding /]# chown [-r] 更改的属主名 文件名
    [root@xiaoding /]# chown [-r] 更改的属主名:更改的属组名 文件名
    
  • chmod:更改文件的9个属性 ```basic [root@xiaoding /]# chmod [-r] rwx 文件或目录

Linux文件属性有两种设置方法,一种是数字,一种是符号

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的

权限

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权

限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数 对照表如下:

r:4 w:5 x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当

权限为:[-rwxrwx—-] 分数则是: owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others= —- = 0+0+0 = 0

chmod 770 test

<a name="gNP4L"></a>
## 文件内容查看
> 概述

Linux系统中使用以下命令来查看文件的内容:

- cat:从第一行开始显示文件的所有内容
- tac:从最后一行开始显示文件的所有内容
- nl:从第一行显示开始文件的所有内容,并显示行号
- more:一页一页的显示文件的内容,可以往前翻页
- less:跟more功能更好,可以往前翻页
- head:取出文件头几行内容
- tail:取出文件尾几行内容

你可以使用man[命令]来查看各个命令的使用文档,如:man cp
> cat 从第一行开始显示文件的所有内容

语法:
```basic
[root@xiaoding xiaoding520]# cat [-AbEnTv] 文件名

选择参数:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

测试:

# 查看网络配置: 文件地址 /etc/sysconfig/network-scripts/
[root@xiaoding /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
[root@xiaoding /]#

tac 从最后一行开始显示文件的所有内容

语法:

[root@xiaoding xiaoding520]# nl [-bnw] 文件名

选择参数:

  • -b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

测试:(默认显示所有内容行号:包括空格)

[root@xiaoding /]# nl /etc/sysconfig/network-scripts/ifcfg-eth0
     1    DEVICE=eth0
     2    BOOTPROTO=dhcp
     3    ONBOOT=yes
[root@xiaoding /]#

more 一页一页的显示文件的内容,可以往前翻页

语法:

[root@xiaoding xiaoding520]# more 文件名

功能按键:

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字

    按下v键,进入vi编辑器,/加搜索内容+回车;
           退出按ESC,:q离开
    
  • :f :立刻显示出档名以及目前显示的行数;

  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用

测试:

[root@xiaoding xiaoding520]# more  常用资源网站合集.txt
....(中间省略)....
--More--(28%) # 重点在这一行喔!你的光标也会在这里等待你的命令

less

语法:

[root@xiaoding xiaoding520]# less 文件名

功能按键:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动;
  • [pageup] :向上翻动;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序

测试:

[root@xiaoding xiaoding520]# less  常用资源网站合集.txt
....(中间省略)....
--More--(28%) # 重点在这一行喔!你的光标也会在这里等待你的命令

head 取出文件头几行内容

语法:

[root@xiaoding xiaoding520]# head [-n number] 文件没那个

选项与参数:-n 后面接数字,代表显示几行的意思!
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@xiaoding xiaoding520]# head -n 20 常用资源网站合集.txt

tall 取出文件尾几行内容

语法:

[root@xiaoding xiaoding520]# tail [-n number] 文件没那个

选项与参数:-n 后面接数字,代表显示几行的意思!
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@xiaoding xiaoding520]# tail -n 20 常用资源网站合集.txt

扩展:Linux链接概念

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。
情况下,ln 命令产生硬链接
硬链接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接
测试:

# 进入home目录
[root@xiaoding /]# cd home

# 创建文件,并查看所有文件
[root@xiaoding home]# touch f1.txt
[root@xiaoding home]# ls
admin  f1  www  xiaoding520

# 为f1文件创建硬链接,并查询所有内容
[root@xiaoding home]# ln f1 f2
[root@xiaoding home]# ls
admin  f1  f2  www  xiaoding520

# 创建硬链接和软连接
[root@xiaoding home]# ln fl f2
[root@xiaoding home]# ll
total 12
drwx------ 3 admin admin 4096 Jan 26 14:38 admin
-rw-r--r-- 2 root  root     0 Jan 29 22:07 f1
-rw-r--r-- 2 root  root     0 Jan 29 22:07 f2
drwx------ 2 www   www   4096 Jan 27 16:57 www
drwxr-xr-x 2 root  root  4096 Jan 29 21:51 xiaoding520
[root@xiaoding home]# ln -s fl f3
[root@xiaoding home]# ls -li
total 20
1052987 drwx------ 3 admin admin 4096 Jan 26 14:38 admin
 660910 -rw-r--r-- 2 root  root    19 Jan 29 22:22 f1
 660910 -rw-r--r-- 2 root  root    19 Jan 29 22:22 f2
 660911 lrwxrwxrwx 1 root  root     2 Jan 29 22:22 f3 -> f1
1323070 drwx------ 2 www   www   4096 Jan 27 16:57 www
1058453 drwxr-xr-x 2 root  root  4096 Jan 29 21:51 xiaoding520

#从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点
相同,均为 660910,然而符号连接文件的 inode 节点不同。

# 给f1写入内容
[root@xiaoding home]# echo "我爱小丁5201314" >> fl
# 删除f1,查看f2内容
[root@xiaoding home]# rm -f fl
[root@xiaoding home]# cat f2
我爱小丁5201314
#查看f3内容
[root@xiaoding home]# cat f3
cat: f3: No such file or directory
[root@xiaoding home]#

通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效;
依此您可以做一些相关的测试,可以得到以下全部结论:

  • 删除符号连接f3,对f1,f2无影响;
  • 删除硬连接f2,对f1,f3也无影响;
  • 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
  • 同时删除原文件f1,硬连接f2,整个文件会真正的被删除

    三种使用方式:

    命令模式

    用户刚刚启动Vi/Vim ,便进入了命令模式。
    此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i ,并不会输入一个字符, i被当作了一个命令。
    以下是常用的几个命令:

  • i切换到输入模式,以输入字符。

  • x删除当前光标所在处的字符。
  • :切换到底线命令模式,以在最底一行输入命令。。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
 字符按键以及Shift组合,输入字符
 ENTER,回车键,换行
 BACK SPACE,退格键,删除光标前一个字符
 DEL,删除键,删除光标后一个字符
 方向键,在文本中移动光标
 HOME/END,移动光标到行首/行尾
 Page Up/Page Down,上/下翻页
 Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
 ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。

账号管理

 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

    用户账号的管理

    用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
    添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录ShelI等资源

    useradd 命令 添加用户

    useradd -选项 用户名
    -m:自动创建这个用户的主目录/home/cqh
    -G:给用户分配组

    [root@cqh home]useradd -m cqh  #创建一个用户
    [root@cqh home]ls
    install.sh cqhstudy cqh www
    

    理解一下本质: Linux中一切皆文件,这里的添加用户说白了就是往某-个文件中写入用户的信息了! /etc/passwd

    [root@cqh home]cat /etc/passwd  #创建一个用户
    cqh:x:1002:1002::/home/cqh:/bin/bash
    

    删除用户 userdel

    userdel -r cqh #删除用户的时候把它的目录也删除掉
    

    修改用户 usermod

    对应修改的内容 修改那个用户

    [root@cqh home]usermode -d /home/233 cqh
    

    修改完毕后查看配置文件 将cqh用户下的目录修改为233

    切换用户

    20200702085032114.png
    1.切换用户的命令为: su username [username是你的用户名]
    20200702085314796.png
    2.从普通用户切换到root用户,还可以使用命令: sudo su
    3.在终端输入exit或logout或使用快捷方式ctrl+d ,可以退回到原来用户,其实ctrl+d也是执行的exit命令
    4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加,例如: [su- root]
    $表示普通用户,#表示超级用户,也就是root用户

    用户的密码设置问题

    我们一般通过root创建用户的时候!要配置密码!
    如果是超级用户

    passwd username 
    new password #新密码
    re password #修改密码
    

    普通用户

    passwd
    (current)UNIX password:
    new password: #密码不能过于简单
    re password:
    

    锁定账户
    root ,比如张三辞职了!冻结这个账号, 一旦冻结,这个人就登录不上系统了!

    passwd -l cqh #锁定之后这个用户就不能再登录了
    passwd -d cqh #把密码清空 这样也能防止用户登录
    

    20200702092430346.png

    用户组管理

     属主、属组
     每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维)。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
     用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

    创建一个用户组 groupadd

    [root@cqh ~]group add cqh
    [root@cqh ~]cat /etc/group
    

    创建完用户组后可以得到一一个组的id ,这个id是可以指定的! -g 520, 若果不指定就是自增1

    删除用户组 groupdel

    [root@cqh ~]groupdel cqh
    [root@cqh ~]cat /etc/group
    

    修改用户组的权限和名字 groupmod -g-n

    [root@cqh ~]group -g 666 -n newcqh cqh #修改cqh用户组id为666 重命名为newcqh
    

    用户切换用户组

    #当前登录用户 cqh
    $ newgrp root #切换为root
    

    拓展 用户账户文件的查看(了解即可) /etc/passwd

    用户名:口令(登录密码,我们不可见) :用户标识号:组标识号:注释性描述:主目录:登录She11
    这个文件中的每一行都代表这一用户,我们可以从这里看出这个用户的主目录在那里,可以看到属于哪一个组!

    登录口令:把真正的加密后的用户口令字存放到/etc/shadow文件中,保证我们密码的安全性!
    用户组的所有信息都存放在/etc/group文件中。

    磁盘管理

    df(列出文件系统整体的磁盘使用量) du(检查磁盘空间使用量)
    20200703084335994.png
    1.png
    du -sm /*
    20200703084435661.png
    Mac或者想使用Linux挂载我们的一些本地磁盘或者文件!

    挂载:mount

    20200703084513927.png
    卸载:umount-f [挂载位置] 强制卸载
    除了这个之外,以后安装了JDK,可以使用Java命令查看信息

    进程管理

    什么是进程

    1、在Linux中 ,每一个程序都是有自己的一个进程,每一个进程都有一个id号!
    2、每一个进程呢,都会有一个父进程!
    3、进程可以有两种存在方式:前台!后台运行!
    4、一般的话服务都是后台运行的,基本的程序都是前台运行
    命令
    ps 查看当前系统中正在执行的各种进程的信息!
    ps- xx:
    -a 显示当前终端所有的进程信息
    -u 以用户的信息显示进程
    -x 显示后台运行进程的参数

    #ps -aux  查看所有进程
    ps-aux|grep mysql  查看mysql相关进程
    # | 在Linux中这个叫管道符   A|B
    # grep 查找文件中符合条件的字符串
    

    对于我们来说,这里目前只需要记住一个命令即可ps -xx|grep进程名字!过滤进程信息!
    ps-ef :可以查看到父进程的信息

    ps-ef|grep mysql 看父进程我们一般可以通过目录树结构来查看
    #进程树
    #pstree -pu
    #-p 显示父id
    #-u 显示用户组
    

    20200706084738377.png
    结束进程:杀掉进程 等价于Windows结束任务

    kill -9 pid
    

    表示强制结束该进程

    环境安装

    安装软件一般有三种方式
     rpm(在线发布一个SpringBoot项目)
     解压缩
     yum在线安装

    JDK安装

    1、下载IDK rpm。 去oralce官网下载即可!
    2、安装java环境

    java -version 检测当前系统是否存在Java环境 和windows命令一样
    #如果有的话就需要卸载
    rpm -qa|grep jdk 查看JDK版本信息
    rpm -e --nodeps jdk_ 卸载
    #卸载完毕后可安装JDK
    rpm -ivk rpm包
    

    20200706085220973.png
    20200706085250364.png
    配置环境变量: /etc/profile 在文件的最后面增加java的配置和window安装环境变量一样

    vim /etc/profile
    
    JAVA_HOME=/usr/java/jdk-14.0.1
    JRE_HOME=$JAVA_HOME/jre
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export JAVA_HOME JRE_HOME PATH CLASSPATH
    

    让这个配置文件生效!

    source /etc/profile
    

    配置完后在Linux防火墙中开启相应端口 使用java -jar发布 如果你的项目在云服务器上,就可以在公网上进行发布查看了

    #开启防火墙端口
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    #重启防火墙
    systemctl restart firewalld.service
    #查看所有开启的端口,如果是阿里云 需要配置安全组规则
    firewall-cmd --list-ports
    

    20200707090238431.png

    Tomcat安装

    ssm war 就需要放在tomcat中运行
    1.下载tomcat 官网下载即可
    2.解压tar -zxvf apache-tomcat-9.0.36.tar.gz
    3.启动tomcat

    #执行 
    ./startup.sh
    #停止
    ./shutdown.sh
    

    20200707090700195.png

    #开启端口
    firewall-cmd --zone=public --add-port=8080/tcp –permanent
    

    命令含义:
    —zone 作用域
    —add-port-80/tcp 添加端口, 格式为:端口/通讯协议
    —permanent 永久生效,没有此参数重启后失效

    如果是阿里云 上传完毕的项目直接购买自己的域名,备案解析过去即可!
    域名解析后,如果端口是80 - http或者443-https 可以直接访问,如果是9000 8080 ,就需要通过Apcahe或者Nginx做一下反向代理即可(配置文件)

    Docker(yum安装)

    1.检测CentOS 7

    [root@localhost ~] cat /etc/redhat-release 
    CentOS Linux release 7.3.1611 (Core)
    

    2.安装我们的准备环境

    yum -y install 包名
    #yum install 安装命令 -y  所有的提示都为y
    yum -y install gcc
    yum -y install gcc-c++
    

    3.卸载以前的docker

    yum remove docker \
                    docker-client \
                    docker-client-latest \
                    docker-common \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-engine
    

    4.下载环境

    yum install -y yum-utils \device-mapper-persistent-data \lvm2
    

    5.使用国内阿里云镜像

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    6.更新yum软件包安装

    yum makecache fast
    

    7.安装docker ce

    yum -y install docker-ce docker-ce-Cli containerd.io
    

    8.启动docker

    systemctl start docker
    

    9.测试

    docker version
    docker run hello-world
    docker images
    

    Linux - 图22