Shell脚本

Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用了Linux/Unix下的命令。
        换一种说法也就是,shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管线命令以及数据流重导向等功能,以达到我们所想要的处理目的

shell和shell脚本的区别:

shell是什么呢?确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚3至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

交互式shell和非交互式shell

  交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
  shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
如下:
简单的实现系统巡检的命令:
date

  1. [root@linuxprobe ~]# date
  2. 2020 03 30 星期一 :: CST

free –m

  1. [root@linuxprobe ~]# free -m
  2. total used free shared buffers cached
  3. Mem:
  4. -/+ buffers/cache:
  5. Swap:

df –Th

  1. [root@linuxprobe ~]# df -Th
  2. 文件系统 类型 容量 已用 可用 已用% 挂载点
  3. /dev/mapper/rhel_linuxprobe-root xfs 18G .8G 14G % /
  4. devtmpfs devtmpfs 905M .0K 905M % /dev
  5. tmpfs tmpfs 914M 140K 914M % /dev/shm
  6. tmpfs tmpfs 914M 8.9M 905M % /run
  7. tmpfs tmpfs 914M 914M % /sys/fs/cgroup
  8. /dev/sr0 iso9660 .5G .5G % /mnt
  9. /dev/sda1 xfs 497M 125M 373M % /boot

写成一个简单的脚本test.sh
#!/bin/bash
date
free –m
df –Th
chmod +x test.sh
./test.sh

  1. [root@linuxprobe ~]# ./test.sh
  2. 2020 03 30 星期一 :: CST
  3. total used free shared buffers cached
  4. Mem:
  5. -/+ buffers/cache:
  6. Swap:
  7. 文件系统 类型 容量 已用 可用 已用% 挂载点
  8. /dev/mapper/rhel_linuxprobe-root xfs 18G .8G 14G % /
  9. devtmpfs devtmpfs 905M .0K 905M % /dev
  10. tmpfs tmpfs 914M 140K 914M % /dev/shm
  11. tmpfs tmpfs 914M 8.9M 905M % /run
  12. tmpfs tmpfs 914M 914M % /sys/fs/cgroup
  13. /dev/sr0 iso9660 .5G .5G % /mnt
  14. /dev/sda1 xfs 497M 125M 373M % /boot

shell 脚本中-d,-e,-f的区别

查看文件或者目录是否存在,经常用到-d,-e,-f,其中区别如下

-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于

shell脚本的常用命令

cat,head,tail命令

1.求/etc/passwd文件第20行内容

  1. [root@linuxprobe ~]# cat -n /etc/passwd | head - | tail -
  2. avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin

rev,tac命令

rev左右颠倒

tac上下颠倒

find命令

常用选项
-name
-type
-user
-nouser
-group
-nogroup
-mtime
-size
可以使用 -o 或者 -a 连接多个条件
可以使用-exec或者-ok来执行shell命令

  1. find /etc/ -name hosts -exec cp {} /tmp/ \;

如:

  1. find /var/logs -type f -mtime + -exec rm {} \;

计划任务crond和crontab

*/10 * * * * 脚本|命令

&命令

当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。
xclock -update 1 & 后台运行

nohup命令

如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用 n o h u p命令。该命令可以在你退出帐户之后继续运行相应的进程。 N o h u p就是不挂起的意思( n o hang up)。
该命令的一般形式为: nohup command &
nohup xclock -update 1 &

shell的通配符

*
?
[...]和[!...] [a-z] [0-9] [!a12d]
{..}

echo命令

