慢慢来,是种诚意,加载中 . . .

linux基础的在学习


Linux详细整理

Linux终端的使用

终端有字符终端和图形终端两种模式。在linux的图形环境下,我们可以通过鼠标点击来完成所有的管理任务,这是图形界面终端,另外一种就是文本界面的终端,在这个界面的终端下我们可以使用linux命令来控制系统完成响应的工作,而这个文本终端也是服务器常用的模式。

终端就是存在于用户和计算机之间沟通的桥梁,通过终端,用户可以控制计算机完成响应的工作,也可以获得到计算机的反馈

常用快捷键

1、图形界面下通过点击屏幕右上角的“活动”按钮打开的终端

[Shift]+[Ctrl]+t	以标签的形式打开一个新的终端

[Shift]+[Ctrl]+n	以窗口的形式打开一个新的终端

[Shift]+[Ctrl]+w	关闭标签页

[Shift]+[Ctrl]+q	关闭窗口

通用快捷键

Ctrl+r:		实现快速检索使用过的历史命令.
Ctrl+a:		光标回到命令行首。 
Ctrl+e:		光标回到命令行尾。 
ctrl+w:		移除光标前的一个单词
Ctrl+k:		删除光标处到行尾的字符。
Ctrl+u:		删除整个命令行文本字符。
Ctrl+y:		粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本。
Ctrl+d:		删除提示符所在出的一个字符,在空命令行的情况下可以退出终端。
esc+. :		上一个命令的后面的参数
Ctrl+b:		光标向行首移动一个字符。
Ctrl+f:		光标向行尾移动一个字符。
Ctrl+h:		向行首删除一个字符。
Ctrl+i:		相当于Tab键。
Ctrl+L:		清屏
Ctrl+s:		使终端发呆,静止,可以使快速输出的终端屏幕停下来。
Ctrl+q:		退出Ctrl+s引起的发呆。
Ctrl+z:		使正在运行在终端的任务,运行于后台。 (可用fg恢复)
Ctrl+c:		中断终端中正在执行的任务。
Tab键:		命令、文件名等自动补全功能。

Linux命令行

一、命令行的介绍

命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面CUI。通常认为,命令行界面(CLI)没有图形用户界面GUI那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。另外Linux 系统的优势基因还是快速、批量、自动化、智能化管理系统及处理业务。和Windows系统使用鼠标点击的可视化管理大不相同 ,Linux通过键盘输入指令就可以完成管理系统的相关操作。说完命令行,我们来看下命令提示符

二、命令提示符的介绍

当我们打开终端时,不论是在图形界面还是在字符界面,我们看到的格式都是类似于[root@localhost ~]#这种格式的一串字符,这串字符就是命令提示符

1570783019496.png

提示符组成详解:

root:当前用户的名称

@:分隔符

localhost:当前主机的主机名

~:用户当前所在的目录名称 “~”表示为用户家目录(发音tilde[ˈtɪldə])

#: 用户身份提示符,#表示超级用户,也就是管理员;$表示普通用户 (发音pound[paʊnd])	

三、命令的语法格式

命令+选项+操作对象这三部分是组成了一个标准的linux命令,其中命令部分需要输入命令的名称;选项部分定义命令的执行特性,可以有长短两种选项,长选项用“ –” (发音dash[dæʃ])引导,后面跟完整的单词,如 –help;短选项用 ‘- ’引导,后面跟单个的字符, 如 -a 。多个短选项可以组合使用,例如:-h -l -a == -hla,但是长选项不能组合使用,如 –help后面就不能再跟另外一个单词了。

但是大家需要注意,命令与选项,选项与选项,选项与操作对象,操作对象与操作对象他们之间是必须用空格分隔!至于操作对象就是图片中的/boot,操作对象是可以有多个的

四、如何高效的输入命令

想提高命令的输入效率除了要提升命令的熟练度之外,还要掌握我们上节课所学的快捷键,这样能让你在输入命令是更得心应手。
那如何提升命令熟练度呢?

  • 就要会查看命令的说明,只有看懂了才能记住,记住了才能熟练
  • 使用tab键查询或补全

4.1、如何快速获取命令的帮助说明

在linux中获取命令的帮助说明的途径很多,这里面给大家简单介绍几个

a、help命令可以帮助我们获取到内建命令的使用帮助

1570785422297.png

b、–help参数

1570785480088.png

c、man手册

1570785620561.png

以上这是三种获取帮助的方式,另外还有info、whatis等也可以获取帮助,各位还可以通过一些在线查询工具获取到相关命令的帮助!

4.2、Tab键模糊查询命令

a、命令模糊查找:如果你命令记不住了,大概能记得个开头,你可以使用: 命令开头字符+两次tab键找到所有以该命令开头字符的命令,然后就能找到了!

命令模糊查找.gif

