zoukankan      html  css  js  c++  java
  • Shell学习笔记1

    Linux中变量

    $# 是传给脚本的参数个数
    $0 是脚本本身的名字
    $1 是传递给该shell脚本的第一个参数
    $2 是传递给该shell脚本的第二个参数
    $@ 是传给脚本的所有参数的列表
    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 是脚本运行的当前进程ID号
    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

    区别:@*
    相同点:都是引用所有参数
    不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在12 3)则"*" 等价于 “12 3"(传递了一个参数);而“@" 等价于 "1""2" "$3"(传递了三个参数)。

    ================================================华丽的分隔线=========================================
    Linux CentOS 永久设置别名Alias:在/etc/bashrc里添加alias语句。

    ================================================华丽的分隔线=========================================
    Linux下批量Kill多个进程的方法:
    ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

    "ps - ef"是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep LOCAL=NO”的输入。
    "ps aux"是CentOS里查看所有进程的命令。
    "grep LOCAL=NO"的输出结果是,所有含有关键字“LOCAL=NO”的进程,这是Oracle数据库中远程连接进程的共同特点。
    "grep -v grep"是在列出的进程中去除含有关键字“grep”的进程。
    "cut -c 9-15"是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
    "xargs kill -9"中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该令。
    "kill -9"会强行杀掉指定进程,这样就成功清除了oracle的所有远程连接进程。其它类似的任务,只需要修改“grep LOCAL=NO”中的关键字部分就可以了。
    ================================================华丽的分隔线=========================================

    >清空文件并写入,>>追加写入。
    ================================================华丽的分隔线=========================================
    管道命令和xargs的区别(经典解释):
    管道是实现“将前面的标准输出作为后面的标准输入”
    xargs是实现“将标准输入作为命令的参数”
    ================================================华丽的分隔线=========================================
    rename JPG jpg *.JPG
    ================================================华丽的分隔线=========================================
    #!/bin/bash

    for f in `cat 1.txt`;do touch $f;done

    echo `ls ./`

    for l in `ls *.jpg`
    do
    mv $l `echo ${l%_sb*}.jpg`
    done

    echo `ls ./`

    for l in `ls *.jpg`
    do
    mv $l `echo ${l/%jpg/JPG}`
    done

    echo `ls ./`
    ================================================华丽的分隔线=========================================
    计算字符数三种方法:
    char=`seq -s " " 100`

    方法1:echo ${#char}
    方法2:echo $char | wc -m
    方法3:echo $(expr length "$char")
    ================================================华丽的分隔线=========================================
    计算字符数三种方法速度的比较:

    #!/bin/bash
    char=`seq -s " " 100`

    echo -e 'e[0;32m使用echo ${#char}方式的结果:e[0m'
    time for i in $(seq 1000);do count="echo ${#char}";done

    echo -e 'e[0;32m使用echo $char | wc -m方式的结果:e[0m'
    time for i in $(seq 1000);do count="echo $char | wc -m";done

    echo -e 'e[0;32m使用echo $(expr length "$char")方式的结果:e[0m'
    time for i in $(seq 1000);do count="echo $(expr length "$char")";done
    ================================================华丽的分隔线=========================================
    更改提示符
    export PS1='e[36m[u@h W$]e[0m' 写入/etc/bashrc文件中最后一行
    ================================================华丽的分隔线=========================================
    删除当前目录下30天前的数据
    find ./ -type f -mtime +30 -exec rm -rf {} ;

    删除当前目录下30天前的数据
    find ./ -name "*.sql.gz" -type f -mtime +30 -exec rm -rf {} ;

  • 相关阅读:
    了解node.js
    RC4 in TLS is Broken: Now What?
    LDAP 在ubuntu14.04下的安装配置install and configure
    Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
    SSL Labs: Increased Penalty When TLS 1.2 Is Not Supported
    PostgresQL中的NUlls first/last功能
    网页小工具集合
    T-SQL在线格式化工具
    sudoers文件解析
    Java提高篇——JVM加载class文件的原理机制
  • 原文地址:https://www.cnblogs.com/WYPDF/p/10347791.html
Copyright © 2011-2022 走看看