第一周、Linux历史及发行版本

Linux发行版

1991年Torvalds在GPL框架下发布类Unix的内核,可以运行Unix软件及GNU软件,由于可以免费使用,在网络上迅速的流行开来。完整的Linux操作系统由Linux内核和GNU工具组成,Linux是一款完整的类Unix操作系统。

Linux发行版都是在Linux内核基础上进行二次编译后发布的版本

主要发行版 代表操作系统 不同点
Slackware SUSE 商业版 ,小众专业服务器系统
Debian Ubuntu Ubuntu更新较快,GUI优异,易于使用
Redhat RHEL 商业版,更新较慢,注意稳定,
CentOS RHEL社区版,企业主要使用
Fedora Fedora相当于RHEL的测试版,6个月更新
Android 安卓手机 kernel+busybox(工具集)+Java虚拟机
LFS 自制系统 根据LFS文档自制Linux操作系统

安装Centos7.6

centos配置

使用VMware Workstation Pro 15软件安装系统,VMare软安装及创建Centos7.6虚拟机的过程不再描述,centos系统配置如下:

名称 大小 备注
内存 1G
硬盘 200G
/ 100G mount /sda1
/boot 1G mount /sda2
swap 2G mount /sda3
/data 500G mount /sda5

安装过程

1、点击开启此虚拟机,出现如下画面,点击Install CentOS 7 进入安装程序。
图1
2、本系统默认使用English进行安装,以下界面默认选择English ,点击Continue 继续安装
图2
3、进入如下界面,依次点击相关设置
在这里插入图片描述
3.1、点击DATE & TIME ,设置Region为Asia , City 为Shanghai,点击Done确认
在这里插入图片描述
3.2、点击SOFTWARE SELECTION ,选择GNOME Desktop
在这里插入图片描述
3.3、 点击INSTALLATION DESTINATION ,进入后如下图,选择I will configure partitioning ,确认Done 后进入分区设置在这里插入图片描述
3.4点击+ ,选择Standard Partition
在这里插入图片描述
3.5挂载点 Mount Point选择/Desired Capacity 输入大小100G
在这里插入图片描述
3.6挂载点 Mount Point选择/bootDesired Capacity 输入大小1G
在这里插入图片描述
3.7挂载点 Mount Point选择swapDesired Capacity 输入大小2G
在这里插入图片描述
3.8挂载点 Mount Point输入/dataDesired Capacity 输入大小50G
在这里插入图片描述
3.9设置完成后如下图,选择Done确认
在这里插入图片描述
3.10选择Accept Change ,将分区写入磁盘
在这里插入图片描述
4、点击KDUMP,不选中Enable kdump ,点击Done
在这里插入图片描述
5、点击NETWORK & HOSTNAME , hostname处修改为Centos7.localdomain,Ethernet 点击为ON
在这里插入图片描述
6、其余设置保持默认设置,点击Begin Installation 进行安装在这里插入图片描述
7、安装过程中点击ROOT PASSWORD 设置root密码,点击USER CREATION 新增用户wang及密码,安装完成后点击Reboot 重启系统
在这里插入图片描述
8、重启系统后进入界面如图,点击LICENSE INFORMATION
在这里插入图片描述
8.1、进入后选中I accept the license agreement,点击Done,返回后点击 FINISH CONFIGURATION 完成系统安装

history命令

系统会保存用户输入的历史命令,保存在~/.bash_history文件中
登录shell时,系统会自动读取~/.bash_history中的命令
登录shell后新执行的命令只会记录在缓存中,用户退出时系统会自动追加至~/.bash_history中
在shell中输入history可以查看历史命令,默认为编号+命令

[root@localhost ~]#history 
    1  cd /etc/sysconfig/network-scripts/
    2  ls
    3  ifconfig
    4  vim ifcfg-ens34
    5  systemctl restart network
    6  ifconfig
    7  init 0
    8  cd /etc/sysconfig/network-scripts/

history的常用参数

参数 涵义 举例
-c 清空历史命令 history -c
-d 清除指定的历史命令 history -d num/comd
n 显示最近的n条 history 10

调用history方法

命令 涵义
重复上一条命令
!! 重复上一条命令
!-1 重复上一条命令
Ctrl+p 重复上一条命令
!:0 执行前一条命令(去除参数)
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令

history环境变量

