bash shell用法小记

shell的使用博大精深,,本人梳理基础知识,整理一下简单的用法,具体的请因需求自行研究。

1. 计算
# echo $((1+2))
3
# echo $((1+2+3))
6
# echo 3+2+5 |bc
10

2. if的用法
if [ $i -eq 0 ]; then
    xxx
else
    xxx
fi

整数比较:
-eq 等于,如:if [ "$a" -eq "$b" ]   
-ne 不等于,如:if [ "$a" -ne "$b" ]   
-gt 大于,如:if [ "$a" -gt "$b" ]   
-ge 大于等于,如:if [ "$a" -ge "$b" ]   
-lt 小于,如:if [ "$a" -lt "$b" ]   
-le 小于等于,如:if [ "$a" -le "$b" ]   
<   小于(需要双括号),如:(("$a" < "$b"))   
<=  小于等于(需要双括号),如:(("$a" <= "$b"))   
>   大于(需要双括号),如:(("$a" > "$b"))   
>=  大于等于(需要双括号),如:(("$a" >= "$b")) 

字符串比较:
通常是这样做的:
if [ X"$test" = X"test" ]

= 等于,如:if [ "$a" = "$b" ]   

-d 目录
-e 存在
-f 文件
-n 非空字符串
-z 空字符串

 

3. for的用法
array1=("d.com" "e.com" "f.com")
len=${#array1[@]}

for ((i=0;i<$len;i++))
do
    echo ${array1[$i]}
done

for a in $(seq 1 100);do
    echo $a
    sleep 1s
done

4. case的用法
case $1 in
    start|stop|reload)
        $1
        ;;
    *)
        echo "Usage: $0 [start|stop|reload]"
        ;;
esac

