linux基础

2019-10-20  本文已影响0人  黑曼巴yk

Tab键

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

linux系统变量

[root@iZbp1ge7stkcnj5044oa81Z ~]# echo $SHELL
/bin/bash
[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
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. 特殊替换
小括号()
  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. 文件系统属性测试
  1. 字符串比较
    在进行字符串比较时,最好使用双中括号 [[ ]]. 因为单中括号可能会导致一些错误,因此最好避开它们
[[ $str1 = $str2 ]]

whatis命令

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

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

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

history

[root@iZbp1ge7stkcnj5044oa81Z ~]# history
    1  ls
     2 echo $a self
    // ...

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

[root@iZbp1ge7stkcnj5044oa81Z ~]# !2
echo $a self
!string 重复前一个以`string`开头的命令
!?string 重复前一个包含`string`的命令

date

[root@iZbp1ge7stkcnj5044oa81Z ~]# date -d '1 day' +%F
2019-10-20
[root@iZbp1ge7stkcnj5044oa81Z ~]# date +%s
1571488975
上一篇 下一篇

猜你喜欢

热点阅读