当前位置: 首页 > Linux

10个简单技巧,助你快速成为Linux高手!

时间:2023-04-06 11:53:23 Linux

让我们面对现实:坏习惯很难改变。但是您已经熟悉的习惯可能更难改掉。有时,重新审视某件事会让你产生“啊哈,我没想到会这样!”的感觉。片刻。本文提供了另外10个技巧,可帮助您成为更高效的Linux专家。什么是10个提示?如下:Usefilenamecompletion(文件名补全)。使用历史扩展。重用以前的参数。使用pushd和popd管理目录导航。查找大文件。不使用编辑器创建临时文件。使用curl命令行实用程序。充分利用正则表达式。识别当前用户。使用awk处理数据。1、文件名自动补全文件名自动补全功能让您不用在命令提示符下输入各种又臭又长的文件名,避免输入错误,提高效率。此功能在每个shell中的工作方式略有不同,因此首先确定您使用的是哪个shell。我运行的是哪种shell?您可以使用echo$0或ps-p$$命令来显示您使用的是哪个shell。List1:确保你的shell$echo$0-bash$ps–p$$PIDTTYTIMECMD6344ttys0000:00.02–bashCShellCShell支持最直接的文件名补全功能。这是通过设置filec变量启用的(使用命令setfilec)。开始键入文件名后,可以按Esc键,shell将完成文件名或尽可能多的部分。例如,假设您有名为file1、file2和file3的文件。如果键入f然后按Esc,将填充文件,之后您需要输入1、2或3以完成相应的文件名。BashBashShell还提供文件名补全,但它使用Tab键。您不需要设置任何选项来在Bashshell中启用文件名完成,它是默认设置的。Bash还实现了其他功能。输入部分文件名后,按Tab键,如果有多个文件满足您的要求,需要添加文本选择其中一个,您可以再按两次Tab键,显示匹配文件列表。使用前面的名为file1、file2和file3的文件示例,首先键入f。按一次Tab键时,Bash自动完成显示文件;当再次按下Tab键时,列表file1file2file3将展开。KornShell对于KornShell用户,文件名完成取决于EDITOR变量的值。如果EDITOR设置为vi,则您键入部分名称,然后按Esc键,然后是反斜杠()字符。如果EDITOR设置为emacs,则键入部分名称,然后按两次Esc以完成文件名。2.使用历史扩展如果你对一系列命令使用相同的文件名会怎样?有一个快捷方式可以快速获取您使用的最后一个文件名。如清单2所示,!$命令返回前一个命令使用的文件名。在文件this-is-a-long-lunch-menu-file.txt中搜索单词pickles的匹配项。搜索后,使用vi命令编辑this-is-a-long-lunch-menu-file.txt文件,无需重新输入文件名。使用感叹号(!)访问历史记录,使用美元符号($)返回上一个命令的最后一个字段。如果您需要重复使用长文件名,这是一个很好的工具。清单2:使用!$获取上一个命令$greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$3使用的文件名。重用先前的参数!$命令返回命令使用的最后一个文件名参数。但是,如果一个命令使用多个文件名而您只想重用其中一个怎么办?!:1运算符返回命令使用的第一个文件名。清单3中的示例显示了如何将此运算符与!$运算符结合使用。在第一个命令中,文件被重命名为更有意义的名称,但为了保持原始文件名可用,创建了一个符号链接。将文件重命名为kxp12.c以获得更好的可读性,然后使用链接命令创建指向原始文件名的符号链接,以防在其他地方使用它。!$运算符返回file_system_access.c文件名,而!:1运算符返回kxp12.c文件名,这是上一个命令的第一个文件名。清单3:组合!$和!:1$mvkxp12.cfile_system_access.c$ln–s!$!:14。使用pushd和popd管理目录导航UNIX支持各种目录导航工具,我最喜欢的两个是提高生产力的工具pushd和popd。您肯定知道cd命令用于更改当前目录。如果您正在浏览多个目录但希望能够快速返回到某个位置怎么办?pushd和popd命令创建虚拟目录堆栈,pushd命令更改当前目录并将其存储在堆栈中,popd命令从堆栈顶部删除一个目录并将您返回到该位置。您可以使用dirs命令显示当前目录堆栈。清单4:使用pushd和popd在目录树中导航$pushd.~~$pushd/etc/etc~~$pushd/var/var/etc~~$pushd/usr/local/bin/usr/local/bin/var/etc~~$dirs/usr/local/bin/var/etc~~$popd/var/etc~~$popd/etc~~$popd~~$popdpushd和popd命令也支持使用参数操作目录栈.使用+n或-n参数(其中n是一个数字)向左或向右移动堆栈:List5:Rotatedirectorystack$dirs/usr/local/bin/var/etc~~$pushd+1/var/etc~~/usr/local/bin$pushd-1~/usr/local/bin/var/etc~5.查找大文件有时您需要找出占用磁盘空间的是什么?有多种工具可用于管理存储设备。df命令显示已用块的总数和每个可用卷上可用空间的百分比。List6:确定每个卷的使用情况$dfFilesystem512\-blocksUsedAvailableCapacityMountedon/dev/disk0s23119099842672752644412272086%/devfs2242240100%/devfdesc220100%/devmap\-hosts000100\10homemap查找大文件/10homemap/net使用-sizefind命令的参数。清单7展示了如何使用find命令查找大于10MB的文件。请注意,-size参数以KB为单位测量大小。List7:查找所有大于10MB的文件$find/-size+10000k–xdev–execls–lh{};6.不使用编辑器创建临时文件下面是一个简单的例子:需要快速创建一个简单的临时文件,但又不想启动编辑器。将cat命令与>文件重定向运算符一起使用。如清单8所示,使用不带文件名的cat命令只会回显输入到标准输入中的任何内容;>重定向将输入捕获到指定的文件中。请注意,必须在输入的末尾提供一个文件结束字符,通常是Ctrl-D。清单8:快速创建一个临时文件$cat>my_temp_file.txtThisismytempfiletext^D$catmy_temp_file.txtThisismytempfiletext做同样的事情,但附加到现有文件而不是创建新文件。如清单9所示,改用>>运算符。>>文件重定向运算符将内容附加到现有文件。清单9:快速将内容附加到文件$cat>>my_temp_file.txtMoretext^D$catmy_temp_file.txtThisismytempfiletextMoretext7。使用curl命令行实用程序想从命令行访问Web?使用卷曲命令!curl命令允许您使用HTTP、HTTPS、FTP、FTPS、Gopher、DICT、TELNET、LDAP或FILE协议从服务器检索数据。例如,使用curl命令下载HTTP托管的文件。使用-o参数指定保存输出的位置List10:用curl下载文件$curl-oarchive.tarhttp://www.somesite.com/archive.tarcurl命令很强大,大家可以学习通过mancurl更多地了解它的功能。8.正则表达式的最有效使用大量的UNIX命令都使用正则表达式作为参数。从技术上讲,正则表达式是表示模式(即由字母、数字和符号组成的字符序列)的字符串,用于定义零或更长的字符串。正则表达式使用元字符(例如,星号[*]和问号[?])来匹配部分或全部其他字符串。正则表达式不一定要包含通配符,但是通配符可以让正则表达式在搜索模式和处理文件方面更加强大。表1显示了一些基本的正则表达式序列。表1.正则表达式序列下面是一些经常与grep命令一起使用的基本正则表达式:至少包含一个字母$grep'[a-zA-Z]'search-file.txt$#任何不是字母或数字的行$grep'[^a-zA-Z0-9]search-file.txt$#查找格式为999-9999的电话号码$grep'[0-9]{3}-[0-9]{4}'search-file.txt$#查找恰好包含一个字符的行$grep'^.$'search-file.txt$#查找以句点“.”开头的任何行$grep'^.'search-file.txt$#查找以“.”开头的行和2个小写字母$grep'^.[a-z][a-z]'search-file.txt9。确定当前用户有时搜索问题是确定特定用户是否曾经运行过您的管理脚本。要找出答案,您可以使用whoami命令返回当前用户的名称:List12:从命令行使用whoami$whoamiJohnList13:使用whoami确保当前用户不是root的Bash脚本if[$(whoami)=“root”]然后回显“您不能以root身份运行此脚本。”退出1fi10。用awk处理数据awk命令似乎一直处于Perl的阴影之下,但它是一种用于简单的、基于命令行的数据处理的快速、实用的工具。清单14展示了如何开始使用awk命令。要获取文件中每行文本的长度,请使用length()函数。要查看字符串ing是否出现在文件文本中,请使用index()函数,该函数返回第一次出现ing的位置,以便您可以将其用于进一步的字符串处理。要标记化(即,将一行拆分为字长的片段)字符串,请使用split()函数。清单14:基本awk处理$cat文本测试awk命令$awk'{i=length($0);printi}'text23$awk'{i=index($0,"ing");打印i}'text5$awk'BEGIN{i=1}{n=split($0,a,"");while(i<=n){打印a[i];i++;}}'text测试awk命令以打印文本文件指定字段是一个简单的awk任务。在清单15中,销售文件包含每个销售人员的姓名,后跟每月的销售数字。您可以使用awk命令快速获取每个月的总销售额。默认情况下,awk将每个逗号分隔值视为一个不同的字段。使用$n运算符访问每个字段。List15:使用awk汇总数据$catsalesGene,12,23,7Dawn,10,25,15Renee,15,13,??18David,8,21,17$awk-F,'{print$1,$2+$3+$4}'salesGene42Dawn50Renee46David46awk命令可以很复杂,适用场景也很广泛。