1-Linux发展介绍

零 什么是Linux

Linux:和我们常见的Windows一样,都是操作系统,但不同的是: Windows: 收费,不开源,主要用于日常办公、游戏、娱乐多一些。 Linux: 免费,开源,主要用于服务器领域,性能稳定,安全。 例如:淘宝、百度、腾讯等互联网公司,他们使用的服务器全都是 Linux 系统。

一 Linux前身

1968年 Multics项目

MIT**、Bell实验室、美国通用电气有限公司**走到了一起,致力于开发Multics项目。到后期由于开发进度不是很好,MIT和Bell实验室相继离开这个项目的开发,最终导致项目搁浅。

1970**年(Unix元年,时间戳)** Unix诞生

当时在开发Multics项目的时候,实验室中有一个开发成员开发了一款游戏(travel space:遨游太空),因为两个实验室相继离开项目开发,导致这名开发人员没法玩游戏,后来他提议组织人员重新在Multics项目之上重新的开发,也就出现了1970年的Unix。当时Unix操作系统是使用的汇编语言(机器语言)开发的。

1973年 用C**语言**重写Unix

因为汇编语言有一个最大的局限性:对于计算机硬件过于依赖。导致移植性不好,所以后期在1973年使用了C语言对其进行重新开发。

1975年 Bell实验室允许大学使用Unix。

1975年,bell实验室允许大学使用Unix操作系统用于教学作用,而不允许用于商业用途。

二 Linux诞生

人物 Linus

Linux的开发作者,Linux之父,李纳斯·托瓦兹。Linux诞生时是荷兰在校大学生。

1991年 0.0.1版本

李纳斯当时学校使用的就是Unix操作系统,然后其对系统的底层代码进行了修改,放到了学校为学生开放的网站上,原先他把文件命名写成了Linus’s Unix,后期网络管理发现之后觉得这个名字不好,自己手动的将名字改成Linux。随后其他同学下载之后发现这个版本还是挺好用的,随后都把自己代码贡献给李纳斯。

1992年 0.0.2版本

1994年 1.0版本

2003年 2.6版本

上述所提及的版本号并不是分支版本,而是指Linux**的内核版本。

Linux内核网站 linux大神在2017-06-26来到中国

https://top500.org/

三 开源文化

Linux是开源的操作系统。所谓开源就是指开放源代码。

自由软件之父 Richard M. Stallman 1984 GNU组织 copyleft opensource free GPL

理查德·马修·斯托曼(Richard Matthew Stallman, RMS),于1953年出生,自由软件运动的精神领袖、GNU计划以及自由软件基金会(Free Software Foundation)的创立者、著名黑客

copyleft: 代表无版权。copyright: 则代表有版权。 opensource free: 源代码开放、软件谁都可以使用、谁都可以传播、谁都可以二次开发,使用GPL协议保护 GPL: 通用版权许可证协议,如果软件被打上GPL,那么任何人都可以对这个软件进行修改,但是修改完之后必须将源码发布出来,以便更好的传承下去。(那Linux中的软件百分之80都是GPL提供)*

Linux内核使用GPL协议发布,内核也是开源,有了内核的加入,整个GNU的系统更加的完善。其实Linux完整叫法应该叫GNU/Linux,GNU的软件加上Linux内核。

1983**年 GNU计划**

1985年 FSF基金会

1990年 Emacs、GCC(c语言的编译器)、程序库

1991年 Stallman去找Linus,商谈让Linux加入其开源计划(GNU计划)

1992年 GNU/Linux

四 Linux系统特点

开放性(开源)、多用户、多任务、良好的用户界面、优异的性能与稳定性

多用户多任务:

单用户:一个用户,在登录计算机(操作系统),只能允许同时登录一个用户;

单任务:一个任务,允许用户同时进行的操作任务数量;

多用户:多个用户,在登录计算机(操作系统),允许同时登录多个用户进行操作;

多任务:多个任务,允许用户同时进行多个操作任务;

Windows**属于:单用户、多任务。**

Linux**属于:多用户、多任务。**

五 Linux分支

