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. ES6学习 第四章 字符串的新增方法

    前言 本章介绍字符串对象的新增方法.不常用的方法不做重点笔记. 本章原文链接:字符串的新增方法 includes().startsWith().endsWith() 确定一个字符串是否包含在另一个字符 ...

  2. NC15532 Happy Running

    题目链接 题目 题目描述 Happy Running, an application for runners, is very popular in CHD. In order to lose wei ...

  3. Linux进程的创建与销毁

    Linux操作系统是一种多任务.多用户的操作系统,这意味着它可以同时运行多个进程,每个进程都可以执行不同的任务. 在本文中,我们将介绍如何在Linux系统中创建和销毁进程. 进程的创建 在Linux系 ...

  4. 【Unity3D】UGUI之布局组件

    1 概述 ​ 布局组件主要有:水平布局(HorizontalLayoutGroup).垂直布局(VerticalLayoutGroup).网格布局(GridLayoutGroup),用于约束子控件的布 ...

  5. Windows xp 无法远程连接Windows Server 2008

    -------------------------转载自: Windows XPSP3通过网络级身份验证方式连接Windows Server 2008远程桌面 远程桌面大大方便了大家的日常管理工作,W ...

  6. 使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细介绍(抽象版一)

    目前市面上有两种机房 一种是普通机房 一种是由微模块组成的机房,本文主要介绍普通机房的抽象化体现模式. 抽象机房模式:机房展示过程中,我们需要对机房进行建模,当遇到大量机房需要建模时,这无疑是巨大工作 ...

  7. Spring源码阅读系列--全局目录

    阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证.全系列文章基于 spring 源码 5.x 版本. 写在开始前的话: 阅读spring 源码实 ...

  8. 正则表达式re模块---day18

    1.匹配单个字符 import re lst = re.findall(正则表达式,要匹配的字符串) 返回的是列表,按照正则表达式匹配到的内容都扔到列表中 # ### 1.预定义字符集 # \d 匹配 ...

  9. Android Studio 导入自己编译的 framework jar

    网上的文章大多是 Android Studio 2.x 环境,实行起来,坑比较多. 本文适用于 Android Studio 3.x 及以上,亲测可行. 一.编译生成 framework.jar 包 ...

  10. You can't specify target table for update in FROM clause

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...