Linux高级

Linux起源

1965 麻省理工 贝尔实验室 奇异公司

1969 汤姆森.肯 (太空旅行游戏) 4个周 unics

1970 unix

丹尼斯·里奇-->c语言之父

贝尔实验室,unics的基础进行二次开发,c语言写,命名为unix

两个分支:

伯克利分校(TCP/IP) systemV

1983 斯托曼 GNU(自由软件组织) libc gcc make bash解析器

GPL 协议--》开源协议

1991 林纳斯--》linux开源不收费

UNIX和linux的区别:
1)linux是开发源代码的自由软件.而unix是对源代码实行知识产权保护的传统商业软件。

2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.

了解不同操作系统的内核:

windows - NT

ubuntu - linux

Android - linux

macOs ios - unix

查看系统版本

lsb_release -a或-r

查看内核版本

uname -a或-r

内核系统架构

应用层:app shell命令

内核层:五大功能

内存管理

文件管理

网络管理

设备管理

进程管理

驱动层:字符设备驱动、块设备驱动、网络设备驱动

硬件层:鼠标、键盘、U盘、硬盘、网卡

系统关机或重启

关机:

sudo shutdown -h now 立即关机

sudo shutdown -h +时间 "提示语句" 定时关机 min为单位

重启:

sudo shutdown -r now 立即重启

sudo shutdown -r +时间 定时重启

网络配置

win r打开运行窗口,输入cmd打开命令窗口,输入ipconfig

查看Windows的ip地址 ipconfig

查看Linux的ip地址 ifconfig

  1. 虚拟机提供的网络类型

桥接模式:主机和虚拟机分别拥有不同的ip地址,可以实现和外界设备通信

NAT模式:也能联网,但和主机共用同一个ip地址,外界无法识别虚拟机和主机发送的信息

仅主机模式:不能联网,只能和主机通信

  1. 如何查看虚拟机是否联网

ping www.baidu.com

说明虚拟机可以联网

如果没有,可以尝试以下命令

sudo nmcli network off

sudo nmcli network on

  1. 配置桥接模式

1)保证虚拟机提供了桥接模式

菜单栏---》虚拟机---》设置---》网络适配器---》桥接模式

2)保证虚拟机可以设置桥接模式

菜单栏---》编辑---》虚拟网络编辑器

更改设置(如没有桥接模式)----->添加网络(添加桥接网络)

问题:无法添加桥接网络

1)尝试还原默认设置后,再重新添加桥接网络

2)如果1没有用,找到VMware的软件安装包,双击安装包修改该软件

3)如果1和2都没有用,安装更高版本的VMware

桥接到主机的网卡

如果自动失败,手动找到主机的网卡

1) 找到网络---->属性

  1. 描述的位置即是主机的网卡
  1. 找到主机网卡后,不选自动直接桥接到主机具体的网卡

  2. 配置NAT模式

1)编辑->虚拟网络编辑器->选择vmnet8->nat模式->确定。

2)虚拟机->设置->网络适配器->选择nat模式

Linux下的软件安装

两种软件包管理机制

debian linux: deb软件包 ---- ubuntu用的这个

redhat linux: rpm软件包

deb软件包分为两种:

二进制软件包:.deb -----安装软件的软件包

源码包:.dsc

软件包的管理工具:dpkg apt

1)dpkg

特点:安装时需要软件包存在,不需要网络,不能检查软件的依赖关系

dpkg 命令:

sudo dpkg -i 软件包的完整名称:安装软件

sudo dpkg -r 软件名:卸载软件

sudo dpkg -s 软件名:查看软件的安装状态

sudo dpkg -P 软件名:完全卸载

sudo dpkg -L 软件名:列出软件目录信息

2)apt

特点:安装时不需要软件包存在,需要网络,会检查软件之间的依赖关系

默认下载的包存放路径:/var/cache/apt/archives/

sudo apt-get install 软件包名:下载并安装软件

例:sudo apt-get install oneko 小猫鼠标

sudo apt-get remove 软件包名:卸载软件

sudo apt-get --purge remove 软件包名:完全卸载软件包

sudo apt-get update:下载更新软件包列表信息

sudo apt-get upgrade:将系统所有软件包升级到最新版本

sudo apt-get clean:清空安装包的存放路径

shell的基本命令

shell是命令解析器

用户、shell、内核、硬件之间的关系:

用户在命令行输入命令,开始和shell进行交互;shell把用户输入的命令或按键转化成内核能理解的指令,控制操作系统作出响应,直到控制相关的硬件设备,然后,shell把输出结果通过shell提交给用户。

解析器的分类:

