Linux_101_Hacks读书笔记

用来摘抄和自己写一点理解,关于Linux_101_Hacks觉得有用的技巧,

加入个人理解

随着读书进度更新


1.CDPATH变量

你经常使用CD命令进入某一个特定目录下的子目录,你可以将CDPATH设置为该目录,当使用cd进入其下的子目录时,则不需要键入该目录名,

比如,我当前在~目录下面,我的/etc/目录下面有个abc目录,我的/opt目录下面有个cba目录,这两个目录在~下面都不存在

那么在~直接输入cd abc或者cd cba都会报错,因为当前目录不存在这两个子目录

当设定好了CDPATH变量以后,cd会自动搜寻这些目录里面的子目录

如果希望设置永久有效,可以将 export CDPATH=/etc 写入 ~/.bash_profile 。 与环境变量PATH相似的是,你也可以在CDPATH加入多个目录项,每个目录项以冒号分隔,示例如下:例如:

export CDPATH=.:~:/etc:/opt

2.  .bash_profile也是支持函数的

function mkdircd () {
mkdir -p "$@" && eval cd "\"\$$#\"";
}

这个函数用到了两个知识,(参见我的moto linux shell 手册Motorola MontaVista Linux Shell 编程指南项目(我在ubuntu-Blog的旧项目,移植过来)

-p, --parents,创建父目录

$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ...
$0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$!  ----上一个命令的PID

这里面cd "\"\$$#\""中的 第一个$被第二个\所转义,所以他不代表变量,第二个$#,表示传递给程序的全参数 ,第一个和第三个\转义",保证参数被原样传递

这个函数被定义后

mkdircd /tmp/subdir1/subdir2/subdir3

运行完毕就自动切换到/tmp/subdir1/subdir2/subdir3目录了

3.用“cd -”可以在最近访问的两个目录之间切换

4.data命令的进阶

mm——代表月份

dd——代表日期

hh——代表24小时制的小时

mi——代表分钟

yyyy——代表年

ss——代表秒

使用

date +%m可以返回当前月份

同样,

date +%d

返回当前日期m

date +%d

返回去掉开头0的日期

date +%D

返回用mm/dd/yy表示的日期

date +%F

返回用YYYY-mm-dd表示的日期

date +%Y

返回用四位数年份YYYY

date +%y

返回用二位数年份yy

date +%j

返回本年度第几天

date +%a/A/b/B

返回简写/完整的星期or简写/完整的月份

date +%H/I

返回24/12小时制小时

使用自定义格式设置时间

date +%Y%m%d -s "20090131"

date +%T -s "22:19:53"

date +%T%p -s "10:19:53PM"

标准设置法

date -s "01/31/2009 22:19:53"

date -s "2010-08-03 14:15:00"

date -s "31 JAN 2009 22:19:53"

date set="31 JAN 2009 22:19:53"

用单词实现date的输出

date --date='2 year ago'

显示两年前的现在

date --date='2 year ’

显示2年后的现在

date --date="yesterday"

date --date='now'

date --date='tomorrow'

date --date="next day"

$ date --date="this Wednesday"

把year换成month和hour等都可以通过,支持混搭

date --date="10 months 2 day ago"

date --date="-1 days ago"

如果在后面跟+%参数,则可以显示那个时间点对应变量时间

5.把ssh隐藏到后台

书中提到的~<Control-Z>把ssh退到后台我没有试验成功,用MINGW32测试了一下那个~,失败,用Putty测试,~,失败,同Lxterminal测试,还是失败,是不是伪技巧?不得而知,不知道原书作者用的什么shell(后来用GnomeTerminal测试成功了

但是切换后台教程到前台确实非常有用,可是jobs只对当前pts有用,fg %n倒是非常实用,切换jobs列表内编号为你的任务到前台

6.grep

更详细的解释请看此文,用SED剪出Discuz的数据库用户名和密码的探讨

这里记录一个无不熟悉的i和v选项

-i ,不区分大小写

-v,(invert)反选结果,就是取反(选择不符合PATTERN的条目)

-r,递归子目录

-l/L,递归的时候只显示符合/不符合条件文件名作为结果(否则会按照 文件名:内容 形式返回)

7.find的约束条件

约束条件可以指定文件名,文件类型文件修改时间和大小等

Author Info :
  • From:Linux_101_Hacks读书笔记
  • URL:https://blog.ihipop.com/2010/03/864.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注