Linux 基础指令学习【两万字很详细哦】

Linux 系统的安装

1. 虚拟机VM的安装

	vm15.5.1: https://www.nocmd.com/windows/740.html

2. Centos7.6 安装

centos7.6: https://vault.centos.org/7.6.1810/isos/x86_64/

Linux 系统介绍

  1. Linux 是一种自由和开放源码的类 UNIX 操作系统。
  2. Linux 英文解释为 Linux is not Unix。
  3. Linux 是在 1991 由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发。

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

Linux VS Windows

目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下

比较WindowsLinux
界面界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。
驱动程序驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
学习系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。大部分软件都可以自由获取,同样功能的软件选择较少。

Linux 系统启动过程

linux启动时我们会看到许多启动信息。
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:
● 内核的引导。
● 运行 init。
● 系统初始化。
● 建立终端 。
● 用户登录系统。

init程序的类型:
● SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
● Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
● Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

内核引导

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
在这里插入图片描述

运行init

init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。
在这里插入图片描述

运行级别

许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。
Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
在这里插入图片描述

Linux系统有7个运行级别(runlevel):
● 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
● 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
● 运行级别2:多用户状态(没有NFS)
● 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
● 运行级别4:系统未使用,保留
● 运行级别5:X11控制台,登陆后进入图形GUI模式
● 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

系统初始化

在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
在这里插入图片描述

建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。
同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

用户登录系统

一般来说,用户的登录方式有三种:
● (1)命令行登录
● (2)ssh登录
● (3)图形界面登录
在这里插入图片描述

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。

而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

Linux 的账号验证程序是 login,login 会接收 mingetty 传来的用户名作为用户名参数。
然后 login 会对用户名进行分析:如果用户名不是 root,且存在 /etc/nologin 文件,login 将输出 nologin 文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

图形模式与文字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录。

默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。

如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。

当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。

如果你用的vmware 虚拟机,命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。

Linux 关机

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

关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。

  • sync 将数据由内存同步到硬盘中。

  • shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

  • shutdown –h 10 ‘This server will shutdown after 10 mins’
    这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

  • shutdown –h now 立马关机

  • shutdown –h 20:25 系统会在今天20:25关机

  • shutdown –h +10 十分钟后关机

  • shutdown –r now 系统立马重启

  • shutdown –r +10 系统十分钟后重启

  • reboot 就是重启,等同于 shutdown –r now

  • halt 关闭系统,等同于shutdown –h now 和 poweroff

不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。
关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6。

shutdown命令

shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。
shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。

shutdown -p now  ### 关闭机器
shutdown -H now  ### 停止机器      
shutdown -r 09:35 ### 在 09:35am 重启机器

要取消即将进行的关机,只要输入下面的命令:

shutdown -c

halt命令

halt 命令通知硬件来停止所有的 CPU 功能。但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。

halt             ### 停止机器
halt -p          ### 关闭机器、关闭电源
halt --reboot    ### 重启机器

poweroff

poweroff 会发送一个 ACPI 信号来通知系统关机。

poweroff           ### 关闭机器、关闭电源
poweroff --halt    ### 停止机器
poweroff --reboot  ### 重启机器

reboot

reboot 命令 reboot 通知系统重启。

reboot           ### 重启机器
reboot --halt    ### 停止机器
reboot -p        ### 关闭机器

Linux常用操作指令

参考链接

● ls 是最常见的目录操作命令,主要作用是显示目录下的内容
● cd是切换所在目录的命令
● pwd命令是查询所在目录的命令
● mkdir [选项] 目录名 创建文件夹
● rmdir命令删除空目录 ;rmdir命令的作用十分有限,只能删除空目录,一旦目录中有内容就会报错。所以一般不论删除的是文件还是目录,都会使用rm命令

1. 简单系统指令

在这里插入图片描述

2. Linux文件系统

1.Linux一切皆文件
2.只有一个顶级目录,不像windows分C盘、D盘、E盘

目录结构

在这里插入图片描述

文件含义

在这里插入图片描述

3. 文件管理指令

注意事项:命令区分大小写

1. 查看文件列表

ls [-参数1参数2] [目标文件夹]
# 查看当前目录下的文件列表
	ls
# 查看指定目录下的文件
	ls /
# 查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
	ls -l
# 查看隐藏文件
	ls -a 
# 参数并用
	ls -la  == ll   		//可以读取所以隐藏文件和详细信息

在这里插入图片描述

2. 切换目录