我们现在说的Linux其实都是指的是发行版(Distribution version),就是使用Linux内核加上各种GNU的库文件、应用程序,构造而成的操作系统。Linux发行版介绍RHEL/Centos/Ubuntu/Suse Redhat 1993年,将Linux的内核进行编译安装相应软件进行发行。 CentOS 社区企业级操作系统, 改与Redhat, 完全开源。 Ubuntu 社区维护, 现在主要做手机系统和电脑桌面系统。

获取linux发行版

https://wiki.centos.org/Download

https://mirrors.aliyun.com

https://mirrors.sohu.com

https://mirrors.163.com

2-Linux系统安装

Linux虚拟机安装

linux 分区结构为树结构, windows 为森bai林结构,所以有duC盘D盘之类的, 而zhilinux /分区就是根分区, swap可以理dao解为虚拟内存, /boot 这是个目录,

可以分成一个分区,然后挂载到/boot目录, 也可以只用一个/分区, 里面会有boot目录的,保存的是引导文件,内核等等的东东

快照

3-Linux-Shell

1.什么是Bash shell(壳)

Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。

通过xshell连接,就是打开了一个bash程序的窗口,不能点鼠标,只能输入命令

当我们使用远程连接工具连接linux服务,系统则会给打开一个默认的shell,我们可在这个界面执行命令、比如:获取系统当前时间,创建一个用户等等…

2. linux命令大全url传送门#

linux命令大全 linux命令手册

3. Bash Shell命令流程

1). 当我们执行一个命令, 整个命令执行流程如下:

  1. 判断命令是否通过绝对路径执行

  2. 判断命令是否存在alias别名

  3. 判断用户输入的是内部命令还是外部命令

  4. Bash内部命令直接执行,外部命令检测是否存在缓存

  5. 通过PATH路径查找命令,有执行,无报错

2). 什么是内部命令,什么是外部命令

内部命令: shell程序自带的命令。 外部命令: 在系统PATH变量的某个路径下的可执行程序。

3). 命令执行流程总结: 当我们执行了一个ping命令之后, 整个命令执行的流程步骤如下

  1. 检查执行的命令是否使用的是绝对路径执行的。

  2. 检查ping命令是否存在alias别名

  3. 检查ping命令是内部命令还是外部命令

  4. 如果是内部命令Bash直接执行,如果是外部命令,首先检查Hash缓存,存在则直接调取

  5. 如果该命令不存在Hash缓存,则通过PATH路径进行逐行查找该命令所在的位置

  6. 如果PATH路径没有查找到该命令所在的路径,则返回错误码。command not found

用户登录

  • root用户

    • 是一个特殊的管理账号,也可以成为超级管理员

    • root用户对系统有完全控制的权限

    • 对系统的损害会无限大

    • 在工作中,如果没有特殊的必要,尽量不要使用root

  • 普通用户

    • 权限有限

    • 对系统的损害会小

ssh root@192.168.10.128

终端

分类

  • 设备终端

  • 物理终端

  • 虚拟终端 ctrl+alt+f[1-6] /dev/tty#

  • 图形终端 /dev/tty7

  • 串行终端

  • 伪终端 通过ssh远程连接的 /dev/pts/#

  • 查看终端的命令 tty

  • 查看ip地址的命令 ip addr

交互式接口

启动终端以后,在终端设备上附加的一个应用程序

  • GUI(桌面)

  • CLI command line

    • powershell

    • sh

    • bash(linux,mac默认的程序)

    • zsh

    • csh

    • tcsh

bash

bash是linux系统的用户界面,提供了用户和操作系统之间的交互,它接收用户的输入,让它送给操作系统执行

  • 目前是linux和mac上默认的shell

  • centos默认使用

  • 显示系统当前使用的shell echo $SHELL

  • 查看系统内可以使用的shell cat /etc/shells

  • ctrl +d 快速终止当前的连接

  • 切换shell chsh -s shell

修改ssh连接慢的步骤

echo "UseDNS no" >> /etc/ssh/sshd_config
systemctl restart sshd

命令提示符

[root@localhost ~]#
管理员是# 普通用户时$

显示提示符格式

[root@localhost ~]# echo $PS1
[\u@\h \W]\$
\u 代表当前登录的用户
\h 代表当前主机的主机名
\W 代表当前的目录
0表示默认字体,1表示加粗,4在字体下方加下划线 5 闪烁 7 代表突出显示
31-37 字体颜色
40-47 表示背景颜色
echo 'PS1="\[\e[1;35mm\][\u@\h \W]\\$\[\e[0m\]"' >> /etc/profile.d/ps.sh #永久生效

命令

执行命令: 输入命令回车

内部命令:shell 自带的命令

  • help 显示所有的内部命令

外部命令:第三方提供的命令

查看命令的类型: type

[root@localhost ~]#type echo
echo is a shell builtin
[root@localhost ~]#type top
top is /usr/bin/top

别名

  • 查看当前所有的别名 alias

  • 自定别名 alias cdetc='cd /etc'

  • 取消别名 unalias cdetc

  • 设置别名只对当前的终端有效

  • 设置所有用户都可以用 /etc/bashrc

  • 只对当前用户有效 ~/.bashrc

  • 执行本身命令

    • \command

    • "command"

    • 'command'

    • path

命令格式

command [options.....] [args...]

command 命令本身

options:启动或者关闭命令里面的某些功能

  • 长选项:--help --color

  • 短选项: -i -l

args:命令的作用体,一般情况下是目录或者文件,用户名等等

注意:

  • 短选项是可以合并

  • 空格隔开

  • ctrl+c 结束命令的执行

  • 在同一行执行多个命令用;隔开

  • 一个命令可以在多行显示用\连接

获取命令的帮助信息

内部命令:

  • help command

  • man bash

外部命令:

  • command -h

  • command --help

  • man coomand

  • 官方文档

[root@localhost ~]#python --help
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
[] 可选项
<> 表示变化的数据
... 表示列表
a|b|c 或者
-abc 表示-a -b -c
{} 表示分组

man

 1   Executable programs or shell commands  #用户命令
2 System calls (functions provided by the kernel) # 系统调用
3 Library calls (functions within program libraries) # 库的调用
4 Special files (usually found in /dev) #设备文件与特殊文件
5 File formats and conventions eg /etc/passwd # 配置文件格式
6 Games #游戏
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) # 杂项
8 System administration commands (usually only for root) # 管理类的命令
9 Kernel routines [Non standard] # 内核的API
退出q
翻屏 空格
翻行 回车
man 章节 passwd

bash 快捷键

  • ctrl+l 清屏 相当于clear

  • ctrl+o 执行当前的命令,并显示当前的命令

  • ctrl+s 锁屏

  • ctrl+q 解锁

  • ctrl+c 终止命令

  • ctrl+z 挂起命令

  • ctrl+a 光标移动到行首,相当于Home

  • ctrl+e 光标移动到行位,相当于End

  • ctrl+xx 在开头和当前光标所在位置跳转

  • ctrl+k 删除光标后的文字

  • ctrl+u 删除光标前的文字

  • alt+r 删除整行

tab 键

  • 命令补全

    • 内部命令

    • 外部命令:根据环境变量定义的路径,从前往后依次查找,自动匹配第一个查找到的内容

    • 如果用户给的命令只有唯一一个匹配,则直接补全

    • 如果有多个匹配,则需要在按tab键将所有匹配到的结果展示出来

  • 目录补全

    • 把用户给定的字符作为文件的开头,如果有唯一一个匹配则直接补全

    • 如果有多个匹配,则需要再次按tab键把所有的匹配到的结果展示出来

引号

[root@localhost ~]#name=alexdsb
[root@localhost ~]#echo "$name"
alexdsb
[root@localhost ~]#echo '$name'
$name
[root@localhost ~]#echo "wo shi `tty`"
wo shi /dev/pts/2
[root@localhost ~]#tty
/dev/pts/2
[root@localhost ~]#echo "wo shi $(tty)"
wo shi /dev/pts/2

