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

本文主要是介绍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++))
doecho -ne "\n" 1>&9
done
newline=$'\n'summ=0 --循环计数器
while read line
dosumm=$[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   --结果 25echo 3 /* 5 |bc  --结果15echo 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 cachedPID    USER     PR   NI VIRT  RES  SHR S %CPU %MEM TIME+ COMMAND4295 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 解压

这篇关于Shell编程、linux命令工作常用,提高工作效率系列,快快收藏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1735

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired