shell 命令

来源:互联网 发布:js json对象 动态key 编辑:程序博客网 时间:2024/06/09 21:09

只输出错误信息到日志文件

nohup ./program.sh >/dev/null 2>log &

什么信息也不要

nohup ./program.sh >/dev/null 2>&1 &


Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。

用<<EOF重定向输入,将我们输入的命令字符串作为一个执行程序的输入,这样,我们就不需要在那个程序环境中手工输入命令,以便自动执行我们需要的功能

这样输入的内容夹在两个EOF之间,可长可短,EOF也可以换成其他任意的字符,意思是把内容当作标准输入传给程序,大小写不论,只要成对出现即可,

但是需要注意的是,第一个EOF必须以重定向字符<<开始,第二个EOF必须顶格写,否则会报错。

例如:

          mysql -u $USER -p${PASSWORD}  << EOF
         use camel_jxy;
         update ${TABLE_NAME} set role_type=2 where id=${test}

EOF


可以在mysql语句中,使用选项来控制数据的输出格式

    -H 输出为html
    -X 输出为xml


延伸:利用shell连接mysql执行sql命令还有一种方法:添加 -e "commod" 参数

例如:

      update_sql="update ${TABLE_NAME} set role_type=1 where id=${test}" 
      mysql -u ${USER} -p${PASSWORD} -h ${HOST_NAME} -D ${DB_NAME} -e "${update_sql}"




修改文件属组

chown mysql.mysql transport_protocol.sql


修改文件权限

chown 777 transport_protocol.sql


Awk

-F指定分隔符

$1 指指定分隔符后,第一个字段,$3第三个字段, \t是制表符

一个或多个连续的空格或制表符看做一个定界符,即多个空格看做一个空格

awk -F":" '{print $1}'  /etc/passwd

awk -F":" '{print $1 $3}'  /etc/passwd                     //$1与$3相连输出,不分隔

awk -F":" '{print $1,$3}'  /etc/passwd                      //多了一个逗号,$1与$3使用空格分隔

awk -F":" '{print $1 " " $3}' /etc/passwd                 //$1与$3之间手动添加空格分隔

awk -F":" '{print "Username:" $1"\t\t Uid:" $3 }' /etc/passwd       //自定义输出  

awk -F: '{print NF}' /etc/passwd                              //显示每行有多少字段

awk -F: '{print $NF}' /etc/passwd                            //将每行第NF个字段的值打印出来

 awk -F: 'NF==4 {print }' /etc/passwd                      //显示只有4个字段的行

awk -F: 'NF>2{print $0}' /etc/passwd                      //显示每行字段数量大于2的行

awk '{print NR,$0}' /etc/passwd                               //输出每行的行号

awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd     //依次打印行号,字段数,最后字段值,制表符,每行内容

awk -F: 'NR==5{print}'  /etc/passwd                       //显示第5行

awk -F: 'NR==5 || NR==6{print}'  /etc/passwd      //显示第5行和第6行

route -n|awk 'NR!=1{print}'                                     //不显示第一行


ls -lh |awk -F: 'NR==1 || NR==2 || NR==3{print}' h人类可读,--human-readable是长参数形式。-h是短参数形式  

例如:

-rw-rw-rw- 1 jxy camel   43K Dec 3 15:03 1388543766387.jpg

sudo apt-get install openssh-server

http://jingyan.baidu.com/article/d621e8da24ac7b2865913f30.html  ssh无钥登陆

 

sed全备中截取一张表

cat camel_test_backup_2017-01-09-06:00:01.sql | sed -n-e '/Table structure for table .Line./,/Table structure for table.Login./p'>~/mysql_backup/line.sql

gz 解压缩

Linux压缩保留源文件的方法:
gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename

 

Pgrep

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

-o:仅显示找到的最小(起始)进程号; -n:仅显示找到的最大(结束)进程号; -l:显示进程名称; -P:指定父进程号; -g:指定进程组; -t:指定开启进程的终端; -u:指定进程的有效用户ID。

来自: http://man.linuxde.net/pgrep

 

查看安装包

Apt-get dpkg –l

Pip pip freeze

 

 

切换用户svn up --usernamezhangsan --password 123456


取时间数据
## -d, --date=STRING         display time described by STRING, not `now'
STRING可以为‘now’ 、 ‘yesterday’、 ‘n days ago’

‘n days ago’  表示n天前的那一天

使用date -d 选项:

  date  +"%Y%m%d" -d  "+n days"         今天的后n天日期  

      date  +"%Y%m%d" -d  "-n days"          今天的前n天日期

例如:

1. 取今天时间

  1. $date -d "now" +%Y-%m-%d  

2. 取昨天时间

  1. $date -d "yesterday" +%Y-%m-%d  
  2. $date -d "1 days ago" +%Y-%m-%d  

3. 取前天时间

  1. $date -d "2 days ago" +%Y-%m-%d 


0 0