b、命令补全: 当你打命令的时候,一般情况下你打出命令的前3-5个字符按一下tab就可以完成命令补全,补全的前提是你打的这些字符可以直接匹配到这个命令。

命令补全.gif


Linux远程连接工具

一、远程连接工具介绍

关于远程连接的用户分类时这样的,通常需要进行远程连接的人有两类,一类是系统管理员,另一类是普通的用户。系统管理员通常需要远程连接企业内网的网络设备或服务器,进行远程配置管理操作。以目前的产品发展来看,大部分企业级的网络设备或服务器,通常都提供远程配置管理的接口或功能,管理员可以通过telnet、SSH、web GUI乃至远程管理软件终端等方式,进入内网进行管理维护。普通用户的远程连接需求,通常是远程办公人员、外出人员,尤其是企业高管等需要经常出差又经常需要操作ERP、CRM、HR等信息化系统,进行查看、审批、提单等操作。

我们这里面所提到的远程连接工具一般指的是针对系统管理类人员使用的,而系统管理类人员常用的远程连接工具主要有Putty、XShell、SecureCRT、SSH Secure、Shell Slient等等。

  • putty: Putty非常小巧易用,不支持tab,多窗口切换效率太低,易用性不好。

相关链接: https://www.chiark.greenend.org.uk/~sgtatham/putty/

1570876394781.png

  • SecureCRT: 界面强大,功能全面,原始环境为英文,收费

相关链接: https://www.vandyke.com/cgi-bin/releases.php?product=securecrt

1570876465832.png

  • Xshell: XShell绝对首选,免费版也没什么限制,随便改字体,随便改颜色,随便改大小,随便改字符集,多窗口,也比较小巧。

相关链接: https://www.netsarang.com/zh/xshell/

1570876662599.png

二、远程连接工具的选择

Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。除此之外,相对比SecureCRT的原始英文环境还收费,putty的功能单一,其中文环境、丰富的外观配色方案、样式、功能,还免费等优势,使得xshell成为多数人的首选,本节课我们就以xshell为例来看下远程连接工具的相关设置

三、远程连接工具的相关设置和使用

1、新建会话

1571022422199.png

2、设置会话相关信息,标记为数字1的设置连接的名称,标记为数字2的设置远程主机的IP地址,我们还可以在左侧的选项中进行一些自定义设置,包括安全性设置,终端设置,外观这些,如果只是基本使用的话我们先添这两项就可以,填完之后点击确定,你会看到一个关于秘钥的提示,在这个提示中你可以选择一次性接受还是保存,这个根据自己需求就可以,如果选择一次性的话我们下次连接还需要我们确认这个秘钥,如果是保存下来的话,下次会直接连接,可以根据自己的需求决定,紧接着会提示输入用户名和密码,都输入正确的话我们就可以连接上远程的主机了

1571031465825.png
1571031724630.png
1571031917329.png
1571031936838.png
1571032314267.png


Linux基本命令与常用符号

一、常用命令介绍

在linux系统中存在很多命令,这些命令可以帮助我们完成不同的工作,在这里面我们先介绍一些常用的基础命令,这些命令可以帮助我们完成对应的基本操作,随着以后的学习,我们还会接触到更多可以帮助我们完成不同工作的linux命令,我们来一起看一下这些基础命令都有哪些

1、关机、重启命令

关机命令

  • init 0 #管理员可以使用
  • halt
  • shutdown -h
  • poweroff

重启命令

  • shutdown -r
  • reboot
  • shutdown -r

强烈推荐:关机或重启命令及步骤

1) sync:将缓冲区的数据同步到磁盘中(关机,重启前都需要执行,避免数据丢失),在Linux系统中,当数据需要存入磁盘时,通常会先放到缓冲区内,等到适当的时刻再写入磁盘,如此可提高系统的执行效率

2) shutdown: 以一种安全的方式关闭或重启系统。所有登陆用户都可以看到关机信息提示,并且禁止登陆

	-k	并非真正关机,只向所有人显示警告信息。
		如:shutdown -k +5
	-r	重启。默认延迟一分钟
		如:shutdown -r +3 "shutdown in 3 minutes"
	-h	关机。默认延迟一分钟
		如:shutdown -h 12:00/shutdown -h now
	-f	重启时跳过磁盘检测。
	-F	重启时强制磁盘检测。
	-c	取消shutdown

推荐理由:
1、将内存中的数据刷入硬盘,避免因为重启或关机数据没有及时保存而丢失
2、避免多用户使用突然某个用户强行关机,影响其他用户,使用shutdown关机和重启可以通知其他用户,给予缓冲时间

2、系统信息

  • uname
-s  输出内核名称
-n  输出网络节点上的主机名
-r  输出内核发行号
-v  输出内核版本
-m  输出主机的硬件架构名称
-p  输出处理器类型或"unknown"
-i	输出硬件平台或"unknown"
-o	输出操作系统名称
-a  以如下次序输出所有信息。其中若-p和-i的结果不可知则省略
  • hostname 查看主机名
# hostnamectl set-hostname hello
  • date 查看和设置时间
时间方面:
%n : 下一行
%t : 跳格 tab
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..60)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区


日期方面:
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (yyyy-mm-dd)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)



[root@zutuanxue ~]# date '+%I%M%S'
025929
[root@zutuanxue ~]# date '+%r'
上午 02时59分49秒
[root@zutuanxue ~]# date '+%s'
1584428402
[root@zutuanxue ~]# date '+%Z'
EDT
[root@zutuanxue ~]# date '+%a'
二
[root@zutuanxue ~]# date '+%A'
星期二
[root@zutuanxue ~]# date '+%b'
3月
[root@zutuanxue ~]# date '+%B'
三月
[root@zutuanxue ~]# date '+%c'
2020年03月17日 星期二 03时01分36秒
[root@zutuanxue ~]# date '+%T%n%D'
03:03:35
03/17/20
[root@zutuanxue ~]# date '+%T%t%D'
03:03:58	03/17/20
[root@zutuanxue ~]# date -s 2021-10-25
2021年 10月 25日 星期一 00:00:00 EDT
[root@zutuanxue ~]# date -s 18:00
2021年 10月 25日 星期一 18:00:00 EDT
[root@zutuanxue ~]# date -s 18:30:21
2021年 10月 25日 星期一 18:30:21 EDT
[root@zutuanxue ~]# date -s "2021-04-28 15:30:20"
2021年 04月 28日 星期三 15:30:20 EDT

3、文件和目录

  • cd 目录 进入目录
  • pwd: 查看当前的工作路径
-P		显示实际位置
-L		显示所在位置

[root@zutuanxue ~]# cd /etc     #进入到/etc这个目录
[root@zutuanxue ~]# cd /
[root@zutuanxue /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@zutuanxue /]# cd bin/
[root@zutuanxue bin]# pwd
/bin
[root@zutuanxue bin]# pwd -P
/usr/bin
[root@zutuanxue bin]# pwd -L
/bin
  • ls: 查看当前目录下有哪些文件
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-c 与lt一起使用,显示并按照修改时间(ctime)排序,与l一起使用,显示修改时间,按名称排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-f 对输出的文件不排序,使用此选项后aU选项生效,lst选项失效
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。
-g 类似l但是不显示所有者
-h 与l一起,以易于阅读的格式输出文件大小(例如 1K 234M 2G)
-i 输出文件的i节点的索引信息。
-k 以k字节的形式表示文件的大小。--si类似k但是以1000为进制而非1024
-l 列出文件的详细信息。
-L 遇到链接文件是,显示原文件的信息,而非链接信息
-m 横向输出文件名,并以“,”作分格符。
-n 类似l,但是用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p 目录后面加上/标识
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以修改时间排序。
-u 与lt一起使用,以访问时间(atime)排序;与l一起使用显示访问时间,按照名称排序
-x 按列输出,横向排序。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
--color=no 不显示彩色文件名
--help 在标准输出上显示帮助信息。
--version 在标准输出上输出版本信息并退出。
  • mkdir 建立目录
-m	设置权限模式(类似chmod)
-p	需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
-v	每次创建新目录都显示信息
-Z	将每个创建的目录的SELinux 安全环境设置为CTX
  • rmdir 删除空文件夹
-p  递归删除空目录,从最后一个目录倒删
  • touch 建立文件
-a	只更改访问时间
-c	不创建任何文件
-m	只更改修改时间
-r	使用指定文件的时间属性替代当前时间
-t	使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当前时间
  • cat 查看文件内容
-A	等价于-vET
-b	对非空输出行编号
-e      等价于-vE
-E	在每行结束处显示$
-n	对输出的所有行编号
-s	不输出多行空行
-t	与-vT等价
-T	将跳格字符(tab)显示为 ^I
-v	使用^和M
  • rm 删除文件或目录
-f	强制删除。忽略不存在的文件,不提示确认
-i	在删除前需要确认
-I	超过三个文件或者递归删除前要求确认。比-i提示内容更少
-d	删除空目录
-r	递归删除目录及其内容

这些命令都是初学者可能会经常用到的,大家可以在自己的虚拟机上练习一下

  • cp 拷贝
-i	覆盖前询问(使前面的 -n 选项失效)
-n	不要覆盖已存在的文件(使前面的 -i 选项失效)
-R, -r, --recursive		递归复制目录及其子目录内的所有内容
-s	只创建符号链接而不复制文件
-f	强制,将目标文件无法打开则将其移除并重试
  • mv 移动/改名
