当前位置: 首页 > Linux

你可能不知道的shell技巧

时间:2023-04-06 04:45:42 Linux

只是一些妥妥的抛砖引玉,没有深入探讨,不足以作为教程使用。想要完整了解,请参考权威资料!cd-返回到最后输入的目录。相当于cd$OLDPWD。如果刚进入终端界面,最后的目录不存在,那么执行这条命令会报错:cd:OLDPWDnotset。除非你至少进行过一次cd操作!!执行最后一条命令。呼应“原罪”!!你会看到两个originalsin如果你有一个命令少了一个单词,那么这个功能真的很方便:originalsinbigsbecho!!history查看你之前执行过的命令。$?查看上次执行命令的状态。默认值为0,表示不报告错误。一个有用的地方是你可以用它来判断是否继续执行if["$?"-ne0]然后回显“错误和exix”退出$?fi如果你的程序不能容忍任何错误,而且几乎每一步你都需要判断是否有错误,那么改变模式即可:#设置模式,一旦进程或子进程返回的状态不为0,然后直接退出set-e#开始执行代码test这是一个内置的测试函数,简写是:[expression],也就是我们经常用到的ifa=2test$a-eq2echo$?#0的testiscorrecttest$a-eq3echo$?#1testiswrongif[$a-eq2]then#ofcoursefipwd-P查看当前目录,也就是说软链接的目录会显示真实路径重新启动并重新启动计算机。危险操作,慎用reboot#如果没有权限sudorebootset-x打印出执行的命令,并在命令前加+号#vitest.shset-xme="Whoami"echo${#me}shtest.sh#+me='我是谁'#+echo8#8:>FILE清空文件内容并保存。:实际上是空操作,你可以单独使用ifxxxthen:else#runfishshiftdeletepositionparametersfromtheleft#simulatepositionparameterssetaabbccecho$@#aabbccshiftecho$@#bbccshiftecho$@#ccCDPATHis类似于PATH,但是这个变量是给cd用的。你想cd到一个目录,但是这个目录不在当前工作目录下,那么shell会去CDPATH的路径下找#PhpstormProjects目录下有一个user-api目录CDPATH=$CDPATH:$HOME/PhpstormProjects/#当前目录:$HOMEcduser-api#当前目录:$HOME/PhpstormProjects/user-apiCDPATH可以放在.bash_profile2>&1输出重定向,将标准错误重定向到标准输出有些日志输出实际上是标准输出错误,很抱歉,如果您想对管道或其他东西进行额外处理。#想查看最后一行的日志#抱歉。这样就无法通过管道,全部直接打印出来。docker记录一些容器|尾-1#好的。管道正式开启dockerlogssome-container2>&1|tail-1有时,你想捕获错误信息并使用它,或者将它存储在一个变量中,那么你也可以使用输出重定向。注意:2>&1之间不能有空格。dirname$0在shell执行脚本文件中,准确找到当前文件所在的目录。#file.shcurrent_dir=$(dirname$0)calQuickViewCalendar#查看当前月份的日历calOctober2018day12345612345678910111213141516171819202122232425262728293031#查看九月日历cal92018九月2018一二三四五六123456789101112131415161718192021222324252627282930#查看日历cal2018cat>FILE<<使用内联输入重定向将内容写入文件。在做一些自动化脚本的时候比较有用,兼顾格式和可读性。这种写法这里也叫documentcat>test.txt<