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. 深入浅出 Application Insights--学习笔记

    摘要 介绍如何将 Application Insights 用于生产上实践,并透过它发现/诊断问题.同时也会介绍如何将 Application Insighs 与其他体系相集成实现 Devops(与发 ...

  2. Markdown:简洁高效的文本标记语言

    引言 在当今信息爆炸的时代,我们需要一种简洁.高效的文本标记语言来排版和发布内容.Markdown应运而生,它是一种轻量级的文本标记语言,以其简单易学.易读易写的特点,成为了广大写作者的首选工具.本文 ...

  3. wmctf的题解&blindless&exit_hook

    0x00 好久不见 2023.8.25 夜里 wmctf2023也是一个收获很大的比赛.只做了一个blindless,但是体会到了无泄露做出题来的奥妙.踩过的坑(学到的东西)包括但不限于 调试要用do ...

  4. NC20189 [JSOI2011]分特产

    题目链接 题目 题目描述 JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法? 当然,JYY 不 ...

  5. Python Split 函数用法

    一.split函数简介Python中split()函数,具体作用如下: 拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list):二.语法split() 方法语法: str.s ...

  6. spring boot中使用定时任务

    1.在主类上添加EnableScheduling注解 package com.laoxu.gamedog; import org.springframework.boot.SpringApplicat ...

  7. Rtmp 开发学习

    参考文章:视频传输协议详解(RTMP.RTSP.HLS) RTMP--Real Time Messaging Protocol(实时消息传输协议) RTMP 是由 Adobe 公司提出的,在互联网 T ...

  8. http 与 tcp 的一些学习

    HTTP 是一个基于 TCP/IP 通信协议来传递数据的协议,传输的数据类型为 HTML 文件,.图片文件, 查询结果等. HTTP 协议一般用于 B/S 架构().浏览器作为 HTTP 客户端通过 ...

  9. 【架构师视角系列】QConfig配置中心系列之Client端(二)

    目录 声明 配置中心系列文章 一.架构 一.客户端架 1.Server 职责 (1)配置管理 (2)配置发布 (3)配置读取 2.Client 职责 (1)配置拉取 (2)配置注入 (3)配置变更监听 ...

  10. Java链接Mysql数据库整理,尽管很简单,但还是分享出来,希望对那些初级朋友有所帮助!!!

    Java MySQL 连接 Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库. Java 连接 MySQL 需要驱动包,最新版下载地址为: ...