linux 从头开始その五 (BASH 主要是变量和history)

type 查看是否是Bash内置命令

        不加参数时, 会显示是不是内置命令

-t      会显示如下的内容

         file  表示外部命令

         alias 表示该命令为命令别名所设置的别名

         builtin    为bash内置的命令

输入命令的一些小技巧

cp /xxx/xxxx/xxxx/xxxx /xxxx/xxx/xxxx/xxx \ 

 > /xxx/xxx/xx                                            命令太长换行, 是\紧接着回车

                      

输入命令的一些组合键
组合键功能
ctrl + u     ctrl + ku从光标向前删除   k从光标先后删除
ctrl + a     ctrl + ea光标移到命令最前面, e最后名, 其实home和end就可以

ちょっと難しい变量

1 echo, unset

echo ${myname}                   调用变量, 不会返回它的值, 因为没有提前设置

myname=desky                     设置变量, 都紧挨着=

echo ${myname}                   在调用, 有值返回         ${      紧挨着, 不能有空格

echo $myname                     这样调用也可以

unset myname                      删除变量

2 BB下 变量的命名规则

 

  • myname=aki            千万不能有空格
  • myname=desky aki   这种也不行, 因为有空格
  • 变量只能是英文字母或数字, 但是不能以数字开头, 实测以_开头也可以, 说明不止数字字母
  • 若是有空格可以用'' "" 单引号和双引号将变量引起来, 或是用\ 转义,\可以转义回车, 空格,等特殊字符  aki='12 3',aki=12\ 4 
  • 单引号和双引号的区别

双引号内的特殊字符,还保留原本特性,如果有$xx, 把它看成一个变量

如 var="lang is $LANG"   ,echo var  返回 lang is zh_CN.utf8

单引号,则把它统一看成字符串

var='lang is $LANG'   ,echo var  返回 lang is $LANG

  • 当需要借由其他额外操作命令是, 可以使用 反单引号 ` 是Tab上面的键,给额外操作括起来:或者用$()。                              version=$(uname -r)  再调用 echo version 或者 version=`ll`   echo $version
  • 扩充变量时, aki="$aki"123,或 aki=${aki}123
  • 若该变量要在其他子进程引用, 则要先 export 变量

下面是几个例子

name="aki's name"   里面有单引号, 外面套个双引号

或者  name=aki\'s\ name        转义

下面是子进程用变量的例子
 

name=aki

bash          进入到子进程

echo $name

没有 返回值
exit           退出子进程,
export name   回到主进程, 并把变量name设置为全局变量, 注意没有$
bash           进入子进程
echo $name     调用
aki            有返回值


3 拓展下反单引号的意义, 在一行命令中先执行``里面的命令

4 env 查看环境变量与常见的环境变量说明

里面有个RANDOM, 可以随机生成随机数

 echo $RANDOM     生成0~32767  之间的一个随机数

declare -i number=$RANDOM*10/32768 ;echo $number                生成0~9 的随机数

5 set 查看所有的变量(环境变量和自定义变量)

里面有个PS1, 有趣但感觉没什么卵用,,可以详见鸟哥323

echo $$            显示当前BASH的pid

echo $?            显示上一个命令的返回值, 上一个命令如果执行成功,会返回0;失败则返回错误码


12=ll         前面变量以数字开头, 会报错
echo $?       返回127 错误码
echo $?       返回0, 因为上一条是echo $?  正常执行, 返回0

6 关于export

大概吹吹原理,

但登录linux时,取得一个Bash(就是进入终端), 进入的Bash就是个独立的进程, 再bash下,就会进入一个子进程,第一个Bash就是父进程,暂时睡着了,新的子进程仅会继承父进程的环境变量(全局变量), 不会继承自定义变量(局部变量),exit退出子进程, 回到父进程。

所以,在父进程export, 就是把父进程的自定义变量(局部变量)变成环境变量(全局变量)供子进程使用。

export 变量名      注意变量名前面没有$

如果仅执行 export   会把所有的全局变量显示出来。

 

7 关于read, arry, declare

①read:      类似py的input

-p   后面加提示文字

-t    等待秒数

[root@localhost ~]# read aki
ll sadasdl d
[root@localhost ~]# echo $aki
ll sadasdl d




[root@localhost ~]# read -p "please inpuit" -t 20 aki
please inpuit123
[root@localhost ~]# echo $aki
123

②declare, typeset    声明变量

-a    将后面的变量变成数组类型

-i    将后面的变量变成整数类型

-x   把后面的变量变成全局变量

-r   把变量设置成readonly, 变量只能读, 不能修改, 不能 unset 删掉

 

变量的默认类型是字符串,所以100+300, 把它看成字符串, 不会帮你计算

但用declare声明它是数字类型时, 会自动帮你计算。

[root@localhost ~]# sum=100+300
[root@localhost ~]# echo $sum
100+300



[root@localhost ~]# declare -i sum=100+300
[root@localhost ~]# echo $sum
400


declare -x sum       声明成全局变量
declare +x sum       变回局部变量

declare -r sum       变量设置成只读
declare +r sum       撤销只读操作

 

③关于鸡肋的数组

[root@localhost ~]# var[1]="a"
[root@localhost ~]# var[2]="b"
[root@localhost ~]# var[3]="c"
[root@localhost ~]# echo "${var[1]},${var[2]},${var[3]}"
a,b,c

[root@localhost ~]# echo "$var[1],${var[2]},${var[3]}"
[1],b,c
不加{}   会出错

八 ulimit文件系统和程序的限制关系

-H    严格设置

-S   警告设置       超过警告设置会警告

-a   后面不加任何参数, 列出所有的限度

-f    能建立文佳的最大容量限制 单位k

-d   程序能使用的最大内存量

-t    可使用的最大cpu时间

-u    单一使用者可以使用最大进程数量

 

限制使用者只能建立10M以下的容量文件

ulimit -f 10240

要恢复ulimit 限制最简单的就是 注销再登陆。

 

九 命令别名 alias unalias

alias lm='ls -al | more'         设置别名

alias                                   查看别名

unalias lm                          删除别名

 

十 历史命令 hisyory

n    数字, 列出最近的n条命令

-c   删除history

-a   将目前新增的的history加到指定的文件中, 不加默认放到~/.bash_histort

-r   将指定的文件的内容 读到目前这个shell的histiry

-w  将目前的history记录写到指定的文件中 

history -w        写道~/.bash_histort中, 就是更新history

说是不手动history -w 更新的话, 只能再注销时, 系统自动更新, 但在实操中, 不用手动更新, 也不需要注销, history会自动更新。

 

! num      执行history的第几条命令

! command     执行history指定命令, ! hi     自动找到最近hi开头的命令

!!  上一条命令, 相当于上箭头

 

Q如果同一个用户开了多个执行不同命令, history怎么存?

A最后注销的哪个会覆盖先注销的history

 

 

 

 

 

 

 

    

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值