用户工具

站点工具


linux_basic:bash_shell:intro

shell之于Linux

GNU/Linux是世界上最强大、最灵活的操作系统之一。在现代计算领域中,它可谓无处不在,从 服务器、便携式计算机、移动电话、平板电脑到超级计算机,概莫能外。尽管配备了优美、时髦 的图形用户界面,但依然是同Linux进行交互的最灵活的方式。
除了执行单独的命令, shell还可以执行命令脚本, 所以非常易于实现各种任务的自动化操作, 如生成报表、发送电子邮件、进行系统维护等。本书包含各式各样的攻略,演示了命令及shell 脚本的实战用法。你可以将其作为参考,或是自己编写脚本时的灵感源泉。书中涉及的任务包括 文本处理、网络运维、系统管理,不一而足。
和学习其他手艺一样,熟能生巧。待你成为shell脚本行家之日,方能完全发挥并驾驭shell的 真力。

bash内建命令

输出信息

echo 与 printf

输出命令之后的所有信息。信息外侧可以不加引号,但无引号时特殊字符需要转义。注,

  • 普通列表项目变量替换不可用在单引号内
  • 分号作为多条命令之间的间隔。不仅仅echo中。

常见的有

字符 输出转置
! \!

[centos7]# echo "Hello world !"
bash: !": event not found    #报错表示需要\转义
#以下为正确输出
[centos7]# echo Hello world \!
Hello world !
[centos7]# echo "Hello world \!"
Hello world \!   #多输出了\
[centos7]# echo Hello world !
Hello world !
<sxh bash; first-line: 1; highlight: [89,98-99];title: linux Terminal Print Example ↓↓ >

echo "Hello world !"
#[output] bash: !": event not found    #报错表示需要\转义
#以下为正确输出
echo Hello world \!
#[output] Hello world !
echo "Hello world \!"
#[output] Hello world \!   #多输出了\
echo Hello world !
#[output] Hello world !



printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
    ==================
No    Name       Mark
1     Sarath     80.35
2     James      91.00
3     Jeff       77.56

[centos7]# sh 1.txt
Hello world \!




printf语法说明

  • 普通列表项目%s 、 %c 、 %d 和 %f 都是格式替换符(format substitution character) ,其所对应的参数可以置于带引号的格式字符串之后。
  • %-5s 指明了一个格式为左对齐且宽度为5的字符串替换( - 表示左对齐) 。如果不用 - 指定对齐方式,字符串就采用右对齐形式。宽度指定了保留给某个变量的字符数。对 Name 而言,保留宽度是10。因此,任何 Name 字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10个字符,余下的则以空格符填充。
  • 对于浮点数,可以使用其他参数对小数部分进行舍入。
  • 对于 Mark 字段,将其格式化为 %-4 . 2f ,其中. 2 指定保留2个小数位。注意,在每行格式字符串后都有一个换行符( \n ) 。

echo高级用法

1. 在 echo 中转义换行符 在默认情况下, echo 会将一个换行符追加到输出文本的尾部。可以使用选项 -n 来忽略结尾 的换行符。 echo 同样接受双引号字符串内的转义序列作为参数。如果需要使用转义序列,则采 用 echo –e “ 包含转义序列的字符串 ” 这种形式。例如:

echo -e "1\t2\t3"
1 2 3
     If -e is in effect, the following sequences are recognized:
     \\     backslash
     \a     alert (BEL)
     \b     backspace
     \c     produce no further output
     \e     escape
     \f     form feed
     \n     new line
     \r     carriage return
     \t     horizontal tab
     \v     vertical tab
     \0NNN  byte with octal value NNN (1 to 3 digits)
     \xHH   byte with hexadecimal value HH (1 to 2 digits)

输出自定义颜色

echo -e “\e[1;31m This is red text \e[0m”
This is red text
echo -e “\e[1;42m Green Background \e[0m”

linux_basic/bash_shell/intro.txt · 最后更改: 2020/09/25 21:49 (modify by Amos)