shell 学习 笔记(一)

《鸟哥的linux私房菜》 第三部分 学习 shell 与 shell script  总结 

/etc/shells 文件 用于记录 系统上合法的shell。     为什么要有这个文件?   因为系统某些服务在运行过程中,会去检查用户能使用的shell,而这些shell的查询就是借助/etc/shells这个文件。

/etc/passwd  文件 里面 记录了 每个 用户 默认 会 使用 那种shell

~/.bash_history  记录 前一次登录以前所执行的命令

type 命令 用于  显示 命令 name 是不是 内置 命令 或是 别名等等

 

shell的变量功能

为了区别 自定义变量与 bash环境操作变量 的不同 环境变量通常用大写

显示 变量

列:echo $PATH 或 echo ${PATH}

设置 变量

列:echo $myname  没有结果 说明 没有 定义

直接 输入 myname=billvsme 就 设置 myname变量 为 billvsme

变量设置规则

1. 等号两边 不能直接 接 空格 列:myname=VBird Tsai    ERROR

2.变量名只能是 数字 或 字母 但 开头 只能是 字母  列  2myname=billvsme  ERROR

3.  变量内容可用 " " 或 '  ' 包起来 但 " "  可保持原有性质 列:var=  "lang is  $LANG"   echo $var 可得

lang is zh_CN.UTF-8 。 但 '  ' 内 自保留 原本的一般字符 列:var=  lang is  $LANG'   echo $var 可得

lang is  $LANG

4.可用使用 转义字符   “\”

5 .  可以用 $ 或 ` ` 来 在变量内容里使用命令

列 ver="version is $(uname -r)"  或 ver="version is `uname -r`"

echo  $ver     可得   version is 3.10.7-gentoo

6.若要为已有的变量增加内容,可用 这样做

列: PATH="$PATH":/usr/game/bin

7.若该变量需要在其他子进程执行,则需要已export来使变量成为环境变量

如  export  ver 再export 就可用看到 ver了

取消 变量     unset name

查看默认环境变量    env或export

RANDOM 是随机数变量 ,可以产生0~32767 之间的数  就是 。/dev/random 文件

如果想要0~9 之间 可以

declare -i number=$RANDOM*10/32768;  echo  $unmber

查看所有变量   set

语言变量 locale

locale  -a  显示 支持多少语系

直接locale 可以 查看当前用户的语言,设置这些变量可以改变当前用户的语系

系统整体默认的语系放在

CentOs 等 /etc/sysconfig/il8n

gentoo  /etc/env.d/xxlocale;

变量键盘读取、数组与声明:read,array,declare

read  列 read -p  "your name:" -t 30 name

会显示 your name:    然后  输入 billvsme , 如果不输入等待 30秒

echo  $name 会显示 billvsme

 

declare typeset [-aAfFgilrtux] [-p] [name[=value] ...]

-a 定义 为数组 ;-i  定义为整形 ;-x 跟 export 一样 把 name 设置 为 环境 变量 ;-r 设置 为readonly;-p 显示 name 的 类型(declare -p name)

(变量默认类型为字符串  ) 

列 当 我们 输入 sum=100+200+300 时 在 echo $name 显示 100+200+300 没有显示 600。我们 declare -i sum=100+200+300 再  echo $name 显示 600。

当再 declare -x sum (或export sum) 在 export | grep sum  可以看到

declare -ix sum="600"     包括 声明 时 的 ix 我们可以 再 delare -r sum sum 就 变得 readonly。

我们还可以 把 “ - ” 变成 “+”  这表示 取消 这个 属性  列 declare +x sum  这样 再 export 就看不到 sum了

读取数组 最好 用 echo  ${var[1]}。

与文件系统及程序的限制关系:ulimit

ulimit -a 可以列出所有的限制额度 具体 见 man bash  搜索 ulimit

想要恢复ulimit 的设置追简单的方法就是注销再登陆

变量内容的删除、替代与转换

删除

eg=1234567

echo ${eg#12}      34567

echo ${eg#1*6}    7

echo ${eg#45}     1234567

eg=123456123456

echo ${eg##12}     3456123456

echo ${eg##1*2}   3456

#:符合替换文字的“最短的”那一个  后面的第一个 一定要是 变量的第一个

##符合替换文字的“最长的”那一个

%,%% 是从后面删起 ,其他 跟#,##一样

替换

eg=abcdeabcde

echo ${eg/a/A}   Abcdeabcde

echo ${eg//a/A}   AbcdAabcde  两根斜杠 表示所有符合的都要被替换

检测再置换 当没有设置eg变量时

eg=${eg-abcde}  ; echo eg

看到   abcde

当已经设置了eg 变量 如 eg=123456

eg=${eg-abcde}  ; echo eg

看到还是 123456 不会改变

注意: 如果eg=""  eg为空 虽然 看起来 没有 东西 但已经定义 了eg=${eg-abcde}   不行

但是 可以通过 eg=${eg:-abcde}   " - "前加个" : "表示 当eg是空 或者 未设置 都能替换

" ? "   当eg2 没有设置时  eg=${eg2?无此变量}; 会 显示  “ bash: eg2: 无此变量  ” 的错误

当 eg2 设置时    eg  会 变成  跟 eg2 一样

 

命令别名与历史命令

直接 alias   可以看到设置了那些 命令别名

设置命令别名    alias  lm='ls -l | more'

取消命令别名     unalias lm

history 可以历史命令

history [n]

history [-c]

history [-raw] histfiles

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

-c  : 将目前shell内的所有history内容全部删除

-a  : 将目前新增的history命令新新增入 histfiles中,如果没有写histfiles,则默认写入~/.bash_history

-r  : 将histfiles的内容 写入到 shell的history中

-w : 将 目前shell的内容写入到histfiles 中

!66     执行第66条命令

!!         执行上一次的命令

!al      执行最近一次以al开头的命令

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值