当前位置:首页 » 编程软件 » shell脚本ll

shell脚本ll

发布时间: 2023-03-21 16:51:27

① 用shell脚本实现两个文件比较

[root@localhostxly]#lla.txtb.txt
-rw-r--r--1rootroot28Jul1315:00a.txt
-rw-r--r--1rootroot30Jul1315:00b.txt
[root@localhostxly]#cata.txt
hello
123
thisisa.txt
456
[root@localhostxly]#catb.txt
hello!
123
thisisb.txt
4567
[root@localhostxly]#diffa.txtb.txt
1c1
<hello
---
>hello!
3,4c3,4
<thisisa.txt
<456
---
>thisisb.txt
>4567

1c1就是指2个文件第一行不一样
<指的是a.txt
>指的是b.txt

② shell脚本--压缩一个文件里里面的所有log文件

logpath="ur_log_dir_path"
cd
$logpath
while
[
$(df
-Th
|awk
-F'[%
]'
'$NF~/\/$/{print
$(NF-2)}')
-gt
80
];do
let
num++
dir=$(ls
-lt|tail
-$num|head
-1|awk
'{print
$NF}')
cd
$dir
for
file
in
$(ls);do
[[
!
"$file"
=~
'.*\.zip'
]]
&&
gzip
--best
$file
&&
sleep
1
done
done
unset
num
会一直循环到磁盘空间小于80%,然后退出.
dfh的值我匹配的是根分区,如果你的是其他分区的话需要变动一下.

③ 在shell脚本中,比如执行一个命令,在等待3秒后,没有这个命令的结果,就执行下一条,这个怎么写呀

#!/bin/bash

func()
{
wget...
touchfinished
}

func&
sleep3000
if[-ffinished]
then
echo"finished"
else
echo"notfinished"
fi
rm-ffinished

④ 请教一个shell脚本 输出到数组

[root@localhost ~]# ls aa
123 a.py
[root@localhost ~]# a=`ls aa`
[root@localhost ~]# for i in ${a[@]};do echo $i ;done
123
a.py

⑤ shell脚本

Shell脚本基本知识
概述:shell其实是内核与用户之间的一个接口,
shell脚本
如果有一系列经常使用的linux命令,你可以把它们存储在一个文件肿。shenll可以读取这个文件,并执行其中的命令。这样的文件成为脚本文件。
执行shell脚本
要创建一个shell脚本,你要使用任何编辑器比如vi在文本文件中编写他。
为了使用bashshell赖执行脚本magic,其命令是:bashmagic或者./magic
echo命令:
echo“!”
屏幕上就会回显“!”
#符号
用于在shell脚本肿可以包含注解入口
echo“hello”
#thisisacommentline.thiswouldnotproceanyoutput!
echo“world!”
第二行是一个注解的例子。它将被shell忽略,而且不产生任何消息
变量:
可以在任何时间通过简单的赋值来创建。
语法:
<variablename>-<value>
Linux中的所有变量都被当作字符串
引用变量:
$符号用于引用一个变量的内容
variable1=${variable2}
读入值给变量
在执行shell脚本时,shell还允许用户直接从键盘读入一个值给变量,还可以使用read命令来作。
$readfname
本地和全局shell变量
局部变量
当引用shell时,只有创建它的shell能够知道变量的存在
全局变量
称为子shell
shell中创建的变量局部于创建它的shell,除非使用export命令特别指出是全局的。
环境变量:
通过改变这些变量的值,用户能够定制此环境
一些环境变量的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME变量
Linux系统中的每个用户都有一个相关的称作HOME的目录
当一个用户登录后,进入相应的HOME的目录
$echo$HOME
PATH变量
包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。
PS1变量
PS1(PromptString1)变量包含了shell提示符,$符号
$PS1=“HELLO>”
HELLO>
PS2变量
是为第二个提示符设置值的环境变量
LOGNAME变量
包含用户的注册名字
$echo“${LOGNAME}”
SHLVL变量
该变量包含当前工作的shelllevel
SHELL变量
环境变量存储了用户缺省的shell
env命令
可用来查看所有的已移出的环境变量表和它们各自的值!
命令替换
在单个命令行中使用多个命令的另外一种方法(非Pipes)是通过命令替换
echo“thedatais`date`”
expr命令
用于求之算术表达式。该命令的输出被送到标准输出
$expr4+5
将在屏幕上显示9
算术展开:
你可以在$((…))中括一个表达式,用下面的命令来计算它的值;
$((expression))
example1
编写一个shell脚本用于计算呼叫中心未应答的询问的数量。该脚本应该接受一天那所报告的询问的总数和应答的询问的数量,以便计算未应答的询问的数量。
所有未应答的询问总数=所有询问的总数-应答的询问的数量
<!--[if!supportLists]-->※<!--[endif]-->※※※※※※※※※※※※※※※※※※※※※※※
条件执行
test和[]
求值表达式,并返回true(0)或false()
数值测试:
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真
if构造
Linuxshell提供了循环和判定的构造,可以在shell脚本中使用
算术测试
结合if构造,它可以用于测试变量的数字值
串测试
test命令也可以用于字符串
=等于则为真
!=不相等则为真
-z字符串长度为零则为真
-n字符串长度不为零则为真
文件测试
test命令也可以用于检查文件的状态
-e文件存在则为真
-r文件存在并且可读则为真
-w文件存在并且可写则为真
-x文件存在并且可执行则为真
-s文件存在并且至少有一个字符则为真
-d文件存在并且为目录则为真
-f文件存在并且为普通文件则为真
-c文件存在并且为字符型文件则为真
-b文件存在并且为块特殊文件则为真
-a并且-o或者!非
exit命令
用于终止shell脚本的执行并返回到$提示符下
case。。。esac
shell脚本中使用的这个构造依据变量的值而执行一组特定指令
当变量的值和其中的一个值匹配的时候,就执行写在该值下的一组命令。
example3
迭代
while构造
while<条件>
do
<命令(s)>
done
只有条件为真的时候,才能执行do与done之间的命令
until构造
until循环构造的求值模式于while循环相反
until循环将继续执行直到求值的条件为真的时候
for构造
forvariable_namein<list_of_values>
do