命令历史

  • 可以使用上下箭头来查找之前执行过的命令

  • 存放文件是~/.bash_history

  • 执行的命令是history

  • 执行上一条命令

    • 上箭头

    • !!

    • !-1

    • ctrl+p 回车

  • 调用上一条命令的最后一个值 esc .

  • !# 指定第多少条命令

  • !-# 指定倒数第#条命令

  • !string 用来最近一次匹配到的命令(从下往上)

  • ctrl+r 搜索命令

  • ctrl+g 取消搜索

  • # 显示最后#条命令

命令展开

touch file{1..20}
seq 0 2 10
echo file{1..20..2}

echo 回显

echo -e 'dadasda\ndasdasd'
echo -e '\a' #播放声音,提示

查看用户登录信息

[root@localhost ~]#whoami # 显示当前的登录用户
root
[root@localhost ~]#who am i #显示当前登录用户的详细信息
root pts/2 2019-08-22 15:54 (192.168.21.1)
[root@localhost ~]#w 显示所有的用户并显示执行的命令
16:27:54 up 5:19, 9 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 11:37 4:48m 0.02s 0.02s -bash
wu tty3 11:39 4:48m 0.02s 0.02s -bash
root :0 :0 11:30 ?xdm? 1:28 0.36s /usr/libexec/gnome-session-binary --session gnome-classi
root pts/0 :0 11:35 4:43m 0.03s 0.03s bash
root pts/1 192.168.21.1 12:11 4:03m 0.02s 0.02s -bash
root pts/2 192.168.21.1 15:54 2.00s 0.18s 0.03s w
wu pts/3 192.168.21.1 12:27 2:26 0.05s 0.05s -bash

date

[root@localhost ~]#date  显示当前的时间
Thu Aug 22 16:30:06 CST 2019
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@localhost ~]#date 010923102018 #修改时间
Tue Jan 9 23:10:00 CST 2018
[root@localhost ~]#date
Tue Jan 9 23:10:18 CST 2018
[root@localhost ~]#ntpdate time.windows.com #同步网络服务器时间
unix元年 1970-01-01
[root@localhost ~]#date
Thu Aug 22 16:35:44 CST 2019
[root@localhost ~]#date
Thu Aug 22 16:35:47 CST 2019
[root@localhost ~]#date
Thu Aug 22 16:35:48 CST 2019
[root@localhost ~]#date +%a
Thu
[root@localhost ~]#date +%A
Thursday
[root@localhost ~]#date +%F
2019-08-22
[root@localhost ~]#date +%H
16
[root@localhost ~]#date +%I
04
[root@localhost ~]#date +%m
08
[root@localhost ~]#date +%d
22
[root@localhost ~]#date +%M
38
[root@localhost ~]#date +%h
Aug
[root@localhost ~]#date +%c
Thu 22 Aug 2019 04:38:42 PM CST
[root@localhost ~]#date +%T
16:39:01
[root@localhost ~]#date +%y
19
[root@localhost ~]#date +%Y
2019
[root@localhost ~]#date +%Y/m/%d
2019/m/22
[root@localhost ~]#date +%Y/%m/%d
2019/08/22
[root@localhost ~]#date +%s
1566463197
[root@localhost ~]#date +%W
33

显示时区

[root@localhost ~]#timedatectl
Local time: Thu 2019-08-22 16:42:43 CST
Universal time: Thu 2019-08-22 08:42:43 UTC
RTC time: Thu 2019-08-22 08:42:43
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@localhost ~]#timedatectl set-timezone Asia/Tokyo

日历

cal

cal -y 一年的日历

cal # 显示某一年的日历

关机重启

  • shutdown 默认1分钟之后关机

    • shutdown -c 取消关机

  • shutdow -r 重启

  • TIME

    • now 立即

    • +n n分钟之后

    • hh:mm 指定时间

  • 关机命令

    • poweroff

    • halt

    • init 0

  • 重启

    • reboot

      • -f 强制

      • -p 关机

    • init 6

