一个生成连续目录的shell脚本

一个可以快速生成按数字连续的目录。

1. 首先生成0到99个目录
2. 然后每个目录下再生成0到9个目录

为什么要这么做?

主要是用来存取一些很多而小的文件,如用户的头像,
所以需要分开来

mkdir {0..99}
 
for i in `seq 0 99`;
do
    echo $i
    cd $i
    mkdir {0..9}
    cd ..
done;

继续阅读

常用linux bash命令实际应用

常用linux bash命令实际应用,按大小排序。

ls|xargs du -h|sort -rn 
#不递归下级目录使用du -sh

查看文件排除以#开关和空白行,适合查看配置文件。

egrep -v "^#|^$"  filename
sed '/#.*$/d; /^ *$/d'

删除空格和空行。

sed '/^$/d' filename #删除空行
sed -i '/^\s*$/d' filename #多个空格组成的空行
sed 's/ //g' filename
sed 's/[[:space:]]//g' filename

linux换行\n转为windows换行\r\n:

perl -pi -e 's/\n/\r\n/'  filename

继续阅读

Linux Bash严重漏洞修复

Linux官方内置Bash中新发现一个非常严重安全漏洞(漏洞参考https://access.redhat.com/security/cve/CVE-2014-6271 ),黑客可以利用该Bash漏洞完全控制目标系统并发起攻击。

影响版本

所有安装GNU bash 版本小于或者等于4.3的Linux操作系统。

漏洞描述

该漏洞源于你调用的bash shell之前创建的特殊的环境变量,这些变量可以包含代码,同时会被bash执行。
继续阅读

MySQL5.5自动化源码编译安装脚本

最近,闲着没事,就写了一个简单的自动化安装脚本。
环境: RHEL5.5
源码包和安装脚本需要放在同一级目录,如下所示:

[root@rhel5 mysql5.5-install]# ls -lh
total 29M
-rw-r--r--. 1 root root 5.5M May  3 15:05 cmake-2.8.8.tar.gz
-rw-r--r--. 1 root root  23M May  3 20:36 mysql-5.5.13.tar.gz
-rwxr-xr-x. 1 root root 2.0K May  4 14:49 mysql5.5-install.sh

继续阅读

Linux Bash 检测输入的用户名是否存在?

代码如下:

#!/bin/bash
 
read -p "Please input a username: " username
 
id $username > /dev/null 2>&1
ret=$?
if [ "$ret" -eq "0" ]; then
    echo "${username} is exist!"
else
    echo "${username} is not exist!"
fi

测试:

[root@rhel6 shell]# sh check_username.sh 
Please input a username: lok
lok is not exist!
[root@rhel6 shell]# sh check_username.sh
Please input a username: root
root is exist!

继续阅读

让Linux死机的shell命令炸弹详解

这是一段递归的BASH脚本。没事别乱运行。
它会不停的fork出进程直到pid的上限。 然后你就别想运行新的进程了。

清单.bash 中的 fork 炸弹的解释(前面的是行号,附注说明而已)

   
  1 .()
  2 {
  3  .|.&
  4 }
  5 ;
  6 .

第 1 行说明下面要定义一个函数,函数名为小数点,没有可选参数。
第 2 行表示函数体开始。
第 3 行是函数体真正要做的事情,首先它递归调用本函数,然后利用管道调用一个新进程(它要做的事情也是递归调用本函数),并将其放到后台执行。
第 4 行表示函数体结束。
第 5 行并不会执行什么操作,在命令行中用来分隔两个命令用。从总体来看,它表明这段程序包含两个部分,首先定义了一个函数,然后调用这个函数。
第 6 行表示调用本函数。
对于函数名,大家可能会有所疑惑,小数点也能做函数名使用吗?毕竟小数点是 shell 的一个内嵌命令,用来在当前 shell 环境中读取指定文件,并运行其中的命令。实际上的确可以,这取决于 bash 对命令的解释顺序。默认情况下,bash 处于非 POSIX 模式,此时对命令的解释顺序如下:
继续阅读

Linux Bash下常用快捷键

这些快捷键有:
Ctrl + a : 光标移到行首。
Ctrl + e : 光标移到行尾。
Ctrl + l : 清屏。
Ctrl + u : 清除光标前至行首间的所有内容。
Ctrl + h : 同 backspace 键相同。
Ctrl + r : 搜索之前打过的命令。
Ctrl + c : 杀死当前进程。
Ctrl + d : 退出当前 Shell。
Ctrl + z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。
Ctrl + w : 移除光标前的一个单词
Ctrl + k : 清除光标后至行尾的内容。
Ctrl + t : 交换光标位置前的两个字符。
Esc + t : 交换光标位置前的两个单词。
Alt + f : 在当前行把光标向前移一个单词。
Alt + b : 在当前行把光标向后移一个单词。
Tab : 自动补完命令

当然还有很多,欢迎补充

继续阅读