Shell编程、linux命令工作常用,提高工作效率系列,快快收藏

shell编程,linux命令内容清单

  1. shell脚本配置引用
  2. 查看端口
  3. 去掉字符串空格的操作(三种方法)
  4. ls文件查看
  5. 文件转码
  6. 全局查找文件,遍历机器所有目录
  7. 创建软链接
  8. split文件切分命令
  9. 特定位置替换
  10. shell线程并发执行命令
  11. 数值计算
  12. 浮点型数值计算
  13. top命令详解
  14. 压缩和解压详解

详细介绍:

  1. shell脚本配置引用
#!/bin/sh   #!/bin/bash
两者区别:
/bin/sh与/bin/bash虽然大体上没什么区别,但仍存在不同的标准。
标记为#!/bin/sh的脚本不应使用任何POSIX没有规定的特性
------------------------------------------------------
配置文件引用:
执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout 
1 /etc/profile:      此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 
2 /etc/bashrc:       为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。 
3 ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。 
4 ~/.bashrc:          该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 
5 ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc /profile中的变量,他们是"父子"关系。 
6 ~/.bash_profile   是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
  1. 查看端口
netstat -nap | grep 6625   #查看端口
  1. 去掉字符串空格的操作(三种方法)
echo ${str// /}
echo $str | sed 's/ //g'
echo $str | tr -d " "
  1. ls文件查看
查看文件大小 
ls -Slr -h(从小到大)  
ls -Sl -h(从大到小)
ls -l |grep "^-"|wc -l  --查看目录下文件的个数
  1. 文件转码
cat $DataFile | iconv -f gbk -t utf8 > $DataFileUtf
  1. 全局查找文件,遍历机器所有目录
locate core-site.xml  --显示相关的全部结果
locate core-site.xml | grep -v aa  --查找目录下跳过aa目录下的查找 
  1. 创建软链接
ln -s 源文件 目标文件
  1. split文件切分命令
split命令
语法: split [-bl] 输入文件 输出文件
参数说明
-b :以文件大小来分
-l:以行数来分

例如split -l 100 test.txt out
就是把test.txt每100行输出一个文件outaa,outab,outcd以此类推。。。实现了文本文件的分割。
split -b 100k test.txt out
就是把test.txt每100KB输出一个文件outaa,outab,outcd以此类推。
  1. 特定位置替换
--将每行第12个字符替换成逗号(,)
cat all_11.txt | sed 's/./,/12' > all_112.txt
  1. shell线程并发执行命令
mkfifo tmp4
exec 9<>tmp4
THREAD_NUM=15  --并发线程数
for ((i=0;i<$THREAD_NUM;i++))
do
   echo -ne "\n" 1>&9
done
newline=$'\n'

summ=0 --循环计数器
while read line
do
   summ=$[summ+1]
   echo `date +"%Y%m%d %H:%M:%S"`"第$summ行"
   #进程控制
   read -u 9 
   { 
      echo ${line}  --执行主体
      #hive -e "${line}" >> ${resultfile} 
      echo -ne "\n" 1>&9
   }&
done<${tmpsql}
wait   --等待所有线程结束
rm tmp4
  1. 数值计算
--bc、expr、let可用于数值计算
echo 3 + 5 |bc    --结果 8
echo 30 - 5 |bc   --结果 25
 echo 3 /* 5 |bc  --结果15
 echo 30 / 5 |bc --结果6
----------------------------------------------------
expr 3 + 5     --结果 8
expr 30 - 5    --结果 25
expr 3 /* 5    --结果15
expr 30 / 5    --结果6
----------------------------------------------------
let i=3 + 5  echo $i   --以此类推
----------------------------------------------------
((i=$j+$k))     等价于   i=`expr $j + $k`
((i=$j-$k))     等价于   i=`expr $j -$k`
((i=$j*$k))     等价于   i=`expr $j \*$k`
((i=$j/$k))     等价于   i=`expr $j /$k`
  1. 浮点型数值计算
 expr $a / $b   --结果为整数,只支持整除,保留整数部分,小数点后省略
 echo "scale=2;$a/$b" | bc   --scale 可以设置保留小数点后几位数
 awk 'BEGIN{printf "%.2f\n",('$a'/'$b')}'  --结果也是保留小数点后两位小数
  1. top命令详解
top - 13:54:57 up 417 days, 20:48,  1 user,  load average: 4.89, 6.08, 5.52
Tasks: 213 total,   1 running, 212 sleeping,   0 stopped,   0 zombie
Cpu(s): 58.4%us,  4.2%sy,  0.0%ni, 25.9%id,  1.0%wa,  0.0%hi, 10.5%si,  0.0%st
Mem:  32882860k total, 32784448k used,    98412k free,   472604k buffers
Swap: 32768092k total,  6157576k used, 26610516k free,  9535136k cached

PID    USER     PR   NI VIRT  RES  SHR S %CPU %MEM TIME+ COMMAND
 4295 hadoop    25   0 1371m  89m  11m S 148.7  0.3   0:04.48 java                                                                  
 4207 hadoop    25   0 1370m  87m  11m S 104.2  0.3   0:04.43 java                                                                  
 4418 hadoop    25   0 1347m  35m  10m S 29.9  0.1   0:00.90 java                                                                   
23975 hadoop    25   0 6172m 2.7g  11m S 21.6  8.7  27273:51 java    
...............

1. 第一行是任务队列信息
13:54:57  当前时间
up 417 days  系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 4.89, 6.08, 5.52
系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

2. 第二、三行为进程和CPU的信息
Tasks: 213 total 进程总数 
1 running 正在运行的进程数
212 sleeping 睡眠的进程数 
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 58.4%us 用户空间占用CPU百分比
4.2%sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比 
25.9%id  空闲CPU百分比
1.0%wa 等待输入输出的CPU时间百分比

3. 第四五行为内存信息
Mem: 32882860k total 物理内存总量 
32784448k used 使用的物理内存总量 
98412k free 空闲内存总量 
472604k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量 
123988k cached 缓冲的交换区总量。 
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
  1. 压缩和解压详解
压缩	  --remove-files 参数删除文件
tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 
tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2   //解压 tar.bz2
tar -xZvf file.tar.Z   //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip

解压之后重命名 
tar -xzf 2016-11-21.tar.gz -O > a.txt

总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
发布了10 篇原创文章 · 获赞 11 · 访问量 1480

猜你喜欢

转载自blog.csdn.net/resin_404/article/details/99302712