Linux 脚本编写 如何编写一个脚本,修改已有文件中的内容 Linux下的shell编程 如何替换文件中的内容

www.zhiqu.org     时间: 2024-06-01

实现的方法如下:

1、第一步,打开命令控制台以找到要编辑的文件,执行命令ls来查看下面的一些文件,在下面有一个index.php文件,如下图所示。

2、其次,完成上述步骤后,执行命令vi
 index.php,如下图所示。

3、接着,完成上述步骤后,如果要修改此文件的内容,请按键盘上的“
 i”键,底部将变为INSERT,就可以对其进行修改,如下图所示。

4、然后,写echo的代码保存 Esc+:+wq,这是保存,按Enter键保存,如下图所示。

5、随后,完成上述步骤后,再次打开文件,将发现刚刚编写的代码已保存在其中,如下图所示。

6、最后,不保存命令是Esc+:+q!,可以灵活运用这些命令。可以使用上述步骤在Linux终端中使用命令来编辑和保存文件,如下图所示。这样,问题就解决了。



说明:将以下脚本拷贝到vi中,保存,修改权限执行,得到你想要的结果。

#!/bin/bash
cd /etc/named
cp honey.com.zone /tmp/honey.com.zone.bk
awk '/^@ IN NS nsl.honey.com./ {print "@ IN NS nsl.ashaur.com";next} \
/^www IN A 192.168.1.7/ {print "www IN A 192.168.1.6";next} \
{print}' honey.com.zone >/tmp/honey.com.zone.tmp
cp /tmp/honey.com.zone.tmp /etc/named/honey.com.zone

echo $1
sed "s/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/${1}/" test.data

test.data 就是你的文件。用正则表达式匹配到ip地址,然后用命令行的输入替换。
不过问题是如果文件中有多个,还是挺麻烦的。还是用强大的脚本比较好。

另外,替换后还要通过临时文件替换回原文件。不能直接覆盖

首先你得知道什么是脚本,linux脚本编写很简单,只要遵循循序渐进的步奏来写就OK了,比如说你要写一个系统更新和安装语言编译的脚本,如下:
#!/bin/bash

####---- global variables ----begin####
echo "will be installed, wait ..."
sed -i "s;alias cp;#alias cp;" ~/.bashrc
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
yum install ntpdate -y
/usr/sbin/ntpdate asia.pool.ntp.org >> /var/log/ntpdate.log
setenforce 0
service iptables stop
chkconfig iptables off
yum update -y
yum install gcc gcc-c++ libxml2-devel ncurses-devel openssl-devel make telnet vixie-cron autoconf gd gd-devel ntpdate wget pcre-devel python-devel python-setuptools libzip libzip-devel libjpeg* freetype* -y
easy_install pip
echo "Congratulations, the installation is over"

首先你得知道什么是脚本,linux脚本编写很简单,只要遵循循序渐进的步奏来写就OK了,比如说你要写一个系统更新和安装语言编译的脚本,如下:
#!/bin/bash

####---- global variables ----begin####
echo "will be installed, wait ..."
sed -i "s;alias cp;#alias cp;" ~/.bashrc
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
yum install ntpdate -y
/usr/sbin/ntpdate asia.pool.ntp.org >> /var/log/ntpdate.log
setenforce 0
service iptables stop
chkconfig iptables off
yum update -y
yum install gcc gcc-c++ libxml2-devel ncurses-devel openssl-devel make telnet vixie-cron autoconf gd gd-devel ntpdate wget pcre-devel python-devel python-setuptools libzip libzip-devel libjpeg* freetype* -y
easy_install pip
echo "Congratulations, the installation is over"

如何在shell脚本中修改添加替换指定文件中的内容~

1、启动Linux系统,用ssh工具连上Linux系统。

2、bash自带了一些调试选项。

3、在脚本启动时添加调试选项。来调试debug.sh。

4、在脚本内添加调试选项,使用set 命令。

5、现在要看debug.sh脚本执行的调试信息,就不需要使用bash -x ./debug.sh执行了。

6、在脚本开头添加-xv选项。

7、同样现在执行./debug.sh,也可打印出调试信息。

注意事项:
shell脚本在计算机科学中,是指“为使用者提供操作界面”的软件(命令解析器)。类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

可以这样做:
方法1:sed -i 's/被替换的内容/要替换成的内容/' file
方法2:sed 's/被替换的内容/要替换成的内容/g' file > file.out;mv file.out file。

