本套都是shell的命令,enjoy it~

1)假设某变量aaa="史蒂芬周星驰",现在只想要输出后面的"周星驰",应该怎么办?

aaa="史蒂芬周星驰"
echo ${aaa:3:3}

【评析】已知变量总字符数和要切的起始字符数,就可以用这种方法切变量了。这种方法比较常见的应用于变量是长路径的情况下。


2)使用curl获取www.163.net的响应头信息

curl -I http://www.163.net

【评析】curl -i 网址除了有网站的响应头信息之外,还有网站的全部内容。如果要获得http status code的内容:curl -sL -w "%{http_code}\\n" www.163.net -o /dev/null。


3)执行历史纪录里的第505条命令

!505

【评析】打印历史纪录里最后一次cat的命令是!cat:p,如果是执行历史记录里最后一次cat的命令是!cat。执行之前操作最后一次的命令是!!。


4)已知当前时间是2016年5月16日,想要以年月日的形式输出当前时间后十天的日期。

date +%y%m%d -d 10day

【评析】如果是前十天,那就是# date +%y%m%d -d -10day


5)重复的执行"ps -ef",观察实时情况。

watch ps -ef  (默认时间是2秒一次)


6)显示剩余内存

free -m |grep cache|awk '/[0-9]/{print $4"MB"}'


7)打开/a/wow.txt,同时要跳到文件末端

vim + /a/wow.txt

【评析】如果是要把文章里的tab转换成空格的话,命令是# expand wow.txt wow2.txt


8)grep的精确查找命令

grep -w

【评析】grep在默认情况下是包含查找,比如111.txt有单词"james",#grep "me" 111.txt,是可以查到james的,但是要精确查找,只查找me这个单词,那么就要用#grep -w "me" 111.txt


9)扫描203.90.146.0/24网络里所有开放8081端口的ip

nmap -p 8081 203.90.146/24

【评析】nmap命令不是linux自带的,需要#yum install -y nmap安装一下。 8081端口什么都不是,仅仅是一个用来测试时候的端口,而tomcat默认是8080端口,这个不要记混。


10)并排显示1.txt和2.txt

paste 1.txt 2.txt

【评析】这个方法其实用的非常少,因为排版效果很差,说是并排,其实两段文件都粘乎在一起了,非常不容易分辨,如果想要更好的排版方式,推荐#diff -y 1.txt 2.txt


11)拆分大体积的tar.gz文件,每个是100MB,然后再合并。

split -b 100m

/path/to/large/archive

/path/to/output/filescat files*>archive


12)获取wow.txt文件的owner

stat -c %U wow.txt

【评析】这玩意是不是比cut awk等切来切去的更有逼格?


13)找出文件名结尾有空格的文件

find . -type f -exec egrep -l "+$" {} \;


14)输入多行文字

cat >test.txt (ctrl+d保存退出)

【评析】如果想清空一个文件,最无脑的方法就是# >test.txt,或者是#echo /dev/null > test.txt。而用#echo > test.txt的话,其实还是有一个空格行的,这个方法并不太严谨。


15)将/A/B下的当前文件夹(不包括子文件夹)所有.sh文件都转移到/C/D里去,然后把.sh后缀全部改成.log。

#!/bin/bash
@written by ChrisChan
cd /A/B && find ./ -maxdepth 1 -name "*.sh" -exec mv {} /C/D \;
cd /C/D
files=$(find ./ -name "*.sh")
for i in files:
    do
        mv $i ${i%sh}log
    done

【评析】更改文件名的后缀最简单的方法就是{变量%要换的内容}换后的内容。但是要注意这里要用for in循环,不然的话,files是那一大串的文件名,改的也只会是最后一个文件的后缀。


16)假设name.txt的内容如下,请做一个脚本能够统计所搜索的单词出现的次数。

[root@ChrisChan mysql]cat name.txt

james

james

james

wade

wade

bosh

curry

curry

curry

curry

#!/bin/bash
read -p "plwase enter a word: " word
a=0
for i in $(cat name.txt)
        do
                if [ $i == $word ]
                        then
                                let a=a+1
                fi
        done
echo $word出现了$a次。