Centos6笔记 -- Bash

1. shell的简单介绍

  Shell简单说既是提供用户操作系统的接口。Linux默认使用的shell就是 bash。你可以通过查看 "/etc/shells" 这个文件来检查我们目前的机器上可以支持使用的shell啦。

  如果你想查看你这个用户使用的是哪个shell的话,你可以查看 "etc/passwd" 文件,每行的最后标出来的就是这个用户所使用的shell啦。

  /bin/bash 是 Linux 默认的 shell,bash 是 GNU 计划中重要的工具软件之一,目前也是 Linux distributions 的标准 shell。bash 主要兼容于 sh ,并且依据一些使用者需求,而加强的 shell 版本。

  bash 主要的优点有底下几个:

    • 命令记忆能力(history)

      简单说就是会记录我们的历史命令,这些命令记录你可以在你的主文件夹内的 .bash_history 中找到。

    • 命令与文件补全功能([Tab]按键的好处)

      [Tab] 接在一串命令的第一个字的后面,则为命令补全;[Tab] 接在一串命令的第二个字以后时,则为文件补齐。

    • 命令别名设置功能(alias)

      比如你在命令行敲下 "alias lm=‘ls -al‘" 那么你就可以通过 lm 命令来代替 ls -al 命令了。

    • 作业控制、前台、后台控制(job control, foreground, background)
    • 程序脚本(shell script)
    • 通配符(Wildcard)

 2. bash shell 的内置命令 -- type

  为了方便 shell 的操作,bash 内建了很多命令,如果你想确定某个命令是来自于外部命令(其他非bash所提供的命令)或是内置在bash当中的,你可以使用type这个命令来查看:

[[email protected] ~]# type [-tpa] name
选项与参数:
    :不加任何选项与参数时,type 会显示出 name 是外部命令还是 bash 内建命令
-t  :type 会将 name 以底下这些字眼显示出它的意义:
      file    :表示为外部命令;
      alias   :表示该命令为命令别名所配置的名称;
      builtin :表示该命令为 bash 内建的命令功能;
-p  :如果后面接的 name 为外部命令时,才会显示完整文件名;
-a  :会由 PATH 变量定义的路径中,将所有含 name 的命令都列出来,包含 alias

