// 其他杂项知识点  

对于普通用户,Base shell 默认的提示符是美元符号$;对于超级用户(root 用户),Bash Shell 默认的提示符是井号#

-------

\#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell;后面的/bin/bash就是指明了解释器的具体位置    

-------

read 命令用来从标准输入读取用户输入的数据   

-------

点号用于执行某个脚本,甚至脚本没有可执行权限也可以运行。有时候在测试运行某个脚本时可能并不想为此修改脚本权限,这时候就可以使用.来运行脚本,非常方便。    

-------

sh-3.2# echo $SHELL     // 查看系统使用的shell为bash
/bin/sh sh-3.2# bash --version // 查看bash版本 等同 echo $BASH_VERSION
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc. -------- 字符串截取操作 ${string: start :length} // 从0开始 截取的长度(可以省略,省略长度代表截取到末尾) hello='Hello World!'
echo ${hello:6:5} // 从6开始截取5个字符
echo ${hello:6} // 截取到末尾 hello='Hello World!' // 从指定字符开始截取到末尾
echo ${hello#*o} // \#代表指定截取 \*通配左边所有字符 sh-3.2# echo ${hello#r}
Hello World!
sh-3.2# echo ${hello#Hello Wor} // 不使用通配符也行 # 截取右边字符,忽略左边
sh-3.2# echo ${hello#*o} // 默认从第一个指定字符开始
World!
sh-3.2# echo ${hello##*o} // 从最后一个指定字符开始匹配
rld! % 截取左边,忽略右边 (跟#相反)
sh-3.2# echo ${hello%o*}
Hello W
sh-3.2# echo ${hello%%o*}
Hell -------- 数组合并 sh-3.2# arr1=(1 2 3)
sh-3.2# arr2=(4 5 6)
sh-3.2# arr3=(${arr1[@]} ${arr2[@]})
sh-3.2# echo ${arr3[@]}
1 2 3 4 5 6 -------- /etc/bashrc 文件
alias hello='ls -l' // 添加alias别名
source 执行一下 -------- `` 反引号和 $() 差不多,字符串将解释成shell命令来执行
z:~ k$ for i in `ls`; do
> echo $i
> done
Applications
Applications
(Parallels)
Desktop
z:~ k$ --------
((表达式)) 多个表达式之间以逗号,分隔, sh-3.2# echo $((a=2,b=3)) // $获取 (( )) 命令的结果
3 // 以最后一个表达式的值作为整个 (( )) 命令的执行结果 // 使用变量时不用加$前缀,(( )) 会自动解析变量名
sh-3.2# a=2
sh-3.2# b=3
sh-3.2# echo $((a))
2 let 也是表达式求值 和(())一样,只是当是多个表达式时,是以空格为分割 sh-3.2# let a=1 b=2
sh-3.2# echo $a $b
1 2 $[] 跟let (()) 也差不多 sh-3.2# echo $[1+2]
3 -------- expr 整数计算 sh-3.2# expr 1 + 2
3
sh-3.2# expr 1 \* 3
3
sh-3.2# a=1
sh-3.2# expr $a
1
sh-3.2# expr \( 1 \* 3 \) + 2 // 括号也要转义
5 --------
for 循环
for((exp1; exp2; exp3))
do
xxx
done --------
退出状态 每一条 Shell 命令,当它退出(运行结束)时,都会返回一个整数值给调用(使用)它的程序,即命令的退出状态 if 语句的判断条件,从本质上讲,判断的就是命令的退出状态 按照惯例来说,退出状态为 0 表示“成功”;也就是说,程序执行完成并且没有遇到任何问题。除 0 以外的其它任何退出状态都为“失败” sh-3.2# echo $(( 1 * 2 ))
2
sh-3.2# echo $?
0 // 0成功
sh-3.2# abcdefg
sh: abcdefg: command not found
sh-3.2# echo $?
127 // 失败 -------- select in 循环,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能 sh-3.2# select name in "aa" "bb" "cc" "dd"
\> do
\> echo $name
\> done
1) aa
2) bb
3) cc
4) dd
\#? 1
aa
\#? 2
bb
\#? 3
cc
\#? 4

  

