作为一个Linux用户,你一定在Linux终端输入过无数命令。有些命令很短,比如:ls、cd、pwd等,这样的命令你不会觉得有压力。但是,有些命令比较长,比如:$gitpushoriginHEAD:refs/for/master这个时候,一个字母打错,会不会崩溃?以前我的做法是,如果我输入了错误的命令,我会把光标移到错误的地方,然后再修改。我相信不仅是我,大多数朋友都是这样做的。如果命令很短还好,但是如果命令很长,是不是很疯狂?今天良旭就给大家介绍7种提高Bash下命令输入的方法。如果您输入了错误的命令,您可以有效地纠正它。1获取命令的最后一个参数!$在Bash中,!$表示命令的最后一个参数。让我们用下面的场景来说明这个符号的作用。如果我想把一个文件移动到另一个地方,但是文件名是错误的,例如:$mv/path/to/wrongfile/some/other/placemv:cannotstat'/path/to/wrongfile':No这样的文件或目录,在这种情况下,我们将光标移动到错误的文件名上,然后修改文件名使其正确。这种方法当然可以,但是如果命令比较长,效率会比较低。这种情况下,我们可以这样操作:$mv/path/to/rightfile!$mv/path/to/rightfile/some/other/place这样就不用输入最后一个参数了,如果这样参数足够长的时间,效率的提高将是显而易见的。2获取命令的第n个参数!:n我们经常会把命令参数的顺序弄错,例如:$tar-cvfafolderafolder.tartar:failedtoopen这时候,我们通常把顺序错误的删除掉参数,然后输入正确的参数。这时候如果参数很长,估计你有爆屏的冲动。这时候你可以这样做:$!:0!:1!:3!:2tar-cvfafolder.tarafolder完美解决问题!但是这些符号是什么意思呢?如果仔细看,应该能看出其中的窍门。根据错误的命令,!:0其实是tar,!:1是-cvf,!:2是afold,!:3不用我说了吧?说白了,就是一个位置参数。那么我们只需要根据位置参数重新排列这些元素的顺序,就OK了,简单吧?PS:!:表示最后一个位置元素。3Getallparameters!:1-$一般来说,命令的第一个元素是具体的命令,后面是参数。如果我们想要获取所有参数,我们可以使用!:1-$。比如我想用tar命令,却写成了zip:$zip-cvfafolder.tarafolder这时候你可以这样做:$tar!:1-$当然,如果你不想获取所有的参数,也可以使用!:1-2,或者!:3-9获取参数的子集,当然前提是你有足够的参数。4获取最后n条命令的参数!-n:$在Linux下,我们会敲很多的命令。一般来说,!代表最后一条命令,相当于!-1。如果我们想获取最后第n个命令的参数,我们可以使用!-n:$。比如我们移动文件的时候提示文件不存在,我们通常会使用ls命令查看相应目录下有哪些文件:$mv/path/to/wrongfile/some/other/placemv:cannotstat'/path/to/wrongfile':Nosuchfileordirectory$ls/path/to/rightfile这时候我们要用!$来获取/path/to/元素,也就是最后一个元素当前最后一个命令,但是我们需要的是倒数第二个命令的元素,我们应该怎么做?我们可以使用!-2:$:$mv/path/to/rightfile!-2:$mv/path/to/rightfile/some/other/place所以我们在命令切换元素的时候需要上一个,可以使用这个快捷键。5获取文件对应的目录!$:h如果我们要打包一个文件,然后提示文件不存在:$tar-cvfsystem.tar/etc/afiletar:/etc/afile:Cannotstat:Nosuchfileordirectorytar:Error因先前的错误而延迟退出。这时候我们通常的做法是进入/etc目录,看看里面都有哪些文件。这很好,但是如果路径名很长,那么您可能需要再次戳屏幕。我们可以使用!$:h来获取最后一个参数对应的路径。现在最后一个参数是/etc/afile,afile对应的路径是/etc/。我们可以用!$:h来获取最后一个参数对应的路径:$cd!$:hcd/etc6获取当前行的第一个元素!#:1通常我们重命名一个文件,通常这样写:$mv/path/to/some/file/path/to/some/file.bak这两个参数很像,只是后面加了一个.bak,我们需要写两遍,比较浪费时间!我们可以用!#:1获取当前行的第一个参数,直接修改!$cp/path/to/some/file!#:1.bakcp/path/to/some/file/path/to/some/file.bak这样能省很多字母吗?7替换命令中的字符串!!:gs这个操作就更厉害了,可以直接替换前面命令中的一些字符串。例如,我们有这样一个命令:$echomyfkeydoesnotworkmyfkeydoesnotwork如果我们想用s替换f,我们可以这样做:$!!:gs/f/s/echomyskeydoesnotworkmyskeydoesnotwork同样,如果我们想把does改成did,我们可以这样做:$!!:gs/does/did/echomyskeydidnotworkmyskeydidwork您可以将命令中的关键字更改为您想要的。以上就是良虚教程网为各位小伙伴分享的Linux的7个终端快捷键!.以上就是良序教程网为各位小伙伴们分享的Linux相关知识。