-f	覆盖前不询问
-i	覆盖前询问
-n	不覆盖已存在文件
#如果您指定了-i、-f、-n 中的多个,仅最后一个生效。

二、常用符号

*	任意字符串

?	任意字符

/	路径间隔符

~	当前用户的家目录	管理员家目录为/root,其它用户的家目录在/home/用户名	

Linux的基本优化

一、selinux和防火墙优化

1、SElinux

selinux 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要由美国国家安全局开发。它的主要 作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。也由于它的这个原则,导致我们很多操作无法正确的执行,所以对于初学者而言在会用selinux之前我们要把这个子系统关闭

SELinux 的工作模式

SELinux 有三种工作模式,分别是:

- enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。- permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。- disabled:关闭 SELinux。

SElinux工作模式设置方法

  • 临时设置
    enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换,重启系统后失效。
  • 永久生效
    SELinux 工作模式可以在 /etc/selinux/config 中设定。
如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。

需要注意的是,如果系统已经在关闭 SELinux 的状态下运行了一段时间,在打开 SELinux 之后的第一次重启速度可能会比较慢。因为系统必须为磁盘中的文件创建安全上下文,我们现在来看一下如何关闭selinux,首先用root的身份登录系统,打开一个终端输入gedit /etc/selinux/config命令,回车之后会打开一个文件,将所标记出来部分的enforcing改为disabled,保存之后重启linux系统

[root@zutuanxue ~]# gedit /etc/selinux/config##/etc/selinux/config  内容# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#     enforcing - SELinux security policy is enforced.#     permissive - SELinux prints warnings instead of enforcing.#     disabled - No SELinux policy is loaded.SELINUX=enforcing     #这里定义selinux是否为开启状态# SELINUXTYPE= can take one of these three values:#     targeted - Targeted processes are protected,#     minimum - Modification of targeted policy. Only selected processes are protected. #     mls - Multi Level Security protection.SELINUXTYPE=targeted   #这里定义的是selinux保护级别

重启登录之后可以使用sestatus -v命令去查看是否成功,如果看到的状态不是disabled则需要重新操作

[root@zutuanxue ~]# sestatus -vSELinux status:                 disabled

2、防火墙

防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 在CentOS8中使用firewalld作为防火墙,基于iptables的防火墙被默认不启动,但仍然可以继续使用。CentOS8中有几种防火墙共存:firewalld、iptables、ebtables等,默认使用firewalld作为防火墙,通过firewall-cmd工具来管理netfilter,不过底层调用的命令仍然是iptables,虽然防火墙是安全软件,但是它的一些默认设置会对初学者造成困扰,所以我们要先关闭firewalld。通过systemctl stop firewalld.service停止防火墙,systemctl disable firewalld.service禁止防火墙服务开机启动,接下来我们看一下如何设置中文

1571044294838.png

二、中文设置优化

我们在安装系统选择的是中文,但是我们系统当中并没有中文输入法,所以如果要想输入中文的话需要添加中文输入法,以root用户身份登录系统之后我们使用gedit /etc/yum.repos.d/server.repo,输入如下内容保存退出,确保虚拟机的光驱中加载的是CentOS8的光盘镜像,并且已连接
1571048414719.png
1571047694890.png

设置完成之后执行mkdir命令建立目录,然后挂载光盘

1571047821170.png

光盘挂载完成之后执行输入法安装命令,如果只要拼音则安装的是: ibus-libpinyin.x86_64

# 安装所有支持的输入法[root@zutuanxue ~]# dnf install ibus* -y# 或者 精准安装拼音输入法[root@zutuanxue ~]#  dnf install ibus-libpinyin.x86_64 -y

等待软件包安装完成之后重启系统然后重新登录

如果不想重启系统可以使用[root@zutuanxue ~]# ibus restart 命令重启ibus-daemon进程来实现

1571048752409.png

安装完成之后点击右上角的按钮然后点击设置

1571048826875.png

在新打开的窗口中找到语言,选择添加,选择汉语,然后选择一个适合自己的中文输入法点击添加之后就可以使用中文输入法了

1571048904227.png

1571049215146.png

1571049244944.png

输入法设置完成之后,我们来看下时间相关的设置

三、网络时间服务器优化

如果系统的时间不准,自己手动设置起来比较麻烦,我们可以看下怎么来优化一下

同样还是找到设置,在里面找到详细信息,展开之后可以看到日期和时间的设置,两个自动设置的选项打开,如果你的虚拟机可以联网的话,过一会就会看到时间正常了

1571049564017.png

1571049605979.png
1571049727212.png

四、自启动服务优化

自启动服务优化的方式类似我们之前提到的停止firewalld,但是首先我们要确认一下有哪些服务是开机启动的,然后利用之前用过的systemctl stop servername和systemctl disabled servername这两条命令停止相应的服务,比如说蓝牙服务和防火墙服务,但是各位需要注意的是,这里面所涉及的服务在你不了解的前提下不要乱停止,否则可能会导致系统功能失灵,甚至是崩溃
1571050099841.png


