linux下怎么写脚本(Linux如何编写shell脚本)
1.Linux如何编写shell脚本
一般以
#!/bin/sh
开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了。Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序。
以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构)。
当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用
sh ./file.sh
方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他)。
建议阅读linux相关书籍 比如说《linux就该这么学》。
2.linux下如何写个SHELL脚本,每天执行这么几句命令:
每天自动执行肯定是要用一个crontab的
脚本可以这样写:
#!/bin/bash
PRO=ps x|grep p|grep -v grep|awk '{print $1}'
kill -9 $PRO
service mand | tee outfile basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin head file: 打印文本文件开头几行 tail file : 打印文本文件末尾几行 sed: Sed是一个基本的查找替换程序。
可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。
不要和shell中的通配符相混淆。比如:将linuxfocus 替换为 LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file awk: awk 用来从文本文件中提取字段。
缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F, '{print $1 "," $3 }'这里我们使用,作为字段分割符,同时打印第一个和第三个字段。
如果该文件内容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令输出结果为:Adam Bor, IndiaKerry 。
linux怎么写python
1.linux python 脚本怎么写
有两种方式:
1、直接使用python xxxx.py执行。其中python可以写成python的绝对路径。使用which python进行查询。
2、在文件的头部(第一行)写上#!/usr/bin/python2.7,这个地方使用python的绝对路径,就是上面用which python查询来的结果。然后在外面就可以使用./xxx.py执行了。
因为在linux中,python啊shell这些程序都是普通的文本格式,都需要一种程序去解释执行它。要么调用的时候指定,要么在文件头指定。
2.如何用Python写Linux命令
首先, 创建一个文件, 并给这个文件起一个名字, 该名字就是最后的命令, 例如add. 注意, 这个文件名字不必以py结尾. 然后给这个文件运行权限, 如下:
然后, 打开刚刚创建的文件, 将下面的代码写入头两行. 其中第一行说明这个文件由python解释器来运行, 第二行指定文件的编码.
之后, 导入标准模块argparse.
导入模块之后, 你可以写任何你想要做的功能, 不过要将功能封装成模块, 而不是直接运行, 这是出于良好的编程实践. 举个例子:
在文件的最下面, 解析命令行参数, 并调用上面写好的功能模块
最后, 保存退出. 在命令行里面运行这个文件,如下
如何用Python写Linux命令?
3.如何用Python写Linux命令
首先, 创建一个文件, 并给这个文件起一个名字, 该名字就是最后的命令, 例如add. 注意, 这个文件名字不必以py结尾. 然后给这个文件运行权限, 如下:
然后, 打开刚刚创建的文件, 将下面的代码写入头两行. 其中第一行说明这个文件由python解释器来运行, 第二行指定文件的编码.
之后, 导入标准模块argparse.
导入模块之后, 你可以写任何你想要做的功能, 不过要将功能封装成模块, 而不是直接运行, 这是出于良好的编程实践. 举个例子:
在文件的最下面, 解析命令行参数, 并调用上面写好的功能模块
最后, 保存退出. 在命令行里面运行这个文件,如下
如何用Python写Linux命令?
linux启动脚本怎么写
1.linux启动脚本如何写
第1种:直接写入 rc.local 文件 如:echo " ls -la >/tmp/a.txt " >>/etc/rc.local(这种是直接把命令写入启动文件rc.local中,当然也可以引申为 将命令直接写入到sh文件,再加上执行权限,将这个全路径文件名写入rc.local也一样) 第2种:先使用runlevel 查看正常启动所运行的级别上,再在/etc/rc*.d(星号代表运行级别,各系统可能存在差异)的目录中新加入(不是写入)启动文件以S开头的文件。
这种方法稍稍复杂点。
2.linux启动脚本如何写
inittab是很多linux版本的启动脚本。
Linux在完成核内引导以后,就开始运行init程序,它的进程号是1,是所有其他进程的起点。init需要读取/etc/inittab,该文件告诉init在它的每个运行级别上需要做哪些事情。
init共定义了七个运行级(run level),分别是什么?# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # - 关闭计算机,安全关闭电源 # 1 - Single user mode # - 进入单用户维护模式,卸下除root以外的所有文件系统并杀死所有用户进程 # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # - 多用户模式,无网络连接 # 3 - Full multiuser mode # - 多用户模式,并以文本方式作为登陆方式 # 4 - unused # 5 - X11 # - 多用户模式,并以图形方式作为登陆方式 # 6 - reboot (Do NOT set initdefault to this) # - 停止linux系统,并按照/etc/inittab默认的登记项重新引导系统通常在/etc/inittab的开头就定义了系统默认启动到的级别,如:id:3:initdefault:id - 用来定义缺省的init运行的级别3 - 默认的级别为此 (Full multiuser mode)initdefault - 是关键字,表示默认的级别。系统管理员可以通过修改这条语句方便地修改默认的运行级别。
在机器引导时,init从运行级0开始,一级一级往上运行到在/etc/inittab中所设置的默认运行级别。为了完成在每一对相邻运行级别之间的过渡,init运行在/etc/inittab中为这种过渡而说明的一些操作。
当机器关闭时,以相反的顺序执行同样的处理过程。既然之前指定的默认运行级别是3,那么init就要执行/etc/rc.d/rc3.d目录中的脚本。
/etc/rc.d/rcN.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
我们可以看到/etc/rc.d/rc5.d/中的 rc启动脚本通常是K或S开头的链接文件,对于以以S开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。
这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。下面讲下几个特殊的linux.对于arch:以我机子上的arch linux为例,inittab如下:[sai@myhost etc]$ cat inittab ## /etc/inittab## Runlevels:# 0 Halt# 1(S) Single-user# 2 Not used# 3 Multi-user# 4 Not used# 5 X11# 6 Reboot## Only one of the following two lines can be uncommented!# Boot to console#id:3:initdefault:# Boot to X11id:5:initdefault:rc::sysinit:/etc/rc.sysinit //第1个启动脚本rs:S1:wait:/etc/rc.single //当以S和1运行级启动时,rs为代号,wait为行为描述,下同rm:2345:wait:/etc/rc.multi //当以2-5运行级启动时rh:06:wait:/etc/rc.shutdown //6运行级启动时su:S:wait:/sbin/sulogin -p //S运行级启动时# -8 options fixes umlauts problem on loginc1:2345:respawn:/sbin/agetty -8 38400 tty1 linuxc2:2345:respawn:/sbin/agetty -8 38400 tty2 linuxc3:2345:respawn:/sbin/agetty -8 38400 tty3 linuxc4:2345:respawn:/sbin/agetty -8 38400 tty4 linuxc5:2345:respawn:/sbin/agetty -8 38400 tty5 linuxc6:2345:respawn:/sbin/agetty -8 38400 tty6 linuxca::ctrlaltdel:/sbin/shutdown -t3 -r now# Example lines for starting a login managerx:5:respawn:/usr/bin/xdm -nodaemon#x:5:respawn:/usr/sbin/gdm -nodaemon#x:5:respawn:/usr/bin/kdm -nodaemon#x:5:respawn:/usr/bin/slim >& /dev/null# End of file由id:5:initdefault:看出默认运行级别为5。
arch并没有提供rcN.d之类的目录,但是我们由这一句rm:2345:wait:/etc/rc.multi看到会执行/etc/rc.multi/rc.multi脚本。内容如下:[sai@myhost etc]$ cat rc.multi #!/bin/bash## /etc/rc.multi#. /etc/rc.conf. /etc/rc.d/functions# Load sysctl variables if sysctl.conf is present[ -r /etc/sysctl.conf ] && /sbin/sysctl -q -p &>/dev/null# Start daemonsfor daemon in "${DAEMONS[@]}"; do if [ "$daemon" = "${daemon#!}" ]; then if [ "$daemon" = "${daemon#@}" ]; then start_daemon $daemon else start_daemon_bkgd ${daemon:1} fi fidoneif [ -x /etc/rc.local ]; then /etc/rc.localfi# vim: set ts=2 noet:会执行/etc/rc.conf和/etc/rc.d/functions,前者是arch用户最熟悉的,后者看看代码很长,也是一些启动设置。
上面我们看到会执行/etc/rc.local,这个也是一个启动脚本,用户常加入自定义脚本在里面。/etc/rc.conf里面的服务启动都是相应在/etc/rc.d/目录下当脚本,arch上并没有链接到/etc/init.d目录下,因为arch根本没有/etc/init.d这个目录对于ubuntu:参考文档ubuntu中inittab不见了,而变成了upstart机制,启动脚本改成了/etc/event.d/rc-default,内容如下:start on stopped rcSscript runlevel --reboot || true if grep -q -w -- "-s\|single\|S" /proc/cmdline; then telinit S elif [ -r /etc/inittab ]; then RL="$(sed -n -e "/^id:[0-9]*:initdefault:/{s/^id://;s/:.*//;p}" /。
3.如何写一个linux脚本启动程序
#!/bin/bash
# The next lines are for chkconfig on RedHat systems.
# chkconfig: 35 98 02
# description: Starts and stops xxx Server
# The next lines are for chkconfig on SuSE systems.
# /etc/init.d/xxx
#
### BEGIN INIT INFO
# Provides: xxx
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start: 2 3 5
# Default-Stop: 0 6
# Short-Description: Starts and stops xxx Server
# Description: Starts and stops xxx Server
### END INIT INFO
免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好
4.linux系统开机启动自己写的脚本
系统是redhat吗?如果是redhat,那么以上写法至少没有错,不过有2点需要注意:
1、autorun.sh是一次性运行,还是常驻内存?如果是常驻内存,建议改为:
cd /home/guest/myproject
(./autorun.sh &)
2、autorun.sh里面的内容是具体干什么?是不是依赖于其他某些库或配置文件?
3、autorun.sh文件前面有#!/bin/sh吗?
linxu redhat的启动方式和执行次序是:
加载内核 执行init程序 /etc/rc.d/rc.sysinit # 由init执行的第一个脚本 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 /etc/rc.d/rc.local #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中) /sbin/mingetty # 等待用户登录在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括: 调入keymap以及系统字体 启动swapping 设置主机名 设置NIS域名 检查(fsck)并mount文件系统 打开quota 装载声卡模块 设置系统时钟 等等。/etc/rc.d/rc则根据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。凡是以Kxx开头的,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx从小到大来执行。(其中xx是数字、表示的是启动顺序)例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用/etc/rc.d/rc3.d/下的脚本。值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。至此,LINUX的启动结束。希望能够帮助到你!
5.linux判断某服务是否启动脚本怎么写
用ps命令结合grep命令查找该服务名是否存在即可达到效果:
svc="sendmail"
if ps -ef | grep $svc | egrep -v grep >/dev/null
then
echo "$svc is started!"
else
echo "$svc not found!"
fi说明:
ps -ef : 显示当前所有在运行的进程
|:管道,即其前面命令的的输出,作为后面命令的输入
grep service_name : 在输出信息中,查找service_name数据行
egrep -v grep: 不显示grep查找命令本身
6.linux开机启动脚本
需要自己写一个脚本脚本内容是一个死循环,里面包含查询进程的命令ps,让后grep出你的进程如果发现你的进程就认为启动成功,没发现就一直等待。
脚本例子,监控mysqls_port=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`if [ "$s_port" == "3306" ]; then echo " mysql is running [`date '+%F %T'`]" echo $s_logfieelse echo " mysql is down try start [`date '+%F %T'`]" > $s_logfie_err $s_mysqldir/share/mysql/mysql.server restart --user=root sleep 10 s_port=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'` if [ "$s_port" == "3306" ];then echo " mysql start ok [`date '+%F %T'`]" else echo " mysql start fail [`date '+%F %T'`]" fifi把这个脚本用crontab间隔一定时间调用一次,比如5分钟,就ok了。
7.linux开机启动脚本
需要自己写一个脚本
脚本内容是
一个死循环,里面包含查询进程的命令ps,让后grep出你的进程
如果发现你的进程就认为启动成功,没发现就一直等待。
脚本例子,监控mysql
s_port=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
if [ "$s_port" == "3306" ]; then
echo " mysql is running [`date '+%F %T'`]"
echo $s_logfie
else
echo " mysql is down try start [`date '+%F %T'`]" > $s_logfie_err
$s_mysqldir/share/mysql/mysql.server restart --user=root
sleep 10
s_port=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
if [ "$s_port" == "3306" ];then
echo " mysql start ok [`date '+%F %T'`]"
else
echo " mysql start fail [`date '+%F %T'`]"
fi
fi
把这个脚本用crontab间隔一定时间调用一次,比如5分钟,就ok了
linux怎么写java
1. linux下如何编写java程序
使用Eclipse吧安装方法在Red Hat Linux中安装JDK和Eclipse的方法补充:是的,JDK是Java的开发环境,有了它才能开发Java程序。
同时,JRE是Java运行环境,有了JRE,才能运行Java程序。Eclipse是用Java开发的软件,所以,需要JRE支持。
而Eclipse又可以用来开发Java程序,所以也需要JDK。
2. linux下如何编写java程序
使用Eclipse吧
安装方法
在Red Hat Linux中安装JDK和Eclipse的方法
补充:
是的,JDK是Java的开发环境,有了它才能开发Java程序。同时,JRE是Java运行环境,有了JRE,才能运行Java程序。Eclipse是用Java开发的软件,所以,需要JRE支持。而Eclipse又可以用来开发Java程序,所以也需要JDK
3. LINUX下写JAVA程序的结构是怎样的
LinuX肯定是支持JAVA的,用版本稍高一点的,我的是红帽子12.0的。程序结构和WIN下是一样的,
import java.……;
……;
public class XXX{
……;
}
只是WIN下多用记事本等来编写代码,而 LinuX下没有记事本,可以用它自带的文本编辑器。然后根据设置的jdk环境来编译和运行程序。我的LinuX自带的jre是1.4的,所以你要设置一下自己的最新版本的jre配置,才好运行applet。一般是firefox的浏览器,进入/usr/lib/fire的文件夹/extensions
在次输入以下命令创建连接
lin -s (你的java路径)/jre/plugini386/ns7-gcc29/libjavaplugin_oji.so
如果你的firefox是用gcc2.9编译的就使用ns7-gcc29,否则就用另一个文件。完了重新打开浏览器,在“工具”下看到java控制台,就ok了。
4. linux系统中如何编写java代码
首先,你需要一个文本编辑器,在 Linux 上的话 vim emacs, gedit 等都可以。
然后,需要一个 JDK,Linux 上有 openjdk 和 Oracle 的 jdk 两种可选。openjdk 一般用各
Linux 发行版相应的软件包管理软件就可安装。Oracle 的可以到官网上下载 .rpm 格式的软件包安装或下载源码编译安装。
最后,用文本编辑器编写代码。用 javac 文件名 编译代码,java 类名 运行。
5. linux 中怎么设置java
1.首先要去下载好JDK,Java SE 8的官方网址是根据自己的系统版本来选择是要使用32位版还是64位版。
Linux提供了两种安装方式一个是.rpm,另一个是.tar.gz,我所使用的是.tar.gz。在下载前不要忘了选择Accept License Agreement。
2.可以使用下面的命令来查看自己的系统是32位还是64位getconf LONG_BIT3.接下来我们对下载的文件进行解压tar -zxvf jdk-8u102-linux-x64.tar.gz4.然后我们来新建一个目录,并将解压好的文件移动过去mkdir /usr/javamv ./jdk1.8.0_102 /usr/java5.然后我们来设置环境变量,这里我们需要修改/etc/profile文件先用vim打开/etc/profile文件vim /etc/profile6.在文件最后添加下面的内容JAVA_HOME=/usr/java/jdk1.8.0_102export JRE_HOME=/usr/java/jdk1.8.0_102/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH其中的jdk1.8.0_102请根据自己的实际文件名作出更改添加完成后,保存并退出。最后一步便是重启计算机。
reboot计算机重启后我们可以在终端中输入java来检测是否配置成功java如果配置成功便会显示提示信息用法: java [-options] class [args。](执行类)或 java [-options] -jar jarfile [args。
](执行 jar 文件)其中选项包括:-d32 使用 32 位数据模型 (如果可用)-d64 使用 64 位数据模型 (如果可用)-server 选择 "server" VM默认 VM 是 server,因为您是在服务器类计算机上运行。-cp <目录和 zip/jar 文件的类搜索路径>-classpath <目录和 zip/jar 文件的类搜索路径>用 : 分隔的目录, JAR 档案和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>设置系统属性-verbose:[class|gc|jni]启用详细输出-version 输出产品版本并退出-version:<值>警告: 此功能已过时, 将在未来发行版中删除。需要指定的版本才能运行-showversion 输出产品版本并继续-jre-restrict-search | -no-jre-restrict-search警告: 此功能已过时, 将在未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE-? -help 输出此帮助消息-X 输出非标准选项的帮助-ea[:。|:
|:
|:
6. 在linux系统中怎么执行一个java程序
在linux下使用命令行编译java文件
在linux下使用命令行编译java文件
1: 只是独立的一个java文件
编译生成test.class文件 : javac test.java
运行: java test
2: 在这个特定包中的一个java文件
编译生成*.class文件:javac packageName.* (此命令必须是在该文件包所在的路径,而不是文件所在的路径)
运行: java packageName.* (同上)
3: 运行时需要某个*.jar文件的支持,如连接DB需要相应的JDBC驱动
编译生成*.class文件 :不同情况与上1,2点相同
运行时:java -cp .:../lib/mysql.jar packageName.* (其中mysql.jar就是DB的JDBC驱动)
7. linux 怎么执行java的main方法
首先 JAVA编译器不是JAVA写的,是C写好后的可执行文件 所以编译不需要用java类
其次 import导入api,在编译期间会将api所包含的代码加入到你的代码中,所以说,class字节码文件包含了你自己写的代码以及api的代码。
至于最后一个问题,你是指类加载器么? 这里说明一点,编译好的程序可不止是class文件的,还包含了类的关联等信息,main方法的入口也已经标明。 至于单独执行class文件那与执行整个程序不同,一个文件会直接在当前文件中找main方法。 类加载器是java写的 你搜索下类加载器看看相关资料就知道了
8. 如何在linux上运行java程序
直接与JDK在Linux下Java程序开发,你需要三样东西:1,文本编辑器,你可以选择VIM,但考虑到Windows的习惯,建议用gedit
2。编译器,它是javac的
3解释器的程序,它是Java
到Ubuntu为例:内容
$ gedit中Hello.java
Hello.java可能因此:
---
公共类你好{
公共静态无效的主要(字串[] args){
的System.out.println(“HelloWorld”的);
}}
---
$ LS
Hello.java
$的javac Hello.java
.
BR>$ java的你好
的Helloworld
以上,而在windows基本相同。
中国我觉得你的问题可能是如何安装的JDK。 1.在
很多方法,你可以根据JDK的Linux二进制版本下载到太阳的主页,然后才能进行
$存取权限chmod a + X JDK-XXX-xxx.bin

linux怎么写脚本
1. Linux如何编写shell脚本
一般以#!/bin/sh开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了。
Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序。以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构)。
当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用sh ./file.sh方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他)。
2. Linux如何编写shell脚本
一般以
#!/bin/sh
开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了。Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序。
以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构)。
当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用
sh ./file.sh
方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他)。
3. 这个Linux脚本怎么写
我用bash脚本写了如下内容,将一下内容复制至文件中,命名为myrename.
#! /bin/bash
if [ -z $1 ]; then
echo "usage: myrename filename [-N]."
exit 1
fi
if [ ! -e $1 ];then
echo "file $1 does not exists."
else
oldfilename=$1
newfilename=$1
filename=${newfilename%.*}
filename=${filename##*/}
suffix=${newfilename##*.}
#判断是否有后缀名
if [ $suffix = $oldfilename ]; then
newfilename=$filename`date "+%y%m%d%H%M"`
else
suffix=.$suffix
newfilename=$filename`date "+%y%m%d%H%M"`$suffix
fi
mv $oldfilename ./$newfilename
fi
运行时首先改编权限,即chmod 755 myrename
然后./myrename 某个文件名
这个脚本将重命名的文件放在当前目录中,如若要放在输入文件的目录中,你自己修改一下就行,相信你看的懂,希望我的回答能让你满意
4. Linux简单脚本编写
2、
#!/bin/bash
while read LINE
do
ass="$ass$LINE"
case $LINE in
EOF) exit ;;
esac
echo "$ass"
done
4、
#!/bin/bash
_type1=`file $1 | cut -d" " -f2-`
_type2=`file $2 | cut -d" " -f2-`
_time1=`ls -l $1 | awk '{print $6,$7,$8}'`
_time2=`ls -l $2 | awk '{print $6,$7,$8}'`
test -f $1 && test -f $2 && [ "${_type1}" = "${_type2}" ] && find -perm 644 | grep -E "$1|$2" >/dev/null 2>&1
if [ $? = 0 ];then
if test $1 -nt $2 ; then
cp $1 /tmp && echo "Copy is ok"
fi
if test $2 -nt $1 ; then
cp $2 /tmp && echo "Copy is ok"
fi
if [ "${_time1}" = "${_time2}" ];then
echo "The time of two files is as well."
fi
else
echo "File is different."
fi
5. 这个Linux脚本怎么写
我用bash脚本写了如下内容,将一下内容复制至文件中,命名为myrename.#! /bin/bashif [ -z $1 ]; then echo "usage: myrename filename [-N]." exit 1fiif [ ! -e $1 ];then echo "file $1 does not exists."else oldfilename=$1 newfilename=$1 filename=${newfilename%.*} filename=${filename##*/} suffix=${newfilename##*.}#判断是否有后缀名 if [ $suffix = $oldfilename ]; then newfilename=$filename`date "+%y%m%d%H%M"` else suffix=.$suffix newfilename=$filename`date "+%y%m%d%H%M"`$suffix fi mv $oldfilename ./$newfilenamefi运行时首先改编权限,即chmod 755 myrename然后./myrename 某个文件名这个脚本将重命名的文件放在当前目录中,如若要放在输入文件的目录中,你自己修改一下就行,相信你看的懂,希望我的回答能让你满意。
6. 怎么用Linux编写脚本
1、
#!/bin/bash
i=1
j=1
s=0
while [ $i -lt 10 ]
do
let j*=i
let s+=j
((++i))
done
echo "1!+2!+3!+。+10!=$s"
2、
#!/bin/bash
if [ "$1" -ge 90 ]; then
echo "A"
elif [ "$1" -ge 80 ]; then
echo "B"
elif [ "$1" -ge 70 ]; then
echo "C"
elif [ "$1" -ge 60 ]; then
echo "D"
else
echo "E"
fi
3、
#!/bin/bash
a=($@)
for ((i=0;i<${#a[@]}; ++i)); do
k=$i
for ((j=i+1; j<${#a[@]}; ++j)); do
if [ ${a[j]} -lt ${a[k]} ]; then
k=$j
fi
done
tmp=${a[i]}
a[i]=${a[k]}
a[k]=$tmp
echo -n "${a[i]} "
done
echo
linux怎么写文件
1. linux如何用dd命令读写引导区文件
备份MBR,linux下使用如下命令: # dd if=/dev/hda of=/root/linux.bin bs=512 count=1 这里注意使用if=/dev/hda备份MBR中数据,如果grub安装具体某个分区,则要自己选择了。
写入mbr: dd if=/mnt/windows/linux.lnx of=/dev/hda bs=512 count=1 备份之后linux.bin文件可以复制到Windows下,备份一份,另一份复制到C盘根目录下。然后修改boot.ini文件,添加如下一行: C:\linux.bin=“Linux“ 这样就可以利用WindowsNT loader来引导linux系统了。
以后恢复和修理linux会更加方便。 如果以上有什么不懂的可以在终端下输入 dd --help查看帮助。
2. linux 下如何编写定时删除某目录下文件的脚本
自己编写crontab设定计划任务就是了, 那个服务就是做这些定时的,自动化的工作用的。
要写什么脚本的,一个命令搞定。给你个手册页自己看吧。
补充回答:运行这个命令:crontab -e此命令将打开一个文本编辑器以添加新任务。* 20 * * * rm -rf /root/febhost/dat/* /root/febhost/log/*用对应的文本编辑器命令保存退出(vi编辑器是按esc后打:wq)如果你对这种方式不熟悉,也可以直接改/etc/crontab,我看到你是要删除root文件夹内的目录,假设你有root权限(因为/etc/crontab所有者是root,并且只有以root身份执行删除命令才能删除root home内的文件),用以下命令打开此文件:vi /etc/crontab将光标移动至最后一行,按o键新开一行输入以下内容:* 20 * * * root rm -rf /root/febhost/dat/* /root/febhost/log/*给你解释下此行的含义吧,前五个以4个空格分隔开的值依次表示:分、时、日、月、周,如果取所有值就是打*号,如果你想周期性的运行一个任务,crontab也接受范围指定,比如说一天中的早8点到晚6点每隔一小时(就是每两小时,将会在8,10,12,14,16,18执行)执行你这个删除命令这样写:* 8-18/2 * * * root rm -rf /root/febhost/dat/* /root/febhost/log/*第一个字段是分钟,取值范围:0-59第二个字段是小时。
取值范围:0-23第三个字段是一个月中的第几天,取值范围:1-31第四个字段是一年中的第几个月,取值范围:1-12最后一个字段是一个星期中的第几天,以星期天开始依次的取值为0~7,0、7都表示星期天。下一个字段是执行该命令的用户身份,这里是root用户,最后一个字段就是定时运行的命令。
3. Linux编程,怎样用C语言创建、读、写文件呀
楼上正解,提供一小例子如下,另外,linux 下C读写文件函数有两种,一个是系统的,还有一个是C函数库的记得,好像是系统的文件句柄(file id)比较简单,然后函数库的那个提供了一个结构体,具体的记不请了。.好长时间没写。
#include <stdio.h>
#include <fcntl.h>
int main(int argc, char **argv)
{
int fid;
char buff[4096];
fid = open(argv[1],O_WRONLY);
if (fid==-1)
{
perror(argv[1]);
exit(1);
}
while (fgets(buff,4096,stdin)!=NULL)
{
write(fid,buff,strlen(buff));
}
close(fid);
}
linux是怎么写的
1. 怎么写LINUX的SHELL
在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了。
每行命令开头处不用就空格也行。
第1部分. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。
在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。
如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 1.1.3 变量 在其他编程语言中您必须使用变量。
在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。
可以使用花括号来告诉shell我们要打印的是num变量: num=2 echo "this is the ${num}nd" 这将打印: this is the 2nd 1.1.4 环境变量 由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。
1.1.5 Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。
常用命令语法及功能 echo "some text": 将文字内容打印在屏幕上 ls: 文件列表 wc –l file :计算文件行数 wc -w file:计算文件中的单词数 wc -c file:计算文件中的字符数 cp sourcefile destfile: 文件拷贝 mv oldname newname : 重命名文件或移动文件 rm file: 删除文件 grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆, 这是两个完全不同的命令 cat file.txt: 输出文件内容到标准输出设备(屏幕)上 file somefile: 得到文件类型 read var: 提示用户输入,并将输入赋值给变量 sort file.txt: 对file.txt文件中的行进行排序 uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3 find: 搜索文件比如:根据文件名搜索find . -name filename -print tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin head file: 打印文本文件开头几行 tail file : 打印文本文件末尾几行 sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将 结果输出到标准输出(屏幕)。
该命令采用正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。
比如:将linuxfocus 替换为LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。
cat file.txt | awk -F, '{print $1 "," $3 }'这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令输出结果为:Adam Bor, IndiaKerry Miller, USA 2) 概念: 管道, 重定向和backtick 这些不是系统命令,但是他们真的很重要。
管道 (|) 将一个命令的输出作为另外一个命令的输入。 grep "hello" file.txt | wc -l 在file.txt中搜索包含有”hello”的行并计算其行数。
在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。
重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。 > 写入文件并覆盖旧文件 >> 加到文件的尾部,保留旧文件内容。
反短斜线 使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。 命令: find . -mtime -1 -type f -print 用来查找过去24小时(-mtime –2则表示过去48小时)内修改过的文件。
如果您想将所有查找到的文件打一个包,则可以使用以下脚本: #!/bin/sh # The ticks are backticks (`) not normal quotes ('): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` 3)流程控制 1.if "if" 表达式 如果条件为真则执行then后面的部分: if 。.; then 。
. elif 。.; then 。
. else 。. fi 大多数情况下,可以使用测试命令来对条件进行测试。
比如可以比较字符串、判断文件。

转载请注明出处育才学习网 » linux怎么写脚本并且运行
育才学习网