范例一:查询一下 ls 这个命令是否为 bash 内建?
[[email protected] ~]# type ls
ls is aliased to `ls --color=tty‘

3. shell的变量功能

3.1 变量的显示与设置 echo, unset

  利用 echo 这个命令来取用变量,变量被取用时,前面必须要加上钱字号 $ ,例如:

[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# echo ${PATH} <==也可以使用这种方式

  那变量如何设置,如下所示:

[[email protected] ~]# myname=VBird

  我们在配置变量时,需要遵循以下守则:

    • 变量名称只能是英文字母与数字,但是数字不能作开头字符;
    • 变量内容若有空格符可使用双引号 [ " ] 或单引号 [ ‘ ] 将变量内容包含起来;
    • 可用跳脱字符[ \ ] 将特殊符号(如 [Enter], $, \, 空格符, ‘等)变成一般字符;
    • 在一串命令中,还需要根据其他的命令提供信息时,可以使用反单引号[ `命令` ]或 [ $(命令) ]。特别注意,这个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号;
    • 若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,比如 PATH="$PATH":/home/bin;
    • 若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量,比如 export PATH;
    • 取消变量的方法为使用 unset ,[ unset 变量名称 ] ,比如取消 myname 的配置,则为 unset myname;

3.2 环境变量的功能

  可以使用 env 或 export 命令来查看我们系统目前存在的环境变量。

  可以使用 set 查看所有变量(包含环境变量与自定义变量)。

  可以使用 export 命令将自定义变量转为环境变量。

[[email protected] ~]# export 变量名称

3.3 变量的有效范围

  操作系统中分环境变量与自定义变量,这两个主要区别就是,子进程中访问不到父进程中定义的自定义变量,但是可以访问到环境变量。

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

  需要读取来自键盘输入的变量,可以使用 read 命令:

[[email protected] ~]# read [-pt] variable
选项与参数:
-p  :后面可以接提示字符
-t  :后面可以接等待的秒数

范例一:让用户由键盘输入一内容,将该内容变成名为 atest 的变量
[[email protected] ~]# read atest
This is a test        <==此时光标会等待你输入!请输入左侧文字看看
[root@www ~]# echo $atest
This is a test          <==你刚刚输入的数据已经变成一个变量内容!

范例二:提示使用者 30 秒内输入自己的大名,将该输入字符串作为名为 named 的变量内容
[[email protected] ~]# read -p "Please keyin your name: " -t 30 named
Please keyin your name: Tsai   <==注意看,会有提示字符喔!
[[email protected] ~]# echo $named
Tsai        <==输入的数据又变成一个变量的内容了!

  declare / typeset 是一样的功能,就是声明变量的类型

[[email protected] ~]# declare [-aixr] variable
选项与参数:
-a  :将后面名为 variable 的变量定义成为数组 (array) 类型
-i  :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x  :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r  :将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset

范例一:让变量 sum 进行 100+300+50 的加总结果
[[email protected] ~]# sum=100+300+50
[[email protected] ~]# echo $sum
100+300+50  <==因为这是文字型态的变量属性,所有并没有相加
[root@www ~]# declare -i sum=100+300+50
[[email protected] ~]# echo $sum
450

  数组变量的类型

  数组的设置方式: var[index]=content

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

变量配置方式 说明

${变量#关键词}

${变量##关键词}


若变量内容从头开始的数据符合“关键词”,则将符合的最短数据删除 若变量内容从头开始的数据符合“关键词”,则将符合的最长数据删除

若变量内容从头开始的数据符合“关键词”,则将符合的最短数据删除 若变量内容从头开始的数据符合“关键词”,则将符合的最长数据删除


${变量%关键词}

${变量%%关键词}

若变量内容从尾向前的数据符合“关键词”,则将符合的最短数据删除

若变量内容从尾向前的数据符合“关键词”,则将符合的最长数据删除


${变量/旧字符串/新字符串}

${变量//旧字符串/新字符串}

若变量内容符合“旧字符串”则“第一个旧字符串会被新字符串取代”

若变量内容符合“旧字符串”则“全部的旧字符串会被新字符串取代”

4. Bash Shell的操作环境

4.1 通配符与特殊符号

符号 意义
* 代表0 个到无穷多个任意字符
? 代表一定有一个任意字符
[] 代表一定有一个在括号内的字符(非任意字符)。例如 [abcd] 代表一定有一个字符, 可能是 a, b, c, d 这四个任何一个
[-] 若有减号在中括号内时,代表在编码顺序内的所有字符。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的
[^] 若中括号内的第一个字符为指数符号 (^) ,那表示反向选择,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受
时间: 2024-09-28 22:06:14

Centos6笔记 -- Bash的相关文章

centos6.5 bash基础命令2

@@@第三天第二段 @@stat命令:查看文件的元数据信心!Inode stat FILE... bash文本编辑器编辑器:进行文本内容修改的程序 行编辑器:sed 全屏编辑器:nano, vi, vim @@nano FILE... 用户和权限管理: 1.用户是什么? 2.没有用户计算机也可以正常运行 用户:用户就是计算机系统按需对操作人员授权,标识资源获取的识别符!资源分配,是安全权限模型的核心要素之一 密码:用户认证,对用户是否具有授权进行验证! 多用户的操作系统:同一时间允许多个用户对计

[视频笔记]Bash的基础特性

(1) 命令历史 history 环境变量: HISTSIZE: 命令历史记录的条数 HISTFILE: ~/.bash_history HISTFILESIEZ: 命令历史文件记录历史的条数 history -d offsize -c history #: 显示历史中最近的#条命令: -a: 手动追加当前会话缓冲区的命令历史至历史文件中 调用历史中的命令: !#: #是一个数字,重复执行第#条指令: !!: 执行上一条命令 !string 调用上一条命令的最后一个参数: !$: ESC, .

unity c#互调java简单笔记,bash简单运用的地方

这周跟着项目走,继续改改bug,加加中英文切换 着重看下unity和android adt的互相调用 网上看还需要配置什么library的 我的unity是4.6版,我没有看到任何需要配置library的东西.直接从unity的export的项目直接在adt是可以用的.可能是教程太老了都.不看他了 1.unity调用java AndroidJavaClass jc =  new AndroidJavaClass("com.unity3d.player.UnityPlayer"); An

linux自学笔记--bash特性

bash特性 1.{}和() {}:类似集合,mkdir -p ./test/{a,b} copy /etc/passwd{,.bak} ():引用命令的执行结果,mkdir $(date) 2.执行结果判断 echo $? 成功:0 失败:1~255 3.常用快捷键 ctrl+l:清屏 ctrl+a:光标跳转行首 ctrl+e:光标跳转行尾 ctrl+u:删除光标之前 ctrl+k:删除光标之后 ESC+.:输出上次所执行的对象 4.globbing通配机制 *:匹配任意长度任意字符 ?:匹配

Linux学习笔记——bash命令及shell变量简介

bash 及其特性 shell  外壳 GUI :Gnome  KDE  xface CLI :shell  csh  ksh  bash 程序,进程 进程:每个进程看来,当前主机上只存在内核和当前进程 进程是程序的副本,进程是程序执行实例 用户的工作环境: bash: #   root用户 $   普通用户 shell  ,子shell bash : 1.命令历史 2.管道,重定向 3.命令行编辑 4.命令别名 5.命令行展开 6.文件名通配 7.变量 8.编程 命令行使用技巧: Ctrl +

Linux学习笔记--bash脚本编程之二、条件判断

 bash脚本编程之二.条件判断 条件判断: 如果用户不存在 添加用户,给密码并显示添加成功: 否则 显示用户已存在,没有添加 bash中如何实现条件判断? 整数测试 字符测试 文件测试 条件测试的表达式:     [expression]     [[expression]]     test expression 整数比较: -eq:测试两个整数是否相等:比如 $A -eq $B     -ne:测试两个整数是否不等:不等,为真:相等,为假:     -qt:测试一个数是否大于另一个数:大于

bash学习笔记——bash是什么

bash是shell的一种,所谓的shell(壳)是一个接口,这个接口提供给用户操纵系统的能力,广义的shell包括图形界面和命令行界面,狭义的shell是指命令行界面的接口,这里的bash就是一种狭义的shell.Shell可以调用其他的程序,也可以执行一些自己本身支持的命令. bash是Bourne Again Shell的简称,是Linux的默认shell.系统一般会提供多个可用的shell,可用的shell写在配置文件/etc/shells中,用户使用的shell在用户登录系统时就可以指

Linux学习笔记--bash脚本编程之一变量、变量类型

bash脚本编程之一变量.变量类型 shell编程: 编译器,解释器 编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量)语言 事先转换成可执行格式 C.C++.JAVA.C# 动态语言:解释型语言       on the fiy                                   弱类型 边解释边执行 ASP.ASP.net.PHP.shell.Python.perl 面向过程:shell.C   面向对象:JAVA.Python .Perl.C++

Linux自学笔记——Bash脚本之数组以及内置字符串处理

数组: 程序=指令+数据 指令:command 数据:变量.文件 变量:存储单个元素的内存空间: 数组:存储多个元素的连续的内存空间: 数组名:整个数组只有一个名字: 数组索引:编号从0开始: 数组 名[索引], ${ARRAY_NAME[INDEX]} 注意:bash-4及以后的版本,支持自定义 索引格式,而不仅仅是0,1,2,-数字格式:此类数组称为关联数组 声明数组: declare–a NAME:声明索引数组: declare–A NAME:声明关联数组: 数组中的元素的赋值方式: 1)