美文网首页
shell命令/使用场景

shell命令/使用场景

作者: 超鸽带你飞 | 来源:发表于2019-02-28 12:07 被阅读0次

命令列表:

  • sleep seconds

  • date +%s 返回10位时间戳

  • cat/vim/more file

  • head/tail -n 10 file

  • wc [-L行/c字符/w单词] file 统计文件行数/字符数/单次数

  • sudo ln -s 源文件 目标文件

  • grep [-option] pattern file 如:grep '^我是10$’ grep.txt

-o 只显示匹配的,输出一行一个
-v 反转-o
-n  显示行号
 -R/-r  递归
-e  正则
  • find <指定目录> <指定条件> <指定动作>
  • locate file ; updatedb
 locate 命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。

Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。

为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
  • sed ’s/pattern/replace/‘ file 替换 ( -i 可以将替换应用于原 文件)
  • command | xargs (xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的)
-n 3   每行 3 个参数
-d X   自定义分界符
  • awk ' BEGIN{ print "start" } pattern { commands } END{ print "end” }’ file
BEGIN  pattern  END  均可以省略

$ echo -e "line1 f2 f3\nline2 f4 f5\nline3 f6 f7" | awk '{print "Line no:"NR",No of fields:"NF, "$0="$0, "$1="$1,"$2="$2,"$3="$3}'

Line no:1,No of fields:3 $0=line1 f2 f3 $1=line1 $2=f2 $3=f3
Line no:2,No of fields:3 $0=line2 f4 f5 $1=line2 $2=f4 $3=f5
Line no:3,No of fields:3 $0=line3 f6 f7 $1=line3 $2=f6 $3=f7
  • ps
  • kill pid
  • pkill pname -9强制
  • cron
  • ssh user@host -p 端口(默认22)
  • lftp username@ftphost (端口21)
  • scp source destination 其中source和destination都可以是 user@host:path -r 递归复制

如:scp -r ./dist/* www@182.92.232.41:/home/wwwroot/p.[51tiancai.com/public/](http://51tiancai.com/public/)

  • ssh-keygen -t rsa -C "youremail@example.com"
  • open -a Google\ Chrome --args --disable-web-security
  • 压缩命令:tar -zcvf 压缩文件名.tar.gz 被压缩文件名
  • 解压缩命令:tar -zxvf 压缩文件名.tar.gz

场景应用

  1. 批量杀死所有存活的队列进程
pids=`ps -ef|grep app:queue|grep "\-\-process="|grep -v touch|grep -v grep |awk '{print $2}'`
if [ ! -z "$pids" ]
then
    echo $pids|xargs kill
    echo "kill $pids success"
else
    echo 'process not found'
fi

image.png

cat test.log |awk '{print $3}' | sort | uniq -c

find <指定目录> <指定条件> <指定动作>
<指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
<指定条件>: 所要搜索的文件的特征。
<指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

1、删除以html结尾的10天前的文件,包括带空格的文件:
find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 rm -rfv

xargs -i 参数或者-I参数配合{}即可进行文件的操作。
加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
加 -I 参数 需要事先指定替换字符

1.1复制以html结尾的10天前的文件,包括带空格的文件到/dir/目录下
find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 cp {} /dir

2、统计所有c文件的行数
find source_code_dir_path -type f -name "*.c" -print0 | xargs -0 wc -l

ln -s 类似Windows下的超级链接。

举例:
当前目录是/local,而我经常要访问/usr/local/linux/work
那么我就可以使用在local下建立一个文件linkwork,
sudo ln -s /usr/local/linux/work /local/linkwork

删除链接
rm -rf symbolic_name 注意不是
rm -rf symbolic_name/
那么上面我就是
rm -rf /local/linkwork

相关文章

网友评论

      本文标题:shell命令/使用场景

      本文链接:https://www.haomeiwen.com/subject/mtdhuqtx.html