计算机基础篇之四

目录

  1.1 bash基本特性

  1.2 cp

  1.3 mv

  1.4 install/cat

  1.5 more/less

  1.6  head/tail

  1.7 cut/sort

  1.8 wc/tr

  1.9 grep

  1.10 过滤IP地址

1.1 bash基本特性

bash基本特性:
1.命令行编辑 光标跳转
    ctrl+a     命令行首
    ctrl+e     命令行尾
    ctrl+d     删除光标处字符
    ctrl+u     删除光标至命令行首的内容
    ctrl+k     删除光标至命令行尾的内容                
    ctrl+<-   跳转一个单词
    ctrl+l    清屏
2.命令历史     保存在内存缓冲区
    history 
        -c       清空历史命令
        -d 50   清空第500个命令
        -d 50 3 从500行开始的后三行
        -w 缓存区保持到内存中    ./bash_history 
        !n 
        !-n :         倒数第n条命令   
        !!          执行上一条命令
        !字符串    执行历史命令中最近一个以此字符串开头的命令
        !$           引用前一个命令的最后一个参数( esc 松开.)(alt+ .)
3.命令补全/路径补全
     Tab健  
4.命令别名
    alias 别名  
  #bash的配置文件
    unalias 别名
5,命令替换
    把命令中某个子命令替换为其执行结果的过程
    echo "this is a 当前目录 $(pwd)"
    echo "this is a 当前目录 $`pwd` 
    touch ./file-$(date +%F-%H-%M-%S).txt
###示例###
[root@xiaofu ~]# echo "taday is `date +%F-%H-%S-%M`"
taday is 2019-12-19-00-11-06
[root@xiaofu ~]# echo "this directory is $(pwd)"
this directory is /root
6.bash支持的引号:
    1.``   命令替换
    2.""   弱引号,可以实现变量替换
    3.''   强引号   不完成变量替换
7.文件名通配:
    *      #通配任意长度的任意字符,包括空字符
    ?      #匹配任意单个字符,必须为1个,空字符不行
    []     #匹配指定范围内的任意单个字符 [a-z],[0-9][a-zA-Z],[0-9a-zA-Z]
    [^]    #匹配指定范围之外的任意单个字符
###示例###
[root@xiaofu test]# ls
1dcbc 1.txt a aab abc ab a b a_b  b b33c 1a 2j 39 9g     #目录下所有的文件
[root@xiaofu test]# ls [0-9]*     #显示所有以数字开头的文件
111dcbc 1.txt
[root@xiaofu test]# ls a*b         #显示以a开头b结尾的所有文件
aab ab a b a_b
[root@xiaofu test]# ls [0-9]?     #显示已数字开头后面只有一个字符的文件
1a 2j 39 9g
[root@xiaofu test]# ls [^0-9]*   #显示不是数字开头的所有文件
a aab aabbc ab a b a_b Abbccd b b33c
    [:space:]   # 所有的空白文件
    [:punct:]   # 所有的标点符号
    [:lower:]   # 所有小写字母
    [:upper]         # 所有大写字母
    [:alpha]     # 所有大小写字母
    [:digit]        # 所有数字
    [:alnum]        # 数字和大小写字母
man 7 glob
###示例###
[root@xiaofu test]# ls
111 1123bjj 1.doc a ba.txt abc ABc b c Bid c_b #目录中所有文件
[root@xiaofu test]# ls *[[:space:]]*   #显示包含空白字符的所有文件
a ba.txt b c c_b
[root@xiaofu test]# ls *[[:punct:]]*   #显示所有包含标点字符的文件
1.doc a ba.txt c_b
root@xiaofu test]# ls [[:lower:]]*          #显示所有包含小写字符的文件
a ba.txt abc b c
[root@xiaofu test]# ls [[:upper:]]*         #显示所有包含大写字符的文件
ABc Bid
[root@xiaofu test]# ls [[:alpha:]]*          #显示所有包含大小写字符的文件
a ba.txt abc ABc b c Bid
[root@xiaofu test]# ls [[:digit:]]*            #显示所有包含数字的文件
111 1123bjj 1.doc
[root@xiaofu test]# ls [[:alnum:]]*           #显示包含数字和大小写字符的文件
111 1123bjj 12Ga 1.doc a ba.txt abc ABc b c Bid

1.2 cp 

cp 
    #一个文件到一个文件;多个文件到一个目录
    -a 归档复制(保留源文件一切属性,原来什么属性就复制成什么属性)
    -r 递归复制
    -f 强制复制
    -p 属主组,权限,时间戳
    -a{dR} 保留源文件所有属性
    -l 复制链接指向的文件非链接
    -P 保持链接自身属性
