shell笔记

xargs

xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题[1]。
例如,下面的命令:
本例中xargs将find产生的长串文件列表拆散成多个子串,然后对每个子串调用rm。-print0表示输出以null分隔(-print使用换行);-0表示输入以null分隔。这样要比如下使用find命令效率高的多。

# 删除/path目录下所有的文件(文件夹为-type d)
rm `find /path -type f`
# 如果path目录下文件过多就会因为“参数列表过长”而报错无法执行。但改用xargs以后,问题即获解决。
find /path -type f -print0 | xargs -0 rm

awk

awk if

awk -F: '{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}' /etc/passwd

脚本

基本格式

#!/bin/bash
#用于释放内存的脚本
#头部
memoryused=`free|grep 'Mem'|awk '{print $2-$3-1400000}'`
echo $((memoryused))
if [ $memoryused -le 0 ]; then
    #直接输入sudo密码
    echo "yourpassword"|sudo -S sysctl -w vm.drop_caches=3
else 
    echo "no"
fi
# -le是小于 ((intstr+3)),将数字字符串转化为数字,$((memoryused -le 0))应该也可以
-lt,小于
-le,小于等于
-eq,等于
-ge,大于等于
-gt,大于
-ne,不等于

grep

统计每个文件中出现的次数

# grep -l baidu *.*  列出出现baidu的文件
# grep -c baidu *.*  统计每个文件出现baidu的次数
列出出现baidu的文件及其次数
grep -l baidu *.*|xargs grep -c baidu

curl

curl忽略https证书验证,加上-k参数

sed

sed一般都是sed s/aa/zz/g。但是遇到要替换的是/,那么/可以换成别的符号。。#,%啊都可以。。

案例

批量重命名文件 删除特定字符


# echo 输出查看结果  实际使用换成mv
ls -1 |while read line;do newName=`echo $line|sed 's/[-,_,,副本,\s\(][\s]*[^\.]*//g'`;echo $line $newName;done;

# 以上代码用于练习,一般使用rename更方便
# 按照man上面的注解,rename的语法格式是:rename from to file
# 这个命令有三个参数,分别是from : 修改什么名字,to:改成什么名字,file 需要修改的文件是哪些。
# 注意,perl版本的rename只有两个参数,第一个参数为perl正则表达式,第二个参数为所要处理的文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,386评论 2 33
  • 第1章 小试牛刀 $ 是普通用户,# 表示管理员用户 root。 shebang:#!。sharp / hash ...
    巴喬書摘阅读 11,572评论 1 4
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,821评论 0 0
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 13,485评论 3 53
  • Answer: 1、用shell脚本批量建立Linux用户 实现要求:创建用户student1到student50...
    PennLi阅读 7,106评论 0 3

友情链接更多精彩内容