首页 > 代码库 > Linux入门_1

Linux入门_1

 

Linux入门

目录

  ? Root用户
  ? 终端
  ? 交互式接口(图形化界面和命令行)
  ? 什么是Shell(bash)
  ? 命令提示符
  ? 内部命令和外部命令 enable,hash
  ? 命令别名
  ? 命令格式
  ? Nano(一个简单的编辑器)
  ? 一些命令

Root用户

权限:无限大
  这是一个特殊的管理用户,在Linux系统中,他拥有无限大的权限,大到可以删除系统本身,因此,这个账号是相当危险的,一般使用者只能给他们普通用户账号,只有极个别必须使用root权限的时候,才会赋予普通用户部分root权限,并且用完立即收回root权限。

终端

  对于计算机来说,终端我给分成了两种,一种是输入输出设备,键盘、鼠标、显示器等,我们称它们是终端设备。还有一种是计算机的控制接口,在Linux中,终端是我们能够进行操控其操作系统的界面。包括:
物理终端:
  /dev/console

技术分享当我们切换到单用户模式下的时候,我们就能看到物理终端的提示符

虚拟终端:
  tty(teletypewriters) /dev/tty/N N=1-6
虚拟终端依旧是在物理机上的端口,在Linux中,我们可以使用Ctrl+Alt+【F1-F6】之间进行切换虚拟终端,以方便我们使用。

技术分享

图形界面:
  正如我们所知道的,windows 和IOS 上,开机之后,我们看到的是都是精美的界面,而不是黑乎乎的命令行。同样的,Linux一样也有图像界面,并且,我们可以在图形化界面和命令终端之间进行切换:startx,xwindows切换到图形界面
串行终端:
  现在我们已经用不到串行终端,所以在这里我就不在进行介绍
伪终端:
  pty(pseudo-tty) /dev/pts/N N=number
  就是我们平时用的远程连接方式,才会显示出伪终端,因为它不是真正的终端,只是由于使用需要进行远程控制的模拟终端

  查看使用什么终端
    命令:tty

技术分享

交互式接口

图形化界面

GUI:Graphic User Interface
在Linux中我们使用到的图像化界面有:
  ? GNOME(c,图形库gtk)
  ? KDE(c++,图形库gt)
  ? XFCE(轻量级桌面)

命令行

CLI:Command Line Interface
  正如下图所示的就是我们作为一个Linux工作者平时会使用到的交互式接口。由于桌面环境会开启一个程序,会占用我们的内存和CPU资源,更重要的是很多操作我们无法再桌面换将直接的看到,所以我们几乎都会采用CLI模式的交互式接口。

技术分享

什么是Shell(bash)

Shell 是Linux系统的用户界面, 提供了用户与内核进行交互操作的一种接口。 它接收用户输入的命令并把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter)
shell是一种高级程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一, 目前也是 Linux标准的shell, 与sh兼容

显示当前使用的shell:echo ${SHELL}
显示当前系统使用的所有shell:cat /etc/shells

每次我们在登录机器之后,我们就已经在使用SHELL了,在我们现在使用的CentOS系统中,用的都是bash,以下是bash的优点:
  1. 通过上下方向键来调取过往执行过的Linux命令。
  2. 命令或参数仅需输入前几位就可以用tab键补全。
  3. 强大的批处理脚本。
  4. 实用的环境变量。

技术分享

命令提示符

命令提示符是我们在登录上操作系统时看到的一个提示符:
  命令提示符: prompt

技术分享

[root@localhost ~]#
  # 管理员
  $ 普通用户
显示提示符格式
  [root@localhost ~]#echo $PS1
修改提示符格式
  PS1="[\u@\h \W]\\$ "

  \h 主机名简称
  \w 当前工作目录
  \t 24小时时间格式
  \! 命令历史数
  \u 当前用户
  \H 主机名
  \W 当前工作目录基名
  \T 12小时时间格式
  \# 开机后命令历史数