Bourne Shell(简称sh):Bourne Shell由AT&T贝尔实验室的S.R.Bourne开发,也因开发者的姓名而得名。它是Unix的第一个Shell程序,早已成为工业标准。目前几乎所有的Linux系统都支持它。不过Bourne Shell的作业控制功能薄弱,且不支持别名与历史记录等功能。目前大多操作系统是将其作为应急Shell使用。

C Shell(简称csh):C Shell由加利福尼亚大学伯克利分校开发。最初开发的目的是改进Bourne Shell的一些缺点,并使Shell脚本的编程风格类似于C语言,因而受到广大C程序员的拥护。不过C Shell的健壮性不如Bourne Shell。

Korn Shell(简称ksh):Korn Shell由David Korn开发,解决了Bourne Shell的用户交互问题,并克服了C Shell的脚本编程怪癖的缺点。Korn Shell的缺点是需要许可证,这导致它应用范围不如Bourne Shell广泛。

Bourne Again Shell(简称bash):Bourne Again Shell由AT&T贝尔实验室开发,是Bourne Shell的增强版。随着几年的不断完善,已经成为最流行的Shell。它包括了早期的Bourne Shell和Korn Shell的原始功能,以及某些C Shell脚本语言的特性。此外,它还具有以下特点:能够提供环境变量以配置用户Shell环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。

shell命令格式

一般包含三要素:命令名称 选项 参数

命令名称:必须有

选项和参数:可有可无,选项前有-符号

history-历史记录查询

history 10 ---》查看近10条历史记录

家目录下隐藏文件 .bash_history保存历史记录,保存

家目录下中进行修改,就是永久修改

起别名命令

alias: 查看系统中起别名的命令

alias 新名='原来的命令' :起别名

unalias 新名 :取消别名

shell中的特殊字符

通配符

当用户需要使用命令处理一组文件,比如file1.c file2.c file3.c file4.c,不需要输入所有的文件名,可以使用shell通配符

|-----------------|--------------|
| 通配符 | 含义 |
| * | 匹配任意长度的字符 |
| ? | 匹配一个长度的字符 |
| [...] | 匹配其中指定的一个字符 |
| [-] | 匹配指定一个字符范围 |
| [^...] | 除了其中指定的字符都可以 |
| [[:lower:]] | 匹配所有小写字母 |
| [[:upper:]] | 匹配所有大写字母 |

管道 |

把前一个命令的输出作为后一个命令的输入

command1 | command2

例:

wc -l 文件名: 显示文件行数

wc -w 文件名 :显示文件单词个数

wc -c 文件名:显示文件的字符个数

例:计算当前路径下单词个数

输入输出重定向

>file:输出重定向,新建模式; file文件不存在则创建

>>file:输出重定向 追加模式 file文件不存在则创建,如果文件已存在则追加

把由命令产生的错误输出到文件中

command &>file

会把标准输出(正常信息)和标准错误(错误信息)都重定向到 file,相当于同时捕获命令的所有输出

command 2>file

只把标准错误(错误信息)重定向到 file,标准输出仍然会显示在终端(或默认输出位置)。

<file:输入重定向

比如你有一个文件input.txt,内容是hello,现在用cat命令读取它

复制代码
cat < input.txt

执行后会输出hello------ 这里< input.txt就是把input.txt的内容作为cat命令的输入。

命令置换符 `(Tab键上面这个)

把一个命令的输出作为另一命令的参数

command1 `command2`

复制代码
wc -l `ls`

这里ls会先执行ls命令,把输出的文件列表作为wc -l的参数,最终输出文件的数量。

echo命令

向终端输出指定的内容

echo -n 字符串:不换行输出

复制代码
echo "你好"
echo "世界"

输出

复制代码
你好
世界
复制代码
echo -n "你好,"
echo "世界"

输出

复制代码
你好,世界
复制代码
name="土豆"
echo "你好,$name"

输出

复制代码
你好,土豆
相关推荐
m0_5027249519 小时前
QT - 系统托盘
开发语言·qt
ICT系统集成阿祥19 小时前
Linux运维最万能的三条指令
linux·运维·服务器
还不秃顶的计科生19 小时前
python循环中的enumerate用法
开发语言·python
资生算法程序员_畅想家_剑魔19 小时前
Java常见技术分享-26-事务安全-锁机制-常见的锁实现
java·开发语言
坚持学习前端日记19 小时前
桌面端与移动端JS桥技术对比及跨平台实现
开发语言·javascript·harmonyos
CAU界编程小白19 小时前
Linux系统编程系列之模拟文件操作
linux·算法
UP_Continue19 小时前
C++--可变参数模板和lambda
开发语言·c++
chenyuhao202420 小时前
Linux网络编程:数据链路层
linux·运维·网络
QT 小鲜肉20 小时前
【Linux命令大全】002.文件传输之uupick命令(实操篇)
linux·运维·服务器·chrome·笔记