我已经做了很多windows命令shell脚本,但我是linux的新手.有没有什么方法可以编写脚本/自动化以下命令,以便我所要做的就是(在Windows术语中)"运行批处理文件"来完成所有这些操作?以下是我的步骤:
有什么方法可以自动化全部或部分内容?谢谢.
是.一旦你知道它,你就会发现Linux中的脚本与Windows相比是一种乐趣.想象一下(可怕的)命令提示符和(不那么可怕)PowerShell之间的区别,然后将这个差异乘以10,这就是Linux中脚本的好坏程度.
术语是"shell脚本",因为命令处理器(相当于Windows命令提示符)称为"shell".只是为了让生活更有果味,Linux有各种各样的shell.最常见的是sh诸如bash和的变体ash.然而,一些疯狂的人使用csh或者使用tcsh其他语法,这些语法具有令人烦恼的不同语法.
要创建"shell脚本",即批处理文件,只需在顶部创建一个带有此行的文本文件:
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
(或者你的shell的名字是什么).通常,文件名可以结束,.sh或者可能根本没有特殊文件结束.
在文件的其余行中,只列出您要运行的命令,就好像您在普通的Linux终端上键入它们一样.
然后为该文件分配"执行"权限.从命令行,您将使用chmod u+x filename.sh.这意味着为当前用户添加eXexecute权限.
当你开始学习shell中可以做的所有不同的事情时,真正的乐趣就来了.例如,有这样的巧妙的技巧:
my-first-command && my-second-command # only runs my-second-command if my-first-command succeeded
Run Code Online (Sandbox Code Playgroud)
或这个:
my-background-command & # runs my-background-command in the background, so that you can get on with other things
Run Code Online (Sandbox Code Playgroud)
也有很多了不起的小的Linux/UNIX程序,这使得它很容易与其他程序连接在一起的-例如grep,uniq,xargs.
虽然解释了这一切有多棒,但我认为这实际上并不是你需要做的.
您的示例的shell脚本部分归结为:
rm /logs/hr/DV/appserv/JEN*; ls /logs/hr/DV/appserv
Run Code Online (Sandbox Code Playgroud)
我得到了您想要从Windows自动登录以运行这些命令的印象.
我相信在PuTTY中,如果它通过SSH连接,你可以给它一个命令来运行.所以这就是我要做的.
authorized_keys的中.ssh的目录psoftXXX用户.你可以直接复制并粘贴它; 这可能比做任何花哨更容易.请注意,此目录和/或文件可能不存在,在这种情况下,您需要创建它们; 如果文件已经存在,那么一定要将新密钥附加到文件的末尾而不是覆盖它.psoftXXX用户身份自动登录.最后,在PuTTY设置中,您可以指定上面给出的命令行.您可能需要像这样指定它:
/ bin/bash -c"rm/logs/hr/DV/appserv/JEN*; ls/logs/hr/DV/appserv"
请注意,我没有自动化的一个阶段,即在菜单上按1.那是因为我怀疑这个菜单是通过给你一个特殊的默认登录shell来实现的,/bin/bash而不是/something/somewhere/which/shows/a/menu.我希望如果你在PuTTY中指定一个替代命令,那么该设置将被完全忽略,而你将让你的脚本运行.
你可能需要玩一下.祝好运!