当前位置: 首页 > 后端技术 > Java

shell命令是个奇怪的技能,有点短

时间:2023-04-01 23:01:42 Java

1。在任何目录之间快速移动。您发现自己经常在两个或多个目录之间移动。一会儿在这里切换,一会儿在那里切换,来回跳跃。这些目录相距甚远,一遍又一遍地输入冗长的路径很累人。使用内置命令pushd和popd来管理目录堆栈并在目录之间轻松切换。这是一个简单的例子:$cd/tmp/tank$pwd/tmp/tank$pushd/var/log/cups/var/log/cups/tmp/tank$pwd/var/log/cups$lsaccess_logerror_logpage_log$popd/tmp/tank$lsemptyfull$pushd/var/log/cups/var/log/cups/tmp/tank$pushd/tmp/tank/var/log/cups$pushd/var/log/cups/tmp/tank$pushd/tmp/tank/var/log/cups$dirs/tmp/tank/var/log/cups堆栈是后进先出的结构,这两个命令正是这样做的。如果您在新目录上使用pushd,它会将前一个目录压入堆栈。使用popd时,会弹出当前保存在栈顶的位置,并切换到新的栈顶目录。用这些命令改变位置时,目录栈中的值是从左到右输出的,对应栈中自上而下的顺序。如果在使用pushd时没有指定目录,则会交换栈顶两个目录的位置,这样就可以重复使用pushd命令在两者之间切换。cd命令也可以达到同样的效果。如果不记得目录栈中有哪些目录,可以使用内置命令dirs从左到右依次显示。添加-v选项后,显示形式更加形象。$dirs-v0/opt/yongheng1/opt/yongheng/Shell$numbers可以用来调整目录在栈中的位置。pushd+1会将目录号1放在堆栈顶部(并切换到该目录)并将其他目录下推。$pushd+1/opt/yongheng/Shell/opt/yongheng$dirs-v0/opt/yongheng/Shell1/opt/yongheng如果你想看到一个没有数字的类似堆栈的目录列表,你可以使用-p选项。#dirs-p/opt/yongheng/Shell/opt/yongheng2.重复前面的命令你刚刚输入了一条冗长繁琐的命令,其中包含冗长的路径名和一堆复杂的参数。现在需要重新执行该命令。我必须重新输入吗?这个问题有两种解决方案。第一种方法只需要在提示符处输入两个感叹号,bash就会显示并重复最后一条命令。示例:$cd/opt/$!!cd/opt/另一种(更现代的)方法是使用箭头键。按向上箭头键可滚动回到上次执行的命令。如果找到所需的命令,请按Enter键(再次)执行它。3、参数重用重用之前的命令很简单,用!!即可,但你需要的不一定总是整个命令。只重用最后一个参数怎么样?使用!$表示上一个命令中的最后一个参数。!:1表示第一个参数,!:2表示第二个参数,依此类推。多个命令使用相同的文件名参数的情况并不少见。最常见的场景之一是当程序员编辑源代码文件,然后编译、编辑、编译……有了!$,事情就方便多了。如下:$vi/some/long/path/name/you/only/type/once...$gcc!$gcc/some/long/path/name/you/only/type/once...$vi!$vi/some/long/path/name/you/only/type/once...$gcc!$gcc/some/long/path/name/you/only/type/once...$意思还没看懂?这不仅可以节省大量输入,还可以避免错误。如果在编译的时候输入了错误的文件名,编译出来的源代码文件不只是被编辑了。使用!$,您始终会得到刚刚使用的文件名。如果你想重用的参数在命令行中,你可以使用numbered!:命令来获取它。4.安全第一,如果不小心在命令测试中输入了错误的字符。(信不信由你!)即使是简单的bash命令也会产生严重的后果:您将移动或删除错误的文件。添加模式匹配,结果更加令人兴奋,因为模式中的拼写错误会导致截然不同的结果。谨慎的用户会怎么做?您可以使用命令历史记录功能和方便的键盘来重复参数,而无需从头开始输入,从而减少输入错误。如果你想匹配具有棘手模式的文件,请使用echo测试模式是否正确匹配,然后使用!$进行实际操作。例如:$lsab1.txtac1.txtjb1.txtwc3.txt$echo*1.txtab1.txtac1.txtjb1.txt$echo[aj]?1.txtab1.txtac1.txtjb1.txt$echo?b1.txtab1.txtjb1.txt$rm!$rm?b1.txt$echo是一种检查模式匹配结果的方法。一旦确信结果符合预期,就可以将模式用于实际命令。这里我们要删除具有特定名称的文件,没有人想用这种东西弄错。如果本文对您有帮助,欢迎关注点赞`,您的支持是我坚持创作的动力。转载请注明出处!