shell基础知识学习

环境搭建

vs code+虚拟机

学习资料

  • Linux命令行与shell脚本编程大全.第3版.pdf
  • LINUX SHELL脚本攻略

Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作,Shell 负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作,然后将结果反馈给应用层或者用户。

第一个shell 程序

格式为:#!/bin/bash

#!/bin/bash
echo "hello world"

解释:#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
在这里插入图片描述

打印不换行-n

  • echo 自动会将换行 可以加-n来屏蔽换行
  • printf
#!/bin/bash
echo "hello world"
echo 'hello world'
printf "hello world\n"
printf "%5s %5s %5s\n" 3 test 77.332

转义字符 -e

若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  • \a 发出警告声;
  • \b 删除前一个字符;
  • \c 最后不加上换行符号;
  • \f 换行但光标仍旧停留在原来的位置;
  • \n 换行且光标移至行首;
  • \r 光标移至行首,但不换行;
  • \t 插入tab;
  • \v 与\f相同;
  • \ 插入\字符;
  • \nnn 插入nnn(八进制)所代表的ASCII字符;

使用\t

#!/bin/bash
#!/bin/bash
echo -e "1\t2\t3"

在这里插入图片描述

打印有颜色的文字

颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

  • \e[1;31m 打印红色文字
  • \e[0m 将颜色重新置回
#!/bin/bash
#!/bin/bash
echo -e "\e[1;31mThis is red text"
echo -e "\e[1;32mThis is green text\e[0m"

在这里插入图片描述
背景色:

echo -e “\e[1;42mGreed Background\e[0m”
Greed Background颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

#!/bin/bash
#!/bin/bash
echo -e "\e[1;41mThis is red text"
echo -e "\e[1;32mThis is green text\e[0m"

在这里插入图片描述

变量 格式为A=B

使用一个定义过的变量,只要在变量名前面加美元符号$即可
注意A = B和A=B不一样 前者是赋值,后者是相等

#!/bin/bash
var="value"
echo $var
echo ${var}

在这里插入图片描述
案例二

#!/bin/bash
var="value"
fruit=apple
count=5
echo "we have $count ${fruit}(s)"

在这里插入图片描述

只读变量readonly

#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"

在这里插入图片描述

删除变量unset

#!/bin/sh
myUrl="https://www.runoob.com"
unset myUrl
echo $myUrl

在这里插入图片描述

环境变量(父变量)未在该文件的变量

#!/bin/bash
echo "hello world"

获取字符串长度#

#!/bin/sh
myUrl="https://www.runoob.com"
echo ${#myUrl}

在这里插入图片描述

shell 数学运算let 、[]、 (())

#!/bin/bash
num1=1;
num2=2;
echo $num1
echo $num2
let result=num1+num2
echo $result
result=$[num1+num2]
echo $result
result=$((num1+num2))
echo $result

在这里插入图片描述

文件描述符和重定向 > 、>>

“>” 方法 每次内容都先清空再写进去

#!/bin/bash
echo "dfadfljdsaljf" > test.txt

在这里插入图片描述
">>"方式添加 将文本追加到目标文件中

#!/bin/bash
echo "dfadfljdsaljf" >> test.txt

在这里插入图片描述

数组和关联数组 * 打印长度

打印一个数组的值

#!/bin/bash
array_var=(1 2 3 4 5)
echo ${array_var[0]}

在这里插入图片描述
打印所有数组的值 "

#!/bin/bash
array_var=(1 2 3 4 5)
echo ${array_var[*]}

在这里插入图片描述
打印数组个数 #

#!/bin/bash
array_var=(1 2 3 4 5)
echo ${#array_var[*]}

在这里插入图片描述

关联数组-类似于python 键和值的对应关系

#!/bin/bash
array_var=(1 2 3 4 5)
echo ${array_var[*]}

# 类似于python 键和值的对应关系
declare -A ass_array
ass_array=([index1]=val1 [index2]=val2)
echo ${ass_array[index1]}

在这里插入图片描述

别名 alias 命名

#!/bin/bash
alias install='sudo apt-get install'

获取终端信息tput、stty 打印行数、列数、终端名称 终端背景

#!/bin/bash
tput cols
tput lines
tput longname

在这里插入图片描述

获取时间 date

#!/bin/bash
date

在这里插入图片描述

获取一组命令执行时间

#!/bin/bash
start=${date+%s}
command;
end=${date+%s}
different=$((end - start))
echo $different

在这里插入图片描述

调试脚本 -x

#!/bin/bash
echo "hello world"

函数 function

#!/bin/bash
function fname()
{
ls;
}
fname

在这里插入图片描述

#!/bin/bash
function fname()
{
echo s1,s2;
echo "$@";
echo "$*";
return 0;
}
fname
  • $@ :被扩展“ 1 ” 、 " 1”、" 1"S2"、“$S3”.
    在这里插入图片描述

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"

获取一组命令执行时间

#!/bin/bash
echo "hello world"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值