shell介绍、shell变量、环境变量配置文件

1 shell介绍
2 命令历史
3 命令补全和别名
4 通配符
5 输入输出重定向
6 管道符和作业控制
7/8 shell变量
9 环境变量配置文件

1、shell介绍

shell脚本仅仅是shell的一个表现

centos7 用的是bash

shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。

什么是shell


Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/linux 操作系统之核心。

yum list |grep zsh 查看有没有安装zsh

yum list |grep ksh 查看有没有安装ksh

35ff02e3195137644c5d14f9d5acd9e8a89.jpg


2、命令历史

b2cac8ca185a23c9b2e6097ae85f173362f.jpg

ls /root/.bash_history   /root/.bash_history历史命令存放位置,退出终端时才会保存到文件中去

history 查看历史命令,最大存放1000条

echo $HISTSIZE 查看能存放多少条命令

history -c 清空内存中的历史命令,不能删除存命令的配置文件

vim /etc/profile 编辑/etc/profile,定义记录多少条历史命令

c13db3587752344106e4914ac43d5b4d5dc.jpg

echo $HISTSIZE 查看记录多少条历史命令

source /etc/profile 

要命令历史数值生效需要重新进一下终端或者source一下

b38efe51b4a1f01799653703da29619538a.jpgHISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"   记录命令什么时候运行的时间

%Y 年份 %m月份 %d日期 %H:%M:%S小时 分钟 秒

echo $HISTTIMEFORMAT 系统默认环境变量不存在,需要自己定义

会记录日志和时间

vim /etc/profile   编辑配置文件,让变量永久生效

201408_5Gyp_3804239.png

44f0805fee39e9fc248b68b568613b53eb0.jpg

source !$    执行上一条source开头的命令

d52fa02e34da623ba638b1b80b1139f0c70.jpg

50388bdd839a60e8588bb535664f9590aa4.jpg

chattr +a ~/.bash_history   定义特殊权限,只会追加,不会删除

exit   正常退出,没有正常退出命令保存不全

!!   上一条命令

!n   n指的是数字,运行指定等于n的命令

!echo   运行以echo开头的命令


3、命令补全和别名

a75c8d2eacc81c05a36a287c337e36193dd.jpg

tab键,命令开头一样多余两个的时候需要按两下,一个自动补全

ccbfb86ab6f3642ee70ba66bb84e781cc90.jpg

yum install -y bash-completion  yum安装bash-completion

reboot  重启系统

rpm -qa bash-completion  查看bash-completion包有没有安装

systemctl restart network.service   重启网络服务

fb0f824af65eb27124fdffd306f9653a870.jpg

alias restartnet='systemctl restart network.service'   将systemctl restart network.service定义别名成restartnet

alias  查看系统里的所有别名

204523_18oM_3804239.png

vi .bashrc 编辑定义别名文件

cd /etc/profile.d/ 定义别名的目录

4baf41d65e463b0b91e9d0f954e0ca414db.jpg

colorls.sh  ls变量

colorgrep.csh  grep变量

.bashrc /etc/profile.d/

unalias restartnet 取消自定义别名restartnet

06046eeb7da62b57adc857b0a656ad607e6.jpg


4、通配符

c50f32faab43b19cf3390df5407d1d5e474.jpg

ls *.txt   *表示通配符

ls ?.txt   ?表示任意的一个字符

ls [0-3].txt   [0-3]表示0到3中的任意一个字符

ls [123].txt   [123]表示1、2、3所有的三个字符

ls {1,2}.txt  相当于1或2

3e4bc3473100a05fb2bae34c4e65c687ec7.jpg


5、输入输出重定向

>  把前面命令的输出输入到后面的文件里面去(正确输出信息)

cat 1.txt > 2.txt 把1.txt的内容重定向到2.txt里面去

>> 追加重定向

2> 把命令产生的错误信息输入到文件里面去(错误输出信息,错误重定向)

2>> 错误输出信息,错误追加重定向

>+2>等于&> 结合了正确和错误重定向

< 输入重定向

lsaaa 2> a.txt 把lsaaa产生的错误信息输入到a.txt

04aa7d7ca96eda1132c037b899a9f7780c1.jpg

lsaaa 2>> a.txt 把lsaaa产生的错误信息追加重定向到到a.txt
210950_dpDr_3804239.png

ls [12].txt aaa.txt&> a.txt 错误和正确信息同时重定向到a.txt

aa166d2bd1e89286e7aa3a6b8ddce58bab8.jpg

