Shell——日常工作常用的命令

来源:互联网 发布:江铃顺达仪表算法 编辑:程序博客网 时间:2024/05/21 11:14

个人来说,shell指令很好很强大。工作中经常用到一些命令,这里总结分享一下。

1 合并文件
for file in AcAppeal3 ;do cat $file >>AcAppeal2;done
直接在shell命令行输入这一行
2 $?。

$?  返回上一次shell执行返回值$0就是该bash文件名$?是上一指令的返回值$*所有位置参数的内容:就是调用调用本bash shell的参数。$@基本上与上面相同。只不过是$*返回的是一个字符串,字符串中存在多外空格。$@返回多个字符串。$1 调用本bash shell的第一个参数

3 sed替换。

  sed -i 's/&mt=//g'   oknid_spamzd.txt 

4 磁盘命令。

 df   -Ph      du   -sh

5 查看cpu核数。

 cat /proc/cpuinfo   cpu cores

6 查看进程命令。

 ls  -l  /proc/$pid/exe

7 sort指令。

 sort  -t $'\t’  tab分隔符 sort -k2  -rn  -t $'\t’ hotData   按照hotData文件第二列逆序排列 ,分隔符是tab键

8 nohup后台执行。

nohup  ./test.sh   > /dev/null 2>&1  &       ;        nohup  php  ./test.php    > /dev/null 2>&1   &

9 ps指令。

    ps  -aux    |  grep   php-cgi      ;          pstree -ap arch | grep php-cgi  树状结构

10 cut分割字符串

cut -d ‘_' -f 2  infile >  outfile

11 linux环境变量 echo

 echo `date +%s`"post work cost: "$cost"s"  env 显示所有环境变量 ; echo  $HOME  显示环境变量$HOME echo  -n   输出后不换行 echo  -e    输出中转义字符生效

12 grep指令。

grep "cm='100009'" submit.log | grep "errorNo='0'" | grep -oP "HookafterCommandReady_ms=\d+"

13 增加alias快捷命令。

cd ~  切换到用户例如iknow主目录下。vim  .bashrc, 最后增加  alias  php =‘/home/iknow/odp/php/bin/php’;source .bashrc  必须执行这句话。否则命令不生效。

14 账号切换。

 root账号切换成work普通帐号:  su  -  work   (su  work的话,不会带有原来的环境变量)普通帐号切换成root : su 或 su  - ,并输入密码。  一般exit可以返回root账号,且不用输入密码。 root账户下想要重置work帐号密码: passwd  workroot账户下想要添加账号 /usr/sbin/adduser   iknow  或者  /usr/sbin/useradd  iknow

15 tar解压缩指令。

 压缩:  tar -zcvf smartmis.tar.gz smartmis/ 解压缩: tar -zxvf smartmis.tar.gzzip解压缩指令。zip -r mydata.zip mydata #压缩mydata目录unzip mydata.zip -d mydatabak

16 查看端口号占用情况。

1 可以通过"netstat -anp  |  grep   8777 " 来查看哪些端口被打开。2 /usr/sbin/lsof -i:8777    找到进程号。 ls  -l  /proc/pid/exe

17 iconv指令。

iconv  -f utf-8  -t gbk  -c   utf8_file   >  gbk_file

18 awk指令。

两个文件合并。           awk 'NR==FNR{a[$1]=$2}NR>FNR{if(($1 in a)){print $0"\t"a[$1]}else{print $0"\t"0}}' naopinfo nacinfo > na           naopinfo文件     cindex,auditflag            nacinfo文件       cindex ,audited,pack 根据第一列去重复。           CUST_ID='';           sort -k1 -t'#' out_spamzd | awk -F '#' '{if ($1 == CUST_ID) {} else { CUST_ID = $1; print $0 ; } }' > Target.TXT根据第一列去重复            awk -F '#'  '{if(($1 in a)){}else{print $0;a[$1]=1;}}' duid.txt >  temp.txtawk -F "\t" '{store[$1"\t"$2]+=$3}END{for(i in store) print i"\t"store[i]}' ./data/$day.final |sort -k3 -k1 -nr > ./data/$day.person//统计训练样本label的分布情况awk  '{s[$0]++;}END{for(i in s) print i"\t"s[i]"\n"}'  train_label_new19 SVN操作相关**过滤.svn目录 grep-r . "xx" | grep -v .svn删除.svn目录 for file in `find . -name .svn`; do rm-rf"$file"; done find ./ -name .svn -exec rm -rf {} \;

19 find+sed

批量修改文件名 find -type f -exec sed-i 's/newikqb/ikqbnew/g' {} \;rename  修改文件名 rename  curNameStr  newNameStr   ./curFile rename  curNameStr  newNameStr   curDir 例如:  rename a b test/*      test/a01 替换成  test/b01

20 ln链接

 ln -s  /path/to/file   file     软链接 ln 默认是硬链接,带-s选项是软链接。 用绝对路径方可链接目录。

21 split分割

split -l  1000  inputFile   -d  -a  2 thread  -l 每个文件分成行数,-d使用数字作为后缀,-a  2 指定后缀长度为2 ,thread指定前缀名字为thread

22 if语句 Case语句

if [ 条件表达式 ]
then
command
command
else
command
fi达式

[ -f file ] 如果文件存在
if [ -d … ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行

  • 整数变量表达式
  • if [ int1 -eq int2 ] 如果int1等于int2

if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<

  • 字符串变量表达式
    If [ a=b ] 如果string1等于string2
    字符串允许使用赋值号做等号
    if [ string1!=string2 ] 如果string1不等于string2
    if [ -n string]string(00(true)if[zstring ] 如果string 为空
    if [ $sting ] 如果string 非空,返回0 (和-n类似)

case 值 in
模式1)
command1
;;
模式2)
command1
;;
*)
command1
;;
esac
case $aNum in
1) echo ‘You select 1’
;;
2) echo ‘You select 2’
;;
3) echo ‘You select 3’
;;
4) echo ‘You select 4’
;;
*) echo ‘You do not select a number between 1 to 4’
;;
esac

23 pmap指令
提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。

pmap -d 19694

24 Shell 函数使用示例

    function  split_file() {         thread_num= $1     }     thread_num=10     split_file  $ thread_num
 shift命令用于对参数的移动(左移)

25 PS TOP

ps  : 是显示瞬间进程的状态,不动态连续,常用 ps -ef  | grep  ***top : 对进程实时监控

26 netstat 网络

27 xargs

例如:统计某个目录下php文件代码总行数,去除空行。

 find  ./*  -name  '*php'  |    xargs  cat | grep  -v "^$"   | wc   -l  

说明: 之所以能用到xargs这个命令,是由于很多命令不支持 | 管道来传递参数,xargs 可以读入 stdin 的数据,并且以空白字元或断行字元作为分隔符,将 stdin 的资料分隔成为 arguments,于是参数列表转换成小块分段传递给其他命令,避免参数列表过长的问题。
grep -v “^$” 是剔除空行。

   wc -l `find . -name '*php'` | tail -n1

说明: tail -n 1是显示倒数第一行。 但是此方法没有去除空行。

find -name ‘*php’ -exec wc -l {} \;|awk ‘{a+=$1}END{print a}’

说明:该方法也是不能统计空行。

ps auxw|head -1;ps auxw|sort -rn -k3|head -10 > memory.txt

ps 出来系统所有的应用程序,然后sort 根据第三列CPU使用率逆序排序,取出前十的重定向到文件中便于查看。
Tips:sort -rn -k4 就可以根据Memory使用率来排序。

1 0
原创粉丝点击