5. while的用法
while true
do
    echo "abc"
    read -p "请输入: " abc
    ddd="$abc"
    if [ ${#ddd} -ne 5 ]; then
        echo "请重新输入!!!"
    else
        break
    fi
done

6. 参数
#
#  $0 是这个bash文件的名称;
#  $? 是上一指令的返回值;
#  $* 是该脚本调用的所有参数;
#  [email protected] 基本与上面的$*相同。区别是:
#      $* 返回的是一个字符串,字符串中用空格分隔开,而 [email protected] 则返回多个字符串;
#  $# 是所有位置参数的个数;
#
#
ab=($(ls))
echo "1: "${ab[@]}
echo "2: "${#ab[@]}

echo "3: "[email protected]
echo "4: "$#
echo "5: "$?

7. 正则
 正则表达式匹配"=~"
 [[ $XX =~ ^$XXX ]] 
The =~ Regular Expression matching operator within a double brackets test expression.

$ [[ "# test2" =~ ^# ]] && echo yes || echo no
yes

8. 截取字符串

假设有:
f="/a/b/c/d/e.name.ext"

则:
# basename $f
e.name.ext
# dirname $f    
/a/b/c/d

特殊用法:利用${}中的#,%,*来输出指定的内容
1)去掉第一个/,以及左边的字符串 
# echo ${f#*/}
a/b/c/d/e.name.ext

2)去掉最后1个/,以及左边的字符串
# echo ${f##*/}
e.name.ext

3)去掉最后一个/,以及右边的字符串
# echo ${f%/*} 
/a/b/c/d

4)去掉第一个/,以及右边的字符串
# echo ${f%%/*} 
(空)

上面,是根据“/”来做分割,也可以用“."来分隔,不妨一试。
# echo ${f#*.} 
name.ext
# echo ${f##*.}
ext
# echo ${f%.*} 
/a/b/c/d/e.name
# echo ${f%%.*}
/a/b/c/d/e

9. 脚本放入后台,输出到日志
sh test.sh >1.log 2>&1 &
sh test.sh >/dev/null 2>&1 &
这里需要理解几个小东西的作用:
/dev/null   理解成空设备,这是一个特殊的文件,这里的作用是丢弃输出的内容
2>&1        0 输入  1 输出  2 错误 这里是将2重定向到1
&           将test.sh放入后台执行,请思考,还有其他的什么方式也可以将程序放入后台?

10. 管道
通过“|” 把输出导入到另一个程序的输入中去处理,例如:
echo ‘abc, def‘ |cut -d ‘,‘ -f 1

11. 命令跟踪调试
sh -x test.sh

12. 快捷键
Ctrl + a 切换到命令行开始
Ctrl + b - Move back a char
Ctrl + c 终止命令
Ctrl + d 退出shell,logout
Ctrl + e 切换到命令行末尾
Ctrl + l 清除屏幕内容
Ctrl + k 剪切清除光标之后的内容
ctrl + q 恢复刷屏
Ctrl + r 在历史命令中查找
ctrl + s 可用来停留在当前
Ctrl + u 清除剪切光标之前的内容
Ctrl + y 粘贴刚才所删除的字符
Ctrl + z 转入后台运行
!! 重复执行最后一条命令
↑(Ctrl+p) 显示上一条命令
↓(Ctrl+n) 显示下一条命令
!$ 显示系统最近的一条参数

13. shell传递中文到python出现异常
export LANG="en_US.UTF-8";
/usr/local/bin/python3  xxx.py
时间: 2024-10-05 05:21:22

bash shell用法小记的相关文章

Linux 常用命令解析及Bash Shell脚本用法示例

 摘要 Linux 命令是基于文本格式输入输出的一种程序,按照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合可以具有更强大的功能,而具有这种灵活性的主要原因是Linux规定程序的输入输出必须坚持文件流格式,即文本格式,而这就是Linux系统的核心之一. 对于Bash,即Shell的一种,为现在主流Linux发行版本默认的命令行解释器,是一种功能强大的工具,可以实现对Linux支持的程序命令的组合,从而实现强大功能.类似于Window系统的bat文件,Bash具有更为强大的

linux bash shell中for的用法and示例

关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用法.文中任何错误希望大佬们一一指出,不胜感激. bash shell中提供了for命令,用于创建通过一系列值重复的循环,每次重复使用系列中的一个值执行一个定义的命令集. for语句的基本格式如下: for---in list do commands done 在参数list中提供一系列用于迭代(上一

bash shell学习-基础 (笔记)

When you hoist the sails to cross the sea, you willride the wind and cleave the waves. "长风破浪会有时,直挂云帆济沧海" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) 一.认识shell 1.什么是shell shell是一种“提供使用者界面”来实现用户与内核通信的软件(命令解释器) 2.为什么要学习shell ①命令行界面的shell在各大Linux发行版中都一样: ②远程管理时命令行界

Bash Shell编程要点小结

一.case命令 case variable invalue1) command(s);; value2) command(s);; *) command(s);; esac 如果case变量没有被匹配,程序就执行*)后面的语句.case值中允许出现Shell通配符和竖线(|)作为OR操作符 二.if命令 if commandthen command(s) fi if test expressionthen command(s) fi if [ string/numeric expression

Bash Shell脚本编程笔记总结(一)

本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变量找到外部命令:把命令提交给内核启动为进程: 编程环境: 流程控制语句: 顺序执行: 循环执行: 选择执行: 条件测试:真.假 $? 命令的状态结果: 0: 真 1-255: 假 过程式的编程语言的元素:变量.流程.函数.数组 变量:局部变量.本地变量.环境变量.位置参数变量.特殊变量 变量: 数值

Bash Shell (十一)

[教程主题]:Bash Shell [课程录制]: 创E [主要内容] [1] Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH. 用 vim 编辑器编辑一个 hello 文件如下: #!/bin/bash # This is a very simple exampleecho “Hello World” 一,第一行的 #! 是什么意思 #! 是说明 hello 这个文件的类型的,有点类似于

Bash shell

一.认识bash shell 1.登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2.bash shell 功能 a. 命令记忆能力(history),默认1000个,存在~/.bash_history文件 b. 命令与文件补全功能(Tab键的好处) [Tab]接在一串命令的第一个字的后面,则为命令补全 [Tab]接在一串命令的第二个字以后时,则为文件补齐. c. 命令别名设置功能(alias), alias lm='ls -al' d.

Linux 基础知识:Bash Shell 内置命令

bash内置命令无须搜寻环境变量$PATH中提供的路径,直接可以执行,因此速度很快. 以下介绍几个简单.必备的命令用法. 1. help 用途:显示所有bash内置命令的列表,或某一个内置命令的用法. 用法: 4help 执行结果:显示所有内置命令的列表. 4help –s 内置命令 执行结果:显示内置命令的语法格式. 用例: help cd 显示cd命令的详细用法. help –s printf printf: printf [-v var] format [arguments] 显示prin

Bash shell 基础命令

1.       Shell启动 Gun bash shell为用户提供交互式访问,登录时系统依赖于用户账户的配置,在/etc/passwd 文件中存放所有系统用户账户列表及基本配置,以下为条目样本: root:x:0:0:root:/root:/bin/bash 每个条目共有七个字段,分别以冒号隔开,代表的含义依次为"用户名:密码:UID(用户ID号):GID(用户主组ID号):GECOS(用户详细描述信息):用户家目录:用户默认shell程序".当用户登录以后将会启动默认shell