Linux $()这里的命令是什么意思?

方括号最简单的用法就是通配。你可能在知道“Globbing”这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文件:

使用通配符wildcard来得到符合某个模式的所有内容,这个过程就叫通配。

在上面的例子当中,星号(*)就代表“0 个或多个字符”。除此以外,还有代表“有且仅有一个字符”的问号(?)。因此

方括号也可以用于通配。为了便于演示,可以创建一个用于测试的目录,并在这个目录下创建文件:

如果要列出这些文件当中第二位数字是 7 或 8 的文件,可以执行:

当然,不仅仅是 ls,很多其它的行工具都可以使用方括号来进行通配操作。但在删除文件、移动文件、复制文件的过程中使用通配,你需要有一点横向思维。

因为通配只能针对已有的文件,而 archive 开头的文件并不存在,不能进行通配。

也同样不行,因为 cp 并不允许将多个文件复制到多个文件。在复制多个文件的情况下,只能将多个文件复制到一个指定的目录下:

这条命令是可以正常运行的,但它只会把这 30 个文件以同样的名称复制到 archive/ 目录下,而这并不是我们想要的效果。

如果你阅读过我关于花括号的文章,你大概会记得可以使用 % 来截掉字符串的末尾部分,而使用 # 则可以截掉字符串的开头部分。

在通配的过程中,也可以使用这一个技巧。

上面的第一行命令告诉 Bash 需要对所有 file01 开头或者 file02 开头,且后面只跟一个任意字符的文件进行操作,第二行的 do 和第四行的 done 代表需要对这些文件都执行这一块中的命令。

第三行就是实际的复制操作了,这里使用了两次 $i 变量:第一次在 cp 命令中直接作为源文件的文件名使用,第二次则是截掉文件名开头的 file 部分,然后在开头补上一个 archive,也就是这样:

最终整个 cp 命令展开为:

最后,顺带说明一下反斜杠 \ 的作用是将一条长命令拆分成多行,这样可以方便阅读。

在下一节,我们会了解方括号的更多用法,敬请关注。


作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

本文地址:编辑:roc_guo,审核员:逄增宝

用于启用或关闭命令的某个或某些功能

  • BSD风格选项: 一个字母,例如:a

许多短选项都是长选项的缩写,比如 -a= --all

多选项可组合使用,以下三者等价:

命令的作用对象,比如:文件名、目录、用户名等

  • 多个选项以及多参数和命令之间使用空白字符分隔
  • 结束命令执行:Ctrl+C,Ctrl+DC是强制退出,D是正常退出
    因为某些命令开始之后会一直不停进行
  • 多个命令可以用 " ; " 符号分开
  • 一个命令可以用 \ 分成多行

命令提示符有固定的格式,而且可以自定义

显示提示符当前格式:echo $PS1 严格区分大小写!!!

\e 控制符 也可写为\033(3137=七种字体颜色,4147=七种背景颜色)
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式

#对各个元素颜色进行设置
\[\e [0m\] #标准结尾 若结尾在最后,则对提示符也生效
\\$ #\$表示提示符,第一个\用来对第二个进行转义
  • 进入nano界面,将编写好的格式粘贴进去,直接ctrl+X退出会提示是否保存
  • 按Y保存,然后按enter退出
  • exit退出,重新登录看是否有效

Ubuntu修改提示符对应每个账户是独立的

  • 输入当前用户的密码(而不是root的密码)

Linux分两种时间:

  • 系统时钟(date):由Linux内核通过CPU的工作频率进行的
  • 硬件时钟(clock):主板有自己单独的电池供电,保证记录时间
  • 若不知道标准时间,ping一台联网的机器,
    同步远程服务器的时间:ntpdate IP 即可同步系统时间,再使用clock -w即可同步硬件

3.3.2 查看硬件与软件

    安装OS设置网卡为桥接模式,才能被其他人连接,NAT无法被连接!!!
    看到多个网卡,lo与virbr0均为虚拟网卡,ens为物理网卡

+#:相对时间,表示多少min之后
hh:mm 表示绝对时间,在指定时间点生效

只能修改文本文件txt,不能用于二进制

命令行的典型使用方式是,打开一个终端窗口,在里面输入命令
用户与计算机的这种临时的交互,称为一次"会话"(session)

打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完

为了防止执行中的程序意外中断,会话与窗口可以"解绑":需要使用终端复用器软件

screen命令常见用法:

远程协助步骤:(B需要向A求助)

  • B提供目标服务器的IP和账户与密码,A使用shell连接登录
  • 此时两者画面同步,可看到公用窗口,A即可进行协助
  • 结束后,A首先应该退出此次会话,使用 Ctrl+a,d进行剥离(先按Ctrl+a再按d)
    (若直接关机或者注销,将会同时影响B)

终端复用器 tmux(也需要自行安装)

tmux 窗口有大量的快捷键,所有快捷键都要通过前缀键唤起(默认的前缀键是 Ctrl+b)
先按下Ctrl+b ,快捷键才会生效

新建会话 第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推

为了方便直观,一般会对新建的会话重命名

一些常用命令:(还要按会话session、窗口windows、窗格panes分类)

一个会话可以有多个窗口,一个窗口可以有多个窗格

  • 窗格之间切换 ctrl+b,再加方向键
  • 当前窗格全屏显示 Ctrl+b, z(再使用一次会变回原来大小)
  • 将当前窗格拆分为独立窗口 Ctrl+b, !

echo 命令可以将后面跟的字符进行输出,也能输出变量的值(echo $变量)

  • -E (默认)不支持 \ 解释功能

  • -e 启用 \ 字符的解释功能

    启用命令选项-e,若字符串中出现以下字符,则特别加以处理
    而不会将它当成一般文字输出

    \c 最后不加上换行符号
    \n 换行且光标移至行首
    \r 回车,即光标移至行首,但不换行

shell中可执行的两类命令(本质区别在于,内部命令集成在shell中)

  • 内部命令:由shell自带的,而且通过某命令形式提供(enable或者help)
  • 外部命令:在文件系统路径下有对应的可执行程序文件($PATH或者hash)

某些命令可能同时属于两者,如echo:

因为shell不止一种,上述属于shell的意思是属于bash,其他shell未必有

命令 help 可以列出所有内部命令以及其帮助!!

  • enable –n cmd 禁用内部命令(禁用是临时的,重启即失效
  • enable –n 查看所有禁用的内部命令

命令 ls /bin/ 列出此目录下所有文件(即为所有的外部命令)

查看某个外部命令文件路径:

执行外部命令过程:系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径缓存到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,若找不到,则无法执行。

常用的外部命令缓存在内存中的Hash缓存表

若路径被移动,则hash缓存信息错误,寻找不到,命令将无法执行
此时应该删除或者清空hash

别名alias:对命令进行自定义,达到简化效果

  • 显示当前shell进程所有可用的命令别名:alias

注意:在命令行中定义的别名,仅对当前shell进程有效(重启失效)
如果想永久有效,要定义在配置文件中
方法一:nano .bashrc进入,将alias内容贴入对应位置,保存退出

编辑配置之后,新配置不会立即生效

若存在冲突,又想跳过别名直接执行原命令:反斜、单引、双引、command、全路径

3.5 常用简单快捷键

tab键可以实现命令及路径等补全,提高输入效率,避免出错

可用于外部命令和文件名、目录名

bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令

注意:用户给定的字符串只有惟一对应的命令则直接补全,否则,再次Tab会给出列表
也可以利用此功能,双击tab查看所有可能的命令

路径补全:把用户给出的字符串当做路径开头,唯一则直接补全,否则再次Tab给出列表

  • 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,即ASCII码
    ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为0

  • 为了表示世界上所有语言中的所有字符,每一个符号都给予一个独一无二的编码数字
    Unicode 仅仅只是一个字符集,规定了每个字符对应的二进制代码,如何存储则没有规定

    UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,可变长存储

获取帮助的能力决定了技术的能力!

whatis 使用数据库来显示命令的简短描述

刚安装系统后不可立即使用whatis,需要手动制作数据库才能生效

3.7.2 查看命令的帮助

  • man bash(查看所有内部命令)

--help或-h 选项:显示常用的绝大多数用法总结和参数列表

CAPS或 <> 表示变化的数据???????
... 表示一个列表,即可以跟多个选项

1、显示当前时间,格式: 10:20:30

3、创建一个新文件,命名为昨天的日期

#使用$()和``两种方式都可 #需要注意单引号与反引号区别!!!单引号忽略一切

man页面分组为不同的“章节”,统称为Linux手册:

4:设备文件及特殊文件

在man的详情页面,使用 / 字符可搜索关键字
/KEYWORD 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索
n: 下一个 N:上一个

man 帮助段落说明:

man命令的配置文件:配置文件定义了帮助文件所在的目录

#此时即可知道date是第一章的内容(p后缀表示开发相关,ssl后缀表示子命令) #若有多个章节,可以指明第几章直接进入

1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间

#此处显示不是用命令实现,通过man命令查看具体指引,最终找到mingetty相关介绍 #因此进入issue文件修改加入\l,\n,\t即可

2、设置今天22:30自动关机,并提示用户

info适合通用文档参考 没有参数

Tab键 移动到下一个链接
Home 显示主题首部
n/p/u/l 进入下/前/上一层/最后一个链接

3.7.7 命令自身提供的官方使用指南

多数安装了的软件包的子目录,包括了这些软件的相关原理说明

用 ll 显示列表,用cat查看内容

3.7.8 系统及第三方应用官方文档

  • 红帽知识库和官方在线文档:

我要回帖

更多关于 在shell脚本中$?用于 的文章

 

随机推荐