linux介绍、安装、shell的更多相关文章

  1. linux上安装shell编辑器与linux运维面试题

    分两个部分 一.安装B-shell解释器 安装cygwin  Eclipse要找到安装的bin路径 https://cygwin.com 二.安装编辑器shellEd 下载可以得到一个:net.sou ...

  2. Linux python3安装/shell脚本/if/循环/函数

    python3安装 安装过程 安装包: wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgztar -xvf Python-3.7 ...

  3. 【Linux】Linux介绍和安装 - 测试题

    第一部分测试题 Linux介绍和安装 测试题 做点练习题,巩固一下咯~ ~ _ 10 个选择题. 1.让我们选择开机时进哪个操作系统的软件叫什么? A. booter B. bootloader C. ...

  4. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  5. linux基础之Shell Script入门介绍

    本文介绍下,学习shell script编程的入门知识,通过几个入门实例,带领大家走进shell script的神圣殿堂,呵呵,有需要的朋友参考下. 本文转自:http://www.jbxue.com ...

  6. Linux编程环境介绍(2) -- shell(Bash) 介绍

    1. 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe. 2. bash (Bourne Aga ...

  7. Linux自动安装JDK的shell脚本

    Linux自动安装JDK的shell脚本 A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在 ...

  8. Linux 下安装 resync 介绍

    Linux 下安装 resync 介绍 这是官网,找到对应版本的下载地址. 这里提供Linux_X64的安装包 wget '' https://download-cdn.resilio.com/sta ...

  9. Linux介绍以及VMware和Centos的安装

    一. Linux介绍 1 Linux诞生的故事 Unix篇: 为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,所以在1964年, 由AT&A公司的贝尔实验室(Bell). ...

  10. 在linux上安装elasticsearch简称ES 简单介绍安装步骤

    1.简介 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 ...

随机推荐

  1. .NET Core开发实战(第19课:日志作用域:解决不同请求之间的日志干扰)--学习笔记

    19 | 日志作用域:解决不同请求之间的日志干扰 开始之前先看一下上一节的代码 // 配置的框架 var configBuilder = new ConfigurationBuilder(); con ...

  2. MaxCompute(ODPS)和Hive的区别

    Hive概述 架构于Hadoop之上,可以将结构化的HDFS文件映射成一张表,并提供了类似于SQL语法的HQL查询功能. 核心本质:将HQL语句转换成MapReduce任务. Hive的优缺点 优点 ...

  3. Power BI 9 DAY

    图形决策树

  4. typescript 实现enum枚举值定义为对象

    壹 ❀ 引 最近因为有一些闲散时间,所以一直在做将Class组件重构为typescript + hooks组件的工作,结果今天就遇到一个有趣的问题.我们知道react Class组件一般都会定义Com ...

  5. NC17877 整数序列

    题目链接 题目 题目描述 给出一个长度为n的整数序列 \(a_1,a_2,...,a_n\) ,进行 \(m\) 次操作,操作分为两类. 操作1:给出 \(l,r,v\) ,将 \(a_l,a_{l+ ...

  6. NC50505 二叉苹果树

    题目链接 题目 题目描述 有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点.这棵树共N个节点,标号1至N,树根编号一定为1. 我们用一根树枝两端连接的节点编号描述一根树枝的位置 ...

  7. Linux下csv转Excel xlsx文件保持身份证号后三位不被省略

    在Win下, 可以用Excel 或 WPS Spreadsheet里面的Data->Import, 将csv内容正确导入. 但是在Linux下, WPS的Spreadsheet不提供Data-& ...

  8. Spring Boot图书管理系统项目实战-8.续借图书

    导航: pre:  7.借阅图书 next:9.归还图书 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 bookReBorr ...

  9. golang获取windows版本和详细信息

    场景: 将木马丢到感染机运行后回连时希望返回感染机的操作系统信息.golang 可以通过runtime.OS获取到操作系统类型,但是无法获取详细的版本信息,如win7 win10等, 解决方案; 下面 ...

  10. mysql日期范围查找(两个日期之间的记录)

    转自:https://blog.csdn.net/lzxlfly/article/details/97577575?utm_medium=distribute.pc_relevant_t0.none- ...