done
for循环取一列值作为输入并对循环中每个值执行循环
break和contineu命令
同其他语言中的用法
example4
控制进程的执行
请求后台处理
用于请求后台进程的符号是(&)
$wctempfile&
[1]2082
$vinewfile
检查后台进程
ps(进程状态)命令为每个当前的活动的每个进程产生一行入口。
终止后台进程
可用kill,如下所示
kill278
查看完成一个命令所花的时间
你可以使用time命令来查看一个命令从开始到结束所花的时间
timefine/etc–name“passwd”2>/dev/null/dev/null表明忽略错误信息。
管道的介绍
垂直条(|)是管道字符
它只是shell:“|”前面命令的输出作为“|”之后命令的输入发送
ls–l|more
用管道组合命令,功能强大

⑥ Linux里面env bash命令作用是什么

env最常用的功能是查询环境变量,直接输入env即可,例如:

bash是Linux下的命令解释器,目前CentOS,ubuntu,rhce默认都使用bash作为解释器。

⑦ shell脚本输入目录,检测非空,进行循环

写个大概吧
#!/bin/bash
while ;
do
read -p "请输入你要查询的目录,注意需要用绝对路径" a
if [ -d ${a} ]
then echo “目录存在"
num= `ll -a $a | wc -l` %> /dev/仔纳陆null
if [ ${num} -eq 0 ]
then echo "目录为空"
esle read -p "目录非空,是否清空目录,清空请按y,不清空按n" b
if [ "茄滑${b}" == "y" ]
then rm -rf ${a}\/*
fi
fi
else echo "目录念顷不存在"
fi
done

没测试 可能有点小错误 大概是这个样子的

⑧ 如何在shell脚本中调用vim

不知道能不能帮到LZ
新建文件
vi wt

编辑文件,将下面的稿厅梁代码复制到 wt 文件中,并保键运存退伏液出
# Status, 123: success, 0: error
status=123
vi 123.txt
exit $status

注:其中最后一行指定shell脚本的退出状态,123的状态值只做演示
赋予权限
chmod +x wt
ll | grep 'wt'

执行
./wt

查看执行状态

echo $?

⑨ Shell脚本得到文件夹大小

ls -ld 文件夹路径 | awk '{print int($5/1024)}'
或者:
-b 文件夹路径 | awk '{print int($1/1024)}'

跟你上面计算文件大小类似,得到的都是以KB为单位的大小。
如果要以Byte为单位,不要除以1024也不要int取整就是了。

注意:Linux的ext2或ext3文件系统会给目录分配一个inode块(索引节点),用来记录文件信息,所以文件夹的大小不是简单地将其中文件大小累加就能得到的,还包括了这个索引节点的大小。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。

⑩ 再写一个shell脚本的时候,发现了这个怪事,但是在终端用'ls -ll' 是没有问题的,求助!!!

Linux 系统的 SHELL 脚本编程是特别刻板的。哪儿错一点儿都不行。你再仔细检查一下:你的 ls -ll 语句,你必须要使用反引号才行。即:`ls -ll`。你再试一试看看。

那你再仔细蔽烂检查一下在 SHELL 文返裤件中,语句末尾是否有缺少分号的地方?

你再仔细研究一下 bash 循环语句的写法。无论是哪一种 shell 语言(bash、或者是 csh),其语法都是相当严格的。具体的我由于好漏并简久没有编写 shell 程序了,已经有些记不清楚了。

热点内容
不属于编译程序组成的部分是什么 发布:2024-05-05 19:05:34 浏览:612
压缩面食 发布:2024-05-05 18:55:45 浏览:803
linux的gz解压命令 发布:2024-05-05 18:24:13 浏览:311
服务器机柜属于什么辐射 发布:2024-05-05 18:02:10 浏览:336
存储成本计算 发布:2024-05-05 18:02:10 浏览:584
如何把手机改安卓10 发布:2024-05-05 17:39:07 浏览:498
我的世界怎么扩容服务器内存 发布:2024-05-05 17:19:54 浏览:48
java读取文件字符 发布:2024-05-05 17:15:18 浏览:11
三星怎么应用加密 发布:2024-05-05 17:13:18 浏览:152
cad字体在那个文件夹 发布:2024-05-05 17:08:20 浏览:331