Linux培训
达内IT学院

400-996-5531

养成这些习惯,让你成为更高效的Linux运维命令行大神


今天小编要跟正在学习Linux技术和从事Linux相关工作的小伙伴们分享的文章是关于养成这些习惯,让你成为更高效的Linux运维命令行大神。在文章中,小编为大家介绍了10个UNIX命令行命令、工具和技术,希望通过本篇文章能的学习,能够对你的学习和工作有所帮助。下面就来和小编一起看一看吧~

养成这些习惯,让你成为更高效的Linux运维命令行大神

1. 文件名自动补全

文件名自动补全功能让你无需在命令提示符处键入各种又臭又长的文件名,避免输入错误,提高效率。这个功能在各个Shell中的工作方式略有不同,所以首先请确定自己用的是哪种shell。

我正在运行哪种Shell?

可以使用echo $0或ps -p $$命令显示您正在使用的Shell。

List1:确定你的shell

$ echo $0

-bash

$ ps–p $$

PID TTY TIME CMD

6344 ttys000 0:00.02–bash

(1)C Shell

C Shell支持最直接文件名补全功能。设置filec变量即可启用该功能(使用命令set filec)。在您开始键入文件名后,可以按Esc键,Shell将补全文件名或者补全尽可能多的部分。例如,假设有名为file1、file2和file3的文件。如果键入f,然后按Esc键,将填充file,之后你需要输入1、2或3来完成相应的文件名。

(2)Bash

Bash Shell也提供了文件名补全功能,但它使用 的是Tab键。您在Bash Shell中不需要设置任何选项即可启用文件名补全功能,该选项是缺省设置的。Bash还实现了其他功能。键入文件名的一部分后,按Tab键,如果有多个文件满足您的请求,并且您需要添加文本以选择其中一个文件,那么您可以多按Tab键两次,以显示与您目前键入的内容相匹配的文件的列表。

用之前名为file1、file2和file3的文件示例,首先键入f。当按一次Tab键时,Bash自动补全显示file;再按一次Tab键时,将展开列表file1 file2 file3。

(3)Korn Shell

对于Korn Shell用户,文件名补全功能取决于EDITOR变量的值。如果EDITOR设置为vi,那么您键入部分名称,然后按Esc键后跟反斜杠()字符。如果EDITOR设置为emacs,那么您键入部分名称,然后按两次Esc键以补全文件名。

2.使用历史扩展

如果你的一系列命令都用了相同的文件名,会发生什么情况?有一种快捷方式可以快速获得你上次使用的文件名。如List 2所示,!$命令返回前一个命令使用的文件名。

从文件this-is-a-long-lunch-menu-file.txt中搜索单词pickles的出现位置。搜索结束后,用vi命令来编辑this-is-a-long-lunch-menu-file.txt文件,而不需要重新键入文件名。用感叹号(!)来访问历史,然后使用美元符号($)返回前一命令的最后字段。如果你需要反复用到长文件名,那么这是一个非常好的工具。

List2:用!$获得前一个命令使用的文件名

$ grep pickles this-is-a-long-lunch-menu-file.txt

pastrami on rye with pickles and onions

$ vi !$

3.重用以前的参数

!$命令返回某个命令使用的上一个文件名参数。但如果某个命令使用多个文件名,而您只希望重用其中一个文件名,该如何做?

!:1操作符返回某个命令使用的第一个文件名。

List 3中的示例显示可以如何将此操作符与!$运算符组合使用。在第一个命令中,将一个文件重新命名为更有意义的名称,但为了保持原始文件名可用,创建了一个符号链接。重新命名文件kxp12.c以提高可读性,然后使用link命令来创建到原始文件名的符号链接,以防在其他位置使用该文件名。!$操作符返回file_system_access.c文件名,而!:1操作符返回kxp12.c文件名,该文件名是上个命令的第一个文件名。

List3:组合使用!$和!:1

$ mv kxp12.c file_system_access.c

$ ln–s !$ !:1

4. 使用pushd和popd管理目录导航

UNIX支持各种目录导航工具,我最喜欢的两款提高工作效率的工具是pushd和popd。您肯定知道cd命令用于更改当前目录。如果要在多个目录中导航,但希望能够快速返回某个位置,该如何做?

pushd和popd命令创建一个虚拟目录堆栈,pushd命令用来更改您的当前目录并将其存储在堆栈中,而popd命令用来从堆栈的顶部移除目录并使您返回该位置。可以使用dirs命令来显示当前目录堆栈。

List4:使用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

~ ~

$ popd

pushd和popd命令还支持使用参数处理目录堆栈。使用+n或-n参数,其中n是一个数字,可以向左或向右移动堆栈:

List5:旋转目录堆栈

$ dirs

/usr/local/bin /var /etc ~ ~

$ pushd +1

/var /etc ~ ~ /usr/local/bin

$ pushd -1

~ /usr/local/bin /var /etc ~

5. 查找大型文件

有时候需要找出磁盘空间到底被什么占用了?可以使用以下几个工具来管理存储设备。df命令显示每个可用卷上已使用的块的总数以及空闲空间的百分比。

List6:确定各卷的使用情况

$ df

Filesystem 512-blocks Used Available Capacity Mounted on

/dev/disk0s2 311909984 267275264 44122720 86% /

devfs 224 224 0 100% /dev

fdesc 2 2 0 100% /dev

map -hosts 0 0 0 100% /net

map auto_home 0 0 0 100% /home

