标签 命令行 下的文章

我非常喜欢使用命令,因为它们比 GUI(图形用户界面)应用程序对 Linux 系统提供更多的控制,因此,我一直在寻找一些有趣的方法让 Linux 的操作变得简单好玩,主要是基于终端操作。

当我们发现使用 Linux 的新技巧时,尤其是像我这样的命令行极客,我们总会感到非常来劲。

建议阅读: 5 有趣的 Linux 命令行技巧 - 第一部分

而且我们也会很想与数百万 Linux 用户分享新学到的实践或命令,特别是那些还在使用自己的方式操作这个令人兴奋的操作系统的新手们。

建议阅读: 10 个对新手有用的 Linux 命令行技巧 - 第二部分

在这篇文章中,我们将回顾一系列有用的命令行小技巧,它们可以显著地提高你的 Linux 使用技能。

1、 在 Linux 中锁定或隐藏文件或目录

锁定文件或目录最简单的方法是使用 Linux 文件权限。如果你是文件或目录的所有者,你可以阻止其他用户和组访问(删除、读取、写入、执行)它,如下所示:

$ chmod 700 tecmint.info
或
$ chmod go-rwx tecmint.info

想要了解更多有关 Linux 文件权限的内容,请阅读这篇文章在 Linux 中管理用户和组,文件权限和属性

为了实现对系统中的其他用户隐藏文件或目录,可以通过在文件或目录开头添加 . 的方式重命名:

$ mv filename .tecmint.info

2、 在 Linux 中将 rwx 权限转为八进制格式

默认情况下,当你运行 ls 命令之后,它会使用 rwx 格式显示文件权限,为了了解 rwx 格式和八进制格式的等同性,你可以学习如何在 Linux 中将 rwx 权限转为八进制格式

3、 当 sudo 命令执行失败时怎么使用 su 命令

虽然 sudo 命令被用来以超级用户权限执行命令,但是在某些情况下它也会执行失败,如下所示。

在这里,我想清空一个大文件的内容,其文件名为 uptime.log,但是即便我是使用 sudo 命令也执行失败了。

$ cat /dev/null >/var/log/uptime.log
$ sudo cat /dev/null >/var/log/uptime.log

在 Linux 中清空大文件的内容

在 Linux 中清空大文件的内容

遇到这种情况,你需要使用 su 命令切换到 root 用户,然后像下面这样去执行清空操作:

$ su
$ sudo cat /dev/null >/var/log/uptime.log
$ cat /var/log/uptime.log

切换到超级用户

切换到超级用户

尝试理解 su 和 sudo 之间的区别,另外,通过阅读它们的手册页以了解更多的使用指南:

$ man sudo
$ man su

4、 在 Linux 中结束一个进程

有些时候,当你想使用 kill、killall、pkill 命令结束一个进程时,它们有可能无法生效,你可能会看到该进程仍然还在系统上运行。

如果要强制结束一个进程,可以发送 -KILL 信号给该进程。

首先获取指定进程 ID,然后像下面这样结束该进程:

$ pidof vlc
$ sudo kill -KILL 10279

在 Linux 中查找和结束进程

在 Linux 中查找和结束进程

查看 kill 命令以获取更多的使用选项和信息。

5、 在 Linux 中永久删除文件

一般情况下,我们通过使用 rm 命令将文件从 Linux 系统中删除。然而,这些文件并没有被真正的删除,它们仍被存储在那里并隐藏在你的硬盘中,其他用户仍然可以在 Linux 中恢复删除的文件并查看。

为了防止这种情况发生,我们可以使用 shred 命令来覆写文件内容,并在覆盖完成后选择删除文件。

$ shred -zvu tecmint.pdf

上述命令中所使用的选项说明:

  1. -z – 最后一次使用 0 进行覆盖以隐藏覆写动作。
  2. -u – 覆写后截断并移除文件。
  3. -v – 显示详细过程。

在 Linux 中永久删除文件

在 Linux 中永久删除文件

阅读 shred 手册以获取更多的使用信息。