ls [12].txt aaa.txt >3.txt  2>a.txt 既有正确输出也有错误输出

b66b2c87aa7c5082bbe75b038c482e5a372.jpg

wc -l < 3.txt 把1.txt输入给wc -l查看文件长度,左边必须是命令

00fd9558dd6418c9de4aecd0cccb027bf38.jpg

1、管道符和作业控制

|管道符,表示把前面一个命令输出的结果传给后面的命令

fb8275952a18c4a147209b353e84497c801.jpg

ls | wc -l 查看当前目录文件交给wc -l 查看有多少个文件

find ./ -type f |wc -l 列出当前目录下所有文件交给wc -l查看有多少个文件

e3cf0aaf6e3a95346b7a5b46282552c7b74.jpg

ctrl z 暂停一个任务

jobs 查看后台的任务

3001259e039eaaec011da32844c926e59c9.jpg

fg 把任务调到前台

3e8584eb0ec2f5779615692d5a1909b06c5.jpg

bg 把任务调到后台

a07351aa3e4ede0f6421251276fd75b7e7d.jpg

vmstat 1 持续输出系统信息
sleep 1000 暂停1000秒

sleep 100 & 直接把命令丢到后台执行(再开一个终端看不到后台任务,可以用ps aux |grep sleep查看进程)

2a9acb39dd14ec75252417fb228fe0434f8.jpg


2、shell变量(上)

PATH 系统内置变量

HOME,PWD,LOGNAME 等都是变量

32b244c3ddef92953dca5179b75225b8988.jpg

env 获取变量,等于号左边是变量名,变量值:数字、字符串等

47e477c818b1502b26797b3c40308e98a72.jpg

PWD 当前目录

LANG 语言

set 获取系统、用户自定义变量

a=111 自定义变量为111

echo $a 查看变量a

set |grep 111 显示环境变量筛选出带有111的内容

efa9dc62ce2d544443e7e145fdb873a584d.jpg

a='a b c' 定义a变量为a b c,有特殊符号时用单引号,单引号褪意

ee758cc98b7b854660862c4bd9c7cbf0fb4.jpg

变量名规则

变量名可以是字母、数字和下划线,首位不能为数字

044807_HW0Q_3708406.png

变量值有特殊符号时需要用单引号(脱义)括起来

045121_w5Ue_3708406.png

变量的累加

90840afa371191b6e5f15be7ce8b790bf24.jpg

全局变量

当打开多个终端时,使用命令echo $SSH_TTY,可以查看当前所在终端

053046_Q2Eu_3708406.png

12cf69082bac4f6f9341d315ca040c86202.jpg

在终端1定义一个变量,在终端2中是查看不到的

053419_FUWW_3708406.png

88dc4484c045cae5cc94742739f026895a2.jpg

进入子shell

053827_iMRz_3708406.png

然后用pstree查看

ac6455f0b73c82ed4ae103e2726a6de94a4.jpg

父shell中设定的变量在子shell中不生效,需要设置全局变量export

89b7cd9b031da6878070963ef07caf0839f.jpg

054257_yGz9_3708406.png

在子shell中设置全局变量export,在其父shell中也不生效,所以全局变量只能往下生效。

055104_9Eop_3708406.png

取消变量

055217_yLS3_3708406.png

 

3、环境变量配置文件

环境变量配置文件可分为:系统层次配置文件和用户层次配置文件

系统层次配置文件(/etc下的文件):

/etc/profile 用户环境变量,交互,登录才执行

/etc/bashrc 用户不用登录,执行shell就生效

用户层次配置文件(用户家目录下的文件):

~/.bashrc

~/.bash_profile

一般我们不要编辑系统层次的配置文件,在有需要时,可以编辑用户层次的配置文件.bash_profile

source .bash_profile和. .bash_profile作用一样,加载配置文件里的配置

~/.bash_history,用来记录命令历史

~/.bash_logout ,用来定义用户退出的时候需要做的一些操作

ps1是在/etc/bashrc里面定义的,用于定义命令左边的字符串显示,如下图

修改W为w,发现变成绝对路径

20ec5213668bbc63aff0d0db377ef796ec6.jpg

修改方括号,这里的$普通用户显示$,root用户显示#

1e79aa0345842e3e159c50cde9c634cc246.jpg

d1700f18926b8d65e8c2d02bb4b9ffa5c1b.jpg

转载于:https://my.oschina.net/u/3992081/blog/2870101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值