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. MyBatis集成到Spring时配置MapperScannerConfigurer出错

    问题描述 在web项目中同时集成了spring mvc和mybatis. 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入. ...

  2. nginx使用ssl模块配置支持HTTPS访问,腾讯云申请免费证书

    开始我尝试用 let's encrypt 让http 变 https 官方:https://github.com/certbot/certbot 参考:https://www.cnblogs.com/ ...

  3. 【Java】Java随手记

    System.out.printf() : System.out.printf("%d",x);               输出整数 System.out.printf(&quo ...

  4. DQL、DML、DDL、DCL区别

    DQL(data query language)数据查询语言 主要是由SELECT构成的查询语句 基本语法:select 字段名 from 表名 where 查询条件 DML(data manipul ...

  5. pythonのsqlalchemy多对多关系

    现在来设计一个能描述“图书”与“作者”的关系的表结构,需求是 一本书可以有好几个作者一起出版 一个作者可以写好几本书 #!/usr/bin/env python from sqlalchemy imp ...

  6. python爬虫解决编码问题

    参考 https://blog.csdn.net/qq_38008452/article/details/80423436 问题 解决方法 加上encoding='utf-8'

  7. 【原创】大叔问题定位分享(17)spark查orc格式数据偶尔报错NullPointerException

    spark查orc格式的数据有时会报这个错 Caused by: java.lang.NullPointerException at org.apache.hadoop.hive.ql.io.orc. ...

  8. $a=[1,2,3,4,5]; $b=[a,b,c,d,e]; 转成[[1,a],[2,b],[3,c],[4,d],[5,3]]

    $a=[1,2,3,4,5]; $b=[a,b,c,d,e]; 结果 [[1,a],[2,b],[3,c],[4,d],[5,3]] return array_map(function($v1,$v2 ...

  9. jQuery的下拉选select2插件用法

    1转自:https://www.jb51.net/article/95561.htm 用了这么久的Select2插件,也该写篇文章总结总结.当初感觉Select2不是特别好用,但又找不到比它更好的下拉 ...

  10. js分析 有_道_翻_译 md5

    0.参考 1.分析 1.1 输入翻译内容,手动点击“翻译”按钮 1.2 查看提交数据,通过多次提交确认变化量 1.3 CTRL+SHIFT+f 全局搜索 salt 或 sign 定位到三处js代码块, ...