Shell 和 Shell 脚本 (Shell Script)

简介: Shell 和 Shell 脚本 (Shell Script)

Shell 是一个用 C 语言编写的程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。


业界所说的 Shell 通常都是指 Shell 脚本,但要知道,Shell 和 Shell Script 是两个不同的概念。


Shell 脚本种类众多,常见的有:


  • Bourne Shell(/usr/bin/sh或/bin/sh)


  • Bourne Again Shell(/bin/bash)


  • C Shell(/usr/bin/csh)


  • K Shell(/usr/bin/ksh)


  • Shell for Root(/sbin/sh)


除了上面的几种,Node.js 本质上也是一种 Shell 脚本,只不过他的语法是 JavaScript。不同 Shell 脚本的区别就是语法不一样。


总结:我们通过编写 Shell 脚本,然后放在 Shell 应用程序里面运行,常见的 Shell 应用程序有 Cmd、git Bash 等等。常见的Shell 脚本有 Bash、Node。


不同的 Shell 脚本需要不同的 Shell 应用程序来执行,默认 Shell 应用程序都是执行 Bash 脚本的,如果需要切换 Node 脚本的执行环境,我们需要安装 Node,配置完成环境变量后,输入node即可切换 Node 脚本的执行环境中。


Shell 脚本 - Bash


Bash 是大多数 Linux 系统默认的 Shell 脚本。


Bash Documents



Linux系统目录结构



目录文字说明


mkdir demo
cd demo
mkdir css js
touch index.html css/style.css js/main.js
exit


脚本执行的原理(Bash 脚本)


你每次在 Shell 应用程序 里面输入一个命令时(比如 ls、cp、demo),Bash 都会去 PATH 列表里面寻找对应的文件,如果找到了就执行。


当我们自己写的脚本不在 PATH 列表里面应该怎么执行呢?比如我们写了一个名为 demo 的脚本。


第一种


cd demo 脚本的目录
./demo


第二种


脚本目录/demo


注意:如果我们直接在 Bash 里面输入 demo 的话,会发现执行不了,因为 demo 这个脚本不在 PATH 列表里。


查看脚本所在的 PATH


使用 type ls 可以看到寻找过程(在 Win 系统下好像没啥用)


使用 which ls 可以看到寻找结果


Shell 脚本 - Node


我们在 Bash 执行环境里输入 Bash 脚本,也可以在 Node 执行环境里输入 Node 脚本。


Bash 脚本能做的事情,JS 脚本也能做。(sh demo.sh 对应 node demo.js)


Node.js Document


查看当前目录


process.cwd();


创建目录


 var fs = require('fs')
fs.mkdirSync("./demo")


创建文件


var fs = require('fs')
fs.writeFileSync("./demo.txt","123")


注意点


脚本后缀


作用:毫无作用。


Linux 中的文件是通过敲命令来执行的,可以用vi demo通过 vi 来打开,也可以通过sh demo当做脚本来执行,默认是 sh


文末放一个案列:列如我写的一个脚本控制tcl tv压测netflix转dtv后blank screen


while true;
do
    input keyevent 25  #声音降低
    input keyevent 25
    input keyevent 25
    echo 02f6 > /sys/venus_ir/ir_gen_keycode  #打开netflix
    sleep 2
    echo 0x1c > /sys/venus_ir/ir_gen_keycode  #确认片源
    sleep 1
    echo 0x1c > /sys/venus_ir/ir_gen_keycode  #确认播放
    sleep 3
    input keyevent 24  #声音升高
    input keyevent 24
    input keyevent 24
    sleep 1
    echo 01d7 > /sys/venus_ir/ir_gen_keycode  #切换tv
    sleep 2
    input keyevent 22  #左键
    sleep 1
    echo 0x1c > /sys/venus_ir/ir_gen_keycode  #确认切换到dtv
    sleep 10
    echo 0x66 > /sys/venus_ir/ir_gen_keycode  #返回主页
    sleep 1
done


获取键值方法一


控制键值


获取:dmesg -c |grep IR


[ 2723.097758] 11:18:35.995 (3)-0000\x09[IR] [DBG] roger venus_ir_input_report_end_TCL keycode=0x6c
[ 2723.097774] 11:18:35.995 (3)-0000\x09[IR] [DBG] roger venus_ir_input_report_end_TCL keycode=0x6c up


实现:echo 0x6c > /sys/venus_ir/ir_gen_keycode


获取键值方法二


获取键值getevent


add device 1: /dev/input/event2
name: "virtual-search"
could not get driver version for /dev/input/js0, Invalid argument
add device 2: /dev/input/event1
name: "rtk_keypad"
add device 3: /dev/input/event0
name: "mtkinp"
/dev/input/event0: 0001 0192 00000001
/dev/input/event0: 0000 0000 00000000


相关文章
|
26天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
68 1
|
12天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
36 2
6种方法打造出色的Shell脚本
|
3天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
13 2
|
17天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
40 6
|
13天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
62 12
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
43 2
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
337 2
|
2月前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
63 18