要查找大型文件?用find命令时附带-size参数。List 7显示了如何使用find命令来查找大于10MB的文件。注意,-size参数以KB为单位计量大小。

List7:查找大于10MB的所有文件

$ find / -size +10000k–xdev–exec ls–lh {};

6.不要用编辑器创建临时文件

下面是个简单示例:需要快速创建一个简单临时文件,但不想启动编辑器。使用带有>文件重定向操作符的cat命令。

如List 8所示,使用不带文件名的cat命令只回显向标准输入键入的任何内容;>重定向将该输入捕获到指定的文件中。注意,在结束输入时必须提供文件结束字符,一般是Ctrl-D。

List8:快速创建临时文件

$ cat > my_temp_file.txt

This is my temp file text

^D

$ cat my_temp_file.txt

This is my temp file text

要执行相同操作,但是附加到现有文件而不是创建新文件。如List 9所示,改用>>操作符。>>文件重定向操作符向现有文件附加内容。

List9:快速向文件附加内容

$ cat >> my_temp_file.txt

More text

^D

$ cat my_temp_file.txt

This is my temp file text

More text

7. 使用curl命令行实用工具

想从命令行访问Web?用curl命令!curl命令使您可以使用HTTP、HTTPS、FTP、FTPS、Gopher、DICT、TELNET、LDAP或FILE协议从服务器检索数据。

例如,用curl命令来下载HTTP托管的文件。使用-o参数来指定保存输出的位置“

List10:用curl下载文件

$ curl -o archive.tar #/archive.tar

curl命令非常强大,可以通过man curl了解更多它的功能 。

8.最有效的利用正则表达式

大量UNIX命令使用正则表达式作为参数。从技术角度而言,正则表达式是表示某种模式的字符串(也就是说,由字母、数字和符号组成的字符序列),用于定义零或更长的字符串。正则表达式使用元字符(例如,星号[*]和问号[?])来匹配其他字符串的部分或全部内容。正则表达式不一定包含通配符,但通配符可以使正则表达式在搜索模式和处理文件时发挥更大的作用。表1显示了一些基本正则表达式序列。

表1.正则表达式序列

养成这些习惯,让你成为更高效的Linux运维命令行大神

以下是经常与grep命令一起使用的一些基本正则表达式:

List11:使用正则表达式和grep

$ # Lists your mail

$ grep '^From: ' /usr/mail/$USER

$ # Any line with at least one letter

$ grep '[a-zA-Z]' search-file.txt

$ # Anything not a letter or number

$ grep '[^a-zA-Z0-9] search-file.txt

$ # Find phone numbers in the form 999-9999

$ grep '[0-9]{3}-[0-9]{4}' search-file.txt

$ # Find lines with exactly one character

$ grep '^.$' search-file.txt

$ # Find any line that starts with a period "."

$ grep '^.' search-file.txt

$ # Find lines that start with a "." and 2 lowercase letters

$ grep '^.[a-z][a-z]' search-file.txt

9.确定当前用户

有时查找问题是,需要确定某个特定用户是否运行过您的管理脚本。为找出答案,您可以使用whoami命令来返回当前用户的名称:

List12:从命令行使用whoami

$ whoami

John

List13:用whoami确保当前用户不是根用户的Bash脚本

if [ $(whoami) = "root" ]

then

echo "You cannot run this script as root."

exit 1

fi

10. 用awk处理数据

awk命令似乎始终处在Perl的阴影下,但它对于简单、基于命令行的数据处理来说是一个快速、实用的工具。List 14展示了如何开始使用awk命令。

若要获取文件中每行文本的长度,用length()函数。若要查看字符串ing是否出现在文件文本中,请用index()函数,该函数返回ing首次出现的位置,这样您就可以使用它来进行进一步的字符串处理。若要tokenize(也就是说,将一行拆分为单词长度的片段)某个字符串,请使用split()函数。

List14:基本awk处理

$ cat text

testing the awk command

$ awk '{ i = length($0); print i }' text

23

$ awk '{ i = index($0,”ing”); print i}' text

5

$ awk 'BEGIN { i = 1 } { n = split($0,a," "); while (i <= n) {print a[i]; i++;} }' text

testing

the

awk

command

打印文本文件中的指定字段是一项简单的awk任务。在List 15中,sales文件包含每个销售人员的姓名,后跟每月销售数字。可以使用awk命令来快速获得每个月的销售总额。缺省情况下,awk将每个以逗号分隔的值视为不同的字段。用$n操作符来访问每个字段。

List15:用awk对数据进行汇总

$cat sales

Gene,12,23,7

Dawn,10,25,15

Renee,15,13,18

David,8,21,17

$ awk -F, '{print $1,$2+$3+$4}' sales

Gene 42

Dawn 50

Renee 46

David 46

awk命令可以很复杂并应用于广泛的情景中。

以上就是小编今天为大家分享的关于养成这些习惯,让你成为更高效的Linux运维命令行大神的文章,希望文章中为大家介绍的UNIX命令行命令、工具和技术能够对大家有所帮助。想要了解更多Linux相关知识记得关注达内Linux培训官网。最后祝愿小伙伴们工作和学习一切顺利哦~

来自:IBM developerWorks

链接:#/developerworks/cn/aix/library/au-unixtips/

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:带你了解Linux系统中的文件权限
下一篇:Linux系统下切换目录的命令有哪些?

运维培训班出来好找活吗?

新能源运维工程师是干什么的

云计算就业岗位有哪些?

学物联网工程好就业吗?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省