# tty 显示目标虚拟终端,设备文件路径 /dev/tty#
GUI 图形程序
CLI: 命令窗口界面
Linux 命令帮助的获取
格式: COMMAD [OPTIONS...]
type 区分内部命令还是shell本身自己的命令
shell 程序搜寻可执行文件的路径定义在PATH 环境变量中
echo $PATH
自左至右查找
history命令:
登陆shell时,会读取.bash_history ,登陆后操作的命令,存在缓存中,用户退出时,会追加到历史文件中;
快捷操作:
!#:调用历史中第N条命令
!string: 调用历史中以string开头的命令
!! :重复运行上一条命令
文件内容搜索
/keyword: 从当前位置向尾部搜索,n:下一个N上一个(搜索方向)
?keyword: 从当前位置向前面搜索,n:下一个N上一个(搜索方向)
时钟分为:硬件时钟和系统时钟
查看硬件时钟 hwclock
查看系统时钟: date
查看日历: cal
查看文件的元数据 stat
系统管理类命令:
关机:
halt,poweroff,shutdown ,init 0
重启:
reboot,shutdown,init 6
跟用户登录相关:
who, whoami,w
Linux 的文件系统
根文件系统(rootfs):
root filesystem
行业标准FHS
/etc, /usr, /var, /root, /home, /dev 一级子目录 ,名称固定
/boot: 引导文件的存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub)都存放于此目录;
/bin: 供所有用户使用的基本命令:不能关联至独立分区,OS 启动即会用到的程序;
/sbin: System binaries 管理类的基本命令:不能独立分区,os启动即会用到的程序;
/lib:基本共享库文件,内核模块文件(/lib/modules);
/lib64: 兼容32位的库放在lib目录,别的都放在lib64,一般是放文件最多的目录
/etc: 配置文件目录 (纯文本文件),
/home/USERNAME: 普通用户主目录
/root :管理员的家目录:
/media: 挂载便携性设备,U盘
/mnt: 挂载临时文件,临时文件系统挂载点;
/dev: 特殊文件和设备文件
b: block device 可随机访问
c: character device 类似数组,顺序访问,线性访问
/opt: 第三方应用程序安装路径
/tmp: 临时文件
/usr: 通常被关联到独立分区的目录.全局共享只读数据 universal shared,read-only data
bin: 保证系统拥有完整功能而提供的应用程序;
sbin: 管理员
lib:
lib64: 为bin或者sbin提供库库文件 ,,他们的配置文件在/etc
include: c程序用到的头文件,描述库文件的调用方式.
share: 结构化独立的数据 ,例如doc,man
src:源码文件
local:第三方应用程序的安装位置
bin,sbin,lib,lib64,etc,share
/var :通常做独立分区,variable data files 存放经常发生变化的数据目录
cache: 应用程序缓存目录
lib : variable state information 存储状态信息
local: 专用于/usr/local 下的应用程序存储可变数据
lock:锁文件
log: 日志目录及文件
opt: 专用于/opt 下的应用程序存储可变数据
run: Data relevant to running processes运行中的进程相关的数据:通常存放进程的pid文件
spool: 应用的缓冲池
tmp: 系统重启过程存储中间产生的临时文件
/proc: Kernel and process information virtual filesystem
/sys: 用于输出当前系统上硬件设备相关信息的虚拟文件系统.
linux上的应用程序的组成部分:
二进制程序: /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件: /lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib,/usr/local/lib64
配置文件: /etc, /etc/DIRECTORY ,/usr/local/etc
帮助文件:/usr/share/man ,/ usr/share/doc, /usr/local/share/man ,/usr/local/share/doc
Linux 下的文件类型:
-(f): 普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p:管道文件
s: 套接字文件:socket;
目录管理类命令:
mkdir: 创建的最后的目录 -p 存在的不会报错,不存在的会被创建 {}创建目录的骚操作
mkdir {x,y}_{a,b}
mkdir /tmp/{bin,sbin,usr/{bin,sbin}}
bash 的基本特性
1. 命令别名(alias)
显示当前shell进程中所有可用的命令别名:
alias Name='VALUE', 定义name执行value
永久配置:
对当前用户有效: ~/.bashrc
对所有用户有效: /etc/bashrc
重新读取,source 配置文件
2.撤销别名 unalias
3,如果命名冲突 \转义
glob(globbing)
bash中用于实现文件名"通配"
通配符: * ? ''[]''
bash的快捷键
Ctrl+l 清屏,相当于clear命令
Ctrl+a 跳转至命令开始处
Ctrl+e 跳转至命令结尾处
Ctrl+u 删除命令首至光标所处的位置的内容
Ctrl+k 删除贯标所在位置到尾部的内容
bash 的I/O重定向及管道
程序: 指令+数据
读入数据: Input
输出数据: Output
打开的文件都有有一个fd: file descriptor 文件描述符
标准输入:默认是键盘keyboard 用0 表示
标准输出: monitor fd=1
标准错误输出: monitor,跟标准输出无关,用2表示
I/O 重定向: 改变输入输出的位置
输出重定向: COMMAND > new_pos 或者 commad >> new_pos
set -C 禁止内容覆盖 set +C 打开
>: 覆盖重定向,目标文件中的原有内容会被覆盖 >| 强制覆盖
>>: 追加重定向: 新内容会追加到目标文件尾部:
错误流 2> 仅仅能定向覆盖错误输出流
错误流 2>> 追加
都 兼顾的写法: 标准输出和错误输出各自定向不同的位置:
COMMAND > /path/to/file.out 2> /path/to/error.out
合同标准 输出和错误输出为同一个数据流激进型输出
&> 覆盖 echo "$path" &> /tmp/path.out
&>> 追加
COMMAND > /path/to/file.out 2> &1
输入重定向: <
tr 命令
tr 'a-z' 'A-Z' < file
<< 此处生成文档
cat >> /tmp/test.out << EOF
管道:
COMAND1 |command2 | command3 |...
Note: 最后一个命令是在 当前shell进程的子shell进程中执行
文件处理工具: wc,cut,sort,uniq
wc命令: word count
例如: ifconfig | wc -l
cut命令:
用户和组管理
资源分配:
Authentication: 认证 例如,指纹登陆,账号密码,虹膜刷门禁
Authorization: 授权
Accouting: 审计
Linux 用户: Username/UID
管理员:root 管理员的Id号为0
普通用户: id 1-65535
1,系统用户 1-499
2.登陆用户/普通用户 500+
Linux 组: GroupName /Gid
管理员组 root ,0
普通组:
系统组 1-499
普通组 500+
Linux安全上下文:
运行中的程序: 进程(process)
Linux组的类别:
用户的基本组(主组):
组名同用户名,且仅包含一个用户: 则为私有组
用户的附加组(额外组):
Linux 用户和组相关的配置文件
/etc/passwd 保存用户及其属性信息(名称,Uid,基本组Id)
/etc/group 组及其属性信息:
/etc/shadow 用户密码及其相关属性
/etc/gshadow: 组密码及其相关属性
/etc/passwd
yaoding:x:500:500:yaoding:/home/yaoding:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码(x站位符):用户id:组id:GECOS描述信息:主目录:默认shell
/etc/group
yaoding:x:500:
group_name:passwd:GID:user_list
组名:组密码:id号:当前组为附加组的用户列表(分隔符为逗号)
/etc/shadow
用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:密码的警告时间段:密码禁用期():账号的过期日期:保留字段
加密机制:
单向加密:取特征码: md5sum,sha1sum
密码的复杂性策略:
1.数组,大写字母,小写字母,特殊字符至少三种
用户和组相关的管理命令:
用户创建: useradd
useradd user1
[root@yaoding ~]# tail -1 /etc/shadow
user1:!!:17913:0:99999:7:::
[root@yaoding ~]# clear
[root@yaoding ~]# tail -1 /etc/passwd
user1:x:503:503::/home/user1:/bin/bash
[root@yaoding ~]# tail -1 /etc/group
user1:x:503:
[root@yaoding ~]# tail -1 /etc/shadow
user1:!!:17913:0:99999:7:::
!!表示禁止登陆
useradd [OPTIONS] Login
-u UID
-g 组id或者名称
-c 用户的注释信息
-d 家目录,家目录信息里面的内容都是etc/skel文件内容的copy
-s 指明登陆的shell
-G 指明用户的附加组信息,组和组之间用逗号分开group1,group2