当前位置: 首页 > 科技观察

使用这27个Linux技巧将您的工作效率提高一倍!

时间:2023-03-15 18:44:26 科技观察

今天给大家分享27个Linux实用技巧。对于一些经常在Linux操作系统下玩的认真的发烧友来说,可以有效的提高你的工作效率。话不多说,进入正题。谨慎删除文件如果你想谨慎使用rm命令,你可以为它设置一个别名,在删除文件之前需要确认。一些系统管理员会默认使用这个别名,对于这种情况,您可能需要查看下一个提示。$rm-i<==请求确认以关闭别名您可以使用unalias命令以交互方式禁用别名。它不会更改别名的配置,而只是暂时禁用它,直到下次登录或重置别名时。$unaliasrm如果你默认设置了rm-i作为rm的别名,但你不想在删除文件之前必须确认,你可以将unalias命令放在启动文件中(例如~/.bashrc)。使用sudo如果你经常忘记在只有root用户才能执行的命令前使用sudo,这里有两种方法可以解决这个问题。一种是利用命令历史记录,可以使用sudo重复执行!!(使用!!运行最近的命令并在前面加上sudo),另一种是设置一些命令别名,并附加所需的sudo。$aliasupdate='sudoaptupdate'更复杂的技巧有时命令行技巧不仅仅是一个别名。毕竟,别名能为您做的就是替换命令和添加一些命令参数,从而节省键入时间。但如果你需要比别名更复杂的功能,你可以通过编写脚本、将函数添加到.bashrc或其他启动文件来实现。例如,以下函数将在创建目录后单步执行。设置完成后,执行source.bashrc,可以使用mdtemp等命令创建目录,并立即进入该目录。md(){mkdir-p"$@"&&cd"$1";}命令编辑和光标移动这里有很多快捷键可以帮助我们修改自己的命令。接下来,用cursor这个词来代替cursor的位置。删除从头到光标处的命令文本ctrl+u例如:$cd/proc/tty;ls-alcursor如果此时使用ctrl+u快捷键,无需长按退格键即可清除命令钥匙。ctrl+k删除光标到结尾的命令文本,例如:$cd/proc/ttycursor;ls-al这时候如果使用ctrl+k快捷键,会删除光标处从头到尾的命令文本。还有其他操作,不再举例,例如:ctrl+a:光标移动到命令开头ctrl+e:光标移动到命令结尾altf:光标向前移动一个单词altb:光标向前移动一个词ctrlw:删除一个词(以空格分隔的字符串)快速执行历史命令。我们都知道history记录了执行过的历史命令,使用!+历史命令前的数字可以快速执行历史命令。部分history命令查看history会显示大量的历史命令,而fs-l只会显示其中的一部分。实时查看日志$tail-ffilename.logtail-f加上文件名可以实时显示日志文件的内容。当然使用less命令查看文件内容,使用shift+f键也可以达到类似的效果。如何通过查看磁盘或内存状态知道当前磁盘是否已满?$df-h/dev/sda144.6G10M4.4G1%/tmp/dev/sda11454M366M61M86%/boot/dev/sda1555G18G35G35%/home/dev/sda1256M31M226M12%/boot/efitmpfs786M64K786M1%/rundfuser命令查看磁盘是否可以使用fast/10每个挂载路径的使用。当前目录下每个子目录占用的空间如果已经知道home目录占用空间大,想知道home目录下每个目录的占用情况:这里指定目录深度,否则会递归统计子目录占用的空间,大家可以自己试试。当前内存使用情况$free-htotalusedfreesharedbuff/cacheavailableMem:7.7G3.5G452M345M3.7G3.5G通过free的结果很容易看到当前总内存,剩余可用内存等。使用-h参数。不知道大家有没有注意到我们在之前的命令中使用了-h参数。它的作用是让结果以人类可读的方式呈现,所以我们看到它呈现的单位是G,M等。如果不使用-h参数,可以自己试试看结果会。通过名字查找进程id如果想快速直接的找到进程id,可以使用:pgrephello22692或者:$pidofhello22692其中hello是进程名。按名称杀死进程一般我们可以使用kill -9pid来杀死一个进程,但是需要先找到该进程的进程id。其实我们也可以通过名称直接杀掉进程,例如:$killallhello或者:$pkillhello查看进程的运行时间可以使用如下命令查看进程的运行时间:$ps-p24525-olstart,etimeSTARTEDELAPSEDSatMar2320:52:08201902:45其中24525是您要查看的进程的进程ID。快速目录切换cd- 回到上一级目录cd回到用户主目录执行多条命令我们知道可以执行多条命令,用分号隔开,例如:$cd/temp/log/;rm-rf*但如果当前目录是/目录,而/temp/log目录不存在,那么就会出现激动人心的一幕:bash:cd:/temp/log:Nosuchfileordirectory(突然沉默)因为;可以执行多个命令,但是因为前面的命令失败了,后面的命令不会执行。所以cd执行失败后,rm-rf*会继续执行。既然是在/目录下,结果可想而知。所以你以为这种事故是因为不了解rf-rf*的威力造成的?如果解决了呢?很简单,使用&&,例如:$cd/temp/log/&&rm-rf*这样可以保证上一条命令执行成功后,下一条才会执行。查看压缩后的日志文件有时候日志文件是压缩过的,能不能偷懒不解压查看呢?当然。例如:$zcattest.gztestlog或:$zlesstest.gztestlog清空文件内容比如有个大文件想快速删除,或者不想删除,但又想清空内容:>filenamewill同时记录日志并打印到控制台。执行shell脚本往往会重定向日志,但在这种情况下,控制台不会打印。如何记录日志文件并将日志输出到控制台?$./test.sh|teetest.log终止和恢复进程执行我们使用ctrl+z来暂停一个进程的执行,或者使用fg来恢复执行。比如我们在使用$catfilename的时候,当我们发现可能文件内容很多时,使用ctrl+z暂停程序,如果想从上一个地方继续执行,只需要使用fg命令恢复执行。或者使用bg让进程在后台运行。计算程序运行时间我们可能会写一些小程序,想知道它的运行时间。其实我们可以使用时间命令来帮助我们计算,例如:$time./fibo30the30resultis832040real0m0.088suser0m0.084ssys0m0.004s它会显示系统时间、用户时间和实际使用的总时间。查看内存占用前10位的进程$ps-aux|sort-k4nr|head-n10快速找到你需要的命令呢?别担心,你仍然可以使用man:$man-k"copyfiles"cp(1)-copyfilesanddirectoriescpio(1)-copyfilestoandfromarchivesgit-checkout-index(1)-Copyfilesfromtheindextotheworkingtreegvfs-copy(1)-Copyfilesgvfs-move(1)-Copyfilesinstall(1)-copyfilesandsetattributes使用-k参数,这样可以显示复制文件相关的帮助手册。命令行下的复制粘贴我们知道,在命令行下,复制不能再ctrl+c,因为它意味着终止当前进程,而控制台下的复制粘贴需要使用如下快捷键:ctrl+insertshift+insertsearch包含某个字符串的文件例如在当前目录下查找包含测试字符串的文件:$grep-rn"test"test2.txt:1:test,可以找到该文件的第一行其中字符串是.卡顿程序运行时,终端可能会输出大量日志。如果想简单查看但又不想记录log文件,可以使用ctrl+s键冻结屏幕,这样log就不会继续输出了。如果要恢复,用ctrl+q退出冻结。不用编辑器编辑文本文件如果有些系统连基本的vi编辑器都没有,可以用下面的方法编辑内容:$cat>file.txtsomewords(ctrl+d)编辑完后ctrl+d保存。查看elf文件查看elf文件的头部信息。例如:$readelf-hfilename我们可以在显示的结果中看到运行平台、elf文件类型、字节序等。检查库是否包含接口$nmfilename|grepinterface这里是从文件filename中检查接口interface是否包含,前提是文件包含符号表。命令编辑如果要修改输入的命令,可以使用^a(ctrl+a)或^e(ctrl+e)快速将光标移动到命令的开头或结尾。您也可以使用^字符替换先前命令的文本并重新执行该命令。比如^before^after^就相当于把之前命令中的before换成after再重新执行一次。$ehohelloworld<==WRONGCOMMANDCommand'eho'notfound,didyoumean:command'echo'fromdebcoreutilscommand'who'fromdebcoreutilsTry:sudoaptinstall$^e^ec^<==replaceechohelloworldhelloworld使用远程名称登录机器machine如果使用命令行登录其他机器,可以考虑添加别名。在别名中可以填写需要登录的用户名(可以和本地系统的用户名相同,也可以不同)和远程机器的登录信息。例如,使用类似server_name='ssh-v-lusernameIP-address'的别名命令:$aliasbutterfly="ssh-v-ljdoe192.168.0.11"也可以添加到/etc/hosts文件或在DNS服务器添加解析记录以用友好的机器名称替换IP地址。执行alias命令以列出机器上的现有别名。$aliasaliasbutterfly='ssh-v-ljdoe192.168.0.11'aliasc='clear'aliasegrep='egrep--color=auto'aliasfgrep='fgrep--color=auto'aliasgrep='grep--color=auto'aliasl='ls-CF'aliasla='ls-A'aliaslist_repos='grep^[^#]/etc/apt/sources.list/etc/apt/sources.list.d/*'aliasll='ls-alF'aliasls='ls--color=auto'aliasshow_dimensions='xdpyinfo|grep'''dimensions:''''只需将新别名添加到~/.其后立即生效。冻结、解冻终端界面^s(ctrl+s)会通过执行流控命令XOFF停止终端输出,影响PuTTY会话和桌面终端窗口。如果误输入了这条命令,可以使用^q(ctrl+q)让终端重新响应。所以你只需要记住组合键^q即可,毕竟这种情况很少见。重用命令Linux为用户提供了多种重用命令的方法,其核心是通过历史缓冲区收集执行过的命令。重用命令的最简单方法是输入!然后是最近使用的命令的首字母;当然,您也可以按键盘上的向上箭头,直到看到您要重复使用的命令,然后按回车键。也可以使用history先显示命令历史,再输入!后跟需要在命令历史中重复使用的命令旁边的数字。!!<==重用最后一个命令!ec<==重用最后一个以“ec”开头的命令!76<==重新使用历史命令中的76号命令查看日志文件并动态显示更新的内容使用形式例如命令tail-f/var/log/syslog可以查看指定的日志文件并动态显示文件中添加的内容。当您需要监视向日志文件添加内容的事件时,它非常有用。该命令会输出文件内容的结尾,并逐渐显示新的内容。寻求帮助对于大多数Linux命令,您可以通过在输入命令后添加选项--help来获取该命令的功能、用法和一些相关信息。除了man命令之外,--help选项允许您在不使用所有扩展选项的情况下获得所需的内容。