Shell 提取文件名和目录名

${}用于字符串的读取,提取和替换功能,可以使用${} 提取字符串
1、提取文件名

[root@localhost log]# var=/dir1/dir2/file.txt
[root@localhost log]# echo ${var##*/}
file.txt

2、提取后缀

[root@localhost log]# echo ${var##*.}
txt

3、提取不带后缀的文件名,分两步

[root@localhost log]# tmp=${var##*/}
[root@localhost log]# echo $tmp
file.txt[......]

Read more

Shell判断文件还是文件夹


#!/bin/sh
read text

if [ -f "$text" ];then
echo "$text是文件,大小为`du -h $text | awk '{print $1}'`"
elif [ -d "$text" ];then
echo "$text是目录,有`ls -l $text | grep -v "^d" | wc -l`文件"
elif [ -e "$text" -a ! -f "$text" -a ! -d "$text" ];then
echo "没有该文件或目录"
else
echo "你输错了"
fi

[转]Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?

0、写在前面

本文涉及到屏幕密度的讨论,这里先要搞清楚 DisplayMetrics 的两个变量,摘录官方文档的解释:

  • density:The logical density of the display. This is a scaling factor for the Density Independent Pixel unit, where one DIP is one pixel on an approximately 160 dpi screen (for example a 240×320, 1.5”x2” screen), providing the baseline[……]

Read more

awk与shell变量互相赋值

一、awk给shell变量赋值

  1. #!/bin/bash

  2. var=`ls -l file.txt | awk ‘{print $5}’`
  3. echo $var

复制代码

二、awk引用shell变量



awk [ -F re] [parameter…] [‘pattern {action}’ ] [-f progfile][in_file…]

awk一般语法如上面所说。

如:

  1. [chengmo@localhost ~]$ echo ‘awk code’ | awk ‘BEGIN{print "startn=============&quot[……]

Read more

Python 获得命令行参数的方法

如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名:    sys.argv[0]
参数1:     sys.argv[1]
参数2:     sys.argv[2]

test.py

import sys

print "脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):

    print "参数"[……]

Read more

shell之eval用法

shell中的eval

功能说明:重新运算求出参数的内容。

语  法:eval [参数]

补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。

参  数:参数不限数目,彼此之间用分号分开。

 

1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。

2.eval也可以用于回显简单变量,不一定时复杂变量。

NAME=ZONE

eval echo $NAME等价于echo $NAME

3.两次扫描

test.txt内容[……]

Read more

awk之RS、ORS与FS、OFS

RS:Record Separator,记录分隔符

ORS:Output Record Separate,输出当前记录分隔符

FS:Field Separator,字段分隔符

OFS:Out of Field Separator,输出字段分隔符

PS:RS、ORS、FS、OFS的英文解释绝不是这样的,这里只是解释清楚。建议去阅读awk的英文读物,其中解释了缩写的含义。

什么是field(字段),什么是record(记录行)?

示例:

1.txt

  1. i am a student.
  2. i like to swim
  3. hello moto

1代表第一个记录行,2代表第二个记录行,3代表第三[……]

Read more

grep指定文件中的所有内容

将A文件中的每一行内容作为关键字,去B文件列表中做grep,输出到C文件



sh vlookup.sh A B C


vlookup.sh的内容


  1. #!/bin/bash

  2. #判断参数个数
  3. if [ $# != 3 ];
  4. then
  5.     echo "n$0 关键字文件 要查找的文件 输出的目标文件n"
  6.     echo "参数中如果有通配符,需要将参数用双引号包起来n"
  7.     exit 1;
  8. fi

  9. cat $1 | while read[……]

Read more

shell:读取文件的每一行内容并输出

写法一:
—————————————————————————-
#!/bin/bash

while read line
do
    echo $line
done < file(待读取的文件)
—————————————————————————-

写法二:
————————————————-[……]

Read more

shell遍历目录下所有文件

  1. filelist=`ls /home/work/file/`
  2. for file in $filelist
  3. do 
  4.     echo $file
  5. done

一定要切记filelist=后边的那个引号不是单引号,而是tab键上边的那个键,或者说是1左边的那个键。否则的话不起作用。唉,自己在上吃亏了好长时间。汗!



如果ls后面的路径想通过参数传进来,而传进来的参数里,又包含了通配符时,需要给这个参数加双引号

比如:

  1. filelist=`ls $1`
  2. for file in $filelist
  3. do 
  4. echo $file
  5. [……]

Read more