-e 使转义符生效 如: 解释\t \n含义
-n 不换行输出
字颜色:30—–37 
echo -e “\033[30m 黑色字 \033[0m”
echo -e “\033[31m 红色字 \033[0m”
echo -e “\033[32m 绿色字 \033[0m”
echo -e “\033[33m 黄色字 \033[0m”
echo -e “\033[34m 蓝色字 \033[0m”
echo -e “\033[35m 紫色字 \033[0m”
echo -e “\033[36m 天蓝字 \033[0m”
echo -e “\033[37m 白色字 \033[0m”

  1. [root@linuxprobe ~]# echo -e "\033[31m 红色字 \033[0m"
  2. 红色字

字背景颜色范围:40—–47 
echo -e “\033[40;37m 黑底白字 \033[0m”
echo -e “\033[41;37m 红底白字 \033[0m”
echo -e “\033[42;37m 绿底白字 \033[0m”
echo -e “\033[43;37m 黄底白字 \033[0m”
echo -e “\033[44;37m 蓝底白字 \033[0m”
echo -e “\033[45;37m 紫底白字 \033[0m”
echo -e “\033[46;37m 天蓝底白字 \033[0m”
echo -e “\033[47;30m 白底黑字 \033[0m

  1. [root@linuxprobe ~]# echo -e "\033[41;37m 红底白字 \033[0m"
  2. 红底白字

printf命令

  1. [root@linuxprobe ~]# printf aa
  2. aa[root@linuxprobe ~]#  
  1. [root@linuxprobe ~]# printf "aa\n"
  2. aa

格式化输出

  1. [root@linuxprobe ~]# printf "%s,%s,%d\n" good job
  2. good,job,

%s 字符串 %d十进制整数

read命令

可以使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么 read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。
如:
赋值

  1. [root@linuxprobe ~]# read name
  2. zhang san
  3. [root@linuxprobe ~]# echo $name
  4. zhang san

赋多值

  1. [root@linuxprobe ~]# read firstname lastname
  2. zhang san
  3. [root@linuxprobe ~]# echo $firstname $lastname
  4. zhang san
  5. [root@linuxprobe ~]# echo $firstname
  6. zhang
  7. [root@linuxprobe ~]# echo $lastname
  8. san

交互式

  1. [root@linuxprobe ~]# read -p "输入姓名: " name
  2. 输入姓名: zhang san
  3. [root@linuxprobe ~]# echo $name
  4. zhang san

|管道命令

管道(Pipe)实际是用于进程间通信的一段共享内存. 创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机
管道命令的两个作用:
1.管道两边产生两个子进程
2.前一个进程的标准输出和后一个进程的标准输入

注意以下情况不能赋值
echo 123 | read aa
echo $aa

重定向(文件描述符)

文件描述符:进程连接到文件时,获得的一个标记.当进程操作文件时,首先
打开文件 获得打开文件的一个状态,给它一个标记 成为文件描述符
0标准输入
1标准输出
2标准错误输出

> >> 定向符(重定向) >覆盖 >>追加
1> 标准正确输出,文件存在则覆盖,不存在则创建
1>> 标准正确输出,文件存在则追加,不存在则创建
2> 标准错误输出,文件存在则覆盖,不存在则创建
2>> 标准错误输出,文件存在则追加,不存在则创建
&> 标准正确和标准错误输出,文件存在则覆盖,不存在则创建

cat < /dev/sda > /dev/null 测试改变文件描述符

ls >cleanup.out 2>&1
在上面的例子中,我们将 ls命令的输出重定向到 cleanup.out文件中,而且其错误也 被重定向到相同的文件中。
2>&1 标准错误输出定向到标准正确输出

< 输入重定向 后边跟的是文件 > >>
<< here document 后边跟的是一个文本
如下

  1. [root@linuxprobe ~]# cat >a.txt <<EOF
  2. > dsadsadsa
  3. > cxzcxzcxz
  4. > qwewqewqe
  5. > EOF
  6. [root@linuxprobe ~]# cat a.txt
  7. dsadsadsa
  8. cxzcxzcxz
  9. qwewqewqe

[[root@linuxprobe ~]# fdisk /dev/sda <<EOF
> n
>
> +200M
> w
> EOF

<<<here string 后边跟字符串 直接交给文本 如:

  1. [root@linuxprobe ~]# cat>a.txt <<<kkkkk
  2. [root@linuxprobe ~]# cat a.txt
  3. kkkkk

tee命令

tee命令作用可以用字母 T来形象地表示。它把输出的一个副本输送到标准输出,另一个 副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件, 这种情况可以使用tee命令
如:

  1. [root@linuxprobe ~]# who | tee aa.txt
  2. root : -- : (:)
  3. root pts/ -- : (:)
  4. [root@linuxprobe ~]# cat aa.txt
  5. root : -- : (:)
  6. root pts/ -- : (:)
  1. [root@linuxprobe ~]# find /etc -name hosts | tee bb.txt
  2. /etc/avahi/hosts
  3. /etc/hosts
  4. [root@linuxprobe ~]# cat bb.txt
  5. /etc/avahi/hosts
  6. /etc/hosts

sort命令

Linux sort命令用于将文本文件内容加以排序。

sort可针对文本文件的内容,以行为单位来排序。

  1. sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
  • -b 忽略每行前面开始出的空格字符。
  • -c 检查文件是否已经按照顺序排序。
  • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  • -f 排序时,将小写字母视为大写字母。
  • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  • -m 将几个排序好的文件进行合并。
  • -M 将前面3个字母依照月份的缩写进行排序。
  • -n 依照数值的大小排序。
  • -u 意味着是唯一的(unique),输出的结果是去完重了的。
  • -o<输出文件> 将排序后的结果存入指定的文件。
  • -r 以相反的顺序来排序。
  • -t<分隔字符> 指定排序时所用的栏位分隔字符。
  • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
  • --help 显示帮助。
  • --version 显示版本信息。
  1. [root@linuxprobe ~]# cat aa.txt
  2.  
  3. [root@linuxprobe ~]# sort aa.txt
  4.  
  5. [root@linuxprobe ~]# sort -n aa.txt
  6.  
  7. [root@linuxprobe ~]# sort -n -r aa.txt 按完整数字排序 降序
  8.  
  9. 45root
  10.  
  11. [root@linuxprobe ~]# sort -u aa.txt 去掉重复值
  12.  
  13. 90

[root@linuxprobe ~]# sort -t: -k3nr /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
never:x:1004:1004::/home/never:/bin/bash
shitianle:x:1003:1003::/home/shitianle:/bin/bash
tom:x:1002:1002::/home/tom:/bin/bash

  1.  

uniq命令(默认去掉连续的重复值)

Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

uniq 可检查文本文件中重复出现的行列。

  1. uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
  • -c或--count 在每列旁边显示该行重复出现的次数。
  • -d或--repeated 仅显示重复出现的行列。
  • -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
  • -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
  • -u或--unique 仅显示出一次的行列。
  • -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
  1. [root@linuxprobe ~]# cat qq.txt
  2.  
  3. [root@linuxprobe ~]# sort -n qq.txt |uniq -u
  4.  
  5. [root@linuxprobe ~]# cat qq.txt
  6.  
  7. [root@linuxprobe ~]# sort -n qq.txt | uniq -d
  8.  
  9. [root@linuxprobe ~]# sort -n qq.txt | uniq -d -c

grep 命令

linux grep 命令用于查找文件里符合条件的字符串。

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

  1. grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
  • -a 或 --text : 不要忽略二进制的数据。
  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。( 后 N 行)
  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。(前N 行)
  • -c 或 --count : 计算符合样式的列数。(统计匹配次数)
  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。(前后N行)
  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。(显示文件名)
  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。(显示行号)
  • -o 或 --only-matching : 只显示匹配PATTERN 部分。
  • -q 或 --quiet或--silent : 不显示任何信息。
  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。(递归)
  • -s 或 --no-messages : 不显示错误信息。
  • -v 或 --revert-match : 显示不包含匹配文本的所有行。(取反)
  • -V 或 --version : 显示版本信息。
  • -w 或 --word-regexp : 只显示全字符合的列。
  • -x --line-regexp : 只显示全列符合的列。(精确匹配)
  • -y : 此参数的效果和指定"-i"参数相同。
  1. [root@linuxprobe ~]# grep ^root /etc/passwd
  2. root:x:::root:/root:/bin/bash
  3. [root@linuxprobe ~]# grep halt$ /etc/passwd
  4. halt:x:::halt:/sbin:/sbin/halt
  5.  
  6. [root@linuxprobe ~]# grep -A root /etc/passwd
  7. root:x:::root:/root:/bin/bash
  8. bin:x:::bin:/bin:/sbin/nologin
  9. daemon:x:::daemon:/sbin:/sbin/nologin
  10. --
  11. operator:x:::operator:/root:/sbin/nologin
  12. games:x:::games:/usr/games:/sbin/nologin
  13. ftp:x:::FTP User:/var/ftp:/sbin/nologin
  14. [root@linuxprobe ~]# grep -B root /etc/passwd
  15. root:x:::root:/root:/bin/bash
  16. --
  17. halt:x:::halt:/sbin:/sbin/halt
  18. mail:x:::mail:/var/spool/mail:/sbin/nologin
  19. operator:x:::operator:/root:/sbin/nologin
  20. [root@linuxprobe ~]# grep -C root /etc/passwd
  21. root:x:::root:/root:/bin/bash
  22. bin:x:::bin:/bin:/sbin/nologin
  23. daemon:x:::daemon:/sbin:/sbin/nologin
  24. --
  25. halt:x:::halt:/sbin:/sbin/halt
  26. mail:x:::mail:/var/spool/mail:/sbin/nologin
  27. operator:x:::operator:/root:/sbin/nologin
  28. games:x:::games:/usr/games:/sbin/nologin
  29. ftp:x:::FTP User:/var/ftp:/sbin/nologin
  30. [root@linuxprobe ~]# grep -c root /etc/passwd

cut命令

Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。

  1. cut [-bn] [file]
  2. cut [-c] [file]
  3. cut [-df] [file]

使用说明:

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

参数:

    • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    • -c :以字符为单位进行分割。
    • -d :自定义分隔符,默认为制表符。
    • -f :与-d一起使用,指定显示哪个区域。
    • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
      范围之内,该字符将被写出;否则,该字符将被排除
  1. [root@linuxprobe ~]# head - /etc/passwd| cut -d: -f ,
  2. root:
  3. bin:
  4. daemon:
  5. adm:
  6. lp:
  7. sync:
  8. shutdown:
  9. halt:
  10. mail:
  11. operator:
  12. [root@linuxprobe ~]# head - /etc/passwd| cut -d: -f -
  13. root:x:
  14. bin:x:
  15. daemon:x:
  16. adm:x:
  17. lp:x:
  18. sync:x:
  19. shutdown:x:
  20. halt:x:
  21. mail:x:
  22. operator:x:

tr命令

Linux tr 命令用于转换或删除文件中的字符。

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

  1. tr [-cdst][--help][--version][第一字符集][第二字符集]
  2. tr [OPTION]…SET1[SET2]
  • -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
  • -d, --delete:删除指令字符
  • -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
  • -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
  • --help:显示程序用法信息
  • --version:显示程序本身的版本信息

字符集合的范围:

  • \NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
  • \\ 反斜杠
  • \a Ctrl-G 铃声
  • \b Ctrl-H 退格符
  • \f Ctrl-L 走行换页
  • \n Ctrl-J 新行
  • \r Ctrl-M 回车
  • \t Ctrl-I tab键
  • \v Ctrl-X 水平制表符
  1. [root@linuxprobe ~]# echo helooooooo worddddddd | tr -s [a-z]
  2. helo word
  3. [root@linuxprobe ~]# head - /etc/passwd |tr [a-z] [A-Z]
  4. ROOT:X:::ROOT:/ROOT:/BIN/BASH
  5. BIN:X:::BIN:/BIN:/SBIN/NOLOGIN
  6. DAEMON:X:::DAEMON:/SBIN:/SBIN/NOLOGIN
  7. ADM:X:::ADM:/VAR/ADM:/SBIN/NOLOGIN
  8. LP:X:::LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
  9. SYNC:X:::SYNC:/SBIN:/BIN/SYNC
  10. SHUTDOWN:X:::SHUTDOWN:/SBIN:/SBIN/SHUTDOWN
  11. HALT:X:::HALT:/SBIN:/SBIN/HALT
  12. MAIL:X:::MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN
  13. OPERATOR:X:::OPERATOR:/ROOT:/SBIN/NOLOGIN

wc命令

Linux wc命令用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

  1. wc [-clw][--help][--version][文件...]
  • -c或--bytes或--chars 只显示Bytes数。
  • -l或--lines 只显示行数。
  • -w或--words 只显示字数。
  • --help 在线帮助。
  • --version 显示版本信息。
  • m 统计字符数。这个标志不能与 -c 标志一起使用。
  • -L 打印最长行的长度。

统计/tmp目录下文件的个数(数目中包含目录本身)

  1. [root@linuxprobe ~]# ls -l /tmp/ |wc -l

split命令

inux split命令用于将一个文件分割成数个。

该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。

  1. split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
  • -<行数> : 指定每多少行切成一个小文件
  • -b<字节> : 指定每多少字节切成一个小文件
  • --help : 在线帮助
  • --version : 显示版本信息
  • -C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性
  • [输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
  1. [root@linuxprobe ~]#cat /etc/passwd >> zz.txt
  2. [root@linuxprobe ~]# split - zz.txt
  3. [root@linuxprobe ~]# ls
  4. zz.txt xaa xae xab xaf xac xag xad xah

eval命令

Linux eval命令用于重新运算求出参数的内容。

eval可读取一连串的参数,然后再依参数本身的特性来执行。

  1. eval [参数]
  1. [root@linuxprobe ~]# aa="tail -1 /etc/passwd"
  2. [root@linuxprobe ~]# echo $aa
  3. tail - /etc/passwd
  4. [root@linuxprobe ~]# eval $aa
  5. never:x::::/home/never:/bin/bash

date命令

Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:

时间方面:

  1. [root@linuxprobe ~]# date
  2. 2020 03 31 星期二 :: CST
  3. [root@linuxprobe ~]# date +%F-%H:%M:%S
  4. ---::
  5. [root@linuxprobe ~]# date +%F-%H:%M:%S
  6. ---::

bc命令

bc 命令是任意精度计算器语言,通常在linux下当计算器用。

它类似基本的计算器, 使用这个计算器可以做基本的数学运算。

常用的运算:

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • ^ 指数
  • % 余数
  1. [root@linuxprobe ~]# bc
  2. bc 1.06.
  3. Copyright -, , , , , Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. -
  7.  
  8. *
  9.  
  10. *
  11.  
  12. /
  13.  
  14. /
  15.  
  16. %
  17.  
  18. ^

输入 quit 退出。

小数:

  1. [root@linuxprobe ~]# bc
  2. bc 1.06.
  3. Copyright -, , , , , Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. scale=
  7. /
  8. 2.33333

转换进制:

  1. [root@linuxprobe ~]# bc
  2. bc 1.06.
  3. Copyright -, , , , , Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. ibase=;obase=

非交互式:

  1. [root@linuxprobe ~]# echo "3*3" | bc

 ||逻辑或 前边命令失败执行后边命令
&&逻辑与 前边命令成功运行后边命令

shell脚本介绍以及常用命令的更多相关文章

  1. shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...

  2. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  3. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  4. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  5. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  6. Linux中使用crontab命令定时执行shell脚本或其他Linux命令

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e0 5 * ...

  7. Linux执行shell脚本方式及区别&命令后台运行

    Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/

  8. shell脚本语言与linux命令的联系与区别

    使用linux肯定是要会使用命令的,就算提供有用户界面,绝大部分功能还是要通过命令行去操作的.而shell脚本语言也是运行在linux上的脚本语言,对于服务器运维人员也是几乎必须要掌握的.而shell ...

  9. Linux Shell的18条常用命令整理

    1.   ls: 类似于dos下的dir命令 ls最常用的参数有三个:-a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了 ...

随机推荐

  1. OpenCV3入门(十一)图像直方图

    1.直方图的概念 灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像元的个数.确定图像像素的灰度值范围,以适当的灰度间隔为单位将其划分为若干等级,以横轴表示灰度级,以纵轴表示每一灰度级具有的像素 ...

  2. Spring Boot从入门到精通(五)多数据源配置实现及源码分析

    多数据源配置在项目软件中是比较常见的开发需求,Spring和Spring Boot中对此都有相应的解决方案可供大家参考.在Spring Boot中,如MyBatis.JdbcTemplate以及Jpa ...

  3. percona-toolkit 之 【pt-query-digest】介绍

    背景: 做为一个MySQL DBA,分析慢查询是日常主要的工作之一,之前一直使用mysqlsla作为分析慢查询的, 因为简单并且也能满足自己对慢查询分析的要求,对于另一个工具pt-query-dige ...

  4. 国产数据库适配publiccms开源项目

    金仓数据库适配 操作说明: 一.在程序的所有实体层添加schema=”public”(这里的public是根据数据库定义的模式) 二.切换数据库,修改配置文件cms.properties里面的cms. ...

  5. 从0开发3D引擎(十二):使用领域驱动设计,从最小3D程序中提炼引擎(第三部分)

    目录 上一篇博文 继续实现 实现"DirectorJsAPI.init" 实现"保存WebGL上下文"限界上下文 实现"初始化所有Shader&quo ...

  6. 将list集合按指定长度进行切分,返回新的List<List<??>>集合

    Lists.partition public class testList { @Test public void test(){ List<Integer> numList = List ...

  7. springboot自动装配原理回顾、配置文件分析

    配置文件 spring boot官方文档 官方外部配置文件说明参考文档 自动配置原理分析 1. SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfigurat ...

  8. es6中的属性名表达式

    代码如下: 问题: 为什么我可以这样给obj1对象添加动态属性? 为什么我最终的结果是只添加了right属性? 解答: 1. 第一个问题解答如下: 我们知道在es5中给对象添加属性有两种方法,一种是通 ...

  9. 【新功能】MaxCompoute禁止Full Scan功能开放

    摘要: 2018年1月10日,MaxCompute禁止Full Scan功能开放.对于新创建的project默认情况下执行sql时,针对该project里的分区表不允许全表扫描,必须有分区条件指定需要 ...

  10. JDBC概述及编程步骤详解

    目录 一.JDBC概述 二.JDBC编程步骤(以MySQL为例) 1.导入jar包 2.加载数据库驱动 3.通过DriverManager获得Connection对象 3.定义SQL语句 4.利用Co ...