如果您刚刚在Linux中使用命令行,那么值得一提的是它是操作系统中功能最强大的功能之一。 学习曲线可能或可能不会很陡峭,具体取决于您想深入了解主题的深度。 但是,有一些Linux命令行提示/技巧,无论您的专业技术水平如何,始终都会有所帮助。
在本系列文章中,我们将讨论几个这样的技巧/技巧,希望能让您的命令行体验更愉快。
但在我们向前推进之前, 值得一提的是,本文中介绍的所有说明以及示例都已在Ubuntu 14.04LTS上进行了测试。 我们使用的命令行shell是bash(4.3.11版)
Linux命令行提示/技巧
请注意,我们假设您知道Linux中命令行的基本知识,例如root和home目录,什么是环境变量,如何浏览目录等等。 另外,请注意,提示/技巧将伴随着涉及的概念的方式和原因(如适用)。
轻松切换两个目录 - 快速提示
假设你在命令行上做了一些工作,需要你多次在两个目录之间切换。 而这两个目录位于完全不同的分支,分别位于/ home / / / usr /下。 你会怎么做?
一个,最直接的选择是通过键入这些目录的完整路径进行切换。 虽然方法本身没有问题,但这是非常耗时的。 其他选项可能是打开两个单独的终端并继续工作。 但是再一次,这种做法既不方便,也不优雅。
你会很高兴知道这个问题有一个简单的解决方案。 所有你需要做的是首先在两个目录之间手动切换(通过将它们各自的路径传递给cd命令),然后后续的交换机可以使用cd -命令完成。
例如:
我在以下目录中:
$ pwd
/home/himanshu/Downloads
然后我切换到/ usr / branch中的其他目录:
cd /usr/lib/
现在,我可以轻松地使用以下命令来回切换:
cd -
这是一个屏幕截图,显示了cd- command的动作。
这里值得一提的一个重要的一点是,如果您切换到所有这些之间的第三个目录,则cd- command将适用于新目录和从其进行交换的目录。
轻松切换两个目录 - 相关详细信息
对于好奇的人来说,谁想知道cd命令的工作原理,这里是一个解释:众所周知,cd命令需要一个路径作为参数。 现在,当连字符( - )作为参数传递给命令时,它将被OLDPWD环境变量包含的值替换。
现在可以看出,OLDPWD环境变量存储以前工作目录的路径。 这个解释是cd命令的手册页,但可惜的是,你可能找不到系统上预装的手册页(至少在Ubuntu上没有)。
但是,安装它并不是一件大事,您只需运行以下命令即可:
sudo apt-get install manpages-posix
然后做:
man cd
一旦手册页打开,你会看到它清楚地说:
- When a hyphen is used as the operand, this shall be equivalent
to the command:
cd "$OLDPWD" && pwd
不用说,这是cd命令设置OLDPWD变量。 所以每次更改目录时,以前的工作目录都存储在这个变量中。 这给我们带来了另一个重要的一点:每当启动一个新的shell实例(手动或通过一个脚本)时,它都没有“以前的工作目录”。
这是合乎逻辑的,因为它是设置此变量的cd命令。 所以直到你至少运行一次cd命令,OLDPWD环境变量将不包含任何值。
继续,虽然它可能看起来违反直觉,但cd和cd $ OLDWPD命令在所有情况下都不会产生相同的结果。 一个新的shell刚刚启动的例子。
从上面的屏幕截图清楚,当cd命令抱怨OLDPWD变量未设置时, cd $ OLDPWD命令没有产生任何错误; 实际上它将当前工作目录更改为用户的主目录。
那是因为当前没有设置OLDPWD变量,$ OLDPWD只不过是一个空字符串。 因此, cd $ OLDPWD 命令与运行cd一样好,默认情况下,您将转到您的主目录。
最后,我也经历了一些情况,在这种情况下,抑制cd- command产生的输出是可取的。 我的意思是,可能有一些情况(例如,在编写一个shell脚本的时候),你需要cd- command在输出中不产生通常的目录路径。 对于这些情况,可以使用以下命令:
cd - &>/dev/null
上述命令将将文件描述符2(STDERR)和描述符1(STDOUT)重定向到/ dev / null 。 这意味着命令产生的任何错误也将被抑制。 但是,您仍然可以使用generic $来检查命令失败的成功。 技术 - 命令echo $? 如果有错误,将产生'1',否则为'0'。
或者,如果您可以使用cd命令在错误情况下生成输出,则可以使用以下命令:
cd - > /dev/null
此命令将仅将文件描述符1(STDOUT)重定向到 /dev/null
。
结论
可悲的是,我们只能在这里覆盖一个命令行相关的提示,但是好的事情是我们设法讨论了关于cd命令的很多深入的内容。 建议您彻底地浏览本教程,并在Linux机箱的命令行终端上测试我们在此讨论的所有内容。 此外,请执行命令的手册页,然后尝试所有记录的功能。
如果您遇到任何问题或有疑问,请在下面的评论中与我们分享。 同时,等待第二部分,我们将在这里讨论一些更有用的与命令行相关的技巧/技巧,方法与在此完成相同。