本文主要是介绍Shell编程、linux命令工作常用,提高工作效率系列,快快收藏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
shell编程,linux命令内容清单
-
shell脚本配置引用
-
查看端口
-
去掉字符串空格的操作(三种方法)
-
ls文件查看
-
文件转码
-
全局查找文件,遍历机器所有目录
-
创建软链接
-
split文件切分命令
-
特定位置替换
-
shell线程并发执行命令
-
数值计算
-
浮点型数值计算
-
top命令详解
-
压缩和解压详解
详细介绍:
#!/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 运行的通常二者设置大致相同,所以通常前者会调用后者。
netstat -nap | grep 6625 #查看端口
echo ${str// /}
echo $str | sed 's/ //g'
echo $str | tr -d " "
查看文件大小
ls -Slr -h(从小到大)
ls -Sl -h(从大到小)
ls -l |grep "^-"|wc -l --查看目录下文件的个数
cat $DataFile | iconv -f gbk -t utf8 > $DataFileUtf
locate core-site.xml --显示相关的全部结果
locate core-site.xml | grep -v aa --查找目录下跳过aa目录下的查找
ln -s 源文件 目标文件
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以此类推。
--将每行第12个字符替换成逗号(,)
cat all_11.txt | sed 's/./,/12' > all_112.txt
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
--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`
expr $a / $b --结果为整数,只支持整除,保留整数部分,小数点后省略echo "scale=2;$a/$b" | bc --scale 可以设置保留小数点后几位数awk 'BEGIN{printf "%.2f\n",('$a'/'$b')}' --结果也是保留小数点后两位小数
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 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
压缩 --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命令工作常用,提高工作效率系列,快快收藏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!