设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

面向系统管理员的Bash指南

发布时间:2018-08-16 16:36 所属栏目:117 来源:Maxim Burgerhout
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 使 Bash 工作的更好的技巧。 每个行业都有一个该行业的大师们最常使用的工具。 对于许多系统管理员来说,这个工具就是他们的 shell。 在大多数 Linux 和其他类 Unix 系统上,默认的
技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

面向系统管理员的Bash指南

使 Bash 工作的更好的技巧。

每个行业都有一个该行业的大师们最常使用的工具。 对于许多系统管理员来说,这个工具就是他们的 shell。 在大多数 Linux 和其他类 Unix 系统上,默认的 shell 是 Bash。

Bash 是一个相当古老的程序——它起源于 20 世纪 80 年代后期——但它建立在更多更老的 shell 上,比如 C shell(csh),csh 至少是它 10 年前的前辈了。 因为 shell 的概念是那么古老,所以有大量的神秘知识等待着系统管理员去吸收领悟,使其生活更轻松。

我们来看看一些基础知识。

在某些时候,谁曾经无意中以 root 身份运行命令并导致某种问题? 举手

我很确定我们很多人一度都是那个人。 这很痛苦。 这里有一些非常简单的技巧可以防止你再次碰上这类问题。

使用别名

首先,为 mvrm 等命令设置别名,指向 mv -irm -i。 这将确保在运行 rm -f /boot 时至少需要你确认。 在 Red Hat 企业版 Linux 中,如果你使用 root 帐户,则默认设置这些别名。

如果你还要为普通用户帐户设置这些别名,只需将这两行放入家目录下名为 .bashrc 的文件中(这些也适用于 sudo ):

  1. alias mv='mv -i'
  2. alias rm='rm -i'

让你的 root 提示符脱颖而出

你可以采取的防止意外发生的另一项措施是确保你很清楚在使用 root 帐户。 在日常工作中,我通常会让 root 提示符从日常使用的提示符中脱颖而出。

如果将以下内容放入 root 的家目录中的 .bashrc 文件中,你将看到一个黑色背景上的红色的 root 提示符,清楚地表明你(或其他任何人)应该谨慎行事。

  1. export PS1="\[$(tput bold)$(tput setab 0)$(tput setaf 1)\]\u@\h:\w # \[$(tput sgr0)\]"

实际上,你应该尽可能避免以 root 用户身份登录,而是通过 sudo 运行大多数系统管理命令,但这是另一回事。

使用了一些小技巧用于防止使用 root 帐户时的“不小心的副作用”之后,让我们看看 Bash 可以帮助你在日常工作中做的一些好事。

控制你的历史

你可能知道在 Bash 中你按向上的箭头时能看见和重新使用你之前所有(好吧,大多数)的命令。这是因为这些命令已经保存到了你家目录下的名为 .bash_history 的文件中。这个历史文件附带了一组有用的设置和命令。

首先,你可以通过键入 history 来查看整个最近的命令历史记录,或者你可以通过键入 history 30 将其限制为最近 30 个命令。不过这技巧太平淡无奇了(LCTT 译注: vanilla 原为香草,后引申没拓展的、标准、普通的,比如 vanilla C++ compiler 意为标准 C++ 编译器)。 你可以更好地控制 Bash 保存的内容以及保存方式。

例如,如果将以下内容添加到 .bashrc,那么任何以空格开头的命令都不会保存到历史记录列表中:

  1. HISTCONTROL=ignorespace

如果你需要以明文形式将密码传递给一个命令,这就非常有用。 (是的,这太可怕了,但它仍然会发生。)

如果你不希望经常执行的命令充斥在历史记录中,请使用:

  1. HISTCONTROL=ignorespace:erasedups

这样,每次使用一个命令时,都会从历史记录文件中删除之前出现的所有相同命令,并且只将最后一次调用保存到历史记录列表中。

我特别喜欢的历史记录设置是 HISTTIMEFORMAT 设置。 这将在历史记录文件中在所有的条目前面添加上时间戳。 例如,我使用:

  1. HISTTIMEFORMAT="%F %T  "

当我输入 history 5 时,我得到了很好的完整信息,如下所示:

  1. 1009  2018-06-11 22:34:38  cat /etc/hosts
  2. 1010  2018-06-11 22:34:40  echo $foo
  3. 1011  2018-06-11 22:34:42  echo $bar
  4. 1012  2018-06-11 22:34:44  ssh myhost
  5. 1013  2018-06-11 22:34:55  vim .bashrc

这使我更容易浏览我的命令历史记录并找到我两天前用来建立到我家实验室的 SSH 连接(我一次又一次地忘记......)。

Bash 最佳实践

我将在编写 Bash 脚本时最好的(或者至少是好的,我不要求无所不知)11 项实践列出来。

11、 Bash 脚本可能变得复杂,不过注释也很方便。 如果你在考虑是否要添加注释,那就添加一个注释。 如果你在周末之后回来并且不得不花时间搞清楚你上周五想要做什么,那你是忘了添加注释。

10、 用花括号括起所有变量名,比如 ${myvariable}。 养成这个习惯可以使用 ${variable}_suffix 这种用法了,还能提高整个脚本的一致性。

9、 计算表达式时不要使用反引号;请改用 $() 语法。 所以使用:

  1. for  file in $(ls); do

而不使用:

  1. for  file in `ls`; do

前一个方式是可嵌套的,更易于阅读的,还能让一般的系统管理员群体感到满意。 不要使用反引号。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读