shell 命令

    xiaoxiao2021-03-25  147

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

    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. 取今天时间

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

    2. 取昨天时间

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

    3. 取前天时间

    $date -d "2 days ago" +%Y-%m-%d 
    转载请注明原文地址: https://ju.6miu.com/read-12880.html

    最新回复(0)