###示例###
[root@xiaofu ~]# cp /etc/{passwd,shadow,yum.repos.d/redhat.repo} /tmp/
[root@xiaofu ~]# ll /tmp/
-rw-r--r--. 1 root root 989 Dec 17 08:19 passwd
-rw-r--r--. 1 root root 358 Dec 17 08:19 redhat.repo
----------. 1 root root 982 Dec 17 08:19 shadow

1.3 mv

mv SRC DEST
mv -t DEST SRC
    #功能和cp类似

1.4 install/cat

install 复制文件指定属性
    -d 创建目录
    -m 指定权限,-o 指定属主
install -t DEST SRC...
###示例###
[root@xiaofu ~]# install -d /tmp/{a.txt,b.txt}
[root@xiaofu ~]# ll /tmp/
drwxr-xr-x. 2 root root   6 Dec 17 08:41 a.txt
drwxr-xr-x. 2 root root   6 Dec 17 08:41 b.txt
###################################
[root@xiaofu ~]# ll -d /etc/passwd
-rw-r--r--. 1 root root 989 Dec 13 00:05 /etc/passwd
[root@xiaofu ~]# install /etc/passwd /tmp/passwd1
[root@xiaofu ~]# ll -d /tmp/passwd1 
-rwxr-xr-x. 1 root root 989 Dec 17 08:44 /tmp/passwd1
cat   #从标准输入读取内容并显示标准输出上
    [选项] [file...]
    -n 显示行号
    -E 显示行尾{linux行尾是"$",Windows行尾是"$回车"}
    -A 所有显示
tac 反向选择{和cat反过来显示}

1.5 more/less 

more/less 分屏显示
     "空格键"       #向后翻一屏
      "b"             #向前翻一屏
      "回车键"       #一行行向后翻

1.6 head/tail

head/tail #文件的前n行,默认10行
    -n 显示行数
taif -f file...实时显示追加的内容

1.7 cut/sort

cut/join  切/合并
    -d  #指定字段分隔符{默认为一个空格}
    -f    #指定需要显示的字段
          #  -f1 ;  1,3;  1-3
sort 文本排序
    #默认根据ASCII表进行排序
    -n 数值大小排序
    -r 降序排序
    -t 字段分割符
    -k 以哪个字段关键字进行排序
    -u 相同的行只显示一次{UNICODE}相邻
    uniq - d 报告重复的行
      -c 重复行的次数
    -f  忽略字符大小写

1.8 wc/tr

wc 文本统计
[root@xiaofu ~]# wc /etc/passwd
 22  30 989 /etc/passwd
行数 30个单词 989个字节
    -l 只显示行
    -w 只现实单词数
    -c 只显示字节
    -m 字符数
    -L 最长的行包含多少个字符
tr 字符处理命令  #转换或删除字符
###示例###
tr "a-z" "A-Z" < /ect/passwd #逐个替换
    -d 删除出现字符集中的所有字符 逐个字符进行处理

1.9 grep

grep家族
 1.grep       #根据模式搜索文本,并将符合模式的文本行显示出来,(使用基本正则表达式的模式来过滤文本的命令)
#Pattern(模式):文本字符和正则表达式的元字符组合而成的匹配条件 
-i 忽略字符大小写
--color 匹配颜色
-v 反向查找
-o 只显示被模式匹配的字符串
-E ;使用扩展正则表达式  #即"egrep"
  -A:#10 after
  -B      before
  -C :     after,berfore
###示例###
[root@xiaofu ~]# grep -EA 2 'sshd' /etc/passwd      #显示'/etc/passwd'文件中包含"sshd"字符的后两行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user01:x:1000:1000::/home/user01:/bin/bash
user02:x:1001:1001::/home/user02:/bin/bash
[root@xiaofu ~]# grep -EB 2 'sshd' /etc/passwd      ##显示'/etc/passwd'文件中包含"sshd"字符的前两行
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@xiaofu ~]# grep -EC 2 'sshd' /etc/passwd      ##显示'/etc/passwd'文件中包含"sshd"字符的前后两行
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user01:x:1000:1000::/home/user01:/bin/bash
user02:x:1001:1001::/home/user02:/bin/bash  
###正则表达式### 正则表达式 Regular EXPression (REGEXP) #尽可能长的模式下匹配
 
1)元字符
  . 匹配任意单个字符 #grep