$ man shred

6、 在 Linux 中重命名多个文件

你可以通过使用 rename 命令随时在 Linux 中重命名多个文件

rename 命令会根据第一个参数中的规则重命名指定文件。

以下命令会将所有 .pdf 文件重命名为 .doc 文件,使用的规则为 's/\.pdf$/\.doc/'

$ rename -v 's/\.pdf$/\.doc/' *.pdf

在 Linux 中重命名多个文件

在 Linux 中重命名多个文件

在接下来的例子中,我们将通过重命名所有匹配 "*.bak" 的文件来移除其拓展名,使用的规则是 's/\e.bak$//'

$ rename -v 's/\e.bak$//' *.bak

7、 在 Linux 中检查单词拼写

look 命令用于显示文件中以指定字符串为前缀的任意行,同时它也可以帮你检查命令行中给定单词的拼写。尽管它并不是那么有效和可靠,但它仍然算得上是其他强大的拼写检查工具的有用替代品。

$ look linu
$ look docum

在 Linux 中检查单词拼写

在 Linux 中检查单词拼写

8、 按关键字搜索手册页

man 命令用于显示命令的手册页,当使用 -k 选项时,它会将关键字 printf(或者如下命令中的关键字 adjustapachephp )作为正则表达式,来搜索所有匹配该名称手册页,并显示其简介。

$ man -k adjust
$ man -k apache
$ man -k php

按关键字搜索手册页

按关键字搜索手册页

9、 在 Linux 中实时监测日志

watch 命令可以定期执行另一个 Linux 命令并全屏显示该命令的执行结果。当 watch 命令与 tail 命令(用于查看文件结尾的 Linux 命令)配合使用时,可以监测到日志文件的日志记录情况。

在以下示例中,你将实时监测系统认证日志文件。打开两个终端窗口,在第一个窗口中实时监测该日志文件,如下:

$ sudo watch tail /var/log/auth.log

你也可以使用 tail 命令(显示文件结尾的 Linux 命令)的 -f 选项实时监测文件变化。这样,我们就可以在日志文件中看到日志的生成情况。

$ sudo tail -f /var/log/auth.log

接着,在第二个终端窗口中运行以下命令,之后,你就可以在第一个终端窗口中观察日志文件内容:

$ sudo mkdir -p /etc/test
$ sudo rm -rf /etc/test

10、 列出所有 Shell 内置命令

shell 内置命令是一个命令或者函数,从内部调用并直接在 shell 里执行,而不是从硬盘加载外部的可执行程序来执行。

列出所有 shell 内置命令及其语法,执行如下命令:

$ help

作为结束语,命令行小技巧不仅能派得上用场,而且让学习和使用 Linux 变得更加简单有趣,尤其是对新手来讲。

你也可以通过留言给我们分享其他在 Linux 中有用有趣的命令行小技巧


作者简介:

Aaron Kili 是一名 Linux 和 F.O.S.S 的爱好者,未来的 Linux 系统管理员、网站开发人员,目前是 TecMint 的写作者,他喜欢用电脑工作,并且乐于分享知识。


via: http://www.tecmint.com/linux-command-line-tricks-and-tips-worth-knowing/

作者:Aaron Kili 译者:zhb127 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 用户常常做的一个事情是,是在命令行列出目录内容

我们已经知道,lsdir 是两个可用在列出目录内容的 Linux 命令,前者是更受欢迎的,在大多数情况下,是用户的首选。

我们列出目录内容时,可以按照不同的标准进行排序,例如文件名、修改时间、添加时间、版本或者文件大小。可以通过指定一个特别的参数来使用这些文件的属性进行排序。

在这个简洁的 ls 命令指导中,我们将看看如何通过上次修改时间(日期和时分秒)排序 ls 命令的输出结果

让我们由执行一些基本的 ls 命令开始。

Linux 基本 ls 命令

1、 不带任何参数运行 ls 命令将列出当前工作目录的内容。

$ ls 

List Content of Working Directory

列出工作目录的内容

