1.Linux Mint
Mint是Ubuntu的衍生版本。
优点:Mint符合日常使用的Windows的习惯,包括开始菜单、office等常见的windows功能。
缺点:高度集中的linux版本,安装了大量的软件,自然显得臃肿,有时安装不常见的软件,还需要自己源码编译。
2.Ubuntu
ubuntu是历史比较久的发行版之一,基于Debian,更加轻量级;以桌面应用为主;程序开发人员最常用的Linux发行版本。
优点:免费,开源:Ubuntu下的软件绝大部分都是免费开源的。Ubuntu系统操作简单,强大的命令使得系统的操作更加简单。相比于Windows来说,Linux安全性更好。
缺点:Unity桌面的性能很低,并且不是很稳定,常常卡死。内置大量软件,其实很多都没用。
3.Debian
最早的Linux发行版之一,以稳定性著称
debian这个是历史很悠久的系统。几乎60%的linux发行版都由它衍生而来。
优点:精简而稳定,它是数万人共同努力的成果。它的deb包高度集中,依赖性问题出现的很少。自由,没有产商专有的东西和擅自改动系统结构。
缺点:由于它是完全自由的操作系统,因此没有专业的技术支持。另外它的更新周期很长,软件库里很多软件也显得老旧了。
4.RedHat
可能是最著名的Linux版本;能向用户提供一套完整到位的服务支持,特别适合在公共网络环境中使用;有众多的程序包
派生版本
RHEL:Redhat Enterprise Linux,Redhat企业级Linux。
应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。
5.Centos
由RHEL中的免费源代码重新构建而成因而兼容RHEL的格式,拥有非常稳定的程序包
优点:升级不频繁,操作系统稳定,使用.rmp包,以及使用yum进行软件管理,免费,适合作为服务器的系统
可用版本: 32位(i386)及64位(x86_64)版本的安装DVD与可安装live CD(配备GNOME);早期版本(3.x及4.x)仍可用于Alpha、IA64以及IBM Z系列(s390与s390x)处理器架构。
其它基RHEL克隆及基于CentOS的推荐备选方案: Scientific Linux, Springdale Linux, SME Server, Rocks Cluster Distribution, Oracle Enterprise Linux (商用)。
缺点:缺乏最新Linux技术;项目偶尔无法实现提供定期安全更新及稳定发布的承诺。
man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。我们先讲最常用的命令,man命令的使用。在Linux命令行下输入以下命令:
使用方法
[mrlin@localhost ~]$man man
得到如上图所示的界面,该页面称为man page页面,能显示出该命令的语法、描述、参数等信息,是我们查询一个不知道如何使用一个命令最快速的方法,当然,现在网络这么发达,只要上网搜索关键字,一样能获得使用方法,但是这基本的man命令还是要求掌握的啊。
注意到左上角的写着“MAN(1)”,MAN是命令的名称,(1)代表着“一般用户可以使用的命令”,常见的几个数字的意义有这些:
代号 | 代表内容 |
---|---|
1 | 用户在shell环境中可以操作的命令或可执行文件 |
2 | 系统内核可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分为C的函数库(libc) |
4 | 设备文件的说明,通常在/dev下的文件 |
5 | 配置文件或是某些文件的格式 |
6 | 游戏(games) |
7 | 惯例与协议等,例如Linux文件系统、网络协议、ASCII代码等的说明 |
8 | 系统管理员可用的惯例命令 |
9 | 跟内核有关的文件 |
除了左上角的那个特别地方外,还有其他man page的组成部分,大致分成下面几个部分:
代号 | 内容说明 |
---|---|
NAME | 简短的命令、数据名称说明 |
SYNOPSIS | 简短的命令语法(syntax)简介 |
DESCRIPTION | 较为完整的说明,详细的介绍该命令的大致情况 |
OPTIONS | 针对SYNOPSIS部分中,有列举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令 |
FILES | 这个程序或数据所使用或参考或链接到某些文件 |
SEE ALSO | 参考跟这个命令或数据相关的其他说明 |
EXAMPLE | 一些可以参考的范例 |
Authors | 命令的作者 |
Copyright | 命令的版本信息 |
man page页面还支持搜索功能,在man page页面任意时刻输入“/”这个符号,光标会直接定位到最后一行,在“/”后面输入你想要搜索的关键词,输入完后按回车键,在man page 页面则会高亮显示关键词。
man页面有一些常用的快捷键,整理一下如下:
按键 | 进行工作 |
---|---|
空格键 | 向下翻一页 |
[Ctrl+b] | 向文件首部翻屏 |
[Ctrl+d] | 向文件尾部翻半屏 |
[Ctrl+u] | 向文件首部翻半屏 |
[Page Down] | 向下翻一页 |
[PageUp] | 向上翻一页 |
[Home] | 去到第一页 |
[End] | 去到最后一页 |
/string | 向下查找string这个字符串 |
?string | 向上查找string这个字符串 |
n,N | 利用/或?来查找字符串时,可以用n向下查找,可以用N进行反向查找 |
q | 离开man page页面 |
在manpage下还有其他的快捷按键,记住几个常用的就行了。
接下来说几个在man命令下常用的参数
[mrlin@localhost ~]$man -f man
使用-f选项可以获得更多与man相关的信息,用man这个命令举例来说,man命令的说明手册一共有3个,根据不同的数字,可以调用不同的说明手册。
[mrlin@localhost ~]$man 1 man
[mrlin@localhost ~]$man 7 man
man命令还支持通过关键词搜索,只要该关键词内容存在于任意说明文件中,就会被显示出来,使用过的是-k参数。
[mrlin@localhost ~]$man -k man
该命令的解释为,搜索带“man”这个关键词的说明手册全部打印到屏幕上。
还有几个命令与man page相关
[mrlin@localhost ~]$ whatis[命令或是文件] ------相当于man -f
[mrlin@localhost ~]$ apropos[命令或是文件] ------相当于man -k
跟man相关的配置文件
1.man命令存放的说明文件存放在/usr/share/man下
2.man命令的配置文件:/etc/man.config | man_db.conf
我的Linux测试版本是Centos 7.5的版本,通过cat命令可以查看/etc/man_db.conf这个文件
[mrlin@localhost ~]$ cat /etc/man_db.conf
前面我们通过-f选项选项可以看到man命令有3个说明文件,为“1,7,1p”,当我们不输入数字时,默认会进到“1”下的说明文件,这个执行顺序就是在/etc/man_db.conf这个配置文件中定义的。
Linux提供的一种在线求助的方法,利用info命令,info命令与man命令用途差不多,都是用来查询命令的用法或是文件格式。与man命令不同的是,info是将数据拆分成许多段落,每个段落都有自己页面来编写,每个独立的页面称为一个节点(node),举个简单的例子:
[mrlin@localhost ~]$ info info
得到如下图的显示:
尤其要注意第一行所提供的信息,第一行的数据意义为:
1.File:代表这个info page的数据来自info.info文件提供;
2.Node:代表当前的页面属于Top节点,意思是info.info内含有很多信息,而Top仅是该页面其中一个节点;
3.Next:下一个节点名称为Getting Started,可以按N键去到下一个节点;
4.Up:回到上一个节点,按U回到上一个节点;
5.Prev:前一个节点。
可以使用如下的快捷按键在info page 页面移动:
按键 | 进行工作 |
---|---|
空格键 | 向下翻一页 |
[Page Down] | 向下翻一页 |
[PageUp] | 向上翻一页 |
[Tab] | 在节点之间移动,有节点的地方。会显示以*显示 |
[Enter] | 当光标在节点上面时,按下Enter可以进入该节点 |
b | 移动光标到该info界面当中的第一处 |
e | 移动光标到该info界面当中的最后一个节点处 |
n | 前往下一个节点 |
p | 前往上一个节点 |
u | 前上移动一层 |
s(/) | 在info page中进行查找 |
h,? | 显示帮助选项 |
q | 离开info page页面 |
Linux下关于时间的命令,最常用的还是date命令,关于date命令的使用,可以按照上节介绍的先man一下查询使用手册。
[mrlin@localhost ~]$ man date
print or set the system date and time
根据给定格式显示日期或设置系统日期时间。
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
参数 | 描述 |
---|---|
-d | 显示字符串描述的时间 |
-f | 显示DATEFILE文件中的每行时间 |
-r | 显示文件的最后修改时间 |
-R | 以RFC-2822兼容日期格式显示时间 |
-rfc-2822 | 以RFC-2822兼容日期格式显示时间 |
-u | 显示或设定为Coordinated Universal Time时间格式 |
–help | 显示date命令的帮助信息 |
–version | 显示date命令的版本信息 |
参数 | 描述 |
---|---|
%% | 显示字符% |
%a | 星期几的缩写(Sun…Sat) |
%A | 星期几的完整名称(Sunday…Saturday) |
%b | 月份的缩写(Jan…Dec) |
%B | 月份的完整名称(January…December) |
%c | 日期与时间。只输入date指令也会显示同样的结果 |
%C | 世纪(年份除100后去整) [00-99] |
%d | 日期(以01-31来表示) |
%e | 一个月的第几天 ( 1…31) |
%F | 日期,同%Y-%m-%d |
%g | 年份(yy) |
%G | 年份(yyyy) |
%h | 同%b |
%H | 小时(00…23) |
%I | 小时(01…12) |
%j | 一年的第几天(001…366) |
%m | 月份(01…12) |
%M | 分钟(00…59) |
%n | 换行 |
%N | 纳秒(000000000…999999999) |
%p | AM or PM |
%P | am or pm |
%r | 12小时制时间(hh:mm:ss [AP]M) |
%R | 24小时制时间(hh:mm) |
%s | 从00:00:00 1970-01-01 UTC开始的秒数 |
%S | 秒(00…60) |
%t | 制表符 |
%T | 24小时制时间(hh:mm:ss) |
%u | 一周的第几天(1…7); 1 表示星期一 |
%U | 一年的第几周,周日为每周的第一天(00…53) |
%V | 一年的第几周,周一为每周的第一天 (01…53) |
%w | 一周的第几天 (0…6); 0 代表周日 |
%W | 一年的第几周,周一为每周的第一天(00…53) |
%x | 日期(mm/dd/yy) |
%X | 时间(%H:%M:%S) |
%y | 年份(00…99) |
%Y | 年份 (1970…) |
%z | RFC-2822 风格数字格式时区(-0500) |
%Z | 时区(e.g., EDT), 无法确定时区则为空 |
#显示当前系统时间
[mrlin@localhost ~]$ date -d now
Sun Aug 11 00:20:39 CST 2019
#此格式与我们常看到的格式不相同,我们可以加上Format选项来修改显示格式。
[mrlin@localhost ~]$ date -d now +%Y%m%d%H%M%S
20190811002522
[mrlin@localhost ~]$ date +%Y
2019
[mrlin@localhost ~]$ date +%m
08
[mrlin@localhost ~]$ date +%D
08/11/19
[mrlin@localhost ~]$ date '+%Y-%m-%d'
2019-08-11
[root@localhost ~]# date -s "2020-08-11 00:00:00"
Tue Aug 11 00:00:00 CST 2020
正确的关机或重启命令
1.常用的关机命令:shutdown
2.重启、关机:reboot、halt、poweroff
关机或者重启是重大的操作,一般只有root才能执行!!!谨慎操作
除了在主机前以物理终端(tty1-tty6)来登陆系统,可以使用任意身份来关机,若以远程管理工具如(SecureCRT 使用ssh服务来登陆主机),那只有root账号才有权力。使用shutdown可以完成如下工作:
shutdown [OPTIONS…] [TIME] [WALL…]
参数 | 描述 |
---|---|
-c | 取消关机命令,当执行关机命令时,用这个参数取消关机命令 |
-h | 将系统服务停掉后,立即关机 |
-k | 模拟关机(不是真的关机),只是向登录者发送警告信息出去! |
-r | 将系统服务停掉后,立即重启 |
-h | 关闭电源 |
-H | 相当于halt |
-P | 相当于poweroff |
[root@localhost ~]# shutdown -h now
[root@localhost ~]# shutdown -r +5
[root@localhost ~]# shutdown -h 20:30 "System will shutdown at 20:30"
这三个命令可以进行重新启动和关机,与shutdown命令差不多,实现的功能差不多,差别也不多:
[root@localhost ~]# halt #系统停止,不断电关键
[root@localhost ~]# poweroff #系统关机,断电
history命令用于显示指定曾经使用过的命令,读取历史命令文件中的目录到历史缓冲区和将历史命令缓冲区中的目录写入命令文件。
在当前shell中,历史是被保存在内存中,当退出或者登陆shell时,会自动保存或读取。默认配置下,在内存中,历史命令仅能存储1000条历史命令,该数量由环境变量HISTSIZE变量进行控制。
参数 | 描述 |
---|---|
-c | 清空当前历史命令 |
-a | 将历史命令缓冲区中命令写入历史命令文件【/root/.bash_history】 |
-d | offset: 删除历史中指定的第offset个命令 |
-r | 将历史命令文件中的命令读入当前历史命令缓冲区 |
-w | 将当前历史命令缓冲区命令写入历史命令文件中【/root/.bash_history】 |
-n | 读历史文件中未读过的行到历史列表 |
-p | 展开历史参数成多行,但不存在历史列表中 |
-s | 展开历史参数成一行,附加在历史列表后 |
n | 打印最近的n条历史命令 |
history会列出bash保存的所有历史命令,并且给它们编了号,我们可以使用“叹号接编号”的方式运行特定的历史
参数 | 描述 |
---|---|
!+字母 | 调出最近使用一次以此字母开头的命令 |
!n | 执行第N行命令 |
!-n | 执行history历史中倒数第n个命令 |
!! | 表示最近使用的一次操作的命令 |
!+数字 | 表示调出历史记录的几条命令 |
!-数字 | 调出最近的几条命令 |
!STRING | 从最后一个往前,执行最近的一个以STRING开头的命令 |
!?STRING[?] | 从最后一个往前,执行最近的一个包含STRING开头的命令 |
!*:p | 打印输出 !*(上一条命令的所有参数)的内容 |
!$:p | 打印输出 !$ (上一条命令的最后一个参数)的内容 |
!string:p | 仅打印命令历史,而不执行 |
^string | 删除上一条命令中的第一个string |
^string1 ^string2 | 将上一条命令中的第一个string1替换为string2 |
!:gs/string1/string2 | 将上一条命令中所有的string1都替换为 string2 |
Ctrl+p | 显示上一条命令,按回车执行 |
Ctrl + n | 显示当前历史中的下一条命令,但不执行 |
Ctrl + j | 执行当前命令 |
命令 | 说明 |
---|---|
command !^ | 利用上一个命令的第一个参数做cmd的参数 |
command !$ | 利用上一个命令的最后一个参数做cmd的参数 |
command !* | 利用上一个命令的全部参数做cmd的参数 |
command !:n | 利用上一个命令的第n个参数做cmd的参数 |
command !n:^ | 调用第n条命令的第一个参数 |
command !n:$ | 调用第n条命令的最后一个参数 |
command !n:m | 调用第n条命令的第m个参数 |
command !n:* | 调用第n条命令的所有参数 |
command !string:^ | 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数 |
command !string:$ | 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数 |
command !string:n | 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数 |
command !string:* | 从命令历史中搜索以 string 开头的命令,并获取它的所有参数 |
配置文件 | 说明 |
---|---|
~/.bash_history | 历史列表的默认保存位置 |
~/.bash_profile | 当前用户的环境变量的设置位置 |
/etc/profile | 系统环境变量的默认设置位置 |
/etc/profile.d/env.sh | (这个文件自定义): 手动添加的修改环境变量的设置位置 |
环境变量 | 说明 | |
---|---|---|
HISTSIZE | 命令历史记录的条数 | |
HISTFILE | 指定历史文件,默认为~/.bash_history | |
HISTTIMEFORMAT | HISTTIMEFORMAT="%F %T" 显示时间 | |
HISTIGNORE | HISTIGNORE="str1:str2*:… "忽略str1命令,str2开头的历史 | |
HISTCONTROL | ignoredups | 默认,忽略重复的命令,连续且相同为“重复” |
ignorespace | 忽略所有以空白开头的命令 | |
ignoreboth | 相当于ignoredups, ignorespace的组合 | |
erasedups | 删除重复命令 |
#输入history,不带任何参数和格式,将显示历史执行记录
[root@localhost ~]# history
#查看历史执行记录后 5 条
[root@localhost ~]# history 5
# 使用! 执行历史命令。
# ! number 执行第几条命令
[ljs@vm ~]$
[root@localhost ~]# !10 #执行历史记录第 10 条命令
# !! 执行上一条
[root@localhost ~]#
[root@localhost ~]# !! #执行上一条命令
[root@localhost ~]# !h #调用历史命令中最近一条以h打头的命令
以上罗列的参数列表使用并不复杂,记住几个方便使用的就可以提高工作效率,接下来重点讲一下关于配置文件和环境变量的使用
在当前shell中,历史命令只能记录1000条记录,当超过1000条,最早的一条将会被抹掉,这个设置是记录在~/.bash_profile这个文件中,我们可以先使用${HISTSIZE}查看
#查看环境变量设置中,HISTSIZE的值
[root@localhost ~]# echo ${HISTSIZE}
1000
#我们可以直接对这个值进行重新赋值
HISTSIZE=500
不过,这个重新赋值变量的作用域仅能存在于当前的bash shell进程下,退出登录或者重启,这个变量的赋值就会变回原来的值。想要永远保存住这个变量的值,需要修改~/.bash_profile这个配置文件。
#使用vim打开~/.bash_profile配置文件
[root@localhost ~]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
HISTTIMEFORMAT="%F %T " 此为新添加的history环境变量,添加了发生命令操作的时间
export PATH
当然直接修改/etc/profile这个文件中的HISTSIZE值得选项也可以直接打到效果
#查看环境变量设置中,HISTSIZE的值
[root@localhost ~]# vim /etc/profile
HISTSIZE=1000 #修改此处的值,再保存退出,即可永久生效
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
HISTSIZE就先说到这里,注意上面有两个值,export HISTCONTROL=ignoreboth和export HISTCONTROL=ignoredups
按照上面表格总结的那样,ignoredups 表示删除重复命令,设置该选项,意即history命令将忽略重复的命令,连续且相同为“重复”
#修改HISTCONTROL=ignoredups
[root@localhost ~]# export HISTCONTROL=ignoredups
# ignoredups只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups
[root@localhost ~]# export HISTCONTROL=erasedups
#将HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格
[root@localhost ~]# export HISTCONTROL=ignorespace
就先写到这,后续再补充~~~~