1、date日期命令
date 直接显示Linux系统格式的目录,这种格式不常用;
date -d "..." 省略号可以是:
-1 day
-1 month
-2 day
...
分别表示当前日期(今天)的前一天,前一个月,前二天等,输出的格式同上。
date +[format] format可以是:
%s
%Y
%Y%m%d
...
分别表示
当前距离1970年01月01日的秒数,当前是哪一年, 当前是哪一年哪一天。
综合上述,给一个例子
date -d "-1 day" +%Y%m%d
输出:20160918(注意:假定当前是2016年9月19日)
上述例子等价于:
date -d yesterday +%Y%m%d
%s这种格式主要是获得一个日期间隔很有用,例如:我想获得最近一个月的所有日期,可以这样写:
beg_date=$(date -d "-1 month" +%s)
end_date=$(date -d "-1 day" +%s)
for((start_date=${beg_date};start_date<=${end_date};start_date=$((start_date+86400))))
do
date -d @${start_date} +%Y%m%d
done
2、iconv字符编码的转换
直接给出一个实用的参数搭配吧:
iconv -c -f src_encode -t dest_encode <filename> > <encoded_filename>
参数解释:
-c 表示忽略转换的编码位置,可加也可不加,但有些时候不加这个参数会出现"** position ILEGEL ERROR"错误
-f 源编码,可以通过file <filename> 命令查看文件的编码
-t 转换之后的编码
例如:我们可以这样使用:
首先, file a.file 获得这个文件一个gbk编码的文件,
然后, iconv -c -f gbk -t utf8 a.file > a.file.decoded
3、free -g 查看本机的内存大小
4、find 按照某种属性查找文件
find ./ -name "file_name" | xargs <cmd>
cmd: 可以是任何的Linux命令
例如:我们需要实现一个这样的操作,在当前目录下找到名为file的文件,然后删除它们。
find ./ -name "file" | xargs rm -rf
5、sort排序
sort 排序命令很重要,在很多时候都会用到,直接看例子:
cat file | sort -T./ -t \t -k2 -n -r
上面sort命令的参数:
-T :如果不写-T参数,则sort排序大文件时,外存交换到/tmp目录下,而/tmp目录一般很小,所以不太安全,-T./表示将外存交换部分控制在当前目录下。
-t :设定列的分隔符
-k :指定按照第2列排序,-k1,2 则表示将第一列和第二列一起作为排序的键
-n :sort默认按照ASCII码从低到高排序,-n 表示按照实数值大小排序
-r:reverse,按照降序排序
6、uniq
7、awk
8、cut
9、curl
10、文件记录或属性字段去重
使用awk去重: cat file | awk -F "\t" '{dict[$0]}'
使用sort去重: cat file | sort -n | uniq;;
11、Linux 下的if语句和c语言中的if语句的区别
if 命令执行成功; then 执行 ; 而c语言里面 if 非0; then 执行。 这两者刚好相反。
当命令执行成功时,返回0,则这行then里面的东西,否则不执行。
12、在使用crontab 命令启动一个定时任务start.sh时,一定要在启动脚本start.sh里面第一句写上 source ~/.bashrc。因为,系统到点执行start.sh时,不会自动执行source ~/.bashrc命令。
13、关于nohup cmd &后台执行
给出标准执行命令: nohup cmd 1 > *.log 2> *.err & < /dev/null
</dev/null表示:因为nohup命令会等待接收输入,(如果不加</dev/null,可以在*.err文件里面的第一行看到ignore input)使用命令 < /dev/null 表示不给nohup输入。