UNIX 入门

  • [与 UNIX 建立连接](#与 UNIX 建立连接)
  • [简单的 UNIX 命令](#简单的 UNIX 命令)
    • 命令格式
    • [ls 命令](#ls 命令)
    • [who 命令](#who 命令)
      • [虚拟终端 tty](#虚拟终端 tty)
      • [伪终端 pty](#伪终端 pty)
      • [who am i 命令](#who am i 命令)
    • [cal 命令](#cal 命令)
    • [help 命令](#help 命令)
    • [man 命令](#man 命令)
  • [shell 概述](#shell 概述)
    • [shell 命令](#shell 命令)
    • [更换 shell](#更换 shell)
      • [临时更改 shell](#临时更改 shell)
      • [永久更改 shell](#永久更改 shell)
  • 登录过程

与 UNIX 建立连接

启动会话

要启动会话和系统建立连接,

  • 既可以打开本地计算机的电源,通过命令行或者图形界面窗口(GUI)和本地计算机建立连接;
  • 也可以使用 Putty、SSH 远程登陆软件和远程计算机建立远程连接启动会话。

会话(session)指一个终端用户与系统进行通讯的全过程,用户 从输入账号密码进入操作系统退出操作系统 就是一个 会话过程

登录

UNIX 是一个多用户操作系统,用户在使用 UNIX 系统前必须进行登录,只有登录验明身份才能分配资源。

无论是命令行还是 GUI ,登录时需要使用 登录名口令

  • 登录名,又称为用户名,唯一系统用它对用户进行身份确认
  • 口令,即密码,是一个 由字母和数字组成的序列

命令提示符

最简单的命令提示符只有一个字符,用户可以设置提示符。

  • 管理员 ,即 root(根用户),其命令提示符是 #
  • 普通用户 的命令提示符是 $
  • 可以根据提示符,来判断自己的身份。

修改口令

passwd 命令用来 修改或创建口令

  • 修改自己的口令:$ passwd
  • 修改别人的口令(只有 root 可以):$ passwd username,应用场景:root 创建普通用户后为其分配初始口令;某用户忘记密码,让管理员给重置密码。

退出系统

用户完成工作后离开系统的过程称为退出。

退出系统的 3 种方法:

  • $ exit
  • $ logout
  • [Ctrl-d]

退出意味着和系统断开连接,结束会话。

简单的 UNIX 命令

UNIX 系统有几百条命令/系统工具,绝大多数命令格式相同,大部分 UNIX 提供在线帮助 helpman

  • 通过输入命令,告诉系统要做什么事,命令行中回车键 Enter 表示命令行的结束符。

如,date 命令在屏幕上显示当前的日期和时间。

命令格式

  • 每个命令行分为 3 个字段:命令名选项参数

如,狠狠地打他 中, 就是命令名,狠狠地 就是选项, 就是参数。

  • 命令行格式:$ 命令 [-选项] [参数] ,其中,选项和参数用中括号括起来,表示 可选,可有可无。
  • UNIX 区分大小写,只接受小写的命令名
  • 其中,参数通常为 文件名/路径名,用来 指定操作对象

ls 命令

  • $ ls 命令本身,显示当前目录中的文件名
  • $ ls -lls 命令加上选项 -l,表示以长格式列表显示文件详细信息
  • $ ls -als 命令加上选项 -a显示目录中的隐藏文件
  • 组合使用多个选项实现复杂需求- 开头的不同选项间需要有分隔符;也可以只写一个 - ,后面叠加选项字母。
  • $ ls -l -a 或者 $ ls -la把隐含文件以长格式形式显示出来
  • $ ls /boot ,参数 /boot 指出 要显示哪个目录中的文件
  • $ ls -a /boot ,要 显示 /boot 目录下的隐藏文件

以上带连接符 - 的是 System V 流派的命令风格,

BSD 流派的风格不带连接符 - ,如 $ ls l

GNU 流派的连接符是 -- ,如 $ ls --color

who 命令

用户信息:who 命令。

如第一行,表示用户 tuxdesktop-n2ali3f.lan 这台主机登录的。

ttypts/0pts/1:0 又是什么含义呢?

很久很久以前,计算机是很昂贵的,不能让每个人独占一台计算机;

解决方法是每人一套物理终端,连接到计算机上,共享这台计算机的资源;

后来又出现了虚拟终端的方法。

  • 物理终端:直接连接在主机上的显示器、键盘鼠标的统称。
  • 虚拟终端(tty):附加在物理终端之上,用软件方式实现。类 UNIX 系统默认为用户创建几个虚拟终端,实现多用户的同时登录或单用户的多终端登录。

虚拟终端 tty

  • UNIX 中 每个终端都是文件 ,虚拟终端对应的文件是 /dev/tty#1≤#≤6
  • CentOS 默认启用 6 个虚拟终端,tty1 是图形终端,tty2-tty6 是字符终端。
  • 虚拟终端可以相互切换,可以通过 $ Ctrl-Alt-F[1-6],也可以通过 $ chvt n(1≤n≤6)
  • 可以通过 tty 命令来 查看当前的虚拟终端号

伪终端 pty

  • 伪终端是由 远程登录软件终端模拟软件 模拟出的终端。
  • 两种应用场景:图形界面下进行命令操作,远程登录。
  • pts(pseudo-terminal slave)是 pty 的实现方法,伪终端以 pts/n 的形式命名,n 表示该终端是系统中的第几个伪终端。
  • 0:表示是图形用户界面终端。

who am i 命令

who am Iwho am i 显示 终端上登录用户的信息

cal 命令

  • cal 命令 显示指定年份的日历表,默认参数为当前月。
  • 参数中指定年和月,显示指定年月的日历表。如 $ cal 5 2019,显示 2019 年 5 月份的日历表。

help 命令

help 命令提供 内部命令 帮助信息(只有内部命令,无外部命令)。

命令分类:

  • 内部命令:shell 代码的一部分,shell 启动后驻留内存,执行速度快。
  • 外部命令:又称系统工具程序,保存在文件系统中,被调用时才载入内存执行。
  • 查看全部内部命令列表:$ help
  • 查看某一内部命令:$ help command-name,如 $ help alias 查看 alias 命令如何使用。

man 命令

man 联机帮助手册(分章编写),查看所有命令(内外部)的完整说明,说明内容包括:命令语法、各选项的意义、相关命令等。

man 命令用法:$ man command-name,如 $ man ls 查看 ls 命令的相关信息。

man 命令中翻页移行:

  • 翻页:后翻一页 Space;前翻一页 b
  • 移行:后移一行 Enter ;前移一行 k
  • 退出:q

在命令行中输入命令时,删除一行命令[Ctrl-u]中断程序运行[Ctrl-c]

shell 概述

shell 负责用户和 UNIX 系统之间的交互,每次输入一个命令,以 Enter 结束。

shell 命令

  • 一些 UNIX 命令 是 shell 程序的一部分 ,称为 内部命令shell 命令
  • 大多数 UNIX 命令程序 存储在硬盘上由 shell 查找、加载并执行 ,称为 外部命令系统工具程序

可以通过 $ ls /bin/*sh 查看 /bin 目录中的 shell。

在 shell 中,用不同颜色表示不同类型的文件。

其中,绿色表示可执行程序,蓝色表示目录,白色表示文本文件,蓝绿色表示链接文件(相当于 windows 下的快捷方式)。

更换 shell

可以随时更换正在使用的 shell,一种方法是 临时使用 ,另一种是 永久改变

临时更改 shell

  • 方法:当前 shell 中键入新 shell 名
  • 本质:创建当前 shell 子进程,在子进程中运行新 shell

永久更改 shell

可以通过以下两种方式实现:

  • 修改账户配置文件
  • 使用 chsh 命令

登录过程

UNIX 登录过程如下:

  • UNIX 启动时内核被载入内存,其余部分在磁盘上,用户请求时再载入内存;
  • 用户登录时,shell 程序也被载入内存
  • UNIX 完成启动后,init 程序为每一个终端激活一个 getty 程序getty 程序显示 "login: " 让用户登录;

init 进程是 UNIX 系统所有进程的 祖先进程 ,会启动所有系统服务和后台服务。系统启动后,inti 创建虚拟终端为用户登录做准备。

  • 用户输入 username 后,getty 程序 读取这个输入,并启动 login 程序

  • getty 程序把用户输入的字符串(用户标识/登录名)传给 login 程序;

  • login 程序显示 "password: "login 程序 验证用户名和口令,并检查下一步要执行的程序名,如 shell。
  • 然后用户就可以在命令提示符下进行各种操作;
  • 当用户使用完后,使用 $ exit 退出系统;
  • init 进程发现某个终端上的 shell 退出后,就为该终端创建 getty 进程,继续监视终端,为下一次登录做准备。
  • 就这样不断循环进行。
相关推荐
HLC++10 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室11 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy14 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕14 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫15 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生16 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1117 小时前
linux基础IO
linux·运维·服务器
BelongPanda19 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯19 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983419 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器