cd 目标文件夹
# 绝对路径切换
cd 绝对路径
# 绝对路径切换
cd 相对路径
# 例子:切换到/etc/sysconfig/networks-scripts 目录下

3. 查看当前命令所在的目录

pwd     //查看当前路径
[root@centos7 network-scripts]# pwd
/etc/sysconfig/network-scripts
# 特殊目录符号
~ 当前用户的home目录
. 当前目录
	.. 上一级目录

4. 新建文件夹和文件

# 在当前位置新建文件夹
mkdir 文件夹名
# 在指定目录位置,创建文件夹,并创建父文件夹
mkdir -p /a/b/文件夹名     //创建子文件夹
# 在当前目录下新建文件
touch 文件名

在这里插入图片描述

5. 删除文件

# 删除文件
	rm 文件
# 删除文件夹
	rm -r 文件夹
# 强制删除不询问
	rm -rf 文件

6. 拷贝文件

# 拷贝文件
	cp 原文件  新文件
# 拷贝文件夹
	cp -r 源文件夹 新文件夹

在这里插入图片描述

7. 移动文件或修改文件名

# 移动源文件到目标文件夹中
	mv 文件  文件夹
# 修改文件A的名字为文件B
	mv 文件A 文件B

在这里插入图片描述

8. 获取文件的md5指纹(数字签名)

md5sum 文件名

# 简介
1. 数字签名,又称数字指纹
2. 可以验证文件是否被修改
3. 一个文件通过计算得到的一串字符串,文件内容的唯一标记(文件内容不变,指纹不会变)

在这里插入图片描述
文件被修改后,签名也会发生改变

4. 文本内容查看命令

  1. cat命令 : 查看文件中的全部信息(适合查看小文档)
  2. tac命令: 从文件的最后一行开始显示(tac是cat的倒着写)
  3. less命令 : 以分页的方式浏览文件信息(适合查看大文档),进入浏览模式
  4. tail命令 : 可以选择看文件的倒数几行
  5. head命令 :可以选择看文件的开头几行内容
  6. nl命令: 在显示内容的时候同时还会显示行数
    可以使用 man [命令]来查看命令的使用文档
#查看文件中的全部信息(适合查看小文档)
	cat 文件名
  
  cat [-AbEnTv]

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

在这里插入图片描述

nl 文件名

在这里插入图片描述

显示行数

# 以分页的方式浏览文件信息(适合查看大文档),进入浏览模式
less 文件名

# 浏览模式快捷键
↑ #上一行
↓ #下一行
G #最后一页
g #第一页
空格 #下一页
/关键词 #搜索关键词

# 退出浏览模式,回到Linux命令行模式
q #退出
# 实时滚动显示文件的最后10行信息(默认10行)
tail -f 文件名
# 显示文件的最后20行信息
tail -n 20 文件名
tail -n -20 文件名
# 显示文件信息从第20行至文件末尾
tail -n +20 文件名

在这里插入图片描述

5. 文件查找

1. 文件名查找

需要管理员root权限才能查找

# 语法
	find 搜索路径 -name "文件名关键词"
# 例子
	find / -name "passwd"
	find / -name "ifcfg-*"

2. 文件内容查找

# 语法
	grep -参数 要查找的目录范围
	# 参数
	-n 显示查找结果所在行号
	-R 递归查找目录下的所有文件
# 例子
	grep aries /etc
	grep aries /etc/passwd

6. 文件链接

1. Linux文件管理

● 模型图
在这里插入图片描述

● 说明

# 文件名
  该文件的名字
# inode
  该文件的元数据
# datablock
	该文件真正保存的数据

文件名 -> 链接到 -> inode【元数据】->数据块【databolcks】(真正保存的数据)

注意:
1、inode中保存的是文件的元数据
2、ls命令查看的都是linux的元数据信息
3、数据块中才是文件的真正数据

2. 硬链接

在这里插入图片描述

命令

ln 源文件 硬链接文件

3. 软连接

在这里插入图片描述

ln -s 目标文件或文件夹 软连接名字

7. 系统管理

# 静态查看系统进程
	ps -aux

在这里插入图片描述

# 实时查看系统进程
top
# 快捷键
↑ 下翻
↓ 上翻
q 退出
# 关闭进程
	kill 进程id 
# 强制关闭进程(谨慎使用)
	kill -9 进程id

8. 输出

1. 覆盖输出

# 将命令1的执行结果,输出到后面的文件中。
`覆盖写入`
	命令1 > 文件