内部命令和外部命令 enable,hash

  在CentOS中,bash会带有一部分常用命令,这部分命令常驻在内存中,以便于在我们使用时不必在从硬盘中进行查找,这部分常用的命令我们通常称为内置命令,如:
技术分享  但是内建命令并不代表在硬盘文件中不存在,他只是为了方便使用而将部分常用的命令设为内置命令了。所以内建命令在硬盘文件中依然存在。

判断一个命令的类型:
  type COMMAND。
外部命令查看路径:
  which -a |--skip-alias ; whereis

内部命令有启用不启用之分使用enable命令可以对内建命令进行设置

显示所有启用的内部命令:enable
  enable | wc -l 统计启用的内部命令数量
  enable COMMAND 启动一个内部命令
  enable -n COMMAND 禁用一个内部命令

  enable –a 显示所有内建命令(无论是否禁止)
  enable -n 显示所有被禁用的内部命令
  enable -n |wc -l 统计被禁用的内部命令数量
外部命令是如何被使用的呢?我能知道,在系统中会有PATH,即路径,我们使用的所有外部命令都是按照路径从左到右进行查找执行的,但是我们先进行这样的一个操作:

技术分享

现在,我们使用的是一个外部命令PWD,我们使用一次PWD之后,显示如下图所示:

技术分享

我们发现和上面的图片不一样了,这是为什么呢?这是由于当我们使用一次外部命令以后,hash会将我们使用过的命令路径存放在hash表中,以便我们在下次使用的时候提高所搜效率。下面是对hash表的操作:
  hash 显示当前被hash的外部命令、
    -l 显示当前被hash的外部命令,包含别名
    -p /.../.... name 手动增加一个hash缓存
    -d name 删除一个hash
    -r 清空所有的hash
在我们的实际操作中,hash的执行优先级别是高于PATH中的命令的,下面是一个在操作中优先级别的排序:
alias > 内部命令> hash > PATH > command not find

命令别名

显示当前shell进程所有可用的命令别名:alias

技术分享
定义别名NAME, 其相当于执行命令
alias NAME=‘VALUE‘
技术分享在命令行中定义的别名, 仅对当前shell进程有效
如果想永久有效, 要定义在配置文件中
仅对当前用户: ~/.bashrc
对所有用户有效: /etc/bashrc

编辑配置给出的新配置不会立即生效
bash进程重新读取配置文件
  source /path/to/config_file
  . /path/to/config_file
撤消别名: unalias
  unalias [-a] name [name ...]
  -a 取消所有别名

如果别名同原命令同名, 如果要执行原命令, 可使用
  “\COMMAND”
  ‘COMMAND’
  /PATH/COMMAND: 外部命令

技术分享

命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]
  OPTIONS选项: 用于启用或关闭命令的某个或某些功能
  短选项: -c 例如: -l, -h
  长选项: --word 例如: --all, --human-readable
  参数: 命令的作用对象, 比如文件名, 用户名等

注意:
  多个选项以及多参数和命令之间使用空白字符分隔
  取消和结束命令执行: Ctrl+c, Ctrl+d
  多个命令可以用;符号分开
  一个命令可以用\分成多行

Nano(一个简单的编辑器)

  在Linux上有一个简单的编辑器,但是我们只做了解,知道有这么一个编辑器就行了,因为之后我们会学习更加强大的VIM,nano界面如下所示:

技术分享

一些命令和文件

文件:
  /etc/gdm/custom.conf 更改图像化界面的自动化登录
  /etc/isue 显示登录前的信息
  /etc/motd 显示登陆后的信息

命令:
  rz 向内部拷文件
  sz 向外部拷文件
  wall 在本机登录的用户进行广播
  pwd 查看所在目录
  cat 查看文件内容
  file查看文件类型
  which   查看命令路径
  whereis 查看文件或命令的路径

Linux入门_1