'r..t' /etc/passwd
 [] 指定范围内的任意单个字符 #grep
'[0-9]' /etc/fstab
 [
^] 指定范围外的任意单个字符 #grep '[^A-Z]' /etc/fstab
 2)匹配次数
  * 匹配其前面的字符任意次 a,b,ab,aab,acb,adb,amdb a*b a.*b
  .
* 任意长度的任意字符
  
? : 匹配其前面的字符一次或0次(可用可无)
  {m,n} 匹配其前面的字符至少m次,至多n次
###示例###
[root@xiaofu test]# grep
'b?' 1.txt #表示b字符出现1次或0次
a,b,ab,aab,abb,acb,adddba b,bbc,ddd,fjdc
[root@xiaofu test]# grep
'b{1,2}' 1.txt #表示字符b最少出现1次,最多出现2次
a,b,ab,aab,abb,acb,adddba b,bbc,ddd,fjdc
位置指定
^ 此字符后面的任意内容必须出现在行首 #grep '^/' /etc/fstab
$ 此字符前面的任意内容必须出现在行尾 #grep
'0$' /etc/fstab
^$ :空白行 # grep -v "^$" /etc/samba.conf #过滤samba配置文件中的空行
< 其后面的字符字符必须作为单词首部出现 
> 其前面的字符字符必须作为单词尾部出现 
###示例###

[root@xiaofu test]# cat 1.txt
abcefguser01
user01xxxx
sssuser01
user is user01

[root@xiaofu test]# grep 'user01' 1.txt 

user is user01
[root@xiaofu test]# grep 'user01' 1.txt
user01xxxx
user is user01

[root@xiaofu test]# grep '<user01' 1.txt 
user01xxxx
user is user01

###
[root@xiaofu test]# grep 'user01' 1.txt
abcefguser01
sssuser01
user is user01
[root@xiaofu test]# grep 'user01>' 1.txt
abcefguser01
sssuser01
user is user01

分组
  ()
    (ab)*  ab可以出现0此,一次,任意次
  1:引用第一个左括号以及与之对应的右括号所包含的所有内容
###示例###

[root@xiaofu test]# cat 1.txt       #显示文件1.txt的内容
i hello is hellor
b miss u a misser
u love me lovever
ddd lwwe dd lwwe
fddlxxe is ssslxxe
[root@xiaofu test]# grep '(l..e).*1' 1.txt   #显示以"l..e"类型的字符,后面也同样出现类似的"l..e"的字符
u love me lovever
ddd lwwe dd lwwe
fddlxxe is ssslxxe
[root@xiaofu test]#

扩展正则表达式与基本正则表达式区别:
  1.字符匹配相同
  2.次数匹配
  *:任意长度的任意字符
  ?:任意当个字符
  +:其前字符至少一次{1,}
  {m,n}最少m次,最多n次
分组:{},支持或者"a|b" #or
###示例###

[root@xiaofu test]# cat 1.txt
cat
Cat
c
china
[root@xiaofu test]# grep -E 'c|cat' 1.txt
cat
c
china

[root@xiaofu test]# grep -E '(c|C)at' 1.txt
cat
Cat

grep -E =egrep

1.10 过滤IP地址

###示例###
1.过滤掉"1-255之间的数字"
[root@xiaofu ~]# ifconfig | egrep '<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>' 
        inet 192.168.0.204  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::b387:2fab:3408:7a83  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:cf:b0:2e  txqueuelen 1000  (Ethernet)
        RX packets 207708  bytes 14793261 (14.1 MiB)
        TX packets 9692  bytes 1137475 (1.0 MiB)
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 80  bytes 7096 (6.9 KiB)
        TX packets 80  bytes 7096 (6.9 KiB)
2.过滤IP地址
    #"<",">"""的意思相同。
[root@xiaofu ~]# ifconfig | egrep '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' 
inet 192.168.0.204 netmask 255.255.255.0 broadcast 192.168.0.255
inet 127.0.0.1 netmask 255.0.0.0
[root@xiaofu ~]#
[root@xiaofu ~]# ifconfig | egrep -o '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
192.168.0.205
255.255.255.0
192.168.0.255
127.0.0.1
255.0.0.0
[root@xiaofu ~]# ifconfig | egrep -o '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).)([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
192.168.0.205
255.255.255.0
192.168.0.255
127.0.0.1
255.0.0.0

The End

成功的背后都是汗水
原文地址:https://www.cnblogs.com/xiaofu89120/p/12044450.html