首页
学习
活动
专区
圈层
工具
发布

【linux】自主shell编写

01.输出命令行 完成对一个shell 的编写,首先我们需要输出一个自己的命令行 我们可以通过getenv来获取环境变量 const char * GetSserName() { const...cwd = getenv("PWD"); if(cwd == NULL ) return "None"; return cwd; } 后面我们再对路径进行截取 现在完成对命令行输出的编写...检验结果: 04.执行命令 执行命令,我们创建子进程进行程序替换 我们将上面的代码放入一个新函数中,并让上面的过程持续进行: 05.细节修改 我们发现现在,执行cd命令是没有反应的 自定义 shell...putenv(cwd); } 还需要更改的是,系统的shell...只会显示当前路径,而我们自定义的shell会显示绝对路径 #define SkipPath(p) do{ p+= strlen(p)-1; while(*p!

88610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux中编写Shell脚本

    Linux中编写Shell脚本 目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr...当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。...Shell脚本编写规范 Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本。...中常见的算术运算符 Shell 中常见的算术运算命令 双小括号 (()) 数值运算命令的用法 双小括号 (()) 的作用是进行数值运算与数值比较,它的效率很高,用法灵活,是Linux下常用的运算操作符...3、利用 expr 计算字符串的长度 bc 命令的用法 bc 是UNIX/Linux下的计算器,除了作为计算器来使用,还可以作为命令行计算工具使用 交互模式 在shell命令行直接输入 bc 及能进入

    8K10

    初识Linux · 自主Shell编写

    前言: 本文介绍是自主Shell编写,对于shell,即外壳解释程序,我们目前接触到的命令行解释器,有bash,还有SSH,对于今天模拟实现的Shell编写,我们模拟的是bash,以及需要的预备知识前文已经介绍了...,进程的多方面的知识,在自主Shell编写里面比较重要的是进程程序替换,进程终止,进程等待,进程状态什么的,都是自主Shell编写里面的辅助知识罢了。...那么,话不多说,我们直接进入到Shell编写部分。...那么如何保证修饰一下呢? 我们可以将该字符串进行分割,也就是使用指针,将该指针的指向指到最后一个/指向的地方即可。...此时自主shell编写就差不多了。 感谢阅读!

    28810

    Linux下Shellcode编写

    就没有后面什么事情了,所以要想办法消除这些 bad character bad character 列表00\0null0A\n回车换行FF\f换页0D\r回车 消除bad character 来看一下这些...针对这种的 mov eax,0x1,可以使用对寄存器的一部分赋值实现,比如:mov al,0x1 还可以通过 xor rax,rax 先把 rax 置为 0,然后 add rax,0x1 实现 看一下效果...学会了这些基本的消除 bad character 的方法之后来写个真正的 shellcode 试试, 一个可以获得 shell 的 C 语言代码如下 char *const argv[]={"/bin...可以使用 GDB 调试看一下 C 语言程序内存的值(gcc 加上 -g 参数可以直接 b 15 断在代码的第 15 行) Breakpoint 1, main () at 1.c:15 15 bind...了 Reverse TCP shell 这种方法是我们首先在自己的机器上监听一个端口,然后让靶机访问我们,这样不会被防火墙拦截。

    2.7K31

    编写Linux Shell脚本的最佳实践

    代码有注释 注释,显然是一个常识,不过这里还是要再强调一下,这个在shell脚本里尤为重要。因为很多单行的shell命令不是那么浅显易懂,没有注释的话在维护起来会让人尤其的头大。...这里还尤其需要注意一点,就是当我们是在windows下用utf-8编码来写shell脚本的时候,一定要注意这个utf-8是否是有BOM的。...默认情况下windows判断utf-8格式是通过在文件开头加上三个EF BB BF字节来判断的,但是在Linux中默认是无BOM的。...否则,在Linux下运行的时候就会识别到开头的三个字符,从而报一些无法识别命令的错。 当然,对于跨平台写脚本还有一个比较常见的问题就是换行符不同。windows默认是 而unix下是 。...在shell中,我们也有类似的小技巧: #!

    1.5K30

    编写Linux Shell脚本的最佳实践

    代码有注释 注释,显然是一个常识,不过这里还是要再强调一下,这个在shell脚本里尤为重要。因为很多单行的shell命令不是那么浅显易懂,没有注释的话在维护起来会让人尤其的头大。...最少,最少,我们至少得判断下参数的个数吧: 变量和魔数 一般情况下我们会将一些重要的环境变量定义在开头,确保这些变量的存在。...这里还尤其需要注意一点,就是当我们是在windows下用utf-8编码来写shell脚本的时候,一定要注意这个utf-8是否是有BOM的。...默认情况下windows判断utf-8格式是通过在文件开头加上三个EF BB BF字节来判断的,但是在Linux中默认是无BOM的。...否则,在Linux下运行的时候就会识别到开头的三个字符,从而报一些无法识别命令的错。 权限记得加 这一点虽然很小,但是我个人却经常忘记,不加执行权限会导致无法直接执行,有点讨厌。。。

    1K20

    编写Linux Shell脚本的最佳实践

    代码有注释 注释,显然是一个常识,不过这里还是要再强调一下,这个在shell脚本里尤为重要。因为很多单行的shell命令不是那么浅显易懂,没有注释的话在维护起来会让人尤其的头大。...最少,最少,我们至少得判断下参数的个数吧: 变量和魔数 一般情况下我们会将一些重要的环境变量定义在开头,确保这些变量的存在。...这里还尤其需要注意一点,就是当我们是在windows下用utf-8编码来写shell脚本的时候,一定要注意这个utf-8是否是有BOM的。...默认情况下windows判断utf-8格式是通过在文件开头加上三个EF BB BF字节来判断的,但是在Linux中默认是无BOM的。...否则,在Linux下运行的时候就会识别到开头的三个字符,从而报一些无法识别命令的错。 权限记得加 这一点虽然很小,但是我个人却经常忘记,不加执行权限会导致无法直接执行,有点讨厌。。。

    1.4K90

    Linux下反弹Shell方法

    在日常工作中,我们需要得到目标系统的shell。在局域网相对简单,而不在同一局域网或者是异地网络。那么如何让目标直接互通执行相关shell命令呢?...通过本文我们一起来看看Linux如何反弹shell。...实验环境 kali Linux (内外:192.168.5.139) Centos8 (腾讯云:123.6.44.67) 姿势一 bash反弹 首先,使用nc在外网主机上监听端口: nc -lvp 9090...当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符 理解了上面这些知识,下面来解释一下这一条反弹shell的命令, bash -i代表在本地打开一个交互式bash, /dev/tcp.../是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接, >&后面跟上/dev/tcp/ip/port这个文件代表将标准输出和标准错误输出重定向到这个文件

    2.8K30

    企业Linux运维SHELL编写规范 原

    路径规定 为了方便维护人员维护,需要规定两个正式脚本的发布路径和维护人员的测试路径,不要将脚本放到规定路径以外,例如: 1.1 维护人员的测试路径: /opt/tmn/user 该路径用于维护人员编写脚本是的测试路径...,不要将正式使用的定时任务脚本放到该路径 在该路径下创建每个维护人员各自姓名拼音的文件夹: /opt/tmn/user/zhang3 /opt/tmn/user/li4 1.2 正式脚本的发布路径:...编写一个脚本 每套脚本之间路径不要有交叉,将所有用到的脚本全部放在定义目录下 代码尽量简洁,不要啰嗦,注释得当 例如:编写一个给外系统传输网管传送接口数据的脚本 2.1 脚本名称定义 有意义,英文名...每套脚本中用到的shell脚本尽量不要太多,通常每个shell脚本内容100行左右,主脚本名称要以main打头 文件中不要使用tab制表符,要采用4个空格代替 例如:vi main_trans_to_zznode.sh...定时备份 编写好的脚本,要加入定时备份,通常备份的文件存储到另外一台服务器上 4. 待续……

    1.2K60

    linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

    好吧,看看上面的打印,你就知道了,有多个ip,而且在linux上的情况更复杂。这种比较麻烦的情况,被我排除了,我使用了一种新的方法,就是linux上的shell脚本。...语法代码如下: #linux中的shell脚本的学习(so easy) #1.注释 #在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。 #我们真诚地建议您在程序中使用注释。...在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。.../bin/sh #对变量赋值: hw="hello world" # 现在打印变量hw的内容: echo "变量hw的值为:" echo $hw 一下是获取ip的shell脚本代码: #!...然后用java调用,一下是java在linux上调用shell脚本的命令: /** * @see 执行脚本获取linux上的ip * @author Herman.Xiong * @date 2014

    2.9K20
    领券