2、要列出任何目录的内容,例如 /etc 目录使用如下命令:

$ ls /etc

List Contents of Directory

列出工作目录 /etc 的内容

3、一个目录总是包含一些隐藏的文件(至少有两个),因此,要展示目录中的所有文件,使用-a-all标志:

$ ls  -a

List Hidden Files in Directory

列出工作目录的隐藏文件

4、你还可以打印输出的每一个文件的详细信息,例如文件权限、链接数、所有者名称和组所有者、文件大小、最后修改的时间和文件/目录名称。

这是由-l选项来设置,这意味着一个如下面的屏幕截图般的长长的列表格式。

$ ls -l

Long List Directory Contents

长列表目录内容

基于日期和基于时刻排序文件

5、要在目录中列出文件并对最后修改日期和时间进行排序,在下面的命令中使用-t选项:

$ ls -lt 

Sort ls Output by Date and Time

按日期和时间排序ls输出内容

6、如果你想要一个基于日期和时间的逆向排序文件,你可以使用-r选项来工作,像这样:

$ ls -ltr

Sort ls Output Reverse by Date and Time

按日期和时间排序的逆向输出

我们将在这里结束,但是,ls 命令还有更多的使用信息和选项,因此,应该特别注意它或看看其它指南,比如《每一个用户应该知道 ls 的命令技巧》或《使用排序命令》。

最后但并非最不重要的,你可以通过以下反馈部分联系我们。


via: http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time

作者:Aaron Kili 译者:zky001 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

完全在 Linux 终端中生存并不容易,但这绝对是可行的。

处理常见功能的最佳 Linux shell 应用

你是否曾想像过完完全全在 Linux 终端里生存?没有图形桌面,没有现代的 GUI 软件,只有文本 —— 在 Linux shell 中,除了文本还是文本。这可能并不容易,但这是绝对可行的。我最近尝试完全在 Linux shell 中生存30天。下边提到的就是我最喜欢用的 shell 应用,可以用来处理大部分的常用电脑功能(网页浏览、文字处理等)。这些显然有些不足,因为纯文本操作实在是有些艰难。

在 Linux 终端里发邮件

要在终端里发邮件,选择有很多。很多人会推荐 mutt 和 notmuch,这两个软件都功能强大并且表现非凡,但是我却更喜欢 alpine。为何?不仅是因为它的高效性,还因为如果你习惯了像 Thunderbird 之类的 GUI 邮件客户端,你会发现 alpine 的界面与它们非常相似。

在 Linux 终端里浏览网页

我有一个词要告诉你:w3m。好吧,我承认这并不是一个真实的词。但 w3m 的确是我在 Linux 终端的 web 浏览器选择。它能够很好的呈现网页,并且它也足够强大,可以用来在像 Google+ 之类的网站上发布消息(尽管方法并不有趣)。 Lynx 可能是基于文本的 Web 浏览器的事实标准,但 w3m 还是我的最爱。

在 Linux 终端里编辑文本

对于编辑简单的文本文件,有一个应用是我最的最爱。不!不!不是 emacs,同样,也绝对不是 vim。对于编辑文本文件或者简要记下笔记,我喜欢使用 nano。对!就是 nano。它非常简单,易于学习并且使用方便。当然还有更多的软件具有更多功能,但 nano 的使用是最令人愉快的。

在 Linux 终端里处理文字

在一个只有文本的 shell 之中,“文本编辑器” 和 “文字处理程序” 实在没有什么大的区别。但是像我这样需要大量写作的,有一个专门用于长期写作的软件是非常必要的。而我最爱的就是 wordgrinder。它由足够的工具让我愉快工作——一个菜单驱动的界面(使用快捷键控制)并且支持 OpenDocument、HTML 或其他等多种文件格式。

在 Linux 终端里听音乐

当谈到在 shell 中播放音乐(比如 mp3,ogg 等),有一个软件绝对是卫冕之王:cmus。它支持所有你想得到的文件格式。它的使用超级简单,运行速度超级快,并且只使用系统少量的资源。如此清洁,如此流畅。这才是一个好的音乐播放器的样子。