Linux目录结构和文件属性管理

一、FHS介绍

Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。

FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

二、linux目录结构介绍

整个Linux系统最重要的地方就是在于目录树架构,所谓的目录树架构就是以根目录为主, 然后向下呈现分支状的目录结构的一种档案架构。下图给出了linux的目录结构,那这些目录都有什么作用呢?

1571118994639.png

三、linux目录的作用

  • 根目录(/)

最高一级目录,所有目录都是根目录衍生出来,只有root用户具有写权限,一般根目录下只存放目录,不要存放件

  • /bin目录 – 用户二进制文件

包含二进制的可执行文件,你需要的常见的Linux命令都位于此目录下。

  • /sbin目录 – 系统二进制文件

这个目录下的命令通常由系统管理员使用, 对系统进行维护。

  • /etc– 配置文件

包含所有程序所需要的配置文件,也包含用于启动/停止单个程序的起动和关闭shell脚本。

  • /dev-设备文件

包含设备文件,包括终端设备、USB或连接到系统的任何设备,如网卡等。

  • /proc-进程信息文件

这是一个虚拟的文件系统,包含有关正在运行的进程信息。

  • /usr-用户程序

包含二进制文件、库文件、文档和二级程序的源代码。

/usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。/usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。/usr/lib中包含了/usr/bin和/usr/sbin用到的库。/usr/local中包含了从源安装的用户程序。
  • /home -HOME目录

包含所有用户的个人档案,Linux是多用户的系统,所以用该目录保存各用户的信息。

  • /boot -引导加载程序

包含引导加载程序相关的文件。

  • /lib -系统库

包含支持位于/lib和/sbin下的二进制文件的库文件。

  • /opt -可选的附加应用程序

给主机额外安装软件所摆放的目录,以前的 Linux 系统中,习惯放置在 /usr/local 目录下

  • /mnt /media -挂载目录

光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。

  • /root 管理员家目录

在这里我们所介绍的目录是在linux系统中常见的目录,不同厂商的linux有所差异,有的版本中会出现有额外作用的目录,这个就需要具体问题具体对待了。

四、目录和设备节点

我们已经知道目录是用来存放文件的,不同的目录存放的文件作用不同,那么我们来看下设备节点是什么? 一个设备节点其实就是一个文件,Linux中称为设备文件。有一点必要说明的是,在Linux中,所有的设备访问都是通过文件的方式,一般的数据文件程序普通文件,设备节点称为设备文件,而这些设备节点,或者说是设备文件都统一存放在/dev目录下,简单来说,设备节点是一种特殊的文件,只不过这个文件存放的不是一般的数据,而是和你计算机中的设备相关联的。

五、.和…

在linux系统中,使用ls -a命令时,你会发现每一个目录下都包含两个目录,这两个目录就是.和…,其中”.“表示是的是当前目录,也就是你使用pwd所查看到的路径,而”…”表示的上一级目录,也就是父目录。

六、绝对路径和相对路径

linux的路径书写方式有两种:

  • 绝对路径:路径的写法一定是由根目录 / 写起的,以根目录为起点;
  • 相对路径:路径的写法不是由根目录 / 写起的,不以根目录为起点。

例如,你知道你的朋友在四楼,而你在五楼,如果你的朋友询问你的位置,你就有两种回答方式:

  • 绝对路径的方式就是你告诉对方你在XX小区的xx号楼的五楼,
  • 相对路径的方式就是你告诉对方你在对方五楼。

至于优缺点方面没有绝对的答案,不同情况使用不同的路径罢了,两种路径的出现只是因为参照物不同而已。


深入理解linux文件

一、linux的文件存储

假如有一个用户在linux系统中编辑了一个文件,编辑完内容后,关闭编辑器时会问用户改如何命名这个文件,设置完名称之后会选择一个目录将该文件保存到指定目录下,在这个例子中包含了linux系统中与文件相关的三个组成部分

  • 数据:就是文件的内容,保存在一个叫data(数据块)的结构中
  • 元数据:保存一个文件的特征的系统数据,用来保存除了文件内容和文件名以外的与文件相关的信息, 诸如文件的创建者,日期,大小等等,保存在一个叫inode(i节点)的结构中。
  • 文件名:用来保存文件名称,文件名保存在一个叫dentry(目录项)的结构中。

二、i节点介绍

通过前面的课程我们知道,inode是用来保存文件的元数据的,除此之外还保存文件相关属性信息,如链接数等。我们通过类似stat hello.txt这条命令查看指定文件的inode信息。

三、链接文件介绍

Linux中如果用户想把同一个文件保存在两个地方,或用两个不同的文件名保存,除了复制之外还有另外一种选择,就是链接,在linux系统中链接分为硬链接,软链接,空链接,递归链接等

