shell基础


Linux Shell基础:
centos7用bash

命令历史:
history 查看之前的命令
ls /root/.bash_history 存放之前的命令,可放置1k条
echo $HISTSIZE 这个环境变量控制的
history -c 清除当前命令历史清空,当前存储于内存
当你退出终端后,才会将命令保存到.bash_history文件中
vi /etc/profile 中修改HISTSIZE环境变量
source /etc/profile 使修改生效
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 改变环境变量,可记录日期和时间(也可以复制到profile /history 下一行)
chattr +a ~/.bash_history 永久保行历史命令
!! 上一条命令
!n(数字)运行指定行数命令
!echo 倒着往上找关于echo的第一条的命令
!mkdir倒着往上找关于mkdir的第一条的命令

命令补全和别名:
tab 命令补全,一下补全,两下显示开头相同的命令或文件
yum install -y bash-completion 默认不支持,需安装这个包,外加重启系统
alias 别名,给命令重新起个名字
alias restartnet='systemctl restart network.service' 这样restartnet就可以代替引号里的命令了
alias 可查看系统里所有的alias,包括你自定义的alias
.bashrc 放着自定义的命令别名
ls /etc.profile.d/ 其他的都在这个目录下
unalias restartnet 取消自定义的命令别名,如取消restarnet

通配符:
ls *.txt *表示通配
ls?.txt ?表示任意一个字符
ls[0-9].txt 【0-9】范围中选其中一个
ls{1,2}.txt {1,2}范围中选其中一个,等同【1-2】
输入输出重定向
cat 1.txt >2.txt > 将前面的输出结果重定向到后面的文件
cat 1.txt >>2.txt >> 将前面的输出结果追加到后面的文件
ls aaa.txt 2>err 把错误命令定性到err文件里去
ls aaa.txt 2>>err 把错误命令追加定性到err文件里去
ls [12].txt aaa.txt &>err 不论对错输出信息全定向到err中
& 不论对错,支持>>
ls [12].txt aaa.txt >1.txt 2>a.txt 正确和错误的结果区分开定向到不同文件
wc -l < 1.txt < 输入重定向 前面必须是一个命令
command >1.txt 2>&1

管道符和作业控制:
cat 1.txt |wc-l ;cat 1.txt |grep 'aaa' |把前面的输出结果交给后面的命令处理
ctrl z 暂停一个任务
fg 继续未完成的操作,调用到前台
jobs 查看后台的任务 fg(n)
bg[id] 把任务调到后台并运行
命令后面加&直接丢到后台

shell变量:
变量:PACH , HOME ,PWD ,LOGNAME
env命令 来获取到这些变量
set 查看所有包括用户自定义的变量
自定义变量:
a=1111
echo $a
1111
变量名规则:字母,数字下划线,首位不能为数字
变量值有特殊符号时需要用单引号括起来
变量的累加
export b=2 全局变量 向下的(子shell生效)
unset b 取消变量
bash 打开子shell
pstree 查看你在哪
w 查看当前用户 echo $SSH_TTY

环境变量配置文件:
系统层次
/etc/profile 用户环境变量,交互,登陆才执行
/etc/bashrc 用户不用登陆,执行shell就生效
用户层次
~/.bashrc
~/.bash_profile
~/.bash_history
~/.bash_logout 用来定义用户退出时需要做的一些操作
vim etc/.bashrc
PS1='[33[01;32m]u@h[33[00m]:[03[01;36]w[33[00m]$' 带颜色显示用户和主机
source .bash_profile(..bash_profile)修改配置文件后加载文件

shell特殊符_cut命令:
*任意个任意字符
?任意一个字符
#注释字符
脱义字符
| 管道符
查看变量 echo $c(变量名)

$ 变量前缀, !$ 组合,正则里表示行尾
;多条命令写道一行,用分号分割
~ 用户家目录,后面正则表达式表示匹配符
& 放到命令后面,会把命令丢到后台
> > > 2> 2>> $>
[] 指定字符中的一个,[0-9],[a-zA-Z],[abc]
||(或者) 和 &&(只有前面的命令执行成功才能执行后面的命令),用于命令之间


与管道相关的命令
cut 截取
-d 分隔符
-f 指定段落
-c 指定第几个字符
sort 排序
-n 以数字排序
-r 反序
-t分隔符 -kn1/kn1,n2
wc -l 统计行数
-m 统计字符数
-w 统计词
uniq 去重 (排序后去重 和sort一起用)
-c 统计重复次数
tee和>类似,重定向的同时还在屏幕显示
-a 追加
tr 替换字符 ,tr 'a' 'b', 大小写替换 tr ‘[a-z]’'[A-Z]'
split 切割, -b大小(默认单位字节),-l 行数

原文地址:https://www.cnblogs.com/herosyuan/p/9791977.html