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. [物理学与PDEs]第1章第5节 Maxwell 方程组的数学结构, 电磁场的波动性 5.3 电磁场的波动性, 自由电磁波

    1. 由 Maxwell 方程组易知 $$\beex \bea \cfrac{1}{c^2}\cfrac{\p^2{\bf E} }{\p t^2}-\lap{\bf E}  &=-\sex{ ...

  2. APPLE-SA-2019-3-25-1 iOS 12.2

    APPLE-SA-2019-3-25-1 iOS 12.2 iOS 12.2 is now available and addresses the following: CFStringAvailab ...

  3. CCF CSP 认证

    参加第八次CCF CSP认证记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四 ...

  4. Win10 自定义右键新建菜单

    Win10 自定义右键新建菜单 regedit打开: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ ...

  5. 两个Html页面之间值得传递

    传值的页面:<a href='stockProductInfo.html?prdId="+v.prdID+"' target='_blank'></html> ...

  6. Django 多数据库支持

    很多时候,需要去其他数据库查询数据,都将会面临多数据库支持问题. 1.在settings文件内添加多数据库连接 DATABASES = { 'default': { 'ENGINE': 'django ...

  7. 爬虫-通过本地IP地址从中国天气网爬取当前城市天气情况

    1.问题描述 ​ 最近在做一个pyqt登录校园网的小项目,想在窗口的状态栏加上当天的天气情况,用爬虫可以很好的解决我的问题. 2.解决思路 ​ 考虑到所处位置的不同,需要先获取本地城市地址,然后作为中 ...

  8. Centos7.5 安装VirtualBox增强工具

    一.安装 1.自带tools:  选择VirtualBox工具栏 => 设备 => 安装增强功能 2.挂载光驱 3.进入光驱目录,执行(一定要用root权限执行) ①安装gcc yum i ...

  9. C“控制”Lua

    [前言] 写过Windows程序的人都知道,对于应用程序,如果需要在本地保存一些配置信息,我们经常将这些配置信息写在注册表或者本地的配置文件中,很多应用都是将一些配置信息写在配置文件中,比如以ini结 ...

  10. 【medium】220. Contains Duplicate III

    因为要考虑超时问题,所以虽然简单的for循环也可以做,但是要用map等内部红黑树实现的容器. Given an array of integers, find out whether there ar ...