链接命令: ln

语法:
ln 源文件路径 链接位置路径

常用命令选项:

-s 创建软连接-f 强制执行-i 交互模式,文件存在则提示用户是否覆盖-n 把符号链接视为一般目录,显示为一般文件-v 显示详细的处理过程
  • 硬链接:允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据,不过硬链接只能在同一文件系统中的文件之间进行连接
  • 软链接 : 也叫符号链接,类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,软链接可对文件或目录创建。

这是概念上的描述,我们用一句话来将这两种链接进行总结:

a、硬链接不能链目录,不能跨文件系统,软链接可以;

b、源文件删除后软链接失效,硬链接依然可用;

我们通过下面的例子可以看到硬链接和软链接的创建方式以及基本对比

软连接

# 在root家目录下创建一个文件ztx[root@zutuanxue ~]# touch ztx# 为/root/ztx文件创建一个软连接文件在/tmp目录下[root@zutuanxue ~]# ln -s /root/ztx /tmp/# 验证快捷方式是否创建成功[root@zutuanxue ~]# ls -l /tmp/ztx lrwxrwxrwx 1 root root 9 11月 26 15:06 /tmp/ztx -> /root/ztx# 查看源文件和链接文件的i节点信息[root@zutuanxue ~]# ls -i /root/ztx /tmp/ztx 674632 /root/ztx  929916 /tmp/ztx    # 发现软连接的文件i节点不同# 删除源文件[root@zutuanxue ~]# rm -f /root/ztx # 验证链接文件是否可用[root@zutuanxue ~]# cat /tmp/ztx cat: /tmp/ztx: 没有那个文件或目录    #删除源文件发现链接文件失效

硬链接

# 创建一个源文件  名字为组团学[root@zutuanxue ~]# touch zutuanxue   # 为/root/zutuanxue文件创建一个硬链接文件 到/tmp/zutuanxue[root@zutuanxue ~]# ln /root/zutuanxue /tmp/zutuanxue   # 查看源文件和链接文件的i节点[root@zutuanxue ~]# ls -i /root/zutuanxue /tmp/zutuanxue 674632 /root/zutuanxue  674632 /tmp/zutuanxue  # 硬链接的i节点和源文件的i节点一致# 删除源文件,看看硬链接文件是否可用[root@zutuanxue ~]# echo test > /root/zutuanxue [root@zutuanxue ~]# rm /root/zutuanxue rm:是否删除普通文件 "/root/zutuanxue"?y[root@zutuanxue ~]# cat /tmp/zutuanxue test			#删除硬链接源文件后,发现链接文件依然可以使用

除了上面我们说到的硬链接和软链接之外还有

  • 空链接,所谓的空链接就是软链接指向的源文件不存在了,包括源文件被删除,改名。
  • 递归链接:递归链接不如空链接常见,如果想看的话几乎需要专门寻找,如果用户创建两个软链接,linka与linkb关联,而linkb又与linka关联,这时候就会出现递归链接,比如

1571130770456.png

  • 绝对软链接和相对软链接:主要指的是用户在创建软链接的时候使用的是绝对路径还是相对路径来指定链接目标,如果链接创建完成之后不会移动,那么这两种方法可以随意使用,但是如果链接文件需要被移动,那么建议还是使用绝对路径,比如

1571132049532.png

好了链接我们就说到这里,下面我们看一下时间戳

四、时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 当我们使用stat命令查看文件的时候除了创建时间你会发现有三个跟时间戳相关的信息

1571133239914.png

1571133272500.png

缩写 命令 目的
Atime 访问时间 文件数据每次被阅读后的更新
Ctime 改变时间 文件的i-节点信息每次被改变后都更新
Mtime 修改时间 文件数据每次被改变后的更新

五、常用目录管理命令总结

  • 目录:
命令 用法 功能
mkdir mkdir 目录名称 创建一个目录
rmdir rmdir 目录名称 删除一个空目录
cd cd 目录名称 进入一个目录
ls ls 目录名称 列出一个目录内容
  • 文件:
命令 用法 功能
touch touch 文件名 新建一个文件
rm rm 文件名 删除一个文件
cat cat 文件名 打印一个文件内容
  • 其他:
命令 用法 功能
cp mkdir file folder 将文件file拷贝到目录folder
mv mv A B 移动A到B目录或者从命名 A为B
ln ln -s A B 给A做一个快捷方式,放到B位置

VIM文本编辑器

一、vim使用介绍

vim介绍

在linux系统中,大部分配置文件都是ASCII的纯文本形式存放的,所以我们在修改系统设置的时候使用简单的文本编辑软件就可以实现了,如果你使用过windows当中的word的话,那么你可能会感觉linux字符界面的文本编辑工具并不是太好用,毕竟没有图形窗口,看着不会太舒服。但是既然要学习linux,掌握并熟练使用文本编辑工具是必不可少的技能,在linux当中的文本编辑工具有很多,如emacs pico nano joe vi/vim 等等

