shell 删除文件下的* (copy).jpg备份文件
shell编程中, 在for, while循环中为什么不用(), {}
不是没有;
而是因为(), {}做了其他用途:
(): 执行命令组, 注意这个命令组是新开一个子shell中执行, 因此,括号中的变量不能被脚本余下的部分使用.格式随意; 还有其他使用如: $(ls)... array=(a b c d)
{}: 执行命令组, 事实上是创建了一个匿名函数, 但是这个跟()有区别: 大括号不会新开一个 子shell, 仍然是在当前shell中执行的命令组, 所以其中的变量可以为余下的脚本
使用...但是格式严格: 括号内的命令间用分号隔开,最后一个也必须有分号。{}的第一个命令和左括号之间必须要有一个空格
[Sun Dec 06 15:45 ~/Desktop]# A=1;echo $A; (A=2;); echo $A
1
1
[Sun Dec 06 15:46 ~/Desktop]# echo $A
1
[Sun Dec 06 15:46 ~/Desktop]# A=1;echo $A; { A=2; }; echo $A
1
2
[Sun Dec 06 15:47 ~/Desktop]# echo $A
2
[Sun Dec 06 15:47 ~/Desktop]#
basename 和 dirname 分别是/usr/bin/下的 取基本名字和取目录名字 的命令
shell支持" 常量变量" , 如同C语言一样, 推荐大写
shell截取字符串 和 Windows bat中截取字符串的思想是一样的, 只不过 使用的符合不同:
shell 使用的是%% , %, ## , # 来截取. 截取符有两种: #, %: 掌握三点:
1. %%, % 是从前往后截取,
## , # 是从后向前截取
2. 两个截取符表示匹配该方向上的 第一个, 一个截取符表示 匹配该方向上的最后一个.
3. 匹配字符和 *之间的相对位置, 如果是从前往后,则*在匹配字符符的后面, 反之, 如果是从后向前, 则* 在匹配字符的前面.
---------------------------------------------------------------------------------
shell中的替换:
var=${var:+abc}...
var=${var:-abc}....
var=${var:=abc}...
var=${var:? abc}....
处理shell命令中的一些特殊符号的文件/文件夹:
常用的两种方法: 就是显示的指明当前路径: touch ./-abc
或者: 使用使用引号: touch "#123.txt"
shell中的for: 有三种形式
for file in `ls`(集合或命令) ; do
.....
done
第二种形式:
for [ 条件 ] do .... done
第三种形式:
for (( i = 0; i < 10; i++ )) do. ... done
这种形式中, for的书写跟C语言相同, 符合之间不必 加 空格 :
[Sun Dec 06 15:14 ~/Desktop]# for((i=0;i<10;i++)); do echo $i ; done
0
1
2
3
4
5
6
7
8
9
------------------------------------------------------------------
sh 执行脚本, 有一个非常好的参数: -x: 会将命令展开后 , 再执行, 可以看到程序的执行 过程和经过....
关于$IFS???
IFS: internal field separate: 内部域分隔符.默认的系统变量值是: $IFS= '\n\t' ,这样就不好处理包含空格的文件名, 如: "test 1.jpg'
IFS在什么时候起影响? 主要是在shell脚本的for循环中, 当要列出集合中的item时, 默认是以<space空格><tab><newline>为分隔符号的.所以,
如果你要列出的某个条目中包含空格时,就要出错. 这时,要把 IFS修改成只用newline做分隔符合...
oldifs=$IFS
IFS=$'\n'
for.............
IFS=$oldifs
<注意: 虽然ls目录时, 看起来是一个行中列出来的, 实际上每个item还是默认的用\n来分隔的, 所以在for循环中, 直接用for file in `ls`, 只是每个条目内部的空格, 受IFS 的影响>
echo -e?
是指, 当echo后的字符串中出现 \a, \b, \t \n \r时将作为特殊含义的字符, 而不是普通字符. 这里要注意的是, 要得到 \a, 必须是: \\a, 要将
\通过\\ 转义出来.否则是没有效果的.
如果只是一个backslash , 则对后面的字符没有影响: echo abc\a123= abca123
od -Ax -tc file.txt?
od=octal dump, 将文件内容或输入内容 管道, 用不同的进制来表示:
-A : 指定地址进制 address
-t: 指定输出格式的进制: -t o, x, d, c(char..)
[root@localhost ~]# echo -n a|od -Ad -i
[root@localhost ~]# echo -n a|od -Ad -t x
0000000 00000061
0000001
echo $'\ab' 和 echo '\ab' ???
$和后面的引号合在一起, 表示得到一个 \a 的字符, 即反斜杠和后面的字符作为一个整体看待.
这也表明: 要获得一个具有特殊意义的 转义字符, 如: \a, \b, \n, \t ,\r等等, 可以有两种方法, 一是输两个\\a123, 二是: 用$'\n'的格式.
即: $'\n' 就是得到一个 字符: \n, 而不是两个字符: \ , 和 n.
可以用od来看, 就可以清楚地看到所占的字节地址了:
[root@localhost ~]# echo '\n' |od -Ad -t c
0000000 \ n \n (这个是分开了的, \, n 分别占一个字节, 共2个字节)
0000003
[root@localhost ~]# echo $'\n'|od -Ad -t c
0000000 \n \n (\n合起来只占一个字节)
0000002
[root@localhost ~]#
-----------------------------------------------------------------------------
trail: n. 小路/小径; 踪迹, 足迹; 一缕; 动词:: vi. 拖, vt. 跟踪; 尾随
other youngsters(年轻人) are not so lucky.
These programs may lead youngsters a'stray . 迷路的, adv. 误入企图的...
Mark this trail so that travelers(根据语义: 表示复数, 但又不确指) will not go astray.
he was not unlike a hurried animal, deftly pursued by hunter and hound.(猎狗)
the hounds found the trail of the fox.
the truck left a trail of dust. 一股灰尘
sth. trails along behind ....
the boy trailed his parents.
shell 中的字符串包含函数?
shell中本身没有提供函数库, 因此也就没有字符串函数的, 即使要用函数, 也只有自己写.
判断字符串包含的常用方法:
一, 用字符串截取操作: [ ${srcstr:0:2} == $srch ] && echo "included" || echo "not included"
但是这个方法有个缺点,你必须知道srcstr和srch,然后才能比较截取位置和个数, 并且,当srcstr是变化着的时候,也就不行了?
${var:start:length},这个不是函数,而是shell提供的一种字符串操作而已,length不能为负,
二,用grep命令:
echo "$srcstr" | grep -q "$srch" # grep用-q选项,将不输出$srcstr的值...
if [ $? -eq 0 ]; then ..... fi #如果你认为是字符串,最好还是加上双引号, 否则可能出错, 如: 字符串中包含括号(..)等符合时,
#则命令可能会出错.
type?
which 是看当前命令是不是: shell外部的: 独立的命令 :文件, 默认的在 /bin/ , /sbin/....的环境path中搜索.
所以type可以查看 , 当前命令 :是不是外部的独立文件命令: 还是 shell本身的内建命令, 即只有shell才能使用, 而且不是独立的文件...
[root@localhost Desktop]# type cat
cat is /bin/cat
[root@localhost Desktop]# type enable
enable is a shell builtin
shell中的*: 先匹配任意字符, 如果 匹配不到, 则作为一个普通字符"*"来对待,
grep 是用来过滤"行"的, 不是过滤字符的 : 指的是, "包含/的不包含 模式字符 行" 其中-v是指: -v, --invert-match select non-matching lines
shell 删除文件下的* (copy).jpg备份文件的更多相关文章
- 在window上使用 linux shell 删除文件夹递归地
目的 在windows环境下, 整理代码,代码中含有 .svn 文件夹, 此文件夹在所有受控目录下都存在, 需要统一删除. 但是对windows的shell不熟悉,想用linux rm来删除, 如何实 ...
- shell 删除文件过期文件
删除创建时间大于30天的文件 find /archivelog -ctime + | xargs rm -rf -amin n #查找系统中最后N分钟访问的文件 -atime n #查找系统中最后n* ...
- Java File类应用:递归遍历文件夹和递归删除文件
要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在 若要删除正文文件夹,可以在递归 ...
- Centos7下crontab+shell脚本定期自动删除文件
问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任 ...
- Linux shell 只删除目录下所有(不知道文件名字)文件,只删除文件夹
#!/bin/sh RM="rm -rf" function delete_all_dir() { for i in `ls` do if [ -d $i ];then $RM $ ...
- PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink
php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...
- Linux系统下rm删除文件后空间没有释放问题解决办法
一.问题描述 今日收到zabbix监控报警,发现生产环境一台服务器的磁盘空间不足,需要进行处理,登录后发现可利用率不足20%,进行相关查看和处理工作:但是操作删除了一些备份文件和日志信息后,查看空间仍 ...
- linux删除文件夹下除了某一个文件之外的所有文件及find用法
原文: https://www.jb51.net/article/99319.htm 比如一个目录下有1,2,3,4,5这五个文件,现在我需要删除除了2以外的所有文件,那么我可以使用 find . ! ...
- 定时删除文件夹"$1"下最后修改时间大于当前时间"$2"天的文件
shell 脚本: #!/bin/bash now=`date "+%Y-%m-%d_%H:%M:%S"` #获取当前时间 echo "当前时间: " ...
随机推荐
- 浅析C#中的“==”和Equals
1.“==”和Equals两个真的有关联吗? 对于“==”和Equals大多数网友都是这样总结的: “==” 是比较两个变量的值相等. Equals是比较两个变量是否指向同一个对象. 如:这篇文章,并 ...
- windows程序防狼术入门
当初由于一些原因以及兴趣,学习了一段时间软件逆向,对于软件加密解密有了点粗略的了解.而后看到某些同学辛辛苦苦的搞出个软件,自己费心费力去加密,但搞出来后往往能被秒破,实不忍心.今天大概总结下一些基本的 ...
- jquery-ajax-async之浏览器差异
最近的PC项目遇到了一个问题,日志记录程序会在1s内多次发起对首页的请求,一时间没有找到原因. 简单描述一下问题:访问一个首页的时候,由于代码质量不高的原因,访问就连接数据库,但是同时存在的问题是一秒 ...
- 4G时代的抢钱之道
最近最大的事件恐怕就是移动的4G上线了,50元600M起计价,上网速度最高理论到达100Mbps,相当于一秒下载10MB的数据,或者是一分钟下载一张VCD(600M)电影. 当然,对于这样的流量套餐, ...
- Windows Azure 名词定义(Glossary)
Glossary(名词) Definition(定义) Availability Set 可用性组 refers to two or more Virtual Machines deployed ac ...
- NuGet更新引用Dll
第一种 通过 "Add Library Package Reference..." 添加 点击 ‘Add Library Package Reference...’ , 搜索你要添 ...
- 【The final】软件工程实践总结
软件工程就这么告一段落了,竟然有那么一丢丢的舍不得-- 一.为拖延找的种种借口 [首先声明]以下纯粹是个人吐槽,仅作记录以便日后自己可以回顾一下往昔罢了,可以直接忽略,跳到第二大点:我的拖延之 ...
- mysql JDBC URL格式
mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参 ...
- BZOJ-1143&&BZOJ-2718 祭祀river&&毕业旅行 最长反链(Floyed传递闭包+二分图匹配)
蛋蛋安利的双倍经验题 1143: [CTSC2008]祭祀river Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1901 Solved: 951 ...
- BZOJ-1228 E&D 博弈SG+找啊找啊找规律
讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ...