欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 03_02 _bash特性详解 有大用

文本排序: 

sort         默认是 asii 码升序排列的 以行的排序的 不是改变文件内容的

  -n (numeric ) 数值排序

  -r  (reverse) 反过来排序 逆序 降序

  -t  -t, --field-separator字段分隔符 (-t, --field-separator=SEP  use SEP instead of non-blank to blank transition)

  -k  表示从以第几个位置为准排序 (-k, --key=POS1[,POS2]     start a key at POS1, end it at POS2 (origin 1))

  -u  排序后相同的行只显示一次 (-u, --unique              with -c, check for strict ordering;

                              without -c, output only the first of an equal run)

  -f  排序时表示忽略字符大小写 ( -f, --ignore-case           fold lower case to upper case characters)


sort -u  有个 uniq 命令


uniq 它会去掉相连且重复的行

 -d 只显示重复的行

 -D 显示所有重复的行

 -c 重复的行只显示一次,且告知显示了几次


            



# cat /etc/fstab

# sort /etc/fstab

image.png


#nano sort.test

image.png


#man sort

image.png


image.png

image.png


image.png


image.png

# sort -t: -k3 /etc/passwd

image.png

# sort -t: -k3 -n  /etc/passwd

image.png

image.png

image.png

#uniq sort.test

image.png

image.png

image.png

image.png



image.png


文本统计

 wc   (word count)      # 在默认的情况下,wc将计算指定文件的行数、单词数,以及字节数。

  -l      (-l, --lines)()只显示行数

  -w     ( -w, --words)     只显示单词数

  -c  (--bytes)    只显示字节数

                -c, --bytes

                      print the byte counts


  -m 只显示字符数

         -m, --chars

              print the character counts

 

  -L 表示最长的一行包含多少字符数 

            -L, --max-line-length

              print the length of the longest line


# wc /etc/fstab

image.png


# man wc 

image.png


# wc -l /etc/fstab

image.png

# wc -w /etc/fstab

image.png

# wc -c /etc/fstab

image.png

# wc -m /etc/fstab

image.png

# wc -L  /etc/fstab

image.png

#!man  (应该表示的是上一个man命令吧)(!在命令前表示执行上一次的命令)



字处理命令:

tr ------转换或删除字符

 tr [OPTION]... SET1 [SET2]

  -d 表示删除出现在字符集中(-d 后面的所有字符)

 

#man tr

image.png

 #tr ab AB

image.png


#tr 'ab' 'AB' < /etc/passwd       < 是输入重定向

#tr 'a-z' 'A-Z' < /etc/passwd   把小写全部替换成(全部换成)大写

#tr -d 'ab'

image.png


bash及其特性

shell: 外壳

GUI: Gnome, KDE, Xfce

CLI: sh, csh, ksh,bash,tsch,zsh


我们使用的是 bash 

root, student

程序: 进程

进程: 在每个进程看来,当前主机上只存在内核和当前进程

进程是程序的副本,进程是程序执行的实例


用户工作环境:

bash: 

管理员#

普通用户$

  tom, jerry 

  bash--bash 对于父shell的设定,对子shell 是无效的,反之对于子shell的设定,对父shell也是无效的  儿子要另立门户,并不是同一个家

  csh 可以交到打开

  ksh 可以嵌套 shell


(exit 或者 logout 退出) 此时 为这个用户打开的 shell 也终止了

shell, 子shell



# type bash


# which bash


# bash

# bash


# pstree  pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。


# export LANG=en

# pstree


# bash

# pstree


# exit  //退出当前的 shell

# pstree

//因为有个 exit 比上面的 bash 少了一个

image.png

# exit   //又一次退出当前的 shell

# pstree

//因为又有个 exit 比上面的 bash 又少了一个

image.png


# exit   //当最后一个 shell 时,执行 exit 就退出系统了(退出当前登录)


每个进程 (shell) 并不能意识到其它 shell 的存在,就算是父子关系,也意识不到


# csh

# ksh


bash:

  1)命令历史 命令补全

  2)管道重定向

  3)命令别名

  4)命令行编辑

  5)命令行展开

  6)文件名通配

  7)变量

  8)编程


命令行编辑:

光标跳转:

  ctrl+a: 跳到命令行行首

  ctrl+e: 跳到命令行行尾

  ctrl+d: 朝后删除下个字符

  ctrl+k: 删除光标后面的所有字符 删除光标至行尾的内容

  ctrl+u: 删除光标前面的所有字符  删除光标至行首的内容

  ctrl+左右箭头: 可惜不支持 (在图形界面窗口中是支持的)

   模拟终端啥意思

  ctrl+l 也是清屏 与 clear 差不多

命令历史

 上下箭头翻出命令历史

 history      //它是保存在内存缓存区的命令历史 (正常退出的时候会保存在某个文件里

                                   家目录下的 .bash_history 文件里)

  -c: 清空命令历史

  -d offset [n]: 删除命令历史中第多少个命令 (第二个参数是长度,往后多少个的意思)

  -w 表示将缓存区的命令历史至历史文件中


 

环境变量

 PATH:  命令搜索(查找)路径

 HISTSIZE: 命令历史(缓冲区)大小 (默认是1000条)


命令历史的使用技巧:

!n 执行命令历史中的第n条命令    # 感叹号 数字

!-n 执行命令历史中的倒数第n条命令  # 感叹号 负数字

!! 执行上一条命令        # 双感叹号 两个感叹号

!string 执行命令历史中最近一个以指定字符串开头的命令      #感叹号 命令前面的字符

!$ 引用上一个命令中的最后一个参数        #感叹号 美元符号

Esc 松开 .   引用上一个命令中的最后一个参数

Alt+.   引用上一个命令中的最后一个参数 (但是远程终端是不支持的)


命令补全:

  PATH:   Tab键  如果有多个的话 连续两下 Tab键

路径补全

               也是   Tab键  如果有多个的话 连续两下 Tab键

# man bash

# clear

# ccat /etc/fstab /etc/rc.d     //按住 ctrl+a 到了命令行行首,按住 ctrl+e 到了命令行结尾


# type history


# help history

image.png

# history 


# history -d 500  //删除命令历史中第500个命令

# history -d 500  10  //删除命令历史中第500个命令及往后10个命令

# echo $HISTSIZE  //任何一个变量 都可以用 echo $变量 来获取


# history |more

# history |less

# history 

# !441  //执行命令历史中的 441 条命令

#!-4   //执行命令历史中的倒数第4条命令


#cat /tmp/inittab

#nano !$


# cl    //Tab键补全 如果不补全的话 按两下 Tab 键 (就会显示多个值)


#cd /etc/sysc   //Tab键补全 如果不补全的话 按两下 Tab 键 (就会显示多个值)


image.png




普通分类: