Linux指令(二)

文章目录

  • 七 从shell眼中看世界
      • echo - 显示一行文本
      • 路径名展开
      • 波浪线展开
      • 算数表达式展开
      • 花括号展开
      • 参数展开
      • 命令替换
      • 引用
      • 双引号
      • 单引号
      • 转义字符
  • 九 键盘高级操作技巧
      • 命令行编辑
      • 自动补全
      • 搜索历史命令

七 从shell眼中看世界

echo - 显示一行文本

它将它的文本参数打印到标准输出中。传递到 echo 命令的任一个参数都会在(屏幕上)显示出来。
在这里插入图片描述
shellecho 命 令被执行前把”“ ,展开成了另外的东西(在这里,就是在当前工作目录下的文件名字), echo 命令的实际参数并不是”“,而是它展开后的结果
它不会展开以.开头的文件(隐藏文件)

路径名展开

通配符所依赖的工作机制叫做路径名展开。
在这里插入图片描述

ls -d .* | less

Linux指令(二)_第1张图片

ls -d .[!.]?*

ls -A 才能展开几乎所有的文件
Linux指令(二)_第2张图片

波浪线展开

当它用在 一个单词的开头时,它会展开成指定用户的家目录名,如果没有指定用户名,则展开成当前用户的家目录
在这里插入图片描述
在这里插入图片描述

算数表达式展开

shell 在展开中执行算数表达式。这允许我们把 shell 提示当作计算器来使用:
在这里插入图片描述
算术表达式展开使用这种格式:

$((expression))

只支持整数(不能有小数点)

操作符 说明
+
-
*
/ 除(但是记住,因为展开只是支持整数除法,所以结果是整数。)
% 取余,只是简单的意味着,“余数”
** 取幂

在这里插入图片描述

花括号展开

Linux指令(二)_第3张图片
转换成mkdir就能批量生产文件夹并命名好

参数展开

Linux指令(二)_第4张图片
通过printenv查看有效的变量列表

命令替换

命令替换允许我们把一个命令的输出作为一个展开模式来使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

file $(ls /usr/bin/* | grep zip)

管道线的输出结果成为 file 命令的参数列表。
在旧版 shell 程序中,有另一种语法也支持命令替换,可与刚提到的语法轮换使用。 bash 也支持这种语法。它使用倒引号来代替美元符号和括号:
在这里插入图片描述

引用

在这里插入图片描述
shell 提供了一种 叫做引用的机制,来有选择地禁止不需要的展开。
1.shell 利用单词分割删除掉 echo 命令的参数列表中多余的空
2.参数展开把 $1 的值替换为一个空字符串,因为 1 是没有定义的变量。
为什么叫引用。。。

双引号

如果你把文本放在双引号中, shell 使用的特殊字符,都失去它们的特殊含义,被当作普通字符来看待。 有几个例外: $,\ (反斜杠),和 `(倒引号)。这意味着单词分割、路径名展开、 波浪线展开和花括号展开都将失效,然而参数展开、算术展开和命令替换 仍然执行。

  1. 使用双引号,我们可以处理包含空格的文件名。
ls -l "two words.txt"
  1. 参数展开 算数展开 命令替换依然执行
    Linux指令(二)_第5张图片
  2. 单词分割失效在这里插入图片描述
    单词分割被禁止,内嵌的空格也不会被当作界定符,它们成为参数的一部分。 一旦加上双引号,我们的命令行就包含一个带有一个参数的命令。
    事实上,单词分割机制把换行符看作界定符,对命令替换产生了一个虽然微妙但有趣的影响。 考虑下面的例子:
    Linux指令(二)_第6张图片
    第一个例子中,没有引用的命令替换导致命令行包含38个参数,第二个例子中,命令行只有一个参数,参数中包含嵌入的空格和换行符。

单引号

如果需要禁止所有的展开,我们要使用单引号。以下例子是无引用,双引号,和单引号的比较结果:
Linux指令(二)_第7张图片
随着引用程度加强,越来越多的展开被禁止。

转义字符

Linux指令(二)_第8张图片
在这里插入图片描述
-e能够解析\a,响铃

sleep 10; echo "Time's up" $'\a'

九 键盘高级操作技巧

  • clear - Clear the screen

  • history - Display the contents of the history list

  • clear - 清空屏幕

  • history - 显示历史列表内容

命令行编辑

Bash 使用了一个名为 Readline 的库(共享的例程集合,可以被不同的程序使用), 来实现命令行编辑。例如,箭头按键可以移动光标 Alt-t:和光标前面的字互换位置
在这里插入图片描述
使用Alt-t之后:
在这里插入图片描述
Ctrl-t: 光标前面的字符互换
上图使用Ctrl-t之后:
在这里插入图片描述
Alt-u:光标位置到字尾的字符转换为大写
在这里插入图片描述
Alt-l:光标位置到字尾的字符转换为小写
再一次Alt-t,原来是这个意思
在这里插入图片描述
Ctrl-k:剪切从光标位置到行尾的文本
在这里插入图片描述
Ctrl-u:剪切从光标位置到行首的文本
在这里插入图片描述
Alt-d:剪切从光标位置到词尾的文本
在这里插入图片描述
Alt-Backspace :剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词(这个被别的快捷键占了
Ctrl-y :把剪切环中的文本粘贴到光标位置
在这里插入图片描述

自动补全

为了补全,给的”线索”不能模棱两可。不能同时匹配多条。

自动补全也能对变量(如果 字的开头是一个”$”)、用户名字(单词以”~”开始)、命令(如果单词是一行的第一个单词) 和主机名(如果单词的开头是”@”)起作用。主机名自动补全只对包含在文件/etc/hosts 中的主机名有效。

Alt-? **:**显示可能的自动补全列表。
在大多数系统中,你也可以完成这个通过按 两次 tab 键,这会更容易些

在这里插入图片描述

搜索历史命令

在任何时候,我们都可以浏览历史列表的内容,通过

 history | less

在默认情况下,bash 会存储你所输入的最后 500 个命令
最新的在最后面,要熟练掌握less的用法鸭

Linux指令(二)_第9张图片
前面的数字是这个命令在历史列表中的行号

!行号

即可调用该行命令

按键 行为
Alt-< 移动到历史列表开头。
Alt-> 移动到历史列表结尾,即当前命令行。
Ctrl-r 反向增量搜索。从当前命令行开始,向上增量搜索。
Ctrl-o 执行历史列表中的当前项,并移到下一个。如果你想要执行历史列表中一系列的命令,这很方便。
序列 行为
!number 重复历史列表中第 number 行的命令。
!string 重复最近历史列表中,以这个字符串开头的命令。
!?string 重复最近历史列表中,包含这个字符串的命令。

应该小心谨慎地使用 “!string” 和 “!?string” 格式,除非你完全确信历史列表条目的内容。
link

你可能感兴趣的:(Linux)