Linux系统登录的两种方式


GUI:图形界面 Graphic User Interface


默认在Linux下面有三种可用的图形界面程序可选,分别为

1.gnome(c,图形库gtk)

2.kde(c++,图形库qt)

3.xface(轻量级桌面)

每一种图形界面下面开发的软件并不兼容,因为它们开发时候所用的开发语言也各不相同


启动方式:cli模式下面输入 startx 或者 init 5


CLI:命令行界面 Command Line Interface


Linux的CLI模式下默认的命令解析器是Shell


Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

 

Shell是一种高级程序设计语言


Linux下面有多种可用的Shell语言可选择,包括

1.sh    bourne 

2.csh   c语言版本

3.tcsh  c语言加强版

4.ksh   商业版本,如AIX

5.bash  bourne again shell ,linux默认SH

6.zsh   等等

也可以输入命令 cat /etc/shells 查看系统系统里面的所有shell

可通过输入 echo $SHELL 来查看当前系统的默认shell

其中nologin给系统一些不需要登陆的程序用的


GUI和ClI命令行可以自由切换,不同系统版本之间的不同


通过物理按键切换

ctrl+alt+F1-6 字符, F7 图形界面,centos5

ctrl+alt+F1   图形,F2-F7字符  , centos6 7


可以通过命令输入进行切换

chvt x (x=1-7)


注意,通过startx和init 5来启动的图形界面方式是有所有不同的

startx启动的图行界面,当通过ctrl + F1切换到界面时候,可以看到界面里面有很多命令输入的信息,而再通过按ctrl + F7的时候才会正确显示图形界面,可以判断为这种方式启动的图形界面并不是直接启动图形界面的

init 5启动的图形界面,按ctrl + F1的时候,能正常切换到图形界面,可以判断为这种方式是直接启动图形界面,而不依靠其他程序。

不过在大家学习的过程中,建议大家还是使用CLI命令模式吧,shell用默认的bash即可。

CentOS在安装桌面之后,将图形界面设置为默认模式,给PC内存带来较大压力,所以希望修改系统的默认启动模式为命令号界面,而不启动图形界面。方法如下:


CentOS6的方法

1.以 root用户登录系统;或者 用su切换到超级用户模式;

 2.修改/etc/inittab 文件:

         vim /etc/inittab

    将最后一句:

        id:5:initdefault:

     修改为:

        id:3:initdefault:

     保存退出,重启系统即可。

CentOS7的方法

在CLI下面输入


系统登录界面

Linux登录的用户分为两种

  1. root用户,超级管理员,提示符是# ,如[root@localhost~]#

  2. 普通用户,权限有限制,提示符是$ ,如[w@localhost ~]$


[root@localhost~]这个称为PS1,靠环境变量定义

用户的PS1命令提示符是有格式的,输入 echo $PS1可以查看现在用户的命令提示符格式

例如 \u 表示用户

     \h 表示主机名

     \W 表示当前位置

还有其他参数,暂时就不一一详说


系统登陆欢迎界面


当我们进入系统看见的欢迎登陆界面,如下图


该文件在 /etc/issue 里面,而且CentOS6和CentOS7也有点不一样


这是CentOS 6



这是CentOS 7


这里里面可以看到,文档里面的数据跟我们看到的数据不一致,是因为文档里面的是参数,这些参数又调用了其他地方的参数,所以我们看起来就不一样了


还有的是我们可以cat /etc/redhat-release的文档也同样可以查看到系统的信息


还有注意一点的就是,这个登陆提示信息严禁welcome之类字眼,以免被黑以后打官司对自己不利的事


SHELL的命令类型


SHELL的命令分为两种


内部命令:

由shell自带的,而且通过某命令形式提供

enable命令可以启用或禁用内部命令


外部命令:

在当前系统的某文件系统路径下有对应的可执


系统里面执行的命令是有对应路径的,系统通过变量PATH可以知道外部命令的路径


命令还有命令别名,如下图


别名可以通过alias COMMAND ='COMMAND -参数'之类格式实现


不需要别拧,也可以通过 unalias COMMAND 来删除别名


而且别名的优先级都是最高的


可以通过如\ls、‘ls’、/usr/bin/ls 等方法取消使用已定义的别名


别名的命令都是存储在内存里面,开机自动加载到内存里面


这些命令的优先级为


别名命令>内部命令>缓存命令>外部命令


其他相关命令:

type COMMAND:查看命令的类型

which COMMAND:查看命令文件位置

hash 已经加载到内存的外部命令

whereis COMMAND:查看文件路径及其帮助文件等路径     


命令的区别:


内部命令,系统开机自动加载,不表示为单独文件


外部命令,表示为一个单独文件,可以用ls的命令查看到相应文件


命令的格式

    

COMMAND [OPTIONS...] [ARGUMENTS...]

选项:用于启用或关闭命令的某个或某些功能;

