printf "%-5s %-10s %-4s\n" No Name Mark

printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456

%-5s知名了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐)


pgrep -f wechat 查找有wechat的pid


var="hello"

echo $var和echo ${var} 一样

获得变量值的长度:

var='123456789012345!@#$'

echo ${#var}    #19

echo $0 显示用的什么shell

-bash

echo $SHELL 显示用的什么shell

/bin/bash

echo $UID 显示当前的用户id

0


使用函数添加环境变量

prepend() { [ -d $2 ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1 ;}

使用方式:

prepend PATH /opt/myapp/bin


使用shell进行数学运算

在 bash shell 中 ,使用 let (( )) 和 [ ] 执行基本的算术操作 ,而进行高级操作时 , expr 和 bc 这两个工具也会经常用到。

  1. #!/bin/bash
  2. no1=4;
  3. no2=5;
  4. let result=no1+no2
  5. echo $result
  1. #!/bin/bash
  2. no1=10;
  3. let no1++
  4. echo $no1
  5. let no1--
  6. echo $no1

简写:

  1. #!/bin/bash
  2. no1=10
  3. let no1+=5
  4. echo $no1
  5. let no1-=6
  6. echo $no1

操作符 [ ] 的用法和 let 命令类似:

#!/bin/bash
no1=2
no2=3
result=$[ no1 + no2 ]
echo $result
#也可以使用 $前缀
result=$[ $no1 + 5 ]
echo $result

expr:

#!/bin/bash
no1=3
no2=4
result=`expr $no1 + $no2`
echo $result

result=`expr 5 + 10`
echo $result

result=$(expr $no1 + 5)
echo $result


标准输出和标准错误

cmd 2>stderr.txt 1>stdout.txt

cmd 2>&1 output.txt   和   cmd &> output.txt 效果一样

tee命令,得到标准输出并写入下一个文件


普通数组和关联数组(hash数组)

bash4.0版本之后才支持关联数组

数组定义:

array_var=(1 2 3 4 5 6)

array_var[0]="test1"

打印数组:
echo ${array_var[0]}

echo ${array_var[*]}      #打印所有数组成员

echo ${array_var[@]}     #打印所有数组成员

echo ${#array_var[*]}     #打印数组长度

关联数组:略


find

find . -iname "example*"    #-iname忽略字母大小写

find . \( -name "*.txt" -o name "*.pdf" \) -print        #-o  OR操作

find /home/users -path "*/slynux/*" -print  #-path 用通配符匹配文件路径

find . -regex ".*\(\.py\|\.sh\)$"  #用正则找

find . -iregex ".*\(\.py\|\.sh\)$"  #让正则忽略大小写

find . ! -name "*.txt" -print  #找出所有不以txt结尾的文件名

find . -maxdepth 1 -name "f*" -print  #最大深度为1,也就是当前目录

find . -mindepth 2 -name "f*" -print  #最小深度为2,从下一层目录找

find . -type d -print  #找出所有目录,不包括文件

find . -type f -print  #找出所有文件,不包括目录

find . -type f -atime -7 -print   #7天内被访问过的恩所有文件

find . -type f -atime 7 -print  #打印出恰好在7天前被访问过的所有文件

find . -type f -atime +7 -print  #打印出访问时间超过7天的所有文件。

-atime  -mtime  -ctime  #都是基于天

-amin  -mmin  -cmin  #都是基于分钟

find . -type f -amin +7 -print  #打印出访问时间超过7分钟的所有文件

find . -type f -newer file.txt -print  #找出比file.txt修改时间更近的所有文件

find . -type f -size +2k  #大于2kb的文件,b(512字节,块),c字节,w字(2字节),k(1024字节),M(1024k),G(1024M)

find . -type f -size -2k  #小于2kb的文件

find . -type f -size 2k  #大小等于2kb的文件

find . -type f -name "*.swp" -delete  #删除swp文件

find . -type f -perm 644 -print  #查找权限为644的文件

find . -type f -name "*.php" ! -perm 644 -print  #找出服务器上所有的php文件并且权限不是644的。

find . -type f -user alex -print  #找出所有alex拥有的文件


分割文件

split -b 10k data.file  #把文件切割成10k大小 data.file xaa xab xac xad

split -b 10k data.file -d -a 4  #切割成4位数字补全的大小data.file x0009 x0019 x0029 x0039

split -b 10k data.file -d -a 4 split_file  #data.file  split_file0000  split_file0001  split_file0002

split -l 10 data.file  #10行一割


使用环回文件

dd if=/dev/zero of=big.img bs=1G count=1

mkfs.ext4 big.img

mkdir /mnt/loopback

mount -o loop big.img /mnt/loopback


sed

sed 's/text/replace/' file >newfile

mv newfile file

等价于 sed -i 's/text/replace/g' file

sed -i 's/text/replace/3g' file  #从第三次找到的地方修改,改到最后

echo this is an example | sed 's/\w\+/[&]/g'  #已匹配字符串标记使用&匹配找到的内容并加上[ ], [this] [is] [an] [example]

echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'  #this is 7 in a number      命令中 digit 7,被替换成了 7。样式匹配到的子串是 7,\(..\) 用于匹配子串,对于匹配到的第一个子串就标记为 \1,依此类推匹配到的第二个结果就是 \2,例如:
echo aaa BBB | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'     #BBB aaa


awk

awk 'BEGIN {pring "start"} pattern { commands} END { print "end"}' file

工作流程:

1.执行begin{commands}语句快

2.从文件或stdin中读取一行,执行pattern{ commands }。重复这个过程,知道文件全部读取完。

3.最后执行end{commands}语句块

拼接字符串

echo | awk '{var1="v1";var2="v2";var3="v3"; print var1"-"var2"-"var3;}'  #v1-v2-v3

特殊变量:

NR: 表示记录数量,在执行过程中对应于行号
NF:表示字段数量,在执行过程中对应于当前行的字段数
$0: 这个变量包含执行过程中当前行的文本内容
$1: 第一个字段的文本内容
$2: 第二个字段的文本内容

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

awk运算:

seq 5 | awk 'BEGIN{ sum=0;print "Summation:"}{print $1"+";sum+=¥1}END{print "==";print sum}'

结果:

Summation:

1+

2+

3+

4+

5+

==

15

例子:

awk 'END{print FILENAME}' awk.txt 打印文件名

例子:

cat section.txt
line with pattern1
line with pattern2
line with pattern3
line end with pattern4
line with pattern5

awk */pa.*3/, /end/* section.txt
输出结果是:
line with patern3
line end with pattern4

linux命令技巧的更多相关文章

  1. 20个 Unix/Linux 命令技巧

    让我们用这些Unix/Linux命令技巧开启新的一年,提高在终端下的生产力.我已经找了很久了,现在就与你们分享. 删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除.我的rm和l ...

  2. [转帖]50个必知的Linux命令技巧,你都掌握了吗?

    50个必知的Linux命令技巧,你都掌握了吗? https://blog.51cto.com/lizhenliang/2131141 https://blog.51cto.com/lizhenlian ...

  3. Linux命令技巧:如何在Linux下重命名多个文件

    我知道我可以用mv命令重命名文件.但是当我想重命名很多文件怎么办?如果为每个文件都这么做将会是很乏味的.有没有办法一次性重命名多个文件? 在Linux中,当你想要改变一个文件名,使用mv命令就好了.然 ...

  4. linux 命令技巧(转)--history

    本文介绍一些关于bash的能够提高效率的技巧,主要是关于历史命令操作和一些快捷键,让你在命令行下工作效率翻倍. 1.history-----最基本的查看历史命令 2.!n-----编号为n的历史命令 ...

  5. Unix/Linux 命令技巧

    锁定一个文件夹 为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹.因此我运行了: chmod 0000 /downloads root用户仍旧可以访问,而ls和cd命令则不工作. ...

  6. linux 命令行 光标移动技巧

    linux 命令行 光标移动技巧 看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动.在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作.但是事情也不是 ...

  7. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  8. Linux命令行 3大技巧归纳

    在软件开发的世界中,作为web端程序猿打交道最多的操作系统相信就是Linux系统了吧.而对于Linux系统的使用,如果能掌握一些小技巧,在程序开发.调试的过程中,相信做事的效率也会有一些提升.下面就和 ...

  9. Linux命令行技巧

    Linux命令行技巧 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格 ...

随机推荐

  1. 第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)

    一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票.淘宝的双十一抢购),如果把一个用户看做 ...

  2. Spring Boot集成MyBatis的2种方式

    目录 写在前面 准备工作 配置数据库驱动 配置数据源 原生集成MyBatis 依赖配置 注册MyBatis核心组件 定义并使用映射器 通过MyBatis-Spring-Boot-Starter集成 默 ...

  3. Java String相关

    一.String类的常用方法 1. int indexOf(String s) 字符串查找 2. int lastIndexOf(String str) 3. char charAt(int inde ...

  4. 关于并查集的路径压缩(Path Compress)优化

    之前在CSDN看到一篇很受欢迎的讲解并查集的博文,其中自然用到了路径压缩: int pre[1000]; int find(int x){ int root = x; while(pre[root]! ...

  5. Django组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  6. mysql官方测试库

    sql语句优化时没有测试数据,oracle官方提供测试数据 https://dev.mysql.com/doc/employee/en/employees-installation.html 到 ht ...

  7. 【原创】大叔经验分享(18)hive2.0以后通过beeline执行sql没有进度信息

    一 问题 在hive1.2中使用hive或者beeline执行sql都有进度信息,但是升级到hive2.0以后,只有hive执行sql还有进度信息,beeline执行sql完全silence,在等待结 ...

  8. robot总结

    1 搭建环境地址 http://www.cnblogs.com/yufeihlf/p/5945102.html 2 页面描述 https://www.cnblogs.com/yufeihlf/p/59 ...

  9. 如何把PDF文件拆分为多个文件

    一个PDF文件有很多个PDF页面组成,有时候我们只需要单个页面的时候应该怎么做呢,这个时候就需要拆分PDF文件了,那么如何把 PDF文件拆分为多个文件呢,应该有很多的小伙伴都想知道吧,那就让我们一起来 ...

  10. 查看linux空间大小

    du -sh : 查看当前目录总共占的容量.而不单独列出各子项占用的容量 du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量.