扩展资料:
Shell编程的常用技巧:
一、自动补齐:在linux中对于命令或路径,可以TAB键进行自动补全,以下事项需要注意:
1、只存在一个该输入字符开头的命令或路径,此时自动补全;
2、存在多个该输入字符开头的命令或路径,此时第一次点击TAB键无效,此时再次点击TAB会罗列出所有该字符开头的命令或路径,继续输入直到仅仅剩一个时自动补全;
3、如果命令已经是完整的,TAB键则是本来的移动功能;而路径的话要看命令自身的行为决定后续动作。
二、历史命令
1、history命令可以显示历史执行过的命令;
2、使用!+序号执行该序号对应的命令;
3、使用!+字符执行该字符开头的最后一次执行的指令。
三、命令别名
1、实现别名:alias ddd="df -Th";
2、删除别名:unalias ddd;
3、显示所有别名命令列表:alias;
4、存放位置:~/.bashrc (加入该文件后,重启后不会消失)。
四、重定向
1、重定向标准输入:< 命令接收输入的途径由键盘改为文件;
2、重定向标准输出:> 将命令的执行结果输出到指定文件,而不是直接显示到屏幕;
3、重定向标准输出:>> 将命令的执行结果追加输出到指定文件;
4、重定向标准错误:2> 清除指定文件的内容,并把标准错误信息保存到指定文件;
5、重定向标准错误:2>> 标准错误信息追加到指定文件;
6、重定向标准输出和标准错误:&> 将标准输出、标准错误信息全部保存到指定文件,而不是直接显示在屏幕上。


#曾征临# linux如何新建一个文件,且在里面写脚本? -
(18450859302): 直接在终端里vi 路径名/文件名 编写完保存即可 或者你想直接新建一个 touch 路径名/文件名 然后再用 vi打开编辑

#曾征临# 如何编辑一个linux 的shell脚本,实现以下功能? -
(18450859302): 脚本内容#!/bin/bash mkdir -p /var/run/fruinfo/ echo $1 > /var/run/fruinfo/LCHAS mkdir -p /var/run/frus/ echo $2 > /var/run/frus/slot 假设文件名a.sh 执行时使用./a.sh 1 2 就可实现你要求的功能

#曾征临# linux中如何生成脚本文件 -
(18450859302): touch filename chmod u+x filename 然后自己往filename里面写上脚本内容,再执行就可以了.

#曾征临# 怎么用Linux编写脚本?
(18450859302): 1、#!/bin/bashi=1j=1s=0while [ $i -lt 10 ]dolet j*=ilet s+=j((++i))doneecho "1!+2!+3!+...+10!=$s"2、#!/bin/bashif [ "$1" -ge 90 ]; thenecho "A"elif [ "$1" -ge 80 ]; thenecho "B"elif [ "$1" -ge 70 ]; thenecho "C"elif [ "$1" -ge 60 ]; ...

#曾征临# linux环境下shell脚本编写 -
(18450859302): 假设.out文件在/home目录下: 1.在命令行窗口下直接敲 /home/.out 回车就运行了. 2.shell脚本的话,如下: #!/bin/bash /home/.out =========================================== 要求不高的话,可以看《linux就该这么学》或者《鸟哥linux私房菜》中专门讲shell脚本的那章,很快能入门. 系统一些的学法,可以看《linux命令行和shell脚本编程宝典》,里面关于基础的、高级的用法都有讲到,很完整. =========================================== 不知道我对你问题的理解对不对头.:)

#曾征临# Linux下编写一脚本,实现本目录下文件的批量复制. -
(18450859302): 脚本其实就是一些命令通过一定的结构组织起来的. 比如写个copy.sh脚本,内容如下: #!/bin/sh cp -a $1/* $2 然后给这个脚本执行权限 chmod a+x copy.sh 使用的时候 ./copy.sh from dest 就把from目录的内容全部复制到dest目录了.

#曾征临# 怎样把文本写的脚本在Linux下运行 -
(18450859302): 首先,用ssh或者telnet远程登陆linux,然后touch 一个脚本名(脚本以“.sh”为后缀),然后vi编辑这个脚本,把在文本写好的脚本内容复制黏贴到这个脚本中(vi的编辑,进到里面后,按“i”是输入,等黏贴完后按一下"esc键"然后按":"输入“wq”,这样就保存退出了.运行方法是"sh 刚才新建的脚本名".关于这个linux系统的学习,我一直看刘遄老师的书籍《linux就该这么学》.

#曾征临# 怎样编写Linux shell script -
(18450859302): Linux Shell Scripting Tutorial (LSST) v1.05r3 的几个章节,但因为是英文的所以这里把它翻译下,也是自己加深印象.好了直接进入主题. a.首先用任何的编译器(vi,vim,kwrite,....)编写一个shell script; b.然后按照下面的方法给你编译的shell ...

#曾征临# linux怎么写复制脚本? -
(18450859302): 列出文件夹下所有的文件名和更改日期,写入一个文件;写个脚本列出所有文件和更改日期,跟前面的文件比较,看多出哪些,执行复制,把新的列表写入那个文件;用cron定时执行这个脚本.

#曾征临# LINUX如果要编写一段脚本程序,该怎样使用Vi?(至少要写出Vi的启动和退出,运行脚本方法) -
(18450859302): vi test.sh(启动vi) #!/bin/bash echo 123 :wq(这个地方要先按ESC,再输入,表示关闭vi) sh test.sh(这个地方执行刚刚写的脚本,输出123)