Linux基础知识day-8

Posted neuropathy_ldsly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础知识day-8相关的知识,希望对你有一定的参考价值。

shell简介:

  shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。

  shell是命令解析器,用户输入命令,它去解析,然后交给内核执行命令,内核便可以操作硬件。

变量:

  命名规则:

    以字母或者下划线开头,剩下的内容可以是字母、数字、下划线。

  变量赋值:

    [变量名]=[变量值]

    echo $[变量名]     //显示变量值

    unset [变量名]     //删除变量

  export定义的变量和普通变量的区别:

    注意:子bash中的export变量,不会被父bash继承。父bash中的export定义的变量会被子bash继承。

[[email protected] ~]# name=ldsly    //普通方式定义变量
[[email protected] ~]# echo $name    //在父bash中显示变量
ldsly
[[email protected]-3 ~]# bash        //重新打开一个子bash
[[email protected] ~]# echo $name    //显示变量,发现并不存在这个变量

[[email protected]-3 ~]# exit        //退回父bash
exit
[[email protected]-3 ~]# export name=ldsly  //使用export定义变量
[[email protected] ~]# echo $name      //在父bash中显示变量
ldsly
[[email protected]-3 ~]# bash        //打开一个子bash
[[email protected] ~]# echo $name    //在子bash中显示变量,正常显示
ldsly
[[email protected]-3 ~]#

  [[email protected] ~]# export name2=y   //在子bash中继续定义变量 name2
  [[email protected] ~]# echo $name2    //子bash中显示变量
  y
  [[email protected] ~]# exit        //退回父bash
  exit
  [[email protected] ~]# echo $name2    //在父bash中显示变量


  [[email protected] ~]#            //父bash中不存在变量 name2

 

命令执行的优先级:

 

==> alias
  ==> Compound Commands
    ==> function 
      ==> build_in
        ==> hash
          ==> $PATH
            ==> error: command not found

 

默认的变量存放位置:(此文件顺序为开机登陆系统时,系统加载的顺序) 

  /etc/profile

 

  ~/.bash_profile

 

  ~/.bashrc

 

  /etc/bashrc
各种情况下变量文件加载情况:
[[email protected] ~]# su - ldsly       //完全切换用户时,四个变量文件按顺序全部加载
Last login: Sat Jun  3 00:40:14 CST 2017 on tty1
/etc/profile
/home/ldsly/.bash_profile
/home/ldsly/.bashrc
/etc/bashrc
[[email protected]-3 ~]$ exit
logout
[[email protected]-3 ~]# su ldsly    //不完全切换时,只加载对应用户家目录下的.bashrc和系统下的 bashrc文件
/home/ldsly/.bashrc /etc/bashrc [[email protected]-3 root]$ exit exit [[email protected]-3 ~]# bash    //开启子bash时,加载当前登录用户家目录下的.bashrc和系统下的bashrc文件 /root/.bashrc /etc/bashrc [[email protected]-3 ~]#

PATH的查看和添加:

[[email protected] ~]$ echo $PATH      //查看PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ldsly/.local/bin:/home/ldsly/bin
[[email protected]-3 ~]$ export PATH=/usr/local/nginx/sbin:$PATH    //临时添加/usr/local/nginx/sbin到PATH中
[[email protected]-3 ~]$ echo $PATH
/usr/local/nginx/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ldsly/.local/bin:/home/ldsly/bin
[[email protected]-3 ~]$

  想永久生效就添加就在/etc/bashrc文件中添加export PATH=/usr/local/nginx/sbin:$PATH

 

元字符

  ~:家目录,可使用cd ~ 快速返回家目录

[[email protected] ~]$ pwd
/home/ldsly
[[email protected]-3 ~]$

  ``:取命令执行结果

[[email protected] ~]$ echo `ls`
Desktop Documents Downloads Music Pictures Public Templates Videos

  $():同上但是弥补了``嵌套的缺陷

[[email protected] ~]$ a=`echo `ls``       //使用``发现$a的值并不是我们要的ls的显示结果
[[email protected]-3 ~]$ echo $a
ls
[[email protected]-3 ~]$ a=$(echo `ls`)    //使用$()
[[email protected]-3 ~]$ echo $a
Desktop Documents Downloads Music Pictures Public Templates Videos
[[email protected]-3 ~]$ a=$(echo $(ls))     //全部使用$()
[[email protected]-3 ~]$ echo $a
Desktop Documents Downloads Music Pictures Public Templates Videos
[[email protected]-3 ~]$

  !:取反

