bash学习

#!/bin/bash --bash路径 shebang-sharp # bang !
echo 1.'' 2."" 3.什么都不加 1不会计算例如$var 2,3会计算
printf "-5s" 负号表示向左对齐
echo -e
pgrep {name}
env -- 显示环境变量
var=1 赋值 var = 1 相等
export PATH="$PATH:/XXX/xxx"
echo ${#var} -- 显示字符串长度

显示bash
echo $0
echo $SHELL

bash_profile: uwh 用户名/路径/主机名

计算:echo "4*5" | bc --bc是一个unix内置计算库

echo "1" > 1.txt --清空1.txt内容

echo "1">>1.txt --在1.txt中追加

0 标准输入

1 正常输出

2 错误输出

系统默认 重定向符 >,>> 等效于  1> ,1>>

tee命令 标准输入

exec 3<等可追加文件操作符

脚本名称叫test.sh 入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)

tput 命令设置终端表示 setb setf等 后面的值固定0-7

stty -echo 

stty echo --连用,隐藏输入,显示输入

时间

date 普通时间

date +%s 打印时间戳。所有时间格式如下图

 

设置时间 date -s 20160429

tput sc rc rd命令

sleep命令 

bash -x 调试命令

存储命令输出:

$() 或者反括号``

子shell用法

()中执行命令。不影响当前shell

read用法

read -n 2 var

不显示

read -s var

显示

read -p "Enter word:" var

限时输入

read -t 2 var

定界符

read -d ":" var

IFS内部分界符号。默认是空格。无法用echo输出

循环:

for var in ..配合IFS。do done

 test命令类似中括号的比较。可以减少中括号的数量

拼接字符串:

echo "hello" | cat - out.txt --注意此处的-。

find命令

-name

-path = -regex类似。-iregex忽略大小写

!非符号

linux文件有三种时间

访问时间:-atime 单位天 -amin 单位分钟

修改时间:-mtime

变化时间:-ctime

打印出七天被修改过的文件

find / -type f -ctime -7

find / -type f -newer file_name

基于文件大小

find / -type f -size +2k

尾巴加上-delete可删除找到的结果

列出权限 -perm 

-exec 后面可接任何命令。{}表示前面的结果

find 找出的文件配合-exec基本可以完成一切文件操作。-exec {} ;-exec的标准写法。

将找到的文件内容全部写入一个文件

find . -name "*.c" -exec cat {} ;>1.txt

显示所有文件权限:

find . -name "*.c" -exec ls -la {} ;

跳过某些文件搜索

find . -name "*" ( -name "*.c" -prune ) -o ( -type f -print )

-xargs参数

读取文件参数执行

cat 1.txt | xargs -n 2 ./xxx.sh

du -h命令

可以查看各目录大小

排序 去重

sort file1.txt file2.txt | uniq

sort -rk 2 file_name -r逆序 -k 2排序第2列 可以是tab和空格

统计每一行出现的次数:

sort file.txt | uniq -c

显示重复的行:

sort file.txt | uniq -d

扩展成当前运行脚本的进程id

tmp="/tmp/var.$$"

生成100k的测试文件

dd if=/dev/zero bs=100k count=1 of=data.file

分割文件命令 split csplit-》功能更加强大

提取文件前缀及扩展名

file_jpg="xxx.jpg"

prefix_name=${file%.*} %原理 删除右侧最小匹配字符,%%为贪婪版本。

suffix_name=${file#*.} #原理 删除左侧最小匹配字符,##为贪婪版本

字典命令:

look words

删除文件中的字符:

cat 1 | sed 's/ruby/bird/'

设置无法修改属性

chattr 命令

chattr  +i file

恢复

chattr -i file

创建iso文件

cat /data/1 > image.iso

dd if=/data/1 of=image.iso

将一个目录内容写入iso

mkisofs -V "Label" -o image.iso source_dir/

查找目录:

ls -d */

统计:

wc -l (行数)-d(单词)-c (字符)

删除带空格的文件

grep "test" file* -lZ | xargs -0 rm

rev逆序

rev filename 或者stdin。

wget复制整个网站镜像:包含网站中的网站

wget --mirror url 或者wget -l -r url指定深度

查看centos版本

uname -a

cat /etc/redhat-release

tar命令

tar xvf filename.tar -C dir解压缩到dir

tar rvf filename.tar 增加一个文件

tar tf filename.tar 查看文件里面有什么。加vv查看详细。

备份系统快照rsync

rsync -av sourceDir targetDir 支持远程 例如rsync -av dir1 user@url:dir2

查看曾经登录用户

last

lastb 查看哪些用户被拒绝登录过

持续监视某个命令

watch cmd

显示平均负载

uptime :1分钟 5分钟 15分钟平均负载值

原文地址:https://www.cnblogs.com/guochunyi/p/5785163.html