# 例子
	date > date.log

在这里插入图片描述

将日期加入到文件中,覆盖掉之前的内容

2. 追加输出

# 将命令1的执行结果,输出到后面的文件中。
`追加写入`
	命令1 >> 文件
# 例子
	date >> date.log

在这里插入图片描述

追加写入数据

9. 管道

# 语法,将命令1的输出结果,作为命令2的输入
命令1 | 命令2

在这里插入图片描述

# 例子
查找aries用户:cat /etc/passwd | grep -n “baizhi”
查找aries组:cat /etc/group | grep -n “baizhi”
查找sshd进程:ps -aux | grep sshd

10. 文件编辑

配置MobaXterm的默认文本编辑器
免去vim命令的麻烦

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
● chown (change owner) : 修改所属用户与组。
● chmod (change mode) : 修改用户的权限。

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot

实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
● 当为 d 则是目录
● 当为 - 则是文件;
● 若是 l 则表示为链接文档(link file);
● 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
● 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
在这里插入图片描述

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
在这里插入图片描述

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

第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

更改文件属性

1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名

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

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

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

3、chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
● r:4
● w:2
● x:1

符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
● user:用户
● group:组
● others:其他
那么我们就可以使用 u, g, o 来代表三种身份的权限。
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

系统权限

Linux 用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:
● 用户账号的添加、删除与修改。
● 用户口令的管理。
● 用户组的管理。

用户

  1. 用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
  2. 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。

相关命令

1. 创建用户
  `useradd -g 组名 用户名`
2. 设置密码
  `passwd 用户名`
3. 查找系统账户
  说明:系统每个用户信息保存在`/etc/passwd`文件中
4. 切换用户
  `su 用户名`
5. 删除用户
`userdel -r 用户名`
6. 修改用户
`usermod 选项 用户名`
useradd 选项 用户名

参数说明:
● 选项:
○ -c comment 指定一段注释性描述。
○ -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
○ -g 用户组 指定用户所属的用户组。
○ -G 用户组,用户组 指定用户所属的附加组。
○ -s Shell文件 指定用户的登录Shell。
○ -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
● 用户名:指定新账号的登录名。

在这里插入图片描述
在这里插入图片描述

在删除组之前,要先将组内的用户名先删除。

用户组

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
在这里插入图片描述

相关命令

1. 创建组
  `groupadd 组名`
2. 删除组
  `groupdel 组名`
3. 修改组
  `groupmod 选项 用户组`
4. 查找系统中的组
  `cat /etc/group | grep -n “组名”`
  说明:系统每个组信息都会被存放在/etc/group的文件中

要在命令之前加上sudo

groupadd 选项 用户组

可以使用的选项有:
● -g GID 指定新用户组的组标识号(GID)。
● -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

groupmod 选项 用户组      //修改组

常用的选项有:
● -g GID 为用户组指定新的组标识号。
● -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
● -n新用户组 将用户组的名字改为新名字

groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。

权限

● linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,控制不好权限容易导致系统崩溃、数据丢失等问题。

权限含义
在这里插入图片描述

权限访问控制列表(ACL access controll list)
在这里插入图片描述

命令

● 查看权限

ls -la 文件
ll 文件

在这里插入图片描述

● 设置文件所有者

语法:chown [-R] user名:group名 文件名
参数:-R 如果是文件夹,需要使用这个参数,可以将文件夹及其内部所有文件的所有者和组全部修改
注意:命令权限需要root
## 修改文件所有者
	chown 用户名 文件名
## 修改文件所属组
	chown :组名 文件名
## 修改文件所有者和所属组
	chown 用户名:组名 文件名
## 修改文件夹的所有者和所属组
	chown [-R] 用户名:组名 文件夹

在这里插入图片描述

需要前面加上sudo,这里的sudo应该就是windows下的管理员运行。

● 权限设置1

语法:chmod u±rwx,g±rwx,o±rwx 文件名
运算符:
	- 删除权限
	+ 添加权限
	= 赋值权限
## 给文件的所有者添加执行权限
chmod u+x 文件名
## 给文件的其他人删除所有权限
chmod o-rwx 文件名
## 给文件的所属组设置读写权限
chmod g=wx 文件名

● 权限设置2
在这里插入图片描述

# 文件的每个归属方的权限的值使用rwx之和计算出来的。
# 语法
	`chmod [-R] nnn 文件` 
	-R 递归设置文件夹内所有文件
