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. [再寄小读者之数学篇](2014-06-23 Hardy 空间、BMO空间与 Triebel-Lizorkin 空间)

    $$\bex 0<p<\infty\ra H_p=\dot F^0_{p,2};\quad BMO=\dot F^0_{\infty,2}. \eex$$ see [H. Triebel, ...

  2. Javaweb学习笔记——(二十四)——————图书商城项目

    图书商城          环境搭建         1.导入原型             *用户模块             *分类模块             *图书模块              ...

  3. 多人聊天室(Java)

    第1部分 TCP和UDP TCP:是一种可靠地传输协议,是把消息按一个个小包传递并确认消息接收成功和正确才发送下一个包,速度相对于UDP慢,但是信息准确安全:常用于一般不要求速度和需要准确发送消息的场 ...

  4. Faster RCNN 学习笔记

    下面的介绍都是基于VGG16 的Faster RCNN网络,各网络的差异在于Conv layers层提取特征时有细微差异,至于后续的RPN层.Pooling层及全连接的分类和目标定位基本相同. 一). ...

  5. Django之BBS博客项目

    一.登陆功能(验证码) from geetest import GeetestLib from django.contrib import auth #使用极验滑动验证码的登陆 def login(r ...

  6. POJ 2318 TOYS (叉积+二分)

    题目: Description Calculate the number of toys that land in each bin of a partitioned toy box. Mom and ...

  7. Spring MVC详解

    Spring MVC 教程,快速入门,深入分析 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 目录  一.前言二.spring ...

  8. iOS ipa 重签名 resign

    这篇关于codesign的文章不错 https://www.objccn.io/issue-17-2/ 英文原文:https://www.objc.io/issues/17-security/insi ...

  9. vue-i18n国际化在data中切换不起作用

    vue-i18n是一个针对于vue的国际化插件,使用非常简单,具体使用方式看我细细道来. 实现方式 1. 下载包 npm install vue-i18n 2. 配置 在main.js文件中加入如下配 ...

  10. 带问号的括号匹配问题918C 1153C

    cf里好像经常出 这些题,一般贪心是搞不了的.. 918C 问有多少子段[l,r]满足合法括号 先从左往右扫,如果问号+‘(' 数量 >= ')' 说明这段区间的 ) 是满足条件的 然后再从右往 ...