[[email protected]ntos-3 ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[[email protected]-3 ~]$ ls D[!e]*
Documents:

Downloads:
[[email protected]-3 ~]$

  !:取历史命令

   57  ls
   58  history
[[email protected]-3 ~]$ !57
ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[[email protected]-3 ~]$

  !:取最近的一次命令匹配

[[email protected] ~]$ !ls
ls /tmp/
anaconda.log         storage.log
hsperfdata_ldsly     systemd-private-51ecaa2f4af14852be58a7b018bae8fb-cups.service-DR3a4Y
hsperfdata_root      systemd-private-51ecaa2f4af14852be58a7b018bae8fb-vmtoolsd.service-qkylGu
ifcfg.log            systemd-private-b3d2522c2a1641249fba9275ac0c283a-cups.service-fCjOWS
ks-script-JUZxd9     systemd-private-b3d2522c2a1641249fba9275ac0c283a-vmtoolsd.service-DRnv3k
nginx-1.12.0.tar.gz  tracker-extract-files.0
packaging.log        tracker-extract-files.1000
program.log          yum.log
sensitive-info.log
[[email protected]-3 ~]$

  !:命令的返回值取反

[[email protected] ~]$ ls      
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[[email protected]-3 ~]$ echo $?      //取上一次命令的结果返回值
0                      //0为真  非0为假,一般可理解为,上一条命令执行成功了返回0,执行失败返回非0值。范围:0-255
[[email protected]-3 ~]$ ! ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[[email protected]-3 ~]$ echo $?
1
[[email protected]-3 ~]$

  #:注释,井号后的内容不会被执行,仅用于注释

  ^:取反的意思,跟!差不多。但还是有区别

[[email protected] ~]# ls D[^e]*
Documents:

Downloads:
[[email protected]-3 ~]#

  &:后台运行的意思

[[email protected] ~]# firefox &
[1] 5484
[[email protected]-3 ~]#

  ():在子进程中运行

[[email protected] ~]# a=1
[[email protected] ~]# echo $a
1
[[email protected]-3 ~]# (a=10;echo $a)
10
[[email protected]-3 ~]#

  =:赋值

  &&:逻辑与

  ||:逻辑或

  |:管道符

  >:重定向符

  >>:追加重定向符

  \:转义符 

  ‘‘: 硬引用,引号内所有内容当 字符串输出处理   
  "" :软引用,引号内字符有自己的含义
  : :执行结果,永远为真
  *:通配符,任意字符
  
一些快捷键
  TAB键:命令补全功能,防止一些输入错误
  Ctrl+A:光标移到行首
  Ctrl+E:光标移到行尾
  Ctrl+L:清空当前屏幕
  Ctrl+U:删除光标当前位置到行首的内容
  Ctrl+K:删除光标当前位置到行尾的内容
 
 
grep命令的常用参数:
  -n:显示行号
  -o:只显示匹配的内容
  -q:静默模式,没有任何输出,可以使用echo $?来判断是否成功执行。
  -l:如果匹配成功,打印出文件名,失败不打印
  -A:匹配成功,将匹配行及其后n行一起打印出来
  -B:匹配成功,将匹配行及其前n行一起打印出来
  -C:匹配成功,将匹配行及其前后n行一起打印出来
  -c:匹配成功,只打印匹配的行数(一共匹配到多少行的数量)打印出来
  -i:忽略大小写
  -v:取反,不匹配
  -w:匹配单词(连续的字母组成的单词)
 
正则表达式
  正则表达式跟通配符不同,通配符是由shell解释的,正则表达式是由命令解释的。
  
  ^:行首
[[email protected] ~]# grep -n ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[[email protected]-3 ~]# grep -n ‘^root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
[[email protected]-3 ~]#

  $:行尾

[[email protected] ~]# grep -n ‘bash$‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
43:ldsly:x:1000:1000:ldsly:/home/ldsly:/bin/bash
[[email protected]-3 ~]#

  []:中括号内任一字符

[[email protected] ~]# grep [bc] 1.txt
abc
abccc
a/bc
apobc
[[email protected]-3 ~]#

  [^]:中括号内每个字符取反

[[email protected] ~]# grep [^bc] 1.txt
a
abc
abccc
a/bc
apobc
[[email protected]-3 ~]#

  [a-z]:小写字母

  [A-Z]:大写字母

  [a-Z]:小写和大写字母

[[email protected] ~]# grep [A-Z] 1.txt
Abc
aBC
ABC
[[email protected]-3 ~]#

  [0-9]:数字

[[email protected] ~]# grep [0-9] 1.txt
ab2ccc
a1/bc
Abc4
aBC6
ABC7
[[email protected]-3 ~]#

  |:交替匹配|两边的任意一项

[[email protected] ~]# egrep  ‘ABC|abc‘ 1.txt
abc1
abc2
ABC1
ABC2
[[email protected]-3 ~]#

 















以上是关于Linux基础知识day-8的主要内容,如果未能解决你的问题,请参考以下文章

Python基础day-8[装饰器补充,迭代器(未完)]

学习PYTHON之路, DAY 8 - PYTHON 基础 8 (面向对象进阶)

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

python爬虫 Day 8

《LinuxProbe》—RHCE 学习 Day6-8

《LinuxProbe》—RHCE 学习 Day6-8