# 设置文件的权限为(所有者可读可写可执行,所属组可读可写,其他人可读)
	chmod 764 文件名

与用户账号有关的系统文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

/etc/passwd文件

/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

1)"用户名"是代表用户账号的字符串。
2)“口令”一些系统中,存放着加密后的用户口令字。
3)“用户标识号”是一个整数,系统内部用它来标识用户。
4)“组标识号”字段记录的是用户所属的用户组。
5) “注释性描述”字段记录着用户的一些个人情况。
6) “主目录”,也就是用户的起始工作目录。
7) 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
8) 系统中有一类用户称为伪用户(pseudo users)。

系统软件管理

压缩解压缩

压缩语法: tar -zcvf 压缩后文件名 被压缩文件
解压缩语法 tar -zxvf 压缩文件名 -C 解压后文件所在目录
在这里插入图片描述

参数2:-C 指定解压后的文件存放的位置
在这里插入图片描述

rpm软件

简介:类似于windows中的.exe程序

1. 安装rpm软件
  语法:`rpm -ivh xxx.rpm`
2. 查看系统中是否已安装的过该rpm软件
  语法:`rpm -qa 软件名`
3. 卸载rpm软件
  语法:`rpm -e 软件名`
4. 例子:安装tree工具
  作用:查看某个目录下的文件信息
  # 以树状结构查看2层文件信息
  tree -L 2 要查看的路径

Linux服务

# 例如:sshd network firewalld 等
# 服务器管理命令
	systemctl status 服务名
# 启动服务
	systemctl start 服务名
# 重启服务
	systemctl restart 服务名
# 停止服务
	systemctl stop 服务名
# 禁止服务随linux启动。
	systemctl disable 服务名
# 设置服务随linux启动。
	systemctl enable 服务名

ip设置

服务名:network

[root@centos7 dirnew]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------网卡对应的文件内容---------------------
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="none"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="0bd5d8a5-fe1b-42de-82bd-bfa7d2984b95"
    DEVICE="ens33"
    ONBOOT="yes"
    IPADDR="192.168.199.8" # 修改这里的ip地址即可
    PREFIX="24"
    GATEWAY="192.168.199.2"
    DNS1="192.168.199.2"
    DNS2="8.8.8.8"
    IPV6_PRIVACY="no"
[root@centos7 dirnew]# systemctl restart network #重启网卡服务

防火墙

服务名:firewalld

# 开启防火墙
systemctl stop 服务名
# 临时关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld

主机名

# 查看主机名
hostname
# 设置主机名
hostnamectl set-hostname 主机名

ip映射

● 域名解析
● 本地hosts编辑

[root@centos7 ~]# vim /etc/hosts
--------------下面是文件------------------
	192.168.199.8 centos7

SSH

# 远程登录linux
ssh 远程linux的ip或者映射域名

免密登录

# 简介
ssh登录远程linux,免去输入密码的麻烦
# 生成公钥和私钥
[root@centos7 ~]# ssh-keygen
------------执行结果-----------
    [root@centos7 ~]# tree .ssh
    .ssh
    ├── id_rsa # 私钥
    ├── id_rsa.pub # 公钥
    └── known_hosts
# 发送公钥
	`保存公钥的文件为/root/.ssh/authorized_keys`
[root@centos7 .ssh]# cat id_rsa.pub > authorized_keys
# 发送公钥
[root@centos7 .ssh]# ssh-copy-id 目标主机的ip

远程拷贝

scp 本地的文件 root@远程linuxip:/远程linux的文件路径
scp -r 本地的目录 root@远程linuxip:/远程linux的文件路径

必要软件安装

  1. vim(vi编辑器增强版)
vim 文件
  1. wget(下载器)
wget url
  1. tree(目录树状显示)
# 以tree结构,递归显示当前文件下所有文件
	tree
# 显示目标文件夹下的文件
	tree 目标目录

在这里插入图片描述

  1. psmisc(高级进程管理工具)
# 以tree形式显示系统目前进程
	pstree
# 杀死进程
	killall 进程名
# 显示该文件被哪个进程使用
	fuser /目标文件

在这里插入图片描述
在这里插入图片描述

Linux 磁盘管理

Linux 磁盘管理好坏直接关系到整个系统的性能问题。

Linux 磁盘管理常用三个命令为 df、du 和 fdisk。
● df(英文全称:disk free):列出文件系统的整体磁盘使用量
● du(英文全称:disk used):检查磁盘空间使用量
● fdisk:用于磁盘分区

