`

命令行工具使用小技巧

阅读更多
本文将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快。
这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的。我们使用命令行 Shell 版本是 bash 4.3.11 。

Linux命令行工具使用小贴士及技巧
>>>>  Linux 命令行工具使用的一些小技巧

我们假设你已经掌握了一些 Linux 命令行的基础知识,比如什么是 root 账号及 home 目录,什么是环境变量,如何查看目录内容等等。说明这些小技巧的同时也会介绍涉及到的概念,如果有的话。
>>>>  轻松切换目录 —— 快捷方式

假设你正在命令行下做一些操作,并且你需要经常在两个目录间来回切换。而且这两个目录在完全不同的两个路径下,比如说,分别在 /home/ 和 /usr/ 下。你会怎么做呢?
其中,最简单直接的方式就是输入这些目录的全路径。虽然这种方式本身没什么问题,但是却很浪费时间。另外一种方式就是打开两个终端窗口分别进行操作。但是这两种方式使用起来既不方便,也显得没啥技术含量。
你应该感到庆幸的是,还有另外一种更为简捷的方法来解决这个问题。你需要做的就是先手动切换到这两个目录(通过 cd 命令分别加上各自的路径),之后你就可以使用 cd - 命令在两个目录之间来回快速切换了。
例如:
我现在在下面的目录:
$ pwd
/home/himanshu/Downloads
然后,我切换到 /usr/ 路径下的其它目录:
cd /usr/lib/
现在,我可以很方便的使用下面的命令来向前、向后快速地切换到两个目录:
cd -
下面是 cd - 命令的操作截图:
The Linux cd command
The Linux cd command
有一点我得跟大家强调下,如果你在操作的过程中使用 cd 加路径的方式切换到第三个目录下,那么 cd - 命令将应用于当前目录及第三个目录之间进行切换。
>>>>   轻松切换目录 —— 相关细节

对于那些有强烈好奇心的用户,他们想搞懂 cd - 的工作原理,解释如下:如大家所知道的那样, cd 命令需要加上一个路径作为它的参数。现在,当 - 符号作为参数传输给 cd 命令时,它将被 OLDPWD 环境变量的值所替代。
The cd command explained
The cd command explained
现在应该明白了吧, OLDPWD 环境变量存储的是前一个操作目录的路径。这个解释在 cd 命令的 man 帮助文档中有说明,但是,很遗憾的是你的系统中可能没有预先安装 man 命令帮助工具(至少在 Ubuntu 系统下没有安装)。
但是,安装这个 man 帮助工具也很简单,你只需要执行下的安装命令即可:
sudo apt-get install manpages-posix
然后做如下操作:
man cd
打开 man 帮助文档主页后,你将会看到下面很明确的解释:
—— 当 - 符号被用作 cd 命令的参数值时,将等同于下面的操作命令:
cd "$OLDPWD" && pwd
毫无疑问, cd 命令设置了 OLDPWD 环境变量值。因此每一次你切换操作目录时,上一个目录的路径就会被保存到这个变量里。这还让我们看到很重要的一点就是:任何时候启动一个新的 shell 实例(包括手动执行或是使用 shell 脚本),都不存在 ‘上一个工作目录’。
Hyphen and the cd command
Hyphen and the cd command
这也很符合逻辑,因为 cd 命令设置了 OLDPWD 环境变量值。因此,除非你至少执行了一次 cd 命令,否则 OLDPWD 环境变量不会包含任何值。
继续,尽管这有些难以理解, cd - 和 cd $OLDWPD 命令的执行结果并非在所有环境下都相同。比如说,你重新打开一个新的 shell 窗口时。
cd command example
cd command example
从上面的截图可以清楚的看出,当执行 cd - 命令提示未设置 OLDPWD 值时, cd $OLDPWD 命令没有报任何错;实际上,它把当前的工作目录改变到用户的 home 目录里。
那是因为 OLDPWD 变量目前还没有被设置, $OLDPWD 仅仅是一个空字符串。因此, cd $OLDPWD 命令跟 cd 命令的执行结果是一致的,默认情况下,会把用户当前的工作目录切换到用户的 home 目录里。
最后,我还遇到过这样的要求,需要让 cd - 命令执行的结果不显示出来。我的意思是,有这样的情况(比如说,在写 shell 脚本的时候),你想让 cd - 命令的执行结果不要把目录信息显示出来。那种情况下,你就可以使用下面的命令方式了:
cd - &>/dev/null
上面的命令把文件描述符 2(标准输入)和 1(标准输出)的结果重定向到 /dev/null 目录。这意味着,这个命令产生的所有的错误不会显示出来。但是,你也可以使用通用的 $? 方式来检查这个命令的执行是否异常。如果这个命令执行报错, echo $? 将会返回 1,否则返回 0。
或者说,如果你觉得 cd - 命令出错时输出信息没有关系,你也可以使用下面的命令来代替:
cd - > /dev/null
这个命令仅用于将文件描述符 1 (标准输出)重定向到 /dev/null 。
>>>>

Linux高效的文本过滤命令

Linux上12个高效的文本过滤命令
1、 awk 命令
awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 到 13 部分 来开始使用它。
另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。
$ man awk
2、 sed 命令
sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:
如何使用 GNU sed 命令在 Linux 下创建、编辑和处理文件
日常 Linux 系统管理员任务使用的 15 个有用的 sed 命令小贴士和技巧
sed 的 man 手册已经添加控制选项和说明:
$ man sed
3、 grep、 egrep、 fgrep、 rgrep 命令行
这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。
注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):
$ egrep = grep -E 
$ fgrep = grep -F 
$ rgrep = grep -r
下面是一些基本的 grep 命令:
tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:
tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:
在 Linux 下的 grep、 egrep 和 fgrep 的差异?中,你可以了解更多。
4、 head 命令
head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:
tecmint@TecMint ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)
tecmint@TecMint ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
学习如何 使用带有 tail 和 cat 命令的 head 命令,以便在 Linux 下更有效的使用。
5、 tail 命令
tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。
下面的命令将会输出指定文件的最后 5 行:
tecmint@TecMint ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。
下面的命令将会使你能够监控指定文件的变化:
tecmint@TecMint ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
阅读 tail 的 man 手册,获取使用选项和说明的完整内容:
$ man tail





银盾云正在进一步加大产品迭代和技术服务的力度,由专业工程师团队为全球用户提供云计算、云存储基础设施规模及框架咨询,并探讨关键场景的部署方式。银盾云以为政企客户和互联网企业提升IT核心能力为使命,以卓越的解决方案、对客户业务的深刻理解以及分布全国技术支持中心的高效密集的服务,为客户提供贯穿其IT建设全生命周期的“一站式”服务。同时,秉持“稳定提升价值”的理念,银盾云在物理机房、自动化运维、安全防护、网络连接、客服响应等多层面,持续为政企客户和互联网企业提供稳定、优质的用户体验,帮助用连接云计算未来。
分享到:
评论

相关推荐

    Windows命令行工具汇总.pdf

    Windows 命令行工具汇总.pdf 文件是一份详细的指南,旨在帮助用户快速掌握 Windows 命令行工具的使用方法和技巧。该文件涵盖了 Windows 中各类命令行工具的使用方法、参数设置、实战示例等内容,对于用户来说是一个...

    Linux系统命令行Find工具使用小技巧

    find是在磁盘中查找满足给定...find 的另一个应用是搜索属于某个给定用户的文件,因此为了搜索我的系统中所有属于我的文件,我使用以下命令:find / -user nickg 同样可以搜索基于组用户的文件,使用“-group”参数。

    md5 windows命令行工具

    在Windows操作系统中,尽管没有内置的MD5命令行工具,但可以通过第三方程序或者一些小技巧来实现MD5校验。 Windows命令行工具,通常是通过批处理脚本(.bat文件)来实现特定功能的。在这种情况下,"md5 windows...

    大文本文件拆分、命令行工具(送文本数据库查找工具、含源码)

    2. **命令行工具开发**:了解如何使用C语言编写命令行工具,包括命令行参数的解析和处理。 3. **文本数据库查找**:掌握在文本文件中进行高效查找的方法,可能涉及到字符串匹配算法(如KMP、Boyer-Moore等)和数据...

    windows下命令行工具cmder

    **Windows下的命令行工具Cmder** Cmder是一款针对Windows操作系统设计的强大的命令行工具,它是CMD(命令提示符)的一个替代品,为用户提供了一种更为高效且美观的交互体验。Cmder集成了许多在Linux环境中常用的...

    小红伞杀毒的命令行版本

    对于小红伞杀毒的命令行版,通常会有一个批处理(.bat)文件,双击运行后会启动相应的命令行工具。这个批处理文件可能是用来简化操作流程,按照预定的参数调用杀毒引擎。 在AVScan_CH压缩包中,我们可以推测“CH”...

    windows使用小技巧

    16. 命令提示符的增强版:PowerShell提供了更强大的命令行工具,可以尝试使用它进行更复杂的系统管理。 17. 资源监视器:通过任务管理器的性能选项卡,可以打开资源监视器,查看CPU、内存、硬盘和网络的使用情况。 ...

    端口查看 端口删除 命令行 小工具

    本小工具“cmdutil”显然是一个针对这些需求设计的命令行工具。下面将详细介绍与端口查看和端口删除相关的命令行知识。 首先,我们要了解什么是端口。在计算机网络中,端口是应用程序与网络通信的接口,每个端口都...

    系统管理工具包,标准化您的 UNIX 命令行工具

    【系统管理工具包:标准化您的 UNIX 命令行工具】是针对中级 IT 专业人士的一篇文章,由 Martin Brown 撰写,旨在帮助系统管理员在不同的 UNIX 环境间建立标准化的命令行工具,以简化异构环境下的管理工作。...

    RAR使用命令行解压rar\zip文件

    ### RAR使用命令行解压RAR与ZIP文件 在日常工作中,我们经常需要对文件进行压缩或解压缩操作。WinRAR作为一款强大的压缩工具,除了提供图形界面外,还...希望本文能帮助大家更好地掌握WinRAR命令行工具的使用技巧。

    Linux 操作系统提供了大量的命令行工具.docx

    ### Linux操作系统中的命令行工具详解 #### 一、文件与目录管理 - **ls**: 列出当前目录下的文件及子目录。通过指定不同的参数,如`-l`(长格式列出)、`-a`(列出所有文件,包括隐藏文件)等,可以获取更详细的...

    Go-多引擎支持命令行翻译工具inGo

    这个文件包含了工具的所有源代码和可能的资源文件,用户可以下载并编译运行,也可以查看源码学习Go语言和命令行工具的开发技巧。 从这个工具中,我们可以学习以下几个知识点: 1. **Go语言基础**:包括Go的语法...

    实用Linux命令行技巧

    通过以上解析,我们可以看到文章详细介绍了Linux命令行中各种实用的技巧和方法,涵盖了基本命令使用、文件管理、用户与权限管理、效率提升技巧、管道操作、重定向与流操作等方面的内容,对于Linux初学者来说是非常...

    超实用win7使用小技巧

    【Windows 7 使用小技巧详解】 Windows 7操作系统在Vista的基础上进行了许多改进,提供了更加友好和高效的功能。以下是一些实用的小技巧,帮助你更好地掌握Win7的使用。 1. **PC Safeguard 电脑守卫** PC ...

    网络命令行网络命令行

    这些只是网络命令行工具的一小部分,实际上还有很多其他命令和工具,如**arp**、**iptables**、**ntpq**、**ss**等,它们各自针对不同的网络需求。掌握这些命令的使用不仅能提高工作效率,还能增强对网络运行机制的...

    命令行压缩工具,功能强大,压缩率高,可自选加密算法

    与图形用户界面(GUI)的压缩软件不同,命令行工具如RAR、7-Zip等在没有窗口和图标的情况下运行,通过输入特定的指令完成操作。这种工具的优势在于快速、简洁,对于批量处理和自动化任务尤其适用。 标题中提到的...

    vb使用的10个小技巧

    ### VB使用的10个小技巧详解 #### 1. 如果一行程序太长,能否换行? 在Visual Basic(简称VB)编程环境中,如果遇到一行代码过长的情况,可以通过在需要换行的位置后面添加下划线“_”的方式进行换行。这种方法...

    Linux命令行操作技巧

    本文将详细介绍一些常用的键盘操作技巧,包括光标移动、文本编辑、剪切粘贴以及自动补齐和历史命令使用等方面,帮助读者更快速、准确地进行命令行操作。 #### 一、光标移动命令 光标移动是命令行操作中最基础也是...

Global site tag (gtag.js) - Google Analytics