配置文件:

用户配置文件:
/etc/passwd:用户及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/default/useradd 查看用户默认选项
/etc/skel/*默认用户家目录复制模板
/etc/login.defs用户默认信息
组配置文件:
/etc/group:组及其属性信息
/etc/gshadow:组密码及其相关属性

标准I/O和管道|:

程序:指令+数据
读入数据:input
输出数据:output
打开文件会自动生成文字描述符
三种I/O设备 标准输出1> 输出错误2> 标准输入0<
&>输出 错误同时输出
追加信息,不覆盖(比>创建空文件更安全)
单行重定向:一行一行输入
多行重定向:cat <注意:结束符结束需要孤立的一行

权限设置

用户权限修改chmod命令:

文件的意义:
执行文件需要X权限
修改文件需要写W权限
复制文件需要读r权限
文件夹的意义:
对文件夹有写w权限,能在文件夹内创建文件和删除文件
对文件夹有执行权限能够访问文件与进入文件夹
对文件夹有读权限只能看到文件夹文件
*案例:cp f2 dir/f22 需要有对f2文件的读权限,对dir文件夹的写、执行权限.
{chmod -R a+X 递归 X只对文件夹下文件夹与有至少一种执行权限的文件添加执行权限}
数字法:
读r:4;写w:2;执行:x1 (0、4、5、6、7常见权限)
补充:root账户只对执行权限有限制,对读写权限没有任何限制
默认权限:umask(数值越大,权限越小,越安全)
-p 格式改为umask 数值
-S 直接以模式法显示
计算公式:umask+default=777(文件夹)/666(文件)
文件最后计算结果如遇到奇数则:奇数+1,偶数不变

特殊权限:

SUID、SGID、Sticky
独立计算:7xxx、4xxx、2xxx、1xxx
挡在权限位置显示大写的S,则表示对该文件没有执行能力
对文件的意义:
SUID:使执行者以所属者的权限运行该文件(二进制可执行文件)
SGID:使执行者以所属组的权限运行该文件(同上)
Sticky:无意义
对文件夹的意义:
SUID:无意义
SGID:对此目录有写权限的用户在此目录中创建的文件所属组为此目录的属组
Sticky:文件夹内文件只能由所属者删除
更改文件特殊属性(对root用户进行权限限制):
chattr+i 不能更改,删除,改名
chattr+a 只能在文件后面追加内容
lsattr 查看文件特定属性

访问控制列表:ACL

setfacl
-m 修改权限
-x 删除acl权限(ACL属性删不干净)
-b 彻底删除ACL属性
-R 递归
ACL生效顺序:文件所有者-->自定义用户-->自定义组-->其他人
getfacl查看ACL列表:
mask:只要添加了ACL表则mask显示在所属组的权限位,权限限高杆

文本处理工具与编辑器

查看文本工具

cat 、tac(倒过来显示)、rev(行倒过来显示)、less(支持搜索功能)、more[分页显示]head、tail

剪切、合并、统计、排序、合并文本(唯一性)、比较文本工具

cut、paste、wc、sort、diff、uniq

文本三剑客之一与编辑器

grep 文本处理工具(推荐)
VIM 全屏文本编辑器

**正则表达式:REGEXP***

基本正则表达式:BRE
扩展正则表达式:ERE

SHELL脚本编程基础

逻辑处理方式: 顺序执行、循环执行、选择执行
shell编程:过程式、解释执行
基本结构:系统命令、数据存储、表达式、语句
首行shebang机制:(在编程中,需要在行首对该语言进行解释)
#!bin/bash
#!usr/bin/python
#!usr/bin/perl

Linux编程的软件

1.定义PATH变量,自动搜索脚本路径,要使文件搜索路径记得住写入该文件/etc/profile.d/script.sh
2.要执行脚本要给予执行权限
3.颜色代码\e[1;31m .. 语句 .. 结尾\e[0m
4.在脚本完成时,在脚本后面取消变量
执行脚本中如果语法错误会导致脚本停止执行
执行脚本中如果命令错误,他会跳过该命令继续向下执行命令

变量:对应字符串存放的路径

字符:bash支持整型,不支持浮点型
静动态语言、强弱类型语言

变量命名法则:

1.不适用保留字
2.只使用数字、字母及下划线,不宜数字开头
3.见名知义
4.驼峰命名法:大驼峰、小驼峰
{变量名大写、局部变量名小写、函数名小写、英文名字,体现实际作用}

局部变量:

当前shell进程有效,对进程shell无效
""弱引用''强引用
识别变量方式:在变量名前加$符号、$()、${}
set 显示变量和函数
unset 取消变量
该变量无法传递给子进程

环境变量:

该变量可以传递给子进程
env 查看所有环境变量
var=test 普通变量
export=$var 将该变量转换为环境变量
$SHLVL 嵌套深度
$_ 上一个命令的最后一个参数

只读变量:

readonly+变量 将变量设置为只读变量
readonly 显示全部只读变量

位置变量:

$1 对应第一参数
$* 传递所有参数,所有字符串为一个整体
$@ 传递所有参数,所有字符串为独立个体
$# 脚本参数个数
$0 命令本身
set -- 清空所有位置变量

命令:
alias 列出全部别名 unalias cmd 取消该命令别名
用whereis cmd命令找到cmd命令的路径再输入路径命令就能启动原命令
date 显示系统时间 clock 显示硬件时间 cal 显示日历
halt,poweroff关机 reboot重启
screen开启会话功能
history打开命令历史记录表
pwd查看当前目录路径
cd切换目录
ls列出当前目录文件
touch 生成文件
cp 复制
mv 移动
rm 删除
typy 判断内外部命令
echo $PATH 显示外部命令搜索路径
tree显示目录树 mkdir创建目录 rmdir删除空目录
ln创建硬链接
ln -s 创建软链接
tr转换和删除字符
mail邮件命令
useradd、usermod、userdel创建修改和删除用户chage修改用户密码策略passwd设置密码
id查看用户信息
用户切换su 部分切换su - 完全切换
chfn指定个人信息chsh指定SHELL类型finger添加用户描述
groupadd、groupmod、groupdel组的创建修改与删除gpasswd、groupmems -g更改组密码与修改组成员
chown、chgrp修改文件所属者与所属组

案例:

1.cp /etc/fstab /data/f1.txt
当这个指令执行,要在data重建新文件,新建节点记录给节点分配节点编号,指定各种属性(所属者,权限),磁盘找一块空间放入数据指定指针指向它。

2.mv /root/anaconda-ks.cfg /data/
相当于拷贝加删除,先拷贝在再源地址删除文件,然后分配新节点编号,删除原来的节点编号

3.mv /root/anaconda-ks.cfg /root/Desktop/
一个分区移动文件,该文件对应的磁盘的物理位置不发生变化,改变源数据,节点编号、属性不变化

4.在删除文件时有另外一名用户正在应用这个文件会导致文件被删除但是磁盘空间释放不了的现象
\> /boot/bigfile 这个指令先释放空间,是文件大小清零,然后在进行删除操作

自动备份计算机/etc目录下文件

STcolor="\e[1;$[RANDOM%8+30]m"    
STcolor1="\e[1;$[RANDOM%8+30]m"  
ENDcolor="\e[0m"  
echo -e "$STcolor8 backup start ......  
$ENDcolor"  
sleep 5  
cp -av /etc /data/backup/etc.`date +%F`  
echo -e "$STcolor9 backup end ...... $ENDcolor" 
unset STcolor STcolor1 ENDcolor  

自动获取最大磁盘利用率

STcolor="\e[1;$[RANDOM%8+30]m"
ENDcolor="\e[0m"
echo -e "my disk max utilization $STcolor `df|grep sd|tr -s " " "%"|cut -d% -f5|sort -r -n|head -1` $ENDcolor "     
unset STcolor ENDcolor

显示正连接本主机的每个远程主机的IPv4地址和连接数

STcolor="\e[1;$[RANDOM%8+30]m"
ENDcolor="\e[0m"
echo -e "$STcolor `netstat -tan |tr -s " "|cut -d " " -f5|grep -Eo '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'|sort -n -r|uniq -c` $ENDcolor" 
unset STcolor ENDcolor