使用Linux最酷的事情之一就是随着时间的推移您不断获得新知识。每天,您都可能会遇到一个新的实用程序,或者只是一个不熟悉的小技巧,但非常有用。这些点点滴滴并不总能改变生活,但它们是专业知识的基础。即使是专家也不能无所不知。无论您有多少经验,可能总会有更多东西需要学习。因此,在这里我列出了您可能不知道的关于Linux的七件事。用于查找命令历史记录的交互模式您可能熟悉history命令,它读取bash历史记录并将其作为编号列表输出到标准输出(stdout)。但是,如果您要在海量的curl命令中查找特定链接(URL),那么该列表并不总是易于阅读。您还有另一种选择,Linux有一个交互式反向搜索可以帮助您解决这个问题。可以使用快捷键ctrl+r启动交互模式,然后输入一个交互提示符,它会根据你提供的字符串在bash历史中向后搜索,再次按ctrl+r命令可以向后搜索,或按ctrl+s向前搜索。注意ctrl+s有时会和XON/XOFF流控冲突,即XON/XOFF流控也是用这个快捷键。您可以通过运行stty-ixon命令来禁用此快捷方式。在您的PC上,这通常很有用,但在禁用之前,请确保您不需要XON/XOFF。Cron不是安排任务的唯一方法Cron任务对任何级别的系统管理员都很有用,从没有经验的初学者到经验丰富的专家。但是,如果您需要安排一次性作业,at命令为您提供了一种无需接触crontab即可快速创建作业的方法。at命令的运行方式后面跟着你要运行的任务的运行时间。时间很灵活,因为它支持多种时间格式。包括以下例子:at12:00PMSeptember302017atnow+1hourat9:00AMtomorrow当你输入带有参数的at命令时,会提示你该命令将在你的Linux系统上运行。这可以是一个备份脚本、一组维护任务,甚至是一个普通的bash命令。如果要结束任务,可以按ctrl+d。此外,您可以使用atq命令查看当前用户的所有任务,或使用sudoatq查看所有用户的任务。它将显示所有计划任务,每个任务都附有一个ID。如果要取消计划任务,可以使用带有任务ID作为参数的atrm命令。您可以按功能搜索命令,而不仅仅是按名称。记住命令的名称非常困难,尤其是对于初学者而言。幸运的是,Linux附带了一个工具,可以按名称和描述搜索手册页。下次,如果您不记得要使用的工具的名称,可以尝试使用apropos命令并附上您要执行的操作的描述。例如,aproposbuildfilesystem将返回一个工具列表,其名称和描述包含单词“build”和“filesystem”。apropos命令接受一个或多个字符串作为参数,但它也有其他参数。例如,您可以使用-r参数来搜索正则表达式。允许您管理系统版本的替代系统如果您曾经进行过软件开发,您就会了解跨项目管理对不同版本的语言支持的重要性。许多Linux发行版都有处理不同内置版本的工具。诸如java之类的可执行文件通常被符号链接到目录/etc/alternatives中。反过来,这个目录将符号链接存储为二进制文件,并提供一个接口来管理这些链接。Java可能是替代系统最常用的管理语言,但是,通过一些配置,它也可以替代其他应用程序,例如NVM和RVM(NVM和RVM分别是NodeJS和Ruby的版本管理器)。在基于Debian的系统上,您可以使用update-alternatives命令创建和管理这些链接。在CentOS中,这个工具被称为alternatives。通过更改替代文件中的链接,您可以安装一种语言的多个版本并在不同情况下使用不同的二进制文件。这个替代系统还为您可能从命令行运行的任何程序提供支持。shred命令是一种更安全的删除文件的方法我们大多数时候总是使用rm命令来删除文件。但是文件去了哪里?事实上,rm命令并没有像您想象的那样做,它只是删除了文件系统的硬链接和硬盘驱动器上的数据。硬盘上的数据仍然存在,直到被另一个应用程序覆盖。对于非常敏感的数据,这会带来很大的安全风险。shred命令是rm命令的升级版本。使用shred命令删除文件时,文件中的数据会被多次随机覆盖。甚至可以选择在随机覆盖后将所有数据归零。如果你想安全地删除一个文件并用零覆盖它,你可以使用以下命令:shred-u-z[filename]同时,你也可以使用-n选项和一个数字作为参数来指定迭代时随机覆盖数据多少次。使用自动更正避免输入长而无效的文件路径您输入文件的绝对路径有多少次只是为了看到“没有这样的文件或目录”消息。任何人都可以理解键入一个很长的字符串的痛苦。幸运的是,有一个非常简单的解决方案。内置的shopt命令允许您设置各种选项来更改shell的行为。设置cdspell选项是一种简单的方法,可以避免因输入一个字母错误的文件路径而头疼。您可以通过运行shopt-scdspell命令启用此选项。启用此选项后,当您要切换目录时,会自动更正到最匹配的目录。Shell选项是节省时间的好方法(更不用说麻烦了),还有很多其他选项。要查看系统上所有可用选项的完整列表,请运行不带参数的shopt命令。请注意,这是bash的一项功能,如果您运行zsh或选择的其他shell,则可能无法使用。通过子shell返回当前目录如果您曾经配置过一个复杂的系统,您可能会发现您需要经常更改目录,从而很难跟踪您的位置。如果您在运行命令后自动返回当前位置,那不是很好吗?Linux系统其实提供了解决这个问题的方法,而且很简单。如果你想cd到另一个目录做一些工作,然后返回到你当前的工作目录,你可以把命令括在括号里。您可以在您的Linux系统上尝试以下命令。记住你当前的工作目录,然后运行:(cd/etc&&ls-a)该命令将输出/etc目录的内容。现在,检查您当前的工作目录。是执行命令前的同一个目录,不是/etc目录。它是如何工作的?运行括号中的命令会创建子shell或当前shell进程的克隆。子shell可以访问所有父变量,但反之则不行。所以请记住,您正在运行一个非常复杂的单线。子shell通常用于并行处理,但它也为您在命令行提供了相同的功能,使您更容易浏览文件系统。
