本套都是shell的命令,enjoy it~
1)假设某变量aaa="史蒂芬周星驰",现在只想要输出后面的"周星驰",应该怎么办?
aaa="史蒂芬周星驰"echo ${aaa:3:3}
【评析】已知变量总字符数和要切的起始字符数,就可以用这种方法切变量了。这种方法比较常见的应用于变量是长路径的情况下。
2)使用curl获取
curl -I http://www.163.net
【评析】curl -i 网址除了有网站的响应头信息之外,还有网站的全部内容。如果要获得http status code的内容:curl -sL -w "%{http_code}\\n" -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 ChrisChancd /A/B && find ./ -maxdepth 1 -name "*.sh" -exec mv {} /C/D \;cd /C/Dfiles=$(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/bashread -p "plwase enter a word: " worda=0for i in $(cat name.txt) do if [ $i == $word ] then let a=a+1 fi doneecho $word出现了$a次。