环境变量 涵义 默认
HISTSIZE 命令历史记录的条数 1000
HISTFILESIZE 命令历史文件记录历史的条数 1000
HISTCONTROL ignoredups 忽略重复的命令
HISTTIMEFORMAT=“%F %T “ 显示时间
HISTFILE 历史命令存放文件 ~/.bash_history
HISTCMD 当前历史命令条数
[root@localhost ~]#echo $HISTCMD 
539
[root@localhost ~]#echo $HISTCONTROL 
ignoredups
[root@localhost ~]#echo $HISTFILE
/root/.bash_history
[root@localhost ~]#echo $HISTFILESIZE 
1000
[root@localhost ~]#echo $HISTSIZE 
1000

修改history环境变量,将HISTTIMEFORMAT=“%F %T “写入在/etc/profile 或 ~/.bash_profile以.sh结尾的文件中,执行history时可以看见执行时间

[root@localhost ~]#nano /etc/profile.d/env.sh
[root@localhost ~]#cat /etc/profile.d/env.sh 
HISTTIMEFORMAT='%F %T ' 
[root@localhost ~]#.  /etc/profile.d/env.sh
[root@localhost ~]#history 10
  504  2020-04-14 21:18:44 ln -s ../data/mysql /etc/myql.lin
  505  2020-04-14 21:18:53 ll -i /etc/myql.lin 
  506  2020-04-14 21:19:13 rm mysql.lin
  507  2020-04-14 21:19:19 rm mysql.link 
  508  2020-04-14 21:19:24 rm myql.lin 
  509  2020-04-14 22:16:08 init 0
  510  2020-04-15 19:43:58 history
  511  2020-04-15 19:44:22 cat /etc/profile.d/env.sh 
  512  2020-04-15 19:45:34 history -10
  513  2020-04-15 19:45:40 history 10
[root@localhost ~]#echo $HISTTIMEFORMAT 
%F %T

Linux哲学思想

一切都是一个文件(包括硬件)
小型,单一用途的程序
链接程序,共同完成复杂的任务
避免令人困惑的用户界面
配置数据存储在文本中
完成比完善更重要

1、一切都是一个文件:是 Unix/Linux 的基本哲学之一。不仅普通的文件,硬件在 Unix/Linux 中也是以文件的形式存在;通过修改文件进行配置
2、小型,单一用途的程序:程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行
3、连接程序,共同完成复杂功能:复杂的任务可以通过连接多个简单的程序实现复杂的功能。对于复杂的功能linux通过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,复杂的程序也必然是高效性的
4、避免令人困惑的用户界面:Linux一般使用CLI界面进行配置系统,Linux底层运行的是内核,其他所有应用都跑在内核上,包括图形桌面(图形界面也会占用大量系统资源),win系统桌面死机就只有重启系统,Linux桌面系统死机可以切换到CLI界面进行处理,一切都是简洁明了为基础为了电脑的性能。
5、配置数据存储在文本中:linux所有的配置都存放在系统配置文件当中,无论什么配置修改都只需修改其配置文件即可。
6、 完成比完善更重要:先完成任务再想办法进行优化

基本命令

