在 cygwin 的环境下使用 linux 命令

由于本人对 linux 命令不是很熟悉。但是平时工作中有需要用到一些 linux 命令相关的东西,因此在这里备份自己平时经常使用的命令。

1. rm 命令: 

rm -rf * :强制删除当前目录下的所有文件,包括文件夹在内的所有文件。

 

2. mmv 命令:

2.1. 举例:将一下文件夹的内容批量转换为 “common_image_[index].png” 格式。

文件夹文件内容:

|-test

  |- image_test_01.png

  |- image_test_02.png

  |- image_test_03.png

使用 mmv 命令:mmv "*_test_*.png" "common_#1_#2.png"

注:意思是将第一个表达式的第一个 “*” 号对应的内容(image)将会替换第二个表达式的 “#1” 处的内容,第二个 “*” 号对应的内容(序号)将替换 “#2” 处的内容。

结果:

|-test

  |- common_image_01.png

  |- common_image_02.png

  |- common_image_03.png

 

3. 在 shell 脚本中,数组的使用

  定义数组:CONTENT_ARRAY=(element1 element2 element3)

  循环调用:

  LEN=${#CONTENT_ARRAY[*]}

  for(( i=0; i<$LEN; i++))

  do

    CURRENT_ELEMENT="${CONTENT_ARRAY[$i]}"

    echo $CURRENT_ELEMENT

  done

4. grep 命令使用 

  1. 常用的选项说明:

    1.1. -c 仅输出匹配行的计数。

    1.2. -i 不区分大小写(仅适用于单字符)。

    1.3. -h 查询多文件的时候,不显示文件名。

    1.4. -l 查询多文件的时候,只输出包含匹配字符的文件名。

    1.5. -n 显示匹配行及行号。

    1.6. -s 不显示不存在或无匹配文本的错误信息。

    1.7. -v 显示不包含匹配文本的所有行。

    1.8. -E 使用 “或” 模式。

  2. ls 命令与 grep 组合使用的例子:

    2.1. ls |grep -v “*.txt”

      说明:显示当前目录下除了以 "*.txt" 为结尾的所有文件的名称。

    2.2. ls |grep -vE “*.txt|*.xlsx”

      说明:显示当前目录下除了以 “*.txt” 或者 “*.xlsx” 为结尾的所有文件的名称。grep 命令在使用 “或” 模式的时候必须要加上 -E 选项。

 5. chmod 命令使用

  1. 常用选项说明:

    1.1. -R 递归式地改变指定目录及其下的所有子目录和文件的访问权限。

    1.2. -v 显示 chmod 命令的工作。

  2. 举例:

    chmod -Rv 777 *

    说明:将当前目录下所有的子目录和文件添加所有的可用的访问权限。

 6. shell 脚本嵌套 expect 脚本自动执行登陆校验

  说明:当需要使用 rsync 将本地的文件同步至远端服务器的时候,一般需要先登陆校验,每次都登陆检验有点麻烦,可以用 expect 来自动输入密码,简化操作。

  实现方式:

    1. 直接在shell 脚本中嵌套 expect 脚本内容,这样所有的命令可以在一个sh 脚本文件中就可以了。     

expect -c "
    spawn rsync -az release/release.zip admin@192.168.1.200:/mnt/d/shared/release/release.zip --progress
    expect \"password:\"
    send \"haojidemima\r\"
    interact
"

    2. 将 expect 脚本的内容单独写在一个.sh 文件中,然后再 shell 脚本调用。

#!/usr/bin/expect

# 取传过来的参数,从 0 开始
set DIST [lindex $argv 0]
set RELEASE_NAME [lindex $argv 1]

spawn rsync -az ${DIST}/${RELEASE_NAME} admin@192.168.1.200:/mnt/d/shared/release/${RELEASE_NAME} --progress
expect "password:"
send "haojidemima\r"
interact

 

    上面的脚本命名为 expect_rel.sh,因此在 shell 脚本中加入以下一行代码:

# expect 脚本中需要用到两个参数,因此在后面带上即可,每个参数之间使用空格隔开即可
expect ./expect_rel.sh "release/" "release.zip"

 

posted @ 2014-08-23 10:36  LuQingshang  阅读(675)  评论(0编辑  收藏  举报