Variable

Variable Types Present Declaration
Local Variables Within the current instance of the shell =
Environment Variables Any child process of the shell export, declare -x
System Variables Any shell bootload

Declaration

declare [-a] [-f] [-g] [-F] [-x] [-p] [name[=value]] [name[=value]] …
-a array
-i int
-x Environmen Variable
-r read-only
-p display the options and attributes of each variable name if it is used with name arguments

System Environment Variables

$0 Current Shell name/Script name
$# Number of parameters passed into the script
$* All parameters passed into the script
$? Status code of the last command executed
$PS1 Command prompt
$HOME User home folder
$PATH Search path for global commands

Linux Basic commands

Data Retrieval

row retrieval : grep egrep

Grammar :
    grep options 'keys' filename
OPTIONS:
    -i : 不区分大小写
    -v : 查找不包含指定内容的行,反向选择
    -w : 按**单词**搜索
    -n : 显示**行号**
    -A : 显示匹配行及后面多少行 -A 5
    -B : 显示匹配行及前面多少行

    -o : 打印匹配关键字
    -c : 统计匹配到的次数
    -r : 逐层遍历目录查找
    -C : 显示匹配行前后多少行
    -l :只列出匹配的文件名
    -L :列出不匹配的文件名
    -e : 使用正则匹配
    -E : 使用扩展正则匹配
    ^key : 以关键字开头
    key$ : 以关键字结尾
    ^$ : 匹配空行
    --color=auto :可以将找到的关键词部分加上颜色的显示

string retrieval : cut tr

cut用于列截取
    -c: 以字符为单位进行分割。
    -d: 自定义分隔符,默认为制表符。\t
    -f: 与-d一起使用,指定显示哪个区域。
eg: 
    cut -d: -f1,6,7 1.txt 以:冒号分割,截取第1,6,7列内容
    cut -c1-4 1.txt 截取文件中每行的1-4个字符
    cut -c5- 1.txt 从第5个字符开始截取后面所有字符    

tr字符转换:替换,删除
Grammar :
    commands|tr  'string1'  'string2'
    tr  'string1'  'string2' < filename
    tr options 'string1' < filename
Options :
    -d 删除字符串1中所有输入字符。
    -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串
eg : 
    tr -d '[:/]' < 3.txt 删除文件中的:和/
    cat 3.txt |tr -d '[:/]' 删除文件中的:和/
    tr '[0-9]' '@' < 3.txt 将文件中的数字替换为@符号
    tr '[a-z]' '[A-Z]' < 3.txt 将文件中的小写字母替换成大写字母
    tr -s '[a-z]' < 3.txt 匹配小写字母并将重复的压缩为一个
    tr -s '[a-z0-9]' < 3.txt 匹配小写字母和数字并将重复的压缩为一个

Data Processing

sort : oort

Grammar : 
    sort options filename
Options :
    -u :去除重复行
    -r :降序排列,默认是升序
    -o : 将排序结果输出到文件中  类似 重定向符号 >
    -n :以数字排序,默认是按字符排序
    -t :分隔符
    -k :第N列
    
    -b :忽略前导空格。
    -R :随机排序,每次运行的结果均不同。
Eg :
    sort -n -t: -k3 1.txt 按照用户的uid进行升序排列
    sort -nr -t: -k3 1.txt 按照用户的uid进行降序排列
    sort -nu 2.txt 按照数字排序并且去重
    sort -n 2.txt -o 3.txt 按照数字排序并将结果重定向到文件

unique : uniq

去重前先使用sort排序
Grammar :
    uniq options filename
Options :
    -i: 忽略大小写
    -c: 统计重复行次数
    -d: 只显示重复行

data output : tee

tee工具从标准输入读取并写入标准输出和文件,即:双向覆盖重定向<屏幕输出|文本输入>
Grammar :
    somecommand |tee filename
Options :
    -a : 双向追加重定向

text data merging : paste

用于合并文件行输出到屏幕,不会改动源文件
Options :
    -d:自定义间隔符,默认是tab,只接受一个字符
    -s:将每个文件中的所有内容按照一行输出,文件中的行与行以TAB间隔。

data processing

xargs: 参数处理

Shell Expansion

Brace Expansion

{x..y[..incr]}

Tilde Expansion

~

Shell Parameter Expansion

  1. ${!parameter} Indirect expansion
  2. $