shell学习

Posted getHeading

tags:

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

shell学习

教材为Shell脚本学习指南(O\'REILY)

2021/5/14

#!的作用

#2021/5/14
# #!的作用
#例:假设一个脚本/home/learning/shell/nusers
#第一行#! /bin/bash -,内核解释这行命令后便会以如下方式引用bash:
#/bin/bash /home/learning/shell/nusers
#-表示没有shell选项,基于安全上的考虑,可避免一定程度的欺骗性攻击

合并参数选项

#不需要参数的选项可以合并例如:
#rm -fr

变量

#! /bin/bash -
# myvar
# 变量测试
myvar=this_is_a_long_string_that_not_mean_much
first=isaac middle=bashevis last=singer
fullname="isaac bashevis singer"
oldname=$fullname
echo $oldname
fullname="$first $middle $last"
echo $fullname
echo $myvar
[root@localhost shell]# ./myvar
isaac bashevis singer
isaac bashevis singer
this_is_a_long_string_that_not_mean_much

echo和printf

略(p29-32)

基本的I/O重定向

软件设计原则里的重要概念:程序应该有数据的来源端、数据的目的端以及报告问题的地方,它们分别被称为标准输入、标准输出以及标准错误输出。

读取标准输入、写入标准输出,并将错误信息传递到标准错误输出的一类程序常叫做过滤器(filter)

默认的标准输入、标准输出都是终端,这点可通过cat程序得知

[root@localhost shell]# cat
now is the time
now is the time
for all good men
for all good men
to come to the aid of thier country
to come to the aid of thier country
^D			Ctrl-D,文件结尾

是谁替执行中的程序初始化标准输入、输出及错误输出的呢?

答案就是在你登录时,UNIX便将默认的标准输入、输出及错误输出安排成你的终端。

I/O重定向就是你通过与终端交互,或是在Shell脚本里设置,重新安排从哪里输入或输出到哪里

cat

[root@localhost shell]# cat --help
用法:cat [选项]... [文件]...
连接所有指定文件并将结果写到标准输出。

如果没有指定文件,或者文件为"-",则从标准输入读取。

  -A, --show-all           等效于 -vET
  -b, --number-nonblank    对非空输出行编号,同时取消 -n 选项效果
  -e                       等效于 -vE
  -E, --show-ends          在每行结束处显示"$"
  -n, --number             对输出的所有行编号
  -s, --squeeze-blank      不输出多行空行
  -t                       与 -vT 等效
  -T, --show-tabs          将跳格字符显示为^I
  -u                       (被忽略)
  -v, --show-nonprinting   使用^ 和M- 引用,除了LFD和 TAB 之外
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

示例:
  cat f - g  先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
  cat        将标准输入的内容复制到标准输出。

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/cat>
或者在本地使用:info \'(coreutils) cat invocation\'

以上是关于shell学习的主要内容,如果未能解决你的问题,请参考以下文章

201555332盛照宗—网络对抗实验1—逆向与bof基础

Shell外壳的简易模拟

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

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

shell 脚本 片段

vue2.0 代码功能片段