UNIX命令行成语IBM官方版
当你到不同语言的国家旅行时,你可能需要掌握一些关键的日常用语,比如:多少钱这是什么肉洗手间在哪里Rdquo:记住,这些简短的日常用语确保没有人会对你点的三明治要求太多,而当你需要上厕所时,你就知道该去哪里了。
UNIX(R)也有自己的方言,在过去的6个月中,UNIX系列提供用于碰撞过程的UNIX命令行语言对话。我们将介绍一些有用的短语,这个月,他们可以使你立刻成为正宗的Unix用户。把牙刷,穿舒适的鞋子,并更新你的成语。我们要出去晒太阳,沙子和贝壳。(暴露于阳光和沙滩,面对海滩,打开手提电脑,然后阅读本专栏。别忘了把防晒霜)。
开始学习的旅程
在以前的对话UNIX柱(参见参考资料),查找命令已经介绍了很多次,这是一个非常有用的实用工具,可以用来扫描和处理各种文件,甚至整个UNIX文件系统,例如,我经常使用发现grep或Perl来处理大量文件你需要知道一个变量或常数是一大段的代码定义您可以尝试以下命令:
复制代码代码如下所示:
/ / / src路径- F型xargs grep美元- H -我发现我N |字符串
该命令的输出是一个文件名的列表,其中包含的字符串,包括行数和相匹配的特定文本,H和N的选择是在每一个匹配的文件名和行号前加,我选择忽略的情况。我(大写I)跳过二进制文件。
你可能还没见过xargs。它将运行与您列出的所有选项一起指定的命令。在这个例子中,grep是每次标准输入参数。假设 / / /路径src目录包含文件A,B,和C,这是相当于找到和xargs:
复制代码代码如下所示:
grep H -我-我- N的字符串
grep H -我-我- N串B
grep H -我-我- N的字符串C
事实上,搜索文件集是一个共同工作,所以grep有权做出一个文件系统的层次结构,您可以使用三维递归或R - R或它的同义词。例如,您可以使用:
复制代码代码如下所示:
$ grep - H -我-我- N - R串/ / / src路径
此命令完成相同的任务是找到 / xargs。(你会发现很多UNIX实用工具相关的文件可以选择递归。ls -R可以递归地列出其内容的层次结构。采用R、Chmod、chgrp和chown可以递归地应用模式,群体,和所有权的变化整个文件系统的层次结构。当使用chmod -R,请多加小心。如果你删除执行的目录,比如chmod -R a-x,你可以建立一个目录使用了。为了更多的选择,你可以使用查找-type f xargs chmod a-x. |)。
所以,当发现 / xargs使用时应检查使用找到的时候可以用一定的选择性是必要的。find命令有许多选项,使您能够选择满足特定要求的文件,如所有被修改后半夜的规则文件,并由Joe 拥有。否则,你可以使用grep - R.
另一个实用工具可以更方便地使用比发现,快。如果你要通过名字查找一个文件,你可以尝试使用定位不是寻找-name.the定位指令周期(由系统管理员一天一次,把所有的文件目录系统),并构建了一个包括路径和数据库文件的名称。当你运行的定位,它将扫描的专用数据库,尝试匹配。
例如,运行查询定位*。1'will得到所有的文件和目录的名称结尾的。1。(前面的星号表示匹配任何字符串。)为了方便,运行定位鱼命令运行定位*鱼*一样。
货币替代
有许多UNIX实用程序可以修改文件,在大多数情况下,修改后的内容可以发送到标准输出。你可以使用重定向操作符来进一步处理(使用管道,|),或捕获的结果(用>或<操作符)。
其他实用工具通常用于一次处理多个文件,为了安全考虑,可以保存原始文件,并为修改后的内容生成一个新文件:
复制代码代码如下所示:
Perl -i.bak美元PE的 / bdollar(S) /降压 1 / g' file.txt
dollar取代buckdollars取代bucksPerl我命令修改file.txt原位,而Perl -i.bak创建原始文件的副本,并增加了。回到它原来的名字,这是不同于新修订的版本。因此,下面的命令:
复制代码代码如下所示:
Perl -i.bak体育 / bdollar(S) /降压 1 /克*
备份将在当前目录中的每个文件创建的。假设你有文件file1.txt,file2.txt,和file3.txt,然后你会得到file1.txt.bak,file2.txt.bak,和file3.txt.bak.erroneous操作经常发生,因此建立一个备份明智。
如果出现错误,必须还原原始文件,则只需输入:
复制代码代码如下所示:
file1.txt.bak file1.txt MV
但是,如果有成百上千的文件需要重新命名,他们应该怎么办呢当然,您不希望输入数百个单独的mv命令,而可以输入以下命令:
复制代码代码如下所示:
Foreach文件(*. txt)
做
MV file.bak美元美元的文件
多恩
它适用于一些简单的情况,例如本例中的情况。然而,这种任务非常常见,可以使用另一种特殊的实用程序来更快地完成这项任务:
复制代码代码如下所示:
重命名
执行了相同的任务。正则表达式在命令行后面列出了每个文件名后面的文件名。在本例中,它是*或所有文件,并使用缩短的名称作为目标文件名。
如果文件名中没有法律,重命名命令尤其有用。
复制代码代码如下所示:
$ ls
rent.txt beermoney.txt gasmoney.txt
上述每个脚本不能处理这个问题,因为这些文件名不正则。重命名自己就能搞定:
复制代码代码如下所示:
rename'y美元/ / /a-z A-Z *
在正则表达式y / / / a-z A-Z是用于转换Y算子。转换工作需要两个列表:列出原来的特征和一系列的字符替换。如果这两个列表的大小相同,在本文中,在替换列表中的第一个字符替换原始列表中的第一个字符。换句话说,在这个例子中,大写任何情况下,a将小写的更换;aB代替b等等。文本中的小写字母保持不变。
如果您需要预览重命名所完成的工作,可以添加N选项。这个选项可以显示命令执行的工作,但它并不能真正实现这些更改。
复制代码代码如下所示:
重命名- n'y美元 / / /a-z A-Z *
rent.txt更名为rent.txt
beermoney.txt更名为beermoney.txt
gasmoney.txt更名为gasmoney.txt
rename'y美元/ / /a-z A-Z *
$ ls
beermoney.txt gasmoney.txt rent.txt
其中的缺点需要避免:在UNIX系统中,文件名是大小写敏感的。目录可以包含文本和aa.txt.as AA。上面提到的,你可以一次重命名规则转换案例名称小写文件名写,这可能与现有的唯一的文件名冲突。在这种情况下,如何将重命名操作让我们看一看。
复制代码代码如下所示:
重命名- n'y美元 / / /a-z A-Z *
txt改为aa.txt AA。
aa.txt更名为aa.txt
rename'y美元/ / /a-z A-Z *
aa.txt不改名:aa.txt已经存在
$ ls
aa.txt aa.txt
如果你想删除重命名过程中现有的文件,你可以添加-f标志。在这个例子中,一个名为aa.txt将得到的。所以这文件是原始文件吗因为命名是按字母顺序排列的文件处理,aa.txt背后是现在aa.txt.why你想使用F如果这两个文件是相同的,而且只有不同的名称,重命名- F删除重复的文件。
不要删除重复的文件
文件管理是UNIX系统使用中的一项非常重要的工作,系统中包含了大量的配置文件,您可能有大量的数据文件和个人文件,您可能需要不时地删除或覆盖一个有价值的文件。shell和一些文件管理实用程序可以帮助您避免灾难。
输入以下命令在shell提示符。这些命令可以执行在bash,但是zsh壳等也有类似的选项。
复制代码代码如下所示:
别名:mv
别名
美元noclobber啊
在命令行中第一个命令将取代MV MV -我,代替rm -i.the交互方式强迫你确认操作。
第三命令shell提供了一定的保障。在noclobber启用时,你会不会在不经意间覆盖文件>重定向操作符:
复制代码代码如下所示:
$ ls
secret.txt
美元secret.txt猫>
重击:secret.txt:不能覆盖现有文件
禁用noclobber,你可以进入:
复制代码代码如下所示:
集+ O noclobber
你也可以在任何时候使用> |(小于一个垂直线)重定向操作符。
复制代码代码如下所示:
猫secret.txt美元
我喜欢绿色的鸡蛋和火腿。
$ echo没有秘密> | secret.txt
猫secret.txt美元
没有更多的秘密
一些当地的秘密
如果你真的想找到一个城市,你去当地的酒吧。以下是一些命令行的组合,相当于Zagat提供旅游信息。
mkdir -p可以快速创建层次结构。使用-p选项后,mkdir将创建所有的目录和子目录为指定的路径:
复制代码代码如下所示:
$ mkdir -p让 /许多/ / /一次目录
美元- R
/制作:
许多
:
名录
/创建/多个目录:
在
:
一旦
:
如果您需要知道下一个发薪日,只需输入CAL。Cal将显示当前月份的日历,没有任何参数。CAL - 3命令显示上个月、本月和下个月的日历,CAL 062009将显示2009年6月的日历。(我的生日是那年的星期一!)
复制代码代码如下所示:
卡尔美元
2006年11月
苏莫屠
一千二百三十四
五亿六千七百八十九万一千零一十一
十二兆一千三百一十四亿一千五百一十六万一千七百一十八
十九兆二千零二十一亿二千二百二十三万二千四百二十五
二十六亿二千七百二十八万二千九百三十
CAL 062009美元
2009年6月
苏莫屠
十二万三千四百五十六
七百八十九亿一千零一十一万一千二百一十三
十四兆一千五百一十六亿一千七百一十八万一千九百二十
二十一兆二千二百二十三亿二千四百二十五万二千六百二十七
二十八万二千九百三十
因为UNIX有很多命令,所以不太可能记住所有实用程序的所有选项。事实上,有时您甚至无法记住实用程序的名称。
当你遇到麻烦时,你可以求助于人。例如,为了了解如何使用这个人本身,你可以输入man。用man和mv,你也可以看到RM和mv的解释。如果你知道你需要找到什么,那么你可以使用man找到一个与该主题相关的man页面列表。
复制代码代码如下所示:
为人- k Cron
(8)cron守护进程执行预定的命令(维克西cron)
Crontab(1)维护个人用户的crontab文件(V3)
Crontab(5)-驱动cron表
dh_installcron(1)安装cron脚本等 / cron *。
在这个例子中,男人发现了一些实用的工具的人的页面,上面有一行描述包含单词cron。这些人的页面可以解释如何使用cron守护进程负责系统任务调度。
那么数值是什么意思呢每个值代表的UNIX手册的一部分。第一部分,保留所有的Unix用户可以运行在shell的命令。第五部分介绍了一些文件格式。在第八部分中,系统管理命令进行编目。其他部分描述的系统调用(2)、库的调用(3),等在。
你可以看到,大多数命令产生一个特定类型的输出。大多数命令行命令使用标准的显示结果。其他的一些指令,但是,使用标准输出和标准错误,并显示错误消息处理和秩序。如果你想忽视这种输出(这是非常有价值的,因为这会妨碍在命令行操作),你可以将输出重定向到UNIX位桶, / dev / null.these地方只能进去,不能出去。
下面是一个简单的例子:
复制代码代码如下所示:
$ ls
secret.txt
猫secret.txt美元
我是海象。
为猫secret.txt > / dev /空
为猫socrates.txt > / dev /空
猫:socrates.txt:没有这样的文件或目录
为猫socrates.txt > / dev /空
回波完成。
完成.
如果猫的标准输出重定向到/ dev /空,它不会显示任何内容,因为所有的比特被发送到虚拟永久垂直文件。然而,如果出现错误,发送到标准错误的错误信息将被显示出来。如果你想忽视所有的输出,您可以使用>操作符丢弃stdout和stderr。
您也可以使用零长度的文件作为空文件来清空现有文件或创建新的空白文件:
复制代码代码如下所示:
猫secret.txt美元
阿纳金·天行者是达斯·维德。
CP美元/ dev /空secret.txt
猫secret.txt美元
月亮是奶酪做的。!> secret.txt
猫secret.txt美元
月亮是奶酪做的!
猫美元/ dev /空> secret.txt
猫secret.txt美元
CP美元/ dev /空newsecret.txt
猫newsecret.txt美元
回波完成。
完成.顺便说一下,如果你使用UNIX操作系统的苹果电脑,那么你可以尝试在终端窗口中打开命令。例如,如果在当前目录poodle.webp文件,命令打开poodle.webp开始预览和开放poodle.webp,预览是Mac OS X内置的图像浏览器,Mac OS X的开放是命令线和Macintosh窗口环境之间的联系,它是更快Finder的帮助。
以下是一个摘要。
哦!虽然这是一条高速列车,但现在你已经准备好更深入地探索Unix了,你甚至知道,当你不需要什么东西时,你应该丢弃它。
和以前一样,还有很多东西要介绍。在接下来的几个月里,对话unix将进一步研究工作控制、正则表达式(奇怪的方言,但不难掌握),如何编译从因特网下载的新实用工具等等。
别忘了使用一点防晒霜。