df

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:

df [-ahikHTm] [目录或文件名]

选项与参数:
● -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
● -k :以 KBytes 的容量显示各文件系统;
● -m :以 MBytes 的容量显示各文件系统;
● -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
● -H :以 M=1000K 取代 M=1024K 的进位方式;
● -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
● -i :不用硬盘容量,而以 inode 的数量来显示
在这里插入图片描述

du

Linux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。
语法:

du [-ahskm] 文件或目录名称

选项与参数:

-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
在这里插入图片描述

fdisk

fdisk 是 Linux 的磁盘分区表操作工具。

fdisk [-l] 装置名称

选项与参数:
● -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

Linux yum命令

  1. yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
  2. 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
  3. yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum基于rpm实现的,提供了除了rpm的安装软件、卸载软件等功能以外还有,自动查找、下载软件并自动处理软件的彼此之间的依赖关系,下载并安装依赖包。

yum [options] [command] [package ...]

● options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
● command:要进行的操作。
● package:安装的包名。

yum的安装

## 列出所有可以安装的软件包
	yum list
## 安装软件
	yum install -y 软件名
## 卸载软件
	yum remove 软件名
## 查找软件包
	yum search all 软件名

从网站上下载文件需要在网址之前加上 wget

wget + "网址"
wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
tar xvf yum-3.2.28.tar.gz

yum常用命令

● 1. 列出所有可更新的软件清单命令:yum check-update
● 2. 更新所有软件命令:yum update
● 3. 仅安装指定的软件命令:yum install <package_name>
● 4. 仅更新指定的软件命令:yum update <package_name>
● 5. 列出所有可安裝的软件清单命令:yum list
● 6. 删除软件包命令:yum remove <package_name>
● 7. 查找软件包命令:yum search <keyword>
● 8. 清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies  <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz          100% |=========================| 1.6 MB    00:05
filelists.xml.gz          100% |=========================| 138 kB    00:00
-> Finished Dependency Resolution
……(省略)

Linux apt命令

  1. apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
  2. apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
  3. apt 命令执行需要超级管理员权限(root)。
 apt [options] [command] [package ...]

● options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
● command:要进行的操作。
● package:安装的包名。

apt 常用命令

● 列出所有可更新的软件清单命令:sudo apt update
● 升级软件包:sudo apt upgrade列出可更新的软件包及版本信息:apt list --upgradeable升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
● 安装指定的软件命令:sudo apt install <package_name>安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
● 更新指定的软件命令:sudo apt update <package_name>
● 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
● 删除软件包命令:sudo apt remove <package_name>
● 清理不再使用的依赖和库文件: sudo apt autoremove
● 移除软件包及配置文件: sudo apt purge <package_name>
● 查找软件包命令: sudo apt search
● 列出所有已安装的包:apt list --installed
● 列出所有已安装的包的版本信息:apt list --all-versions

Linux vi/vim

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

什么是 vim?

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (https://www.vim.org/) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
在这里插入图片描述

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 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键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
在这里插入图片描述

vi/vim 使用实例

使用 vi/vim 进入一般模式

如果你想要使用 vi 来建立一个名为 runoob.txt 的文件时,你可以这样做:

$ vim runoob.txt

直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!
在这里插入图片描述

按下 i 进入输入模式(也称为编辑模式),开始编辑文字

  1. 在一般模式之中,只要按下 i, o, a 等字符就可以进入输入模式了!
  2. 在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。
  3. 这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。
    在这里插入图片描述

按下 ESC 按钮回到一般模式
好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 Esc 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!
在一般模式中按下 :wq 储存后离开 vi
OK,我们要存档了,存盘并离开的指令很简单,输入 :wq 即可保存离开!
在这里插入图片描述

OK! 这样我们就成功创建了一个 runoob.txt 的文件。

Linux 下的C++开发

1. 基础运行环境

2. 小demo测试

1. 新建.c文件

touch 1.c

2. 写入程序

vim 1.c

在这里插入图片描述

输入之前要先输入i,进入输入模式。
输入完成之后,按 Esc 按键退出到一般模式,然后输入:wq,保存并退出。

3. 编译文件

gcc 2.c  //编译2.c

在这里插入图片描述

这时候会自动编译生成一个a.out文件。

4. 输出结果

./a.out

在这里插入图片描述

好了,累死我了。学习完今天一天,精力满满!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值