短选项:-c, 例如:-l, -h

长选项:--word,例如:--all, --human-readable

参数:命令的作用对象,比如文件名,用户名等

注意:

1、多选项,以及多参数和命令之间使用空白字符分隔

2、取消和结束命令执行:Ctrl+c,Ctrl+d

3、多个命令可以用;符号分开

4、一个命令可以用\分成多行


一般的写命令的顺序是 命令 +选项 +参数,其他顺序可能会有问题


中断命令的方法,ctrl+c


命令补全


命令+ '\' 表示换行写命令,不过使用的时候注意不要漏了空格之类


可以用:号隔开同时输入多个命令,如 ls:cd:who


命令补全


内部命令:

外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令

用户给定的字符串只有一条惟一对应的命令,直接补全

否则,再次Tab会给出列表

路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名

如果惟一:则直接补全

否则:再次Tab给出列表


centos7系统上面支持长选项的命令补全,6或者以前版本都不可以,这个主要是由于bash版本的问题


帮助文件的使用方法


帮助文件的获取途径

whatis 

command --help

man and info

本地帮助文档/usr/share/doc

官网在线文档

其他网站和搜索


内部命令查找帮助的方法:

#help COMMAND

#man bash


外部命令查找帮助的方法:

(1) # COMMAND --help

# COMMAND -h

(2) 使用手册(manual)

# man COMMAND

(3) 信息页

# info COMMAND

(4) 程序自身的帮助文档

README

INSTALL

ChangeLog

(5) 程序官方文档

官方站点:Documentation

(6) 发行版的官方文档

(7) Google


whatis命令:


whatis帮助文档,要系统安装以后过一段时间才能完全安装,如果一定需要用的话,可使用命令makewhatis命令


whatis = man -f


man命令:

    提供命令帮助的文件

    手册页存放在/usr/share/man

    几乎每个命令都有man的“页面”

    man页面分组为不同的“章节”

    统称为Linux手册

    man [章节] 命令

    man命令的配置文件:/etc/man.config | man_db.conf

    MANPATH /PATH/TO/SOMEWHERE: 指明新手册文件搜索位置

    # man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示


man命令有9个章节,其中重点关注1、4、5、8章节

    1: 用户命令

    4: 设备文件及特殊文件

    5: 配置文件格式

    8: 管理类的命令


bash的快捷键

    Ctrl+l 清屏,相当于clear命令

    Ctrl+c取消命令的执行

    Ctrl-a 会移动到命令行的最前面

    Ctrl-e 会移动到命令行的最后面

    Ctrl-u 会删除到行首

    Ctrl-k 会删除到行尾

    arrow ctrl-b ctrl-f会向左或向右移动一个字符

    Esc-b左移一个单词

    Esc-f右移一个单词


其他中重要命令整理:

date 显示当前系统时间

date MMDDhhmm[cc]YY.ss 

date[+FORMAT]

    %Y:四位年份

    %y:两位年份

    %m:月

    %M:分钟

    %d:日

    %h:英文简写的月

    %H:时

    %S:秒

    %s:现在距离1970年1月1号0点0分(unix元年)的秒数,timestamp(时间戳)

    %D:月/日/年

    %F:年-月-日

    %T:时:分:秒


clock,hwclock

  -s:以硬件时钟为准 --hctosys

  -w:以软件时钟为准 --systohc

Linux有两个时钟

硬件时钟:

软件时钟:开机时读取硬件时钟


cal 显示日历


echo命令:

    -n 不在字符的最后自动换行

    -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:


""中间                只是变量引用

''最傻的强引用,字符窜引用

``最聪明的         命令引用


history命令:查看命令历史

    -d 数字 删除第数字条记录

    -c 清空history列表

    -a:追加当前回话的命令到历史列表中去

    -n:读取所有在回话列表中的 但是不在当前回话列表中


history灵活用法:

!数字:执行history中第数字条的命令

!!:上一条命令

!-数字:表示执行命令列表中的倒数第数字条命令

!$:执行上个命令中的最后一个参数:ESC,.

!string:执行命令列表中的最近一次以string开头的命令


命令历史相关的环境变量

HISTSIZE:历史命令中可以保存的个数

HISTFILE: 历史命令保存的文件

HISTFILESIZE:历史文件中可以保存的命令个数

HISTCONTROL:控制命令历史的生成机制

ignoredups:忽略记录重复的命令,连续的相同命令

ignorespace:以空格开头的命令不会被记录

ignoreboth:同时具有上面两种特性


screen命令:一个远程的同步命令

打开新的screen:

screen –S [SESSION]

加入会话:

screen –x [SESSION]

退出并关闭screen:

exit

剥离当前screen:

Ctrl+a,d

显示所有已经打开的screen:

screen -ls

恢复某screen

screen -r [SESSION]


建议在生产环境中远程备份数据的时候,用screen命令进行,以防止网络抖动时候造成的网络中断