### Unix 10个良好习惯 #### 一、前言 在《The Linux Cookbook》一书中,作者Michael Stutz分享了自己多年使用Unix的经验,并从中提炼出了十个非常实用的习惯。这些习惯不仅能够提高用户的工作效率,还能帮助用户更好地管理文件系统和处理文本数据。 #### 二、知识点详解 **1. 使用`mkdir -p`创建多级目录** - **命令格式**:`mkdir -p [目录路径]` - **示例**:`mkdir -ptmp/a/b/c` `mkdir -p`命令用于一次性创建多级目录,即使中间目录已经存在也不会报错。这对于快速构建文件结构非常有用。 **2. 使用`tar -C`指定解压目录** - **命令格式**:`tar [选项] [文件] -C [目录]` - **示例**:`tar xvf newarc.tar.gz -C tmp/a/b/c` `tar -C`选项允许用户指定解压的目标目录,这样可以避免文件被解压到当前目录下,保持文件系统的整洁。 **3. 连接多个命令使用`;`、`&&`和`||`** - **示例**:`cd tmp/a/b/c && tar xvf ~/archive.tar` 使用`;`可以顺序执行多个命令,即使前面的命令失败也会继续执行后面的命令;使用`&&`时,只有当前面的命令成功执行才会执行后面的命令;而使用`||`则相反,当前面的命令失败时才会执行后面的命令。这使得脚本编写更加灵活高效。 **4. 处理shell变量** - **示例**: - 正确输出目录:`echo "$VAR"` - 输出变量后加字符:`echo "${VAR}a"` 正确地处理shell变量对于脚本编写至关重要。使用双引号可以确保变量展开正确处理空格等特殊字符。`${VAR}`语法用于引用变量值,加上大括号可以更清晰地区分变量名和后续字符串。 **5. 使用`\`进行换行** - **示例**:`cd tmp/a/b/c || \ > mkdir -ptmp/a/b/c && \ > tar xvf-Ctmp/a/b/c ~/archive.tar` 在shell脚本中使用`\`可以在逻辑上连接两行代码,使长命令或复杂的命令链更加可读。 **6. 使用`()`或`{}`嵌套命令** - **示例**:`~$(cd tmp/a/b/c/ || mkdir -ptmp/a/b/c && \ > VAR=$PWD; cd ~; tar xvf-C$VAR archive.tar)\ > | mailx admin -S "Archive contents"` 通过使用`()`或`{}`可以将多个命令封装成一个整体,便于管理和调试。 **7. 使用`xargs`处理管道中的输出** - **示例**:`ls -l | xargs` `xargs`是一个非常强大的工具,可以将前一个命令的输出作为参数传递给下一个命令,这在批量处理文件时非常有用。 **8. 使用`grep -c`统计匹配行数** - **示例**:`grep -c and tmp/a/longfile.txt` `grep -c`用于只显示匹配模式的行数,而不是完整的行,这在统计文件中特定模式出现次数时非常方便。 **9. 使用`awk`筛选特定字段** - **示例**:`ls -l | awk '$6 == "Dec"'` `awk`是一个强大的文本处理工具,能够根据字段进行筛选、排序等操作,上述示例用于筛选出包含特定月份(这里为“Dec”)的文件。 **10. 使用`cat`与`grep`比较性能** - **示例**:`time cat tmp/a/longfile.txt | grep and` 通过对比`cat`和直接使用`grep`的性能,可以看到在处理大型文件时,直接使用`grep`通常会更快,因为`cat`需要先将文件完全读入内存再传递给`grep`处理。 #### 三、总结 以上十个习惯都是在长期使用Unix的过程中总结出来的宝贵经验,掌握这些技巧不仅可以提高工作效率,还能让工作变得更加轻松愉快。希望每位Unix用户都能从中受益,不断进步。
2008-02-27 15:45 by 资深编辑 withyou
评论(3) 有1051人浏览
The Linux Cookbook 一书的作者 Michael Stutz 凭借自己多年使用 UNIX 的经验,总结了 10 个良好习惯,个人认为真的很受用,现摘要如下与大家分享。
建立层级目录:使用 mkdir 的 -p 选项,如 mkdir -p tmp/a/b/c。
解包到指定的目录:使用 tar 的 -C 选项,如 tar xvf newarc.tar.gz -C tmp/a/b/c。
联合命令:使用 ;、&&、|| 等控制运算符,如 cd tmp/a/b/c && tar xvf ~/archive.tar。
小心使用变量:把变量放到 “” 中,如
~ $ ls tmp/
a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR"
tmp/*
~ $ echo $VARa
~ $ echo "$VARa"
~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a
~ $
长命令的输入:使用 \ 分行折断,如
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- rpi4b基于uboot通过nfs挂载最新主线Linux内核的注意事项
- Cocos2d-x教程视频TMX地图解析
- Cocos2d-x教程视频CocosStudio 2.0 文件格式解析
- 基于 Van.js 的简单前端路由组件(支持字符串和正则表达式匹配等).zip
- Cocos2d-x教程视频CocosStudio 2.0 容器控件
- 学习资源-07~11,备份
- (源码)基于Flink和Kafka的实时用户行为日志分析系统.zip
- (源码)基于Arduino的机器人避障系统.zip
- Cocos2d-x教程视频Cocos2d-x游戏实战项目开发记忆卡片
- (源码)基于FreeRTOS和RP2040的实时操作系统应用模板.zip