在 Linux 终端里发送即时消息

当我在想如果可以在终端里发送即时消息会是什么样子的时候,我的思绪瞬间爆发了。你可能知道 Pidgin——一个支持多种协议的 IM 客户端,它也有一个终端版,叫做“finch”,你可以使用它来同时链接多个网络、同时和几个人聊天。而且,它的界面也和 Pidgin 极为相似。多么令人惊叹啊!想要使用 Google 环聊(Google Hangouts)就试试 hangups。它有一个非常漂亮的分页式界面,并且效果非常好。认真来说,除了一些可能需要的 emoji 表情和嵌入式图片外,在终端里发送即时消息真的是一个很好的体验。

在 Linux 终端里发布推文

这不是开玩笑!由于 rainbowstream 的存在,我们已经可以在终端里发布推文了。尽管我时不时遇到一些 bug,但整体上,它工作得很好。虽然没有网页版 Twitter 或官方移动客户端那么好用,但这是一个终端版的 Twitter,来试一试吧。尽管它的功能还未完善,但是用起来还是很酷,不是吗?

在 Linux 终端里看 Reddit 新闻

不管如何,在命令行中享受 Reddit 新闻时间真的感觉很棒。使用 rtv 真是一个相当愉快的体验。不管是阅读、评论,还是投票表决,它都可以。其体验和在网页版有一定相似。

在 Linux 终端里管理进程

可以使用 htop。与 top 相似,但更好用、更美观。有时候,我打开 htop 之后就让它一直运行。没有原因,就是喜欢!从某方面说,它就像将音乐可视化——当然,这里显示的是 RAM 和 CPU 的使用情况。

在 Linux 终端里管理文件

在一个纯文本终端里并不意味着你不能享受生活之美好。比方说一个出色的文件浏览和管理器。这方面,Midnight Commander 是很好用的。

在 Linux 终端里管理终端窗口

如果要在终端里工作很长时间,就需要一个多窗口终端了。它是这样一个软件 —— 可以将用户终端会话分割成一个自定义网格,从而可以同时使用和查看多个终端应用。对于 shell,它相当于一个平铺式窗口管理器。我最喜欢用的是 tmux。不过 GNU Screen 也很好用。学习怎么使用它们可能要花点时间,但一旦会用,就会很方便。

在 Linux 终端里进行讲稿演示

这类软件有 LibreOffice、Google slides、gasp 或者 PowerPoint。我在讲稿演示软件花费很多时间,很高兴有一个终端版的软件。它称做“文本演示程序(tpp)”。很显然,没有图片,只是一个使用简单标记语言将放在一起的幻灯片展示出来的简单程序。它不可能让你在其中插入猫的图片,但可以让你在终端里进行完整的演示。


via: http://www.networkworld.com/article/3091139/linux/who-needs-a-gui-how-to-live-in-a-linux-terminal.html#slide1

作者:Bryan Lunduke 译者:GHLandy 校对:jasminepeng

本文由 LCTT 原创翻译,Linux中国 荣誉推出

浏览器书签虽然不常被提及,但是作为互联网浏览的一部分。没有好的书签功能,网站链接可能会丢失,下次再不能访问。这就是为什么一个好的书签管理器很重要。

所有的现代浏览器都提供了一些形式的管理工具,虽然它们严格上来讲功能较少。如果你已经厌倦了这些内置在浏览器中的主流工具,你或许想要寻找一个替代品。这里介绍 Buku:一个命令行下的书签管理器。它不仅可以管理你的书签,还可以给它们加密,将它们保存在一个数据库中等等。下面是如何安装它。

安装

Buku 不是非常流行。因此,用户需要自己编译它。然而,在 Ubuntu 上安装实际上很简单。打开终端并且使用 apt 安装gitpython3,这两个工具在构建中很关键。

sudo apt python3-cryptography python3-bs4

装完所需的工具后,就可以拉取源码了。

git clone https://github.com/jarun/Buku/.
cd Buku

