SHELL基础

shell基础

shell介绍

  • shell是一个命令解释器,提供用户和机器之间的交互
  • 支持特定语法,比如循环、判断
  • 每个用户都可以有自己特定的shell
  • CentOS7默认shell为bash(Bourne Agin Shell)
  • 还有zsh、ksh等

命令历史

history命令
root用户使用过的命令存放在/root/.bash_history,最多存放1000条。
history -c 清空内存中的历史命令
在这里插入图片描述
由系统变量$HISTSIZE控制,在/etc/profie中配置,修改之后重新连接终端或者输入source /etc/profile 生效
在这里插入图片描述
记录命令执行的时间
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S ",当前连接生效。
写入/etc/profile中,放在HISTSIZE下,重新连接终端或者输入source /etc/profile 生效。
在这里插入图片描述
在这里插入图片描述
保存所有输入过的命令在这里插入图片描述 chattr +a ~/.bash_history 使该文件只能追加内容
!! 上一条命令
在这里插入图片描述
!n 运行第n条命令
在这里插入图片描述
!echo 最近运行的echo命令
在这里插入图片描述

命令补全和别名

tab
如果与输入的部分相同的命只有一个按一下tab会自动补全,如果有多个,按两下tab会列出有哪些命令
CentOS 7中支持参数自动补齐,需安装bash-completion并重启之后生效。
yum -install -y bash-completion 自动补全参数

我们可以通过起别名的方式让长度很长的命令使用起来更方便
alias restartnet=‘systemctl restart network.service’ 给命令起别名
在这里插入图片描述
alias 查看哪些命令有别名
在这里插入图片描述
unalias restartnet 取消别名
在这里插入图片描述
别名存放在用户家目录下的 .bashrc和/etc/profile.d目录下的colorgrep.sh和colorls.sh中

通配符

通配符 * 表示零个或多个字符,前后都可以
在这里插入图片描述
通配符? 表示一个任意的字符
在这里插入图片描述
[0-9] 括号中列出范围,等同于[0123456789],
[0-1a-b] 等同于[01ab],满足范围中一个
{1,2}括号中列出范围,满足范围中的一个
在这里插入图片描述

输入输出重定向

表示前面命令正确的输出输入到后面的文件中,删除之前的内容重写

在这里插入图片描述

表示前面命令正确的输出输入到后面的文件中,追加内容
在这里插入图片描述
2> 表示前面命令错误的输出输入到后面的文件中,删除之前的内容重写
在这里插入图片描述
2>> 表示前面命令错误的输出输入到后面的文件中,追加内容
在这里插入图片描述
&> 表示前面命令正确和错误的输出都输入到后面的文件中,删除之前的内容重写
在这里插入图片描述
&>> 表示前面命令正确和错误的输出都输入到后面的文件中,追加内容
在这里插入图片描述
ls [12].txt aaa.txt >3.txt 2>4.txt 将正确和错误的输出分别写入到不同的文件中
在这里插入图片描述
wc -l < 1.txt
在这里插入图片描述

管道符、作业控制

| 把前面命令输出的内容传递给后面的命令
cat 1.txt |grep ‘aaa’ 输出1.txt的内容过滤出只含有aaa内容
在这里插入图片描述

crrl z 暂停一个正在执行的任务并放到后台
在这里插入图片描述
fg 把暂停的任务调回前台
在这里插入图片描述
bg 把任务放到后台,且实运行中
在这里插入图片描述
fg id 调回指定的任务
jobs 查看后台的任务
在这里插入图片描述
sleep 200 & 将命令sleep 200放在后台运行
在这里插入图片描述

shell变量

env 查看系统变量
在这里插入图片描述
set 查看用户自定义变量和系统变量
在这里插入图片描述

自定义变量
变量规则:
字母、数字和下划线,首位不能为数字
变量值有特殊符号时需要用单引号括起来,duo=‘duo duo’
在这里插入图片描述
a=a’$ b’用’ ‘时,$b会被认为是字符,如果不使用’ ‘,会被认为是变量
单引号将其中的内容都作为了字符串来,忽略所有的命令和特殊字符,类似于一个字符串的用法
在这里插入图片描述
双引号与单引号的区别在于其可以包含特殊字符,包括’, ", $, ,如果要忽略特殊字符,就可以利用\来转义,忽略特殊字符,作为普通字符输

出变量的累加
在这里插入图片描述

pstree 查看当前登录
yum install -y psmisc 安装pstree命令
在这里插入图片描述

当打开多个变量,使用echo $SSH_TTY,可以查看所在终端
在这里插入图片描述
全局变量export tx=‘tang xiang’,针对当前连接的终端向下生效,在其他登陆的终端不生效。父shell会同步到子shell,子shell不同步到父shell。
unset 变量名 取消变量
在这里插入图片描述

环境变量配置文件

环境变量配置文件分为:系统层次和用户层次
系统层次配置文件
/etc/profile 用户环境变量,用户登陆时加载profile
/etc/bashrc 用户不用登陆,执行shell脚本时调用当中的配置
用户层次配置文件
~/.bashrc
~/.bash_profile
~/.bash_history 记录历史命令
~/.bash_logout 定义用户退出时需要做的操作

变量PS1
[root@linux-01 ~]# echo $PS1
[\u@\h \W]$,当改为w时,显示的是绝对路径
在这里插入图片描述

课堂笔记

bashrc和bash_profile
http://ask.apelearn.com/question/7719
bash_profile跟用户登陆相关,用户登陆生效
bashrc 执行shell就会生效,不一定需要用户登陆。
.bash_profile是用户家目录下的
/etc/bash_profilr是针对所有用户的

echo显示颜色http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html

需要琢磨的点
使用source不会产生新的bash,会把子脚本里变的变量带回父脚本
exec无法把子脚本里变的变量带回父脚本

cat 2.sh
#!/bin/bash
echo “children script PID is $ " e c h o " n o w t o c h i l d r e n s c r i p t . " e x p o r t a = 2 e c h o " i n c h i l d r e n , a = " echo "now to children script." export a=2 echo "in children, a= "echo"nowtochildrenscript."exporta=2echo"inchildren,a=a”

cat source.sh
#!/bin/bash
echo “fater script PID is $$”
echo “fater script, set a is 1”
export a=1
echo “it will source ./2.sh”
source ./2.sh
echo “now to father script.”
echo “fater script, a is $a”

cat exec.sh
#!/bin/bash
echo “fater script PID is $$”
echo “fater script, set a is 1”
export a=1
echo “it will exec ./2.sh”
exec ./2.sh
echo “fater script, a is $a”

sort未按ASCII排序
LC_ALL=C

搜索某个命令的安装包
yum provides “/*/*bin/vim”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值