既然有这么多文本编辑工具,为什么要学习vi/vim呢?

为什么要使用vim?

虽然在linux下的文本编辑器众多,这些工具都有各自的优点,但是有几点是其它编辑工具所不能比拟的

  • 所有的类Unix系统都内建vi,其它的编辑工具则不一定,而vim相当于是vi的升级版
  • 很多软件的编辑界面都会调用vi,如后面提到的crontab、edquota等
  • vim具有程序编辑能力,可以主动以字体颜色标识语法的正确性,方便代码编写
  • 程序简单,编辑速度非常快

综上所述这是一个老式的文字处理工具,但是功能很齐全,不仅是文本处理工具,还是一个程序编辑工具,就连官方网站也说vim是一个程序开发工具而不是文字处理软件,因为它包含了很多额外的功能,如:多文件编辑,区块复制等,这些功能让我们在进行配置文件修改的时候会更方便。

介绍就到这里,我们来看一下基本使用

二、基本使用

由于vi/vim是一个全屏幕的文本编辑器,它工作在三种模式下:分别是命令模式、输入模式和末行模式。可以分别从命令模式切换到输入模式和末行模式,也可以从末行模式或输入模式切换到命令模式,但是输入模式与末行模式之间不能互相切换。

1571203454643.png

第一种:命令模式,当我使用“vim myfile”命令打开myfile这个文件时就处于命令模式,屏幕左下角为文件名(myfile),1L 表示本文件有1 行,26C 表示此文件有26 个字符。1,25表示光标当前位置,在此模式下用户可以输入命令来进行文件存盘、移动光标、删除字符、撤消命令和重复命令等操作,还可以设置编辑环境。

this is the command mode.
~                                                                                  
~   表示没有内容                                                                                          
"myfile" 1L, 26C                                         1,25         全部

第二种:编辑模式,又叫输入模式。在输入模式下,屏幕的左下方会出现INSERT (插入)字样。在输入状态下,用户可以输入文本的内容。

this is the command mode.
~                                                                                  
~                                                                                  
~                                                                                  
~                                                                                  
-- 插入 --                                                       1,25         全部

第三种:末行模式。只要在命令模式下输入命令“:”即可进入末行模式。在末行模式下,可以进行保存文件、退出vi、进行查找和替换等操作。

this is the command mode.
~                                                                                  
~                                                                                  
~                                                                                  
~                                                                                  
:q!                                                    

三种模式介绍完了,我们看下vim的使用,这里面我们还是按照三种模式来对vim的使用进行说明

命令模式可以使用的按键说明

光标控制按键

h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
15j/15↓ 向下移动15行
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
n 那个 n 表示『数字』,例如 3 。按下数字后再按空格键,光标会向右移动3 个字符。
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个文件的最后一行(常用)
nG n 为数字。移动到这个文件的第 n 行。可配合 :set nu
gg 移动到这个档案的第一行,相当于 1G (常用)
n n 为数字。光标向下移动 n 行(常用)

搜索与替换

/abc 向光标之下查找一个名称为 abc 的字符串。 (常用)
?abc 向光标之上查找一个字符串名称为 abc 的字符串。
n 这个 n 是英文按键。代表『重复前一个查找的动作』。
N 这个 N 是英文按键。与 n 刚好相反
:n1,n2s/abc1/abc2/g n1 与 n2 为数字。在第 n1 与 n2 行之间查找 abc1 替换为 abc2
:1,$s/abc1/abc2/g 从第一行到最后一行查找 abc1 字符串,并将该字符串替换为 abc2 (常用)
:1,$s/abc1/abc2/gc 从第一行到最后一行查找 abc1 字符串,并将该字符串替换为 abc2 ,且在替换前显示提示字符给用户确认

删除与复制粘贴

x, X x 相当于 [del] , X 相当于 [backspace] (常用)
nx n 为数字,连续向后删除 n 个字符。
dd 删除光标所在的那一整行(常用)
ndd n 为数字。删除光标所在的向下 n 行(常用)
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在行到最后一行的所有数据
d$ 删除光标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除光标所在处,到该行的最前面一个字符
yy 复制光标所在的那一行(常用)
nyy n 为数字。(常用)
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在光标上一行 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 4 行,[ 4cj ],配合上下左右的按键使用
u 撤销操作。(常用)
[Ctrl]+r 重做上一个动作。(常用)

从命令模式进入输入模式