最后要安装它,只需要运行 make 命令。在这之后就可以在终端中输入 buku来运行 Buku 了。

sudo make install

注意:虽然这份指导针对的是 Ubuntu,但是 Buku 可以在任何 Linux 发行版中用相似的方法安装。

导入书签

要将书签直接导入 Buku 中,首先从浏览器中将书签导出成一个 html 文件。接着,输入下面的命令:

buku -i bookmarks.html

最后,导入的书签会添加到 Buku 的数据库中。

导出书签

导出书签和导入一样简单。要导出所有的书签,使用下面的命令:

buku -e bookmarks.html

它会和其他书签管理器一样,将数据库中所有的书签导出成一个 html 文件。之后就可以用它做你任何要做的事情了!

打开书签

要打开一个书签,首先要搜索。这需要用 -s 选项。运行下面的命令来搜索:

buku -s searchterm

接着一旦找到匹配的结果,输入旁边的数字,书签将会在默认的浏览器中打开了。

加密

不像其他的书签管理器,Buku 可以加密你的数据。这对拥有“敏感”书签的用户而言很有用的功能。要加密数据库,使用 -l 标志来创建一个密码。

buku -l

数据库加锁后,没有输入密码将不能打开书签。要解密它,使用 -k 选项。

buku -k

其他功能

这个书签管理器有许多不同的功能。要了解其他的功能,使用 --help 选项。当使用这个选项后,所有的选项以及每个功能详细内容都会列出来。这个非常有用,由于用户经常忘记东西,并且有时可以打开一个备忘单也不错。

buku --help

总结

即使这个工具不是浏览器的一部分,它的功能比任何现在管理器提供的功能多。尽管事实是它在命令行中运行,但是也有很好的竞争力。书签对大部分人来言并不重要,但是哪些不喜欢现有选择以及喜欢 Linux 命令行的应该看一下 Buku。


via: https://www.maketecheasier.com/manage-browser-bookmarks-ubuntu-command-line/

作者:Derrik Diener 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中。原因可能很多,例如,你在公司担任某个职位,你有一些不希望被其它人滥用的特权。亦或者有些特别重要的命令,你不希望在你浏览历史列表时误执行。

然而,有方法可以控制哪些命令进入历史列表,哪些不进入吗?或者换句话说,我们在 Linux 终端中可以开启像浏览器一样的无痕模式吗?答案是肯定的,而且根据你想要的具体目标,有很多实现方法。在这篇文章中,我们将讨论一些行之有效的方法。

注意:文中出现的所有命令都在 Ubuntu 下测试过。

不同的可行方法

前面两种方法已经在之前一篇文章中描述了。如果你已经了解,这部分可以略过。然而,如果你不了解,建议仔细阅读。

1. 在命令前插入空格

是的,没看错。在命令前面插入空格,这条命令会被 shell 忽略,也就意味着它不会出现在历史记录中。但是这种方法有个前提,只有在你的环境变量 HISTCONTROL 设置为 "ignorespace" 或者 "ignoreboth" 才会起作用。在大多数情况下,这个是默认值。

所以,像下面的命令(LCTT 译注:这里[space]表示输入一个空格):

[space]echo "this is a top secret"

如果你之前执行过如下设置环境变量的命令,那么上述命令不会出现在历史记录中。

export HISTCONTROL = ignorespace

下面的截图是这种方式的一个例子。

第四个 "echo" 命令因为前面有空格,它没有被记录到历史中。

2. 禁用当前会话的所有历史记录

如果你想禁用某个会话所有历史,你可以在开始命令行工作前简单地清除环境变量 HISTSIZE 的值即可。执行下面的命令来清除其值:

export HISTSIZE=0

HISTSIZE 表示对于 bash 会话其历史列表中可以保存命令的个数(行数)。默认情况,它设置了一个非零值,例如在我的电脑上,它的值为 1000。

所以上面所提到的命令将其值设置为 0,结果就是直到你关闭终端,没有东西会存储在历史记录中。记住同样你也不能通过按向上的箭头按键或运行 history 命令来看到之前执行的命令。

