Tutorials Point Coding Ground 这个在线工具是开发工程师们编码、编辑、运行和共享的一个编码基础平台,它支持多语言、代码高亮、新建文件 / 项目、下载文件 / 项目、自定义设置(例如:主题颜色)、错误提示等功能。
主要包括:
当然了,也少不了我们在线运行 Bash Shell 的环境,我通过它写了个乘法口诀的脚本程序。
代码如下:
#!/bin/bash
# Filename:My multiplication.sh
# Date:2021/12/30
# 公众号:杰哥的IT之旅
# Name:JackTian
# WeChat:Hc220088
# Description:The multiplication formula program is in bash shell
sum=0
for ((a=1;a<=9;a++))
do
for ((b=1;b<=$a;b++))
do
sum=$[$a*$b]
echo -ne “$a*$b=$sum\”
done
echo
done
输出结果:
“1*1=1”
“2*1=2”“2*2=4”
“3*1=3”“3*2=6”“3*3=9”
“4*1=4”“4*2=8”“4*3=12”“4*4=16”
“5*1=5”“5*2=10”“5*3=15”“5*4=20”“5*5=25”
“6*1=6”“6*2=12”“6*3=18”“6*4=24”“6*5=30”“6*6=36”
“7*1=7”“7*2=14”“7*3=21”“7*4=28”“7*5=35”“7*6=42”“7*7=49”
“8*1=8”“8*2=16”“8*3=24”“8*4=32”“8*5=40”“8*6=48”“8*7=56”“8*8=64”
“9*1=9”“9*2=18”“9*3=27”“9*4=36”“9*5=45”“9*6=54”“9*7=63”“9*8=72”“9*9=81”
Tutorials Point Coding Ground 地址:
5、jsuix
JS/UIX 终端在 Web 浏览器上运行其实是与 UNIX 的操作系统非常相似,完全基于 JavaScript 编写,它包括虚拟机、Shell、虚拟文件系统、进程管理、是带有屏幕和键盘映射的终端。
点击open terminal即可打开终端。
该 JS/UIX 终端的键盘是接受 US-ASCII 字符集,如果你希望使用屏幕键盘来进行输入命令,可以点击终端左下角的显示键盘按钮来进行操作。
备用键盘映射(可能取决于系统和浏览器):
JS/UIX 终端是不需要任何插件来打开终端的,如果你要在 JS/UIX 终端上练习命令,可以通过guest 访客身份登录,无需输入密码,回车即可进行使用。
JS/UIX 地址:
6、jslinux
jslinux 是基于 JavaScript 语言编写的 Linux 模拟器包,可以在 Web 浏览器中运行 Linux。
提供多种系统选择,你也可以在上面编译运行代码,不过整体感觉不是很流畅。
JSLinux 地址:
7、Copy.sh
Copy.sh 是一个高效的在线 Linux 终端,能够仿真其他操作系统,包括:Arch Linux、FreeDOS、FreeBSD、OpenBSD、Windows 2000、Windows 98 等;
首次加载仿真器时,可以选择所需的操作系统,并根据自己的要求进行定制web浏览器停止运行此脚本,同时还支持多种发行版,想体验不同操作系统的可以试试。
Copy.sh:
8、jor1k
jor1k 是一个用运行 Linux 的 JavaScript 编写的 OpenRISC 1000 模拟器,几乎可以在任何现代 Web 浏览器中运行。
jor1k 地址:
9、linuxcontainers
linuxcontainers 是 LXD、LXC、LXCFS 和 distrobuilder 背后的项目,目的是为 Linux 容器技术的开发提供一个发行版的环境并提供运行完整 Linux 系统的容器和虚拟机,可以运行一台演示服务器来充当运行 Linux 终端的 Shell 环境。
虽然 VM 提供了一个完整的环境,系统容器所提供的环境与 VM 的环境尽可能接近,但没有运行单独的内核和模拟所有硬件所带来的消耗。
演示服务器环境有以下限制:
LXD 是下一代系统容器和虚拟机管理器,它主要是围绕在容器或虚拟机内运行的完整 Linux 系统提供统一的用户体验。
LXD 是基于映像的,并为大量 Linux 发行版提供映像。为各种用例提供了灵活性和可扩展性,支持不同的存储后端和网络类型,并且可以选择安装在从单个笔记本电脑或云实例到完整服务器机架的硬件上。
使用 LXD 时,可以使用简单的命令行工具、直接通过 REST API 或使用第三方工具集成来管理您的实例(容器和 VM)。LXD 也为本地和远程访问实现了一个 REST API。
linuxcontainers 地址:
10、CodeAnywhere
Codeanywhere 是一个即服务为最终用户提供跨平台的 Cloud IDE,可以在几秒钟内部署开发环境来节省时间,能够对项目进行编码、学习、构建和协作。要运行免费的 Linux 虚拟机,首先需要在网站上注册,然后订阅他们的免费计划。
注册后,继续创建新连接,并使用您选择的操作系统设置容器。完成所有这些步骤后,您将拥有一个可靠且免费的 Linux 控制台。
CodeAnywhere 地址:
11、cocalc
cocalc 是一个不会弄乱你自己电脑的在线 Linux 终端,提供了完整的、协作的、实时同步的 Linux 命令行终端。
cocalc 的好处:
cocalc 的特征:
cocalc 地址:
12、linuxzoo
linuxzoo 是使用具有 root 访问权限的远程私有 Linux 机器访问安全的学习 Linux。
linuxzoo 地址:
13、jdoodle
jdoodle 是一个在线编译器和编辑器,支持 76 多种语言,具有多个版本和 2 个数据库。
同样也有专门用来练习 Shell 编程的在线环境。
jdoodle Bash shell 地址:
14、paiza.io
paiza.IO 是一个在线编辑器和编译器,可以在其中立即编写和运行代码。
支持多种语言,可以用于学习编程、抓取网站、编写批处理等;
同样也有专门用来练习 Shell 编程的在线环境。
paiza 地址:
15、Shellcheck
Shellcheck 是一个静态 Bash 语法检查工具,它可以在多种场景下使用,包括在线使用、命令行检查、编辑器配置。
当你在 Linux / Unix 平台下编写 Bash Shell 编译大量代码的时候,常常会花费大量的时间,然而这时你可以通过 Shellcheck 提前知道你所写脚本的语法问题,同样也会给出你相关纠错提示。
除了在线使用之外,还可以通过命令行进行检查,支持基于 Debian、Arch Linux、EPEL、Fedora、FreeBSD、MacOS、OpenSUSE、Windows 等多个操作系统上进行安装检查;
对于 Shellcheck 命令行的安装方式,可以参考 Shellcheck 的 GitHub 库。
脚本案例:
#!/bin/bash
DIRPATH='/tmp/jstack'
CURRENT_TIME=$(date +'%F'-'%H:%M:%S')
if [ ! -d "$DIRPATH" ];then
mkdir "$DIRPATH"
else
rm -rf "$DIRPATH"/*
fi
cd "$DIRPATH"
while true
do
sleep 3600
# 这里需要将inceptor改后自己的java进程名称
pid=$(ps -ef | grep 'inceptor' | grep -v grep | awk '{print $2}')
jstack $pid >> "jstack_${CURRENT_TIME}"
dir_count=$(ls | wc -l)
if [ "$dir_count" -gt 10 ];then
rm -f $(ls -tr | head -1)
fi
done
Shellcheck 检查输出结果:
$ shellcheck myscript
Line 10:
rm -rf "$DIRPATH"/*
^-- SC2115 (warning): Use "${var:?}" to ensure this never expands to /* .
Line 13:
cd "$DIRPATH"
^-- SC2164 (warning): Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
Did you mean: (apply this, apply all SC2164)
cd "$DIRPATH" || exit
Line 19:
pid=$(ps -ef | grep 'inceptor' | grep -v grep | awk '{print $2}')
^-- SC2009 (info): Consider using pgrep instead of grepping ps output.
Line 20:
jstack $pid >> "jstack_${CURRENT_TIME}"
^-- SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean: (apply this, apply all SC2086)
jstack "$pid" >> "jstack_${CURRENT_TIME}"
Line 21:
dir_count=$(ls | wc -l)
^-- SC2012 (info): Use find instead of ls to better handle non-alphanumeric filenames.
Line 23:
rm -f $(ls -tr | head -1)
^-- SC2046 (warning): Quote this to prevent word splitting.
^-- SC2012 (info): Use find instead of ls to better handle non-alphanumeric filenames.
$