shell 其他杂项知识点笔记的更多相关文章

  1. 【链接】LINUX SHELL脚本攻略笔记[速查]

    LINUX SHELL脚本攻略笔记[速查]

  2. LINUX SHELL脚本攻略笔记[速查]

    Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...

  3. Python 入门必学经典知识点笔记【肯定有你不知道的】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...

  4. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  5. Java 多线程与并发【知识点笔记】

    Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...

  6. 写shell脚本速查笔记

    linux shell脚本的语法蛋疼,而且对于java开发人员来说又不常用,常常是学了一次等到下次用的时候又忘记了.因此制作这个速查笔记,用于要写shell脚本时快速回忆&速查. 获取当前脚本 ...

  7. linux shell脚本攻略笔记

    前一阵子系统学习了下<linux shell脚本攻略>这本书.在此记录下自己的学习笔记 1. 输出颜色字符  echo -e "\e[1:41m" 1表示背景色   2 ...

  8. Linux Shell Scripting Cookbook 读书笔记 1

    本系列文章为<Linux Shell Scripting Cookbook>的读书笔记,只记录了我觉得工作中有用,而我还不是很熟练的命令 书是很好的书,有许多命令由于我比较熟悉,可能就没有 ...

  9. shell脚本学习积累笔记(第一篇)

    (1)首先,今天在执行shell脚本./test.sh时抛出“/bin/sh^M: bad interpreter: No such file or directory”的异常,百度后,才知道这是由于 ...

随机推荐

  1. iOS presentViewController 方法引起的问题

    有个需求,在项目中随时使用 presentViewController来显示一个界面,比如弹窗提示或者人脸解锁,都是在任何情况都可能出现的. 在presentViewController 调用前,已经 ...

  2. Day 1 下午

    POINT 1 贪心 每一步都取当前的最优解的思想:一般来说符合直观思路,需要严格的证明:OI中使用多个错误的贪心策略进行加成有时会有良好的效果 例一给定N个农民,第i个农民有Ai单位的牛奶,单价Pi ...

  3. 学习java接口知识

    学习java接口知识 //一个类最多只能有一个直接的父类.但是有多个间接的父类. java是单继承. class ye_01{ String name; } class fu_01 extends y ...

  4. 【转】C语言堆栈入门——堆和栈的区别

    @2019-04-25 [小记] C语言堆栈入门——堆和栈的区别

  5. [RPM,YUM]RHEL Centos mount local source / RHEL CentOS挂载本地源

    RHEL: 使用YUM安装Oracle必要软件包,将操作系统ISO文件“rhel-server-6.5-x86_64.iso”分别上传至两个节点主机“/root”目录,以root用户登录,执行以下命令 ...

  6. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

    异常汇总:https://www.cnblogs.com/dotnetcrazy/p/9192089.html 这个是Django对MySQLdb版本的限制,我们使用的是PyMySQL,所以不用管它 ...

  7. LA4080/UVa1416 Warfare And Logistics 最短路树

    题目大意: 求图中两两点对最短距离之和 允许你删除一条边,让你最大化删除这个边之后的图中两两点对最短距离之和. 暴力:每次枚举删除哪条边,以每个点为源点做一次最短路,复杂度\(O(NM^2logN)\ ...

  8. DB(1):SQLAPI catch [Bind variable/parameter 'pay_acc_id' not found] !!!

    SQLAPI catch [Bind variable/parameter 'pay_acc_id' not found] !!! 出现这种报错,先检查命令类后面的参数是否混淆(SACommand s ...

  9. (十一) UVC调节亮度

    目录 UVC调节亮度 引入 硬件协议速览 代码框架 属性初始化 属性支持查询 具体属性值获取 具体属性值设置 代码实现 title: UVC调节亮度 date: 2019/4/23 20:30:00 ...

  10. 移动开发day4_京东移动页面

    复习 父项身上有哪些属性 可以设置 主轴方向 fd flex-direction : row; column; 主轴子项的排列方式 j justify-content: flex-start;flex ...