i, I i=从当前光标所在处插入, I =在当前所在行的第一个非空处开始插入。 (常用)
a, A a =从当前光标所在的下一个字符处开始插入, A =从光标所在行的最后一个字符处开始插入。(常用)
o, O o =在当前光标所在的下一行处插入新的一行; O =在当前光标所在处的上一行插入新的一行。(常用)
r, R r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
[Esc] 退出输入模式,回到命令模式中(常用)

从命令模式进入到末行模式

:w 保存(常用)
:w! 若文件属性为『只读』时,强制保存,是否能保存与权限有关
:q 不保存退出(常用)
:q! 强制退出不保存。
:wq 保存退出, :wq! 则为强制保存退出 (常用)
ZZ 这是大写的 Z !若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,从指定的文件读取数据并加到光标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容保存为 filename 这个档案。
:! command 在系统中执行指定的命令 如 :! ls /home
vim 环境的变更
:set nu 显示行号
:set nonu 取消行号

三、额外功能

区块选择

v 字符选择,选中光标经过的地方
V 选中光标经过的行
[Ctrl]+v 区块选择
y 复制选中的部分
d 删除选中的部分

多文件编辑

:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个 vim 的开启的所有文件

多窗口编辑

:sp/:vsp [filename] 开启一个新窗口,如果加 filename, 表示在新窗口编辑指定的文件,否则表示两个窗口为同一个文件(同步显示)。
[ctrl]+w+ j [ctrl]+w+↓ 按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下箭头键),则光标可移动到下方的窗口。
[ctrl]+w+ k [ctrl]+w+↑ 同上,不过光标移动到上面的窗口。
[ctrl]+w+ q 退出光标所在窗口,也可以 [ctrl]+w+j/k 切换窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+w+q 。

环境变量与记录

.viminfo:记录用户的行为,之前编辑过的文件光标在什么位置,在这个文件中进行过什么操作等,自动建立

.vimrc:定义vim的默认设置,如是否显示行号等,需要手动生成

:set nu /:set nonu 就是设定与取消行号!
:set hlsearch /:set nohlsearch 搜索时是否高亮显示。默认值是 hlsearch
:set autoindent :set noautoindent 是否自动缩排?autoindent 就是自动缩排。
:set backup/:set nobackup 是否自动备份,一般是 nobackup 的, 如果设定 backup 的话,那么当你更动任何一个档案时,则源文件会被另存成一个档名为 filename~ 的档案。
:set ruler/:set noruler 是否显示右下角的一些状态栏说明
:set showmode/:set noshowmode 是否显示左下角的状态栏。
:set backspace=(012) 一般来说, 如果我们按下 i 进入编辑模式后,可以利用backspace来删除任意字符的。 但是,某些版本则不许如此。这时就可以使用这个设置2 可以删除任意;0 或 1 仅可删除刚刚输入内容
:set all 显示目前所有的环境变量设定值。
:set 显示与系统默认值不同的设置, 用户修改过的
:syntax on :syntax off 是否显示颜色
:set bg=dark :set bg=light 可用以显示不同的颜色色调,预设是『 light 』。如果你常常发现批注的字体深蓝色实在很不容易看, 那么这里可以设定为 dark 喔!试看看,会有不同的样式呢!

密码设置与取消

加密

vim filename--->:X--->输入密码--->保存(否则不加密)

取消密码

vim filename--->输入正确密码--->:X--->空密码--->保存
vim filename--->:set key= --->保存

注意:不要对系统文件进行加密的操作

vim插件

1、虚拟机网卡设置为NAT
2、释放IP并重新获取IP
dhclient -r ensxx
dhclient ensxx
3、安装EPELyum源
dnf install epel-release -y
4、安装vim插件
dnf install vim-airline -y

vimdiff&vimtutor

vimdiff:编辑两个或者更多个文件并显示不同

vimtutor:一条神奇的命令

四、使用中的注意事项

由于个别版本的linux默认只安装vi,所以你需要额外安装vim的软件包,如何安装软件包我们会在后续的课程中讲解,另外vim在字符界面下不能输入中文,而在图形界面下能否输入中文则取决于系统中是否安装了中文输入法

字符差异

由于linux和windows的系统差异,它们针对于文件的中的一些特殊符号表示方式也是不同的,比如说用来表示换行的符号等,如

[root@zutuanxue ~]# cat -A hello-linux.txt 
hello$
$
[root@zutuanxue ~]# cat -A hello-windows.txt 
hello^M$
^M$

如果这种文件是从windows拷贝到linux的一本小说的话,基本没什么问题,但是如果是一个我们需要执行指定工作的shell脚本就会出现问题,因为linux不认识这种符号的含义,就会导致shell脚本无法执行。所以此时我们就要对这种文件进行处理

[root@zutuanxue ~]# unix2dos [-kn] file [newfile]
选项与参数:
-k  :保留文件原本的 mtime 时间格式
-n  :保留旧文件,将转换后的内容输出到新文件,如: dos2unix -n old new

评论
  目录