美文网首页
linux基础

linux基础

作者: 黑曼巴yk | 来源:发表于2019-10-20 17:22 被阅读0次

Tab键

Tab键可以用于补全命令,敲两遍可以补全

linux系统变量

  • SHELL
    显示系统默认的shell
[root@iZbp1ge7stkcnj5044oa81Z ~]# echo $SHELL
/bin/bash
  • PATH
    系统执行命名的查找路径
[root@iZbp1ge7stkcnj5044oa81Z ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

单引号和双引号以及反引号区别

  • 单引号
    单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来,值作为普通字符解释
~ echo '$PATH'
$PATH
  • 双引号
    双引号括起来的字符,除$ ` \仍然保留特殊功能外,其余作为普通字符
~ echo "$PATH"
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/Library/apache-maven-3.5.3/bin:/usr/local/mysql/bin
  • 反引号
    反引号括起来的字符串不但可以解释shell变量还可以解释shell命令
ls -la `echo $PATH`

source和点

  1. source 在当前shell环境中执行shell脚本(无需执行权限)
source a.sh

source命令式在当前的shell去读取和执行a.sh,而a.sh不需要有执行权限
source命令可以简写为.

. ./a.sh
  1. sh/bash 使用shell解释器来执行shell脚本(无需执行权限)
sh a.sh
bash a.sh

都是打开一个新的子shell去读取执行a.sh。通常在subshell脚本设置变量不会影响父shell的

  1. ./ 执行当前目录的shell文件 (需要执行权限)
[root@iZbp1ge7stkcnj5044oa81Z ~]# ./a.sh
-bash: ./a.sh: Permission denied
[root@iZbp1ge7stkcnj5044oa81Z ~]# chmod +x a.sh
[root@iZbp1ge7stkcnj5044oa81Z ~]# ./a.sh
hello a.sh

打开一个subshell(子shell)去读取执行a.sh,但a.sh需要有执行权限

#! /bin/sh#! /bin/bash的区别

  1. #!/bin/sh是指此脚本使用bin/sh来解释执行。#!是特殊的标识符,后面跟的是此解释脚本的shell路径

可以通过cat /etc/shells查看系统支持的shell格式

[root@iZbp1ge7stkcnj5044oa81Z ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
  1. sh是规范而不是具体实现。
    所以/bin/sh一般是软链接(硬链接)到/bin/bash,但是每个系统实现不一致。

花括号,中括号,小括号等

花括号{}
  1. 大括号扩展
[root@iZbp1ge7stkcnj5044oa81Z ~]# ls {a,b}.sh
a.sh  b.sh
  1. 表达式变量


    image
  2. 特殊替换
  • ${var:-string}:当变量var值为空时,${var:-string}会把string作为值,当变量var值不为空时,${var:-string}会把var的值作为变量。
    image
  • ${var:+string}${var:+string}的替换规则和上面的相反,即当变量var的值不为空的时将值换成string,当变量var为空时则不替换或者说是替换成变量var的值,即空值
    image
    详细信息
小括号()
  1. 命令组
    小括号中的命令会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中的多个命令用分号;隔开,最后一个命令可以没有分号
  2. 命令替换
    等同于command(反引号),shell扫描一遍命令行,发现了(command)结构,便将(command)中的command执行一次,得到其标准输出,再将此输出放到原来命令。
  3. 用于初始化数组
    如:array=(a b c d e f)

中括号[]

1.算术比较
对变量或者值进行算术条件判断
[ var -eq 0 ] # 当var 等于 0 时,返回真
[ var -ne 0 ] # 当var 不等于 0 时,返回真

  1. 文件系统属性测试
  • [ -f $file_var ]
    变量$file_var是一个正常的文件路径或者文件名
  • [ -x $var ]
    变量 $var 包含的文件可执行 (execute),则返回真
  1. 字符串比较
    在进行字符串比较时,最好使用双中括号 [[ ]]. 因为单中括号可能会导致一些错误,因此最好避开它们
[[ $str1 = $str2 ]]

whatis命令

whatis命令是用于查询一个命令执行什么功能,并将查询结果打印到终端上。

[root@iZbp1ge7stkcnj5044oa81Z ~]# whatis rm
rm (1)               - remove files or directories

whatis命令依赖于本地数据库的存在,在centos7上可以执行mandb生成数据库

history

  • history用来查看历史执行命令的
[root@iZbp1ge7stkcnj5044oa81Z ~]# history
    1  ls
     2 echo $a self
    // ...

通过!编号来执行历史命令

[root@iZbp1ge7stkcnj5044oa81Z ~]# !2
echo $a self
  • history文件位置
    history一开始是保存在内存中的,当登录断开会保存在文件中。文件保存的位置是
    ~/..bash_history

  • 命令行历史

!string 重复前一个以`string`开头的命令
!?string 重复前一个包含`string`的命令
  • 清除当前历史记录
    使用history -c可以删除内存中的历史记录
    但是需要真正全部删除的话,需要删除.bash_history文件

date

  • -d
    显示本月的第几天
  • %F
    显示年月日,格式为yyyy-MM-dd
[root@iZbp1ge7stkcnj5044oa81Z ~]# date -d '1 day' +%F
2019-10-20
  • %s
    显示总共多少秒
[root@iZbp1ge7stkcnj5044oa81Z ~]# date +%s
1571488975

相关文章

网友评论

      本文标题:linux基础

      本文链接:https://www.haomeiwen.com/subject/btrimctx.html