echo
echo
功能:显示字符
语法:echo [-neE][字符串]
说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号,可以打印出变量值
参数 涵义
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能(识别颜色)
[root@localhost ~]#echo -e "my hostname is \e[1;34m`hostname`\e[\0m"
my hostname is localhost.localdomain
[root@localhost ~]#echo  "my hostname is \e[1;34m`hostname`\e[\0m"
my hostname is \e[1;34mlocalhost.localdomain\e[\0m
[root@localhost ~]#echo `hostname`
localhost.localdomain
[root@localhost ~]#echo -n `hostname`
localhost.localdomain[root@localhost ~]#
[root@localhost ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
screen
创建一个会话,让使用该系统的用户可以其加入该会话
命令 涵义
screen –S [SESSION] 创建新screen会话
screen –x [SESSION] 加入screen会话
exit 退出并关闭screen会话
Ctrl+a,d 剥离当前screen会话
screen -ls 显示所有已经打开的screen会话
screen -r [SESSION] 恢复某screen会话
[root@localhost ~]#screen -S help
[root@localhost ~]#screen -ls
There is a screen on:
	3539.help	(Attached)
1 Socket in /var/run/screen/S-root.
[root@localhost ~]#screen -x help
[detached from 3539.help]  Ctrl+a,d 剥离当前会话,screen -x help重新加入
date
显示和设置系统时间
Usage: date [OPTION]... [+FORMAT]
or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]  设置时间

命令参数

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; 
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号; 
-u:显示GMT; 
--help:在线帮助; 
--version:显示版本信息。

日期格式字符串列表

%H 小时(以00-23来表示)。 
%I 小时(以01-12来表示)。 
%K 小时(以0-23来表示)。 
%l 小时(以0-12来表示)。 
%M 分钟(以00-59来表示)。 
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 
%T 时间(含时分秒,小时以24小时制来表示)。 
%b 月份英文名的缩写。 
%B 月份的完整英文名称。 
%d 日期(以01-31来表示)。 
%D 日期(含年月日)。
%F 显示YY-MM-DD 。 
%j 该年中的第几天。 
%m 月份(以01-12来表示)。 
%W 一年的第几个星期(00..53,星期一为第一天)
%X  相当于%HH%MM%SS。 
%y 年份(以00-99来表示)。 
%Y 年份(以四位数来表示)。 
MM 月份(必要) 
DD 日期(必要) 
hh 小时(必要) 
mm 分钟(必要)
ss 秒(选择性)
[root@localhost ~]#date
2020-04-15 21:09:22
[root@localhost ~]#date -s "20210415"
2021-04-15 00:00:00
[root@localhost ~]#date -d "2 days"
2021-04-17 00:02:55
[root@localhost ~]#date -d "-2 days"
2021-04-13 00:02:59
clock/hwclock
显示硬件时间
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
[root@localhost ~]#clock
Wed 15 Apr 2020 08:41:54 PM EDT  -0.585530 seconds
[root@localhost ~]#date 041610302021.00
Fri Apr 16 10:30:00 EDT 2021
[root@localhost ~]#date
Fri Apr 16 10:30:15 EDT 2021
[root@localhost ~]#clock -s
[root@localhost ~]#date
Wed Apr 15 20:42:53 EDT 2020
[root@localhost ~]#date +'%F %T'
2020-04-15 20:43:13
ifconfig

查看系统网络信息

[root@localhost ~]#ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.13  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 240e:330:35b7:6800:d2fd:f442:f258:9263  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::ba4f:7148:1a7c:3ba  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4e:42:bf  txqueuelen 1000  (Ethernet)
        RX packets 182  bytes 18044 (17.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 216  bytes 20626 (20.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
export

用于设置或显示环境变量

[root@localhost ~]#export
declare -x DISPLAY="localhost:10.0"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
eclare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"

定义环境变量

[root@localhost ~]#export NUM=7
[root@localhost ~]#echo $NUM
7
[root@localhost ~]#bash
[root@localhost ~]#echo $NUM
7
关机命令
关机:halt, poweroff
重启:reboot
       -f: 强制,不调用shutdown
       -p: 切断电源
shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
             -r: reboot
             -h: halt
             -c:cancel
             TIME:无指定,默认相当于+1(CentOS7)
                         now: 立刻,相当于+0
                         +m: 相对时间表示法,几分钟之后;例如 +3
                         hh:mm: 绝对时间表示,指明具体时间
[root@localhost ~]#shutdown -r +3
Shutdown scheduled for Wed 2020-04-15 21:09:34 EDT, use 'shutdown -c' to cancel.
[root@localhost ~]#
Broadcast message from [email protected] (Wed 2020-04-15 21:06:34 EDT):

The system is going down for reboot at Wed 2020-04-15 21:09:34 EDT!


[root@localhost ~]#shutdown -c

Broadcast message from [email protected] (Wed 2020-04-15 21:06:46 EDT):

The system shutdown has been cancelled at Wed 2020-04-15 21:07:46 EDT!
init
命令 涵义
init 0 关机
init 6 重启
init 3 切换为CLI
init 5 切换为GUI
init 1 切换为救援模式(单机模式)
[root@localhost ~]#runlevel 
N 5
[root@localhost ~]#init 3
[root@localhost ~]#runlevel 
5 3
[root@localhost ~]#init 1

Broadcast message from [email protected] on pts/0 (Wed 2020-04-15 21:10:51 EDT):

The system is going down to rescue mode NOW!
hash
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
hash 显示hash缓存
hash –l 显示hash缓存,可作为输入使用
hash –d name 清除name缓存
hash –r 清除缓存
enable
查看内部命令
help 内部命令列表
enable cmd 启用内部命令
enable –n cmd 禁用内部命令
enable –n 查看所有禁用的内部命令
[root@localhost /data]#enable 
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
[root@localhost /data]#enable -n break
[root@localhost /data]#enable 
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable builtin
enable caller
enable cd
enable command
enable compgen
[root@localhost /data]#enable -n
enable -n break
alias
定义和显示别名 
alias NAME='VALUE'
[root@localhost /data]#alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost /data]#alias e=hostname
[root@localhost /data]#e
localhost.localdomain

如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
撤消别名:unalias
unalias [-a] name [name ...]
             -a 取消所有别名
如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME            

猜你喜欢

转载自blog.csdn.net/wauzy/article/details/105481729