学习笔记

unset 撤销变量
变量可以不声明
readonly申明只读变量
declare声明变量 -r声明为只读 -x声明为环境变量
只读变量不可撤销
本地变量只在本shell中有效
a= a ? 40 如 果 a 无 值 就 给 40 , e x p o r t 可 以 把 变 量 转 成 环 境 变 量 e x p o r t P A T H = / U S R / L O C A L / A P A C H E / B I N : {a?40}如果a无值就给40, export 可以把变量转成环境变量 export PATH=/USR/LOCAL/APACHE/BIN: a40a40exportexportPATH=/USR/LOCAL/APACHE/BIN:PATH 添加路径
printenv /env查看环境变量
? 用 来 返 回 上 次 命 令 程 序 执 行 状 态 的 返 回 值 ( 红 帽 ) 命 令 替 换 : 用 单 引 号 替 换 或 用 ?用来返回上次命令程序执行状态的返回值(红帽) 命令替换:用单引号替换 或用 ?()替换(红帽)
用配置文件 保存变量 然后开

bash:
全局: /etc/profile , /etc/profile.d/, /etc/bashrc
个人: /.bash_profile,/.bashrc
bash运行方式:
交互式/etc/profile—>/etc/profile.d/
—>/.bash_profile—>/.bashrc—>etc/bashrc(变量设置以后为主)
非交互式~/.bashrc—>/etc/bashrc—>/etc/profile.d/*
profile 1.设定环境变量2.启动之前运行命令文件
bashrc 1.设定本地变量2.设定命令别名
source 文件让机器重新读取配置文件(.+/文件名)
命令别名:eg:alias cls=clear撤销:eg:unalias cls
如果命令和别名相同要使用原名用 /+命令
脚本可编译:bash+脚本名

写脚本要在第一行写:#!/bin/bash(指定解释器)
~/.bash_profile中加shutdown -h now 会使电脑刚登陆就关机
#!/bin/bash
DESTDIR=’/tmp/test’
mkdir DESTDIR

touch DESTDIR /file-date +%f-%h-%s(命令替换要用反引号)
cp -r /etc/profile.d/ /tmp/test/

输入/输出重定向、管道
程序的默认输入设备,叫标准输入 stdin,键盘 0
程序默认输出设备,叫标准输出,stdout,mintor(显示器)1
程序默认错误信息输出设备, 标准错误输出, stderr,mintor 2
输出重定向 eg:
ls/etc>/etc(把命令执行结果放到etc文件)覆盖输出
set -c/+c 关闭/开启输出重定

| 强制输出重定向
命令 >>FLIE ,追加输出
/dev/null 数据黑洞(丢失数据)
/Dev/zero,泡泡机(产生0)
/dev/random /Dev/urandom 生成随机数
输入重定向
命令< file
eg:tr ‘a-z’ ‘A-Z’ </etc
命令<<“EOF”生成文档 (写着遇到EOF 就结束了)
错误输出 :命令 2>FILE(只记录错误的)
2>> 追加的方式实现
COMMAND>FILE 2>FILE2(把执行结果输送到file和file2)
COMMAND>FILE 2>&1(把执行结果都输送到file)
COMMAND>FILE &>FILE(同上)
管道:只传递正确执行结果
eg:echo “the first line.” |tr ‘a-z’ ‘A-Z’
THE FIRST LINE.
echo “the first line.” | tr ‘a-z’ ‘A-Z’ | cut -d’ ’ -f2
FIRST
less 分页显示
查看文件类型
eg:
cd /var/log
file 'ls /var/log ’
sort 排序命令 sort -u(uniq)
uniq 移除重复内容
COMMAND |tee file|命令(先保存在tee后的文件里,再执行命令)
glob :文件名称通配

  • 任意长度的任意字符
    ? 任意单个字符
    [] 指定范围内的字符、
    [^] 指定范围外的字符

grep搜索字符:全局搜索正则表达式(文本过滤工具)
能够实现根据指定模式逐行搜索文件内容,并将匹配到行显示出来。
模式:是由正则表达式字符,其他字符组成的匹配条件
basic RE
extended RE
使用:grep ‘字符’ 搜索路径
基本正则表达式元字符
. :匹配任意单个字符
[] :匹配指定范围内的单个字符
次数匹配(贪婪模式)
: 匹配其前的字符0,1或多次 abc/abc/abbc/ac/abbbc
eg: grep 'a[[:space:]]b’ grep.txt([:space:]是一个集合)
?:其前字符0或一次 ab?c/abc/ac
(m,n): (m,):至少每次 ;(0,n):至多n次 ;(m): m次
锚定符:
<:锚定词首 ;>:锚定词尾(eg:<r…t>\){# grep " <[0-9]{2,3}>" /etc/passwd找两位数}
^:行首锚定; 锚 定 行 尾 ; r o o t [ [ : s p a c e : ] ] ? 锚定行尾;root [[:space:]]? root[[:space:]]?(可以有符号也可以没有)或标点符号
[^]: 指定范围外的单个字符
.
:表示出现任意字符
分组字符:
eg: x*(ab)y/xabababy/xaby/…
前向引用:\1,\2,\3(\1表示与第一个左括号匹配的内容,以此类推)
eg;(l…e).
\1r(注:\1代表引用括号里的)
grep本身选项:
-v:显示不被匹配的行
-i:不区分大小写匹配
-o:只显示匹配到的串
-A 数字:还显是其后的数字行
eg:-A 2(多显示2行)
-B:同-A用法一样 显示其前行
-C:前后都有
-e:
-E:解析成扩展表达式

/etc/passwd
用户名
密码点位符
UID
GID用户的基本组的ID 用户finger信息
用户的家目录
用户默认使用的shell
passwd[]…username
-l 锁定用户
-u 解锁用户
–stdin 设置密码只需输入一次
eg:echo ‘hello’ | passwd --stdin wangshuai >/dev/null

创建用户
useradd,adduser
useradd []… username
-u UID
-g GID,为用户指定一个已经存在的组为其基本组
-G GID,为用户制定一个或多个已经存在的组为其基组
-c “comment”指定注释
-d /path/to/somewhere 指定一个路径且文件夹不存在
-s /path/to/shell(可用shell,一般为etc下的shell)
-r 创建系统用户,1-499(系统用户不能登录)

/etc/group
组名
组密码点位符
组ID
以此组为其额外组用户的用户列表
一般不指定就创建一个同名组名
创建组eg:groupadd my(组名)
/default:里面有一些用户默认信息
文件属组可以改
用户登录过就会在/var/spool/mail
用户密码保存在/etc/shadow
用户名 密码 密码最近一次修改时间 密码最长使用期限 离密码过期还有多少天开始向用户发送警告 用户账号的非活动期限 用户账号的有效期限 保留段
如果禁用密码: !!密码
加密方式:单向加密
定长输出
蝴蝶效应
原文一样,结果一样
不可逆
md5,sha1,加密工具
密码策略:
随机密码
至少包含四类字符中的三种
长度8位以上
定期修改

id 用户名:查看用户账号信息
-u 显示
-g 显示组名
-G
-n
finger 用户名:显示用户信息
who 显示登录信息
w 显示登录信息和干了什么
who am i 显示用户自己信息
修改用户属性:
usermod
chage改时间eg:chage -m2 -M 50 fedore
chfn改注释信息
chsh改默认shell
usermod:
-u
-g
-G(修改组)-a-G(追加)
-n
-l(登录名)
删除用户: userdel[]…username 删除家目录 -r
groupadd
-g GID
-r 创建系统组
groupmod
-g
-n(改组名)
groupdel 组名(删除组)
gpasswd 组名(给组加密码)
newgrp 组名 切换基本组

usermod 修改家目录
usermod -d 路径 用户名

linux用户权限和文件权限深入解析
r w x

      • 000
    • x 001
  • w - 002
  • w x 003
    r - - 004
    r - x 005
    r w - 006
    r w x 007
    如果一个文件权限显示为640,rw-r-----
    文件:属主 属组 其他
    — — —
    更改文件权限:
    1.8进制
    chmod *** /路径/文件
    改目录不修改里面的文件
    -R可以一起修改目录里的文件
    2.只操作一类用户的权限:
    chmod u/g/o/a(前三个都有)=— 文件
    3.只操作某类用户权限
    chmod o/u/g+x/r/w 文件名
    改变文件的属组属主(只有管理员可以)
    chown 目的用户 文件路径
    chgrp 目的属组 文件路径
    chown 目的用户:目的属组 文件路径
    chown :目的属组 文件路径
    使用- R选项
    用户切换:su–>exit(回到管理模式)
    su 用户名(非登录式切换,只切换了用户名和用户身份)
    su - 用户名(登录式切换)
    su -l 用户名(登录式切换)
    su 用户名(前三个都行) -c command(用另外一个用户身份执行命令并送回)

sudo

显示命令
echo“”
-n不在换行
-e转义字符不在生效
“\033[1(字体);5(闪烁);3(3前景色,4背景色) 3(颜色)m 字符\033[0m(结束)”
printf“”(输出不自动换行)

bash算数运算符
±*/
++ –
let sum=2+3 sum=expr 2+3 declare -i sum=2+3此三个表达式等义不会想sum=2+3似的显示2+3
$[表达式]:算术运算表达式
KaTeX parse error: Expected 'EOF', got '&' at position 79: …>scale=6->表达式 &̲&与 ||或 可以使用短路用…a> b ] 命 令 [ [ b]命令[[ b][[a>$b]]关键字

文本编辑器:
行编辑器(sed,stream,editor)
全屏编辑器(nano,emacs,vim,vi)
vi(模式化编辑器):
1.编辑模式,命令,x(删除光标所在区域)
2.输入模式
3.末行模式
vim
1.管理员可以强制保存只读
2.i当前光标所在前插入
3.a当前光标所在后插入(光标后移一位剩下同上)
4.o当前光标所在行下方新增空白行并转换成输入
5.I当前光标所在行的行首插入
6.A当前所在行行尾插入
7.O当前所在行上方新增空白行插入
末行回编辑敲两次esc
w:下一个单词词首
e:当前或下一个单词词尾
b:跳转至前面一个词首
^非空白行首
0 绝对行首
绝 对 行 尾 末 行 模 式 删 除 : 注 : 怎 么 删 除 一 行 中 的 后 半 部 分 ? d : 删 除 所 在 行 n d : 执 行 n 次 操 作 e g : : 1 , 50 d ( 删 除 1 − 50 行 ) 地 址 定 界 a d d 1 , a d d 2 e g : . , 绝对行尾 末行模式删除: 注:怎么删除一行中的后半部分? d:删除所在行 nd:执行n次操作 eg::1,50d(删除1-50行) 地址定界 add1,add2 eg:., dndneg150d150add1,add2eg:., d
.表示当前行
$表示最后一行
add1,+n
eg:.,+5(当前行加5行,减法同)

粘贴命令:
p:删除或复制的是整行,在当前光标所在行的下方粘贴
删除的单词或行的部分,在当前光标所在处的后方粘贴
P:删除或复制的是整行,在当前光标所在行的上方粘贴
删除的单词或行的部分,在当前光标所在处的前方粘贴

y:复制
yy复制光标所在行
和d命令差不多

可视化模式:
v:按字符选取
V:按行选取

编辑模式->输入模式
c:先删除指定部分,再转换输入模式
C:先删除光标到行尾,再转换输入模式

撤销编辑操作:
u:撤销上次编辑操作(可连续50次只适用于编辑模式)
Ctrl+r:撤销最近一次的撤销操作

搜索:
/keyword
?keyword
搜索到的内容高亮显示(因为以后也高亮显示,所以我们关闭高亮功能)

查找替换:
再末行模式下使用s命令
:定界s/查找的内容/替换的内容/gi(修饰符)
查找的内容支持正则表达式,替换内容不支持正则,必须字符串,支持前向引用

修饰符:
g:全局替换
i:忽略大小写

eg:
:1,20s/uname/UNAME/g
:1.20s/<u([[:alpha:]]){3}e>/U\1/g(以u开头e结尾的单词中的u换成大写)
vim中:
&:用于引用查找整个字符串
:1,20s/n…e>/&r/g(在以n…e结尾的后加r)

定界符

  1. $,%s全文查找
    eg:
    :%s//etc/sysconfig/network/&s/g
    :%s/[[:space:]]*#[[:space:]]*([[:space:]].)/\1/g替换以非空白字符开头有#+空白字符+非空白字符成1
    :%s/[a-z]//g删除所有的小写字母
    :%s/^#[[:space:]]
    //g删除行收的#和后面字符

末行模式的介入使用方法:
:!ls /var 查看var(与shell交互)

将当前文件一部分存到另一个文件
定界符w /路径

分窗口显示文件:
水平拆:ctrl+w松开+s
垂直拆:Ctrl+w松开+v
切换下面窗口:ctrl-+w松开+pgdn
切换上面窗口:ctrl-+w松开+pgup
(左右拆类似)
关闭窗口:ctrl+w松开+q

vim打开多个文件:
1>.vim /file1 /file2
2>.在末行模式下用next切换文件
3>.prev切换为前一个文件
4>.first切换为第一个文件
5>.last切换为最后一个文件
6>.wqall所有文件退出

打开多个文件并拆分显示:
vim -o /file1 /file2(水平)
vim -O /file1 /file2(垂直)

定制vim的工作属性:
:set 命令
eg:
:set [no]nu 显示行号
:set [no]ai 自动缩进
:set [no]ic 忽略大小写
:set all显示所有属性
:syntax on/off 打开/关闭语法高亮
:set [no]hlsearch开关高亮

配置文件:
全局: /vetc/vimrc
个人: ~/.vimrc
若不想影响别人可以在个人的编辑属性
不想用的属性可用"注释掉
vim tutor做练习题

条件测试:
test表达式
test[表达式]
test[[表达式]]
整数测试:
-eq
-gt
lt
-ne不等于
-ge
-le

字符串测试:

,<,>=,<=
-z $var字符串空了为真,不空为假
-n $var同上面相反

文件测试:
-e /路径(判断是否存在)
-f (判断是否普通文件)
-d(判断是否目录)
-l(判断是否链接)
-r(判断读权限)
-w(判断写权限)
-x(判断是否可执行文件)
如何组合条件测试:
!取反
-a 与条件
-o 或条件
source /路径 让文件生效
eg:[-e /etc/init.d/functions]&& source /etc/init.d/functions如果存在,就生效
[-x /etc/init.d/network]&& /etc/init.d/network start如果可执行就启动文件
[-x /bin/hostname]&& NAME=/bin/hostname

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值