3. 工作结束后清除整个历史

这可以看作是前一部分所提方案的另外一种实现。唯一的区别是在你完成所有工作之后执行这个命令。下面是刚说到的命令:

history -cw

刚才已经提到,这个和 HISTSIZE 方法有相同效果。

4. 只针对你的工作关闭历史记录

虽然前面描述的方法(2 和 3)可以实现目的,它们可以清除整个历史,在很多情况下,有些可能不是我们所期望的。有时候你可能想保存直到你开始命令行工作之间的历史记录。对于这样的需求,你开始在工作前执行下述命令:

[space]set +o history

备注:[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录。

上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。

要重新开启历史功能,执行下面的命令:

[Space]set -o history

它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。

5. 从历史记录中删除指定的命令

现在假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。直接动手删除它们。通过下面的命令来删除:

history | grep "part of command you want to remove"

上面的命令会输出历史记录中匹配的命令,每一条前面会有个数字。

一旦你找到你想删除的命令,执行下面的命令,从历史记录中删除那个指定的项:

history -d [num]

下面是这个例子的截图。

第二个 ‘echo’命令被成功的删除了。

(LCTT 译注:如果你不希望上述命令本身也被记录进历史中,你可以在上述命令前加个空格)

同样的,你可以使用向上的箭头一直往回翻看历史记录。当你发现你感兴趣的命令出现在终端上时,按下 “Ctrl + U”清除整行,也会从历史记录中删除它。

总结

有多种不同的方法可以操作 Linux 命令行历史来满足你的需求。然而请记住,从历史中隐藏或者删除命令通常不是一个好习惯,尽管本质上这并没有错。但是你必须知道你在做什么,以及可能产生的后果。


via: https://www.maketecheasier.com/linux-command-line-history-incognito/

作者:Himanshu Arora 译者:chunyang-wen 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

终端并不只是黑白两色,虽然使用终端可以提高效率,但是这并不意味着我们只能面对非黑即白的界面。也许你的终端的某些应用在展示部分内容时已经使用了16色了,但是这在当今难免感觉还不够细腻。其实,很多终端,比如 xterm、urxvt,以及 Mac OSX 中的 Iterm.app 等都可以支持256色,可以在这些终端下看到更加细腻优雅的颜色表现。

这里涉及到了几个重要的程序的配置,供大家参考。注意,不是所有的终端和命令行应用都支持256色。

vim

能够区分不同的黄色,可以让你的 vim 看起来更加漂亮。点此下载配色文件,配色文件可按如下引入到你的 vim 配置中:

if $TERM == "xterm" || $TERM == "rxvt" || $TERM == "xterm-256color" || $TERM == "rxvt-unicode" || &term =~ "builtin_gui" || $TERM == "dumb"
    set t_Co=256
    colorscheme calmar256-dark
else
    colorscheme desert
endif

mutt

配色方案在此,可以通过 source 引入到你的 .muttrc 中:

source ~/.mutt/mutt_color_256

slrn

slrn 支持256色,但是很多元素不支持颜色区分。配色直接写在配置文件中

git

看看 git log 的输出,是不是更柔和了?配置文件在此

man / less

对于 Xterm/Urxvt,改变终端的前景/背景/粗体/下划线/斜体的颜色,可以让 less 显示更好的高亮效果。而 less 被用在 man 页面显示中,所以你会发现你的 man 显示更漂亮了。配置文件在此

另外,可以在你的 $LESS 环境变量中添加 -J 选项,这样在搜索某个内容时,结果所在行的前面会显示一个“*”。

窗口状态条

很多人喜欢在终端窗口的下方显示一个状态条,尤其是在使用 screen 将窗口分割成几个子窗口时。

配置文件在此

ls

ls 的彩色输出也可以更好一些。配置文件在此

grep

你可以设置 grep 以绿色显示匹配内容:

export GREP_COLOR='01;32'    # color grep matches green
alias grep='grep --color'

你是不是也有一些配色方案?欢迎分享。