Linux学习笔记(6)Linux的Shell

    技术2022-07-11  91

    1.从变量开始

    先声明再使用!!!

    1.标题变量设置:

    $echo {变量名}//若该变量已存在,则可查看其内容 $name=a//变量赋值 unset {变量名}//取消变量设置

    a.变量与变量内容以一个等号连接. b.等号两边不能直接接空格。 c.变量名开头不能是数字。 d.单引号内为文本。 父进程子进程:

    //在父进程中定义的变量在子进程中无法使用 $bash//开启子进程 quit//返回

    2.环境变量

    env//显示所有已经设置的环境变量 set//还会显示用户变量

    子进程会继承父进程的环境变量,不会继承父进程的自定义变量,故想要父进程的变量在子进程继续使用,则将这个变量定义为环境变量。

    export [name]//声明为环境变量,即可在子进程中使用

    2.变量的读取、数组与声明

    1.变量的读取

    read [-pt] "" //-p后接提示字符 //-t后接等待的秒数 read temp//从键盘读入输入赋值给变量temp

    2.变量的声明

    declare [-aixr] name -a//定义为数组类型 -i//定义为整形类型 -x//用法与export一样,将变量加到环境中 -r//将变量设置为只读模式

    bash的默认前提: 1.变量类型默认为字符串,故若不指定变量类型,则1+2为一个字符串而不是计算式。 2.bash环境中的数值运算,默认最多仅能达到整数形态,所以1/3结果为0。 数组

    arrary[index]=content

    3.命名别名与历史命名

    alias设置别名

    alias rm='rm -i'//使每次删除前都默认询问 alias lm='ls -al|more'//输入lm等于执行了ls -al|more //删除别名 unalias rm//取消之前的别名

    history展示历史命令

    history [n]//展示最近n条命令 history[-carw] -c//清除shell中所有history命令 -a//将现在所有history命令写入histfiles -r//将histfiles的内容读入目前的shell的history中 -w//

    可以看到关机并不会影响history的记录 只有history -c可以清除

    4.Bash shell的操作环境

    先alias,再shell,再/bin/echo。

    5.数据流重定向

    ">"可以将数据重新定向到文件中,若文件不存在则将新建一个,若存在则会将文件清空再写入。 “>>“类似”>”,但若文件存在,则会将内容写在原内容下方,若不存在则新建文件并写入。

    /dev/null //垃圾桶黑洞 //可以吃掉所有导向这个路径的信息

    命令执行的判断

    sync;sync//分号(:)前的命令执行完会立刻执行后面的命令 cmd1&&cmd2//若cmd1执行完毕且正确则执行cmd2,否则执行cmd2 cmd1||cmd2//若cmd1执行完毕且正确则cmd2不执行,否则执行cmd2.

    6.管道命令

    管道命令可以处理经由前面一个命令传来的信息,也就是标准输出的信息。 输入ls -al/etc | less之后可以让巨量的代码逐页出现,管道仅可以处理标准输出,且管道后面接的第一个数据必须是命令。

    1.选取命令

    cut取出一行信息中我们想要的。

    cut -d//后接分割字符,与-f一起使用 -f//根据-d的分割字符把信息划分为数段,用-f取出需要的片段 -c//用字符的单位取出固定字符区间

    图中取出了第五个“:”之后的内容。 grep分析一行信息,取出我们想要的。

    $grep [-acinv] '查找字符' filename -a//将二进制文件以文本文件的方式查找数据 -c//计算查找字符出现的次数 -i//忽略大小写的不同 -n//顺便输出行号 -v//反向选择,显示出没有查找字符的内容行

    2.排序命令

    $sort [-fbMnrtuk]

    sort默认以第一个信息来排序,若想要以别的部分排序则用sort -t ':' -k 3 wc命令

    $wc [-lwm] -l//仅列出行的数量 -w//仅列出多少字 -m//多少字符 $cat text.txt | wc -m

    作用如下图,可统计字数。

    3.双向重定向

    $ tee [-a] file //有点类似于'>',但还会转存一份文件到屏幕

    4.字符转换命令

    $ tr[-ds] TARGET1 -d//删除信息中的SET1字符 -s//替换掉重复的字符

    join [-ti12] -t//join默认以空格字符分割数据,并且比对第一个栏位的数据, //如果两个文件相同,则将两条数据连接在一起 -i//忽略大小写的差异 -1//第一个文件用哪个栏位分析 -2//第二个文件要用哪个栏位分析

    paste直接把两行贴在一起,中间以TAB键隔开

    paste [-d] file1 file2 //如果file前使用"-"则代表数据来自标准输入

    expand将[TAB]按键转换成空格键

    $ expand [-t] file

    划分命令:split

    split [-bl] file PREFIX //PREFIX为划分文件的前缀统一标识 -b//后接想要划分的文件大小,可加单位,例如b,k,m。 -l//按行数进行划分
    Processed: 0.011, SQL: 9