Qing

bash特性-笔记
``bash特性 文本排序:sort -n 数值排序 -r 降序 -t 字段分隔符 ...
扫描右侧二维码阅读全文
09
2019/10

bash特性-笔记

这两天笔记,先放这儿吧:expressionless:
``

bash特性

文本排序:sort
    -n 数值排序
    -r 降序
    -t 字段分隔符
    -k 以哪儿个字段为关键字进行排序
    -u 排序后相同的行只显示一次
    -f 排序是忽略字符大小写
    Uniq
    -c 显示文件中行重复的次数
    -d 只显示重复的行
文本统计类命令:  WC (word count)
可以统一一个文件中有的多少行,有多少单词,以及有多少个字符(空白也是字符)
实例: [root@localhost ~]# wc install.log
        921  3700 56101 install.log
        -l 只显示行
        -w 只显示单词数
        -c 只显示字节数
        -L 最长的一行包含了多少个字符

字符处理命令:tr  用于实现转换或删除字符
tr [OPTION]... SET1 [SET2]
    -d 删除出现在字符集中的所有字符

bash及其特性:
shell:指外壳,也是用户直接连入计算机所使用的外壳程序
广义shell包含两类:GUI,GLI
GUI:Gnome,KDE,Xfce
GLI:sh,csh(支持编程,方式接近c语言),ksh(所支持功能比csh更多,商业化产品-社区版和商业版),bash(兼具csh,ksh各种特性,功能更强大,遵循开源,默认sh)
    tcsh(csh增强版),zsh(功能更强大,新出的)
root,student:bash
程序一个,进程多个(副本)
每一个用户登入进来之后,登录三次,打开三个sh,即使三个是同样的账号,还是三个进程,各不相干
linux特性:允许一个用户账号登陆多次,每次打开的shell都是独立的shell,各不相干,因为都是进程
每一个进程只认为当前系统所运行的程序只是他自己,也就是每个进程是不知道别人的存在的。
进程:在每个进程看来,当前主机上只存在内核和当前进程
进程号不同就属于不同的进程,系统识别进程是通过进程号识别的
进程是程序的副本,进程还是程序执行的实例
用户的工作环境:
bash:
    #
    $
    不同的用户各自登入系统,都要使用bash,但是使用的工作环境各不相同,默认下一样的,除了管理员
    bash是支持用户自我定义自由环境的
shell,子shell(父子关系)
子shell只能认为自己是独有的shell,不能意识到自己是子shell。
bash--bash--bash
bash:
    1,支持命令历史、支持命令补全
    2,支持管道,重定向,
    3,支持命令别名(给命令起名字)
    4,支持命令行编辑
    5,支持命令行展开
    6,支持文件名通配(*)
    7,支持变量
    8,支持编程
命令行编辑:
光标跳转:
    Ctrl+a:跳到命令行首
    Ctrl+e:跳到命令行尾
    Ctrl+u:删除光标之命令行首的内容
    Ctrl+k:删除光标至命令行尾的内容
    Ctrl+左右箭头:按单词顺序跳
    Ctrk+l:清屏
命令历史:
bash会自动记录过去曾经执行过的命令,会保存早内存缓存当中
查看命令历史:history
    -c:清空整个命令历史
    -d OFFSET [n]:删除指定位置的命令
    -w:将缓存区的命令保存到历史文件
环境变量
PATH:命令搜索路径
HISTSIZE:命令缓冲区历史大小(默认是1000条)
[root@iZ ~]# echo $HISTSIZE
1000

命令历史的使用技巧,
!n: 执行命令历史中的第n条命令
!-n:执行命令历史中的倒数第n条命令
!!:执行上一条命令
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用上一个命令的最后一个参数
Esc+.:重新调用前一个命令中最后一个参数并打印命令
Alt+.:
命令补全,路径补全
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表,否则直接补全
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全。

命令别名:
alias CMDALiAS='COMMAND [options] [arguments]'
跟变量定义一样,是shell的特性,定义的别名只在shell当前生命周期内有效。
撤销别名:unalias CMDALiAS
使命命令本身:\CMD

命令替换:$(COMMAND)、
把命令中某个子命令替换为执行结果的过程
    [root@iZuf66ohwrcvsib55apwkgZ ~]# date +%F-%H-%M-%S
    2019-10-08-19-30-44
    [root@iZuf66ohwrcvsib55apwkgZ ~]# touch ./file-$(date +%F-%H-%M-%S).txt
    [root@iZuf66ohwrcvsib55apwkgZ ~]# ls
    composer.json  file-2019-10-08-19-32-10.txt
bash支持的引号:
``:命令替换
"":弱引用,可以实现变量替换
'':强引用,不完成变量替换
文件名通配,globbing
*:任意长度的任意字符
    [root@iZuf66ohwrcvsib55apwkgZ test]# touch a123 abc a321 xyz x12 xyz123
    [root@iZuf66ohwrcvsib55apwkgZ test]# ls
    a123  a321  abc  x12  xyz  xyz123
    [root@iZuf66ohwrcvsib55apwkgZ test]# ls a*
    a123  a321  abc
    [root@iZuf66ohwrcvsib55apwkgZ test]# ls a*3
    a123
?:任意单个字符
    [root@iZuf66ohwrcvsib55apwkgZ test]# ls ?y*
    xyz  xyz123
[]:匹配指定范围内的任意单个字符
[abc],[a-m],[a-z],[A-z],[0-9],[a-zA=Z],[0-9a-zA-z]
[[:space:]]所有的空白字符
[:punct:]所有的标点符号
[:lower:]所有小写字母
[:upper:]所有大写字母
[:alpha:]所有大小写字母
[:digit:]所有数字 
[:alnum:]所有数字和大小写字母

# man 7 glob
[^]:匹配指定外围外的任意字符
 


    [root@iZuf66ohwrcvsib55apwkgZ test]# ls [a-zA-Z]*[0-9], 
    a123  a321  x12  xyz123
[^]:匹配指定范围之外的任意单个字符 
文本统计 WC
文本处理 cat,more,less,head,tail,cut,sort,unig,grep
    正则表达式
管道和重定向 >  <  >>  <<
用户,组,权限
Bash及其特性
    ``
最后修改:2019 年 10 月 09 日 07 : 45 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

1 条评论

  1. Qing Google Chrome 77.0.3865.90 Windows 10

    太难了

www.whoit.top-MySSL安全签章