zoukankan      html  css  js  c++  java
  • Shell基本的命令

    ubuntu 中文乱码
    如果使用的是 PuTTY,可以通过修改 font, character set 设置来解决。
    Window -> Appearance -> Font settings 选择宋体或新宋体:
    Window -> Translation -> Character set translation on received data 选择 UTF-8:
     
    --ubuntu
    --设置root密码
    sudo passwd root
    sudo /etc/init.d/ssh star
     
     
     
    startx--启动图形界面
    cal 2002--查看2002年日历
    man date/info date --查询date指令的使用
    who --查看当前用户
    netstate-a --查看当前网络情况
    ps -aux --查看后台执行的程序
    shutdown/reboot --关机
    reboot -f 强制重启
     
    --改变一个文件的群组
    chgrp 群组名 文件
    chown -R tomcat /home/tomcat/
     
    
    --8080端口映射到80端口
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
     
    --设置ip地址
     10.8.6.247
    cat /etc/sysconfig/network-scripts/ifcfg-eth0
    --列子
    DEVICE=eth0
    BOOTPROTO=static
    HWADDR=E4:1F:13:38:5E:60
    IPADDR=10.26.88.205
    NETMASK=255.255.255.192
    GATEWAY=10.26.88.254
    ONBOOT=yes
    TYPE=Ethernet
     
    --重启ip设置
    /etc/init.d/network restart
     
    --查看这个目录下的文件大小
    du -m /home/tomcat
     
    
    --修改linux启动默认
    /etc/inittab 的id:5:initdefault:
    init[012356]
    0: 关机
    1:单用户
    2:多用户网络没有网络服务
    3:多用户网络有网络服务
    5:图形界面
    6:系统重启
     
     
     
    --切换账户 报open to many
    su: /bin/bash: Too many open files in system
    vi /etc/sysctl.conf
    fs.file-max = 6553600
    最后退出输入回车
     
    --vi使用
    复制:yy
    粘贴:p
     
    删除:dd
     
    
    --服务器间的数据copy
    scp jdk-6u16-linux-x64.bin root@10.26.88.204:/usr
     
    --代码更新
    cp -r src/* target/xxt 
    
    
    修改文件名:
    mv 原来文件名,修改后的文件名
     
    --启动ftp
    service vsftpd start
    service sshd start
    chkconfig sshd on
     
    ftp ip
    get 文件名   --下载文件
    delete 文件名 --删除文件
    bye   --退出
     
    
    linux jdk设置
    chmod +x jdk-6u17-linux-i586.bin
     
    cat /etc/profile
    export JAVA_HOME=/usr/jdk1.6.0_17
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export LANG='zh_CN'
     
    
    /usr/java
    --创建账户
    useradd  账户名
    useradd -G dba vas
    passwd 账户名
     
    usermod 修改用户
    passwd root
     
    killall 进程名
     
    
    --查看字符集
    locale
     
    
    --创建文件
    touch filename
     
    --创建文件夹
    mkdir filename
     
    --查看ip,mac地址
    /sbin/ifconfig
     
    
    --修改时间
    date -s 2011-01-25
    date -s 02:23:30
    clock -w
    clock -r 
    clock -hwtosys
     
     
     
    --挂载文件
    mount
    --挂载光盘
    mount /mnt/cdrom
    unmount
     
    --查看分区
    fdisk -l
    window linux 安装系统删除linux
    fdisk /mbr
     
    --查看当前运行的shell
    env 
    --切换shell
    chsh -s /bin/csh
     
    --追踪路由命令
    tracert www.sina.com
     
    --安装tar.gz文件
    tar -zxvf qbittorrent-2.4.4.tar.gz
     
    tar -zxvf apache-tomcat-5.5.33.tar.gz
     
     
     
    --rpm 安装
    --安装软件:
    rpm -ivh  MySQL-clinet-community-5.1.52-1.rhel3.i386.rpm  MySQL-server-community-5.1.52-1.rhel3.i386.rpm
    --查询是否有该软件
    rpm -qa|grep name
    rpm -qa name
     
    --卸载软件 rpm -e name
    --强制卸载 rpm -e --nodeps name
     
    --任务调度
    --启动任务调度 一般不需要手动调用下面
    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置
     
    --任务编辑 crontab -e
    --任务删除 crontab -r
    --任务列表 crontab -l
     
    
    --网络命令
     
     netstat -anp
    --显示本机到远程主机的历程名称 tracerout
    netstat -anp | grep '8000' | wc -l
     
    --建立超链接
    ln -s 源 目标
     
    --字符查找
    grep -n  "java"   /home/tomcat/*
    grep 参数:
    -i 大小写
    -v 显示不匹配的行
     
     
     
    --宏定义
    alias l='ll -t'
     
    查看物理CPU的个数
    cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
     
    查看逻辑CPU的个数
    cat /proc/cpuinfo |grep "processor"|wc -l
     
    查看CPU是几核
    cat /proc/cpuinfo |grep "cores"|uniq
     
    --cpu信息
    more /proc/cpuinfo
    --位数
    getconf LONG_BIT
     
    
    --wc 统计文本数
    行数(line),字数(word),字符数(character)
     
    
    --安装ssh
    sudo apt-get install openssh-server
     
    负载里面的 1分钟、5分钟、15分钟的数字 ,1分钟 当前的数字 除以 核数>=5 就表示 服务器需要升级 或者优化 
    
    释放内存:echo 3 >/proc/sys/vm/drop_caches
     
     
     
    --shell脚本文件的常用命令
    幻行,使用该sh
    #!/bin/sh
     
    #不可变变量
    readonly 变量名
     
    #删除变量,函数
    unset 变量名
     
    #数组
    a[0]='a0'
    a[1]='a1'
    a[2]='a2'
    #访问索引1
    echo "${a[1]}"
    #访问数组中的所有变量
    echo "${a[*]}"
    echo "${a[@]}"
     
    
    #变量置换
     
    #缺省值置换 param为空或未赋值,word取代param,param不变
    ${param:-word}
     
    #缺省值赋值 param为空或未赋值,word赋值param
    ${param:=word}
     
    #空值错误 如果为空,错误提示信息   
    ${param:? 'msg'}
     
    #有值置换
    ${parame:+msg}
     
    #命令置换 命令获取的数据存放到变量中
    DATE=`date`
     
    #算式置换 完成简单的运算
    echo $(( 5*2 ))
     
     
     
    #输出命令的路径
    type cmd
     
     
     
    #睡眠时间 单位:秒
    sleep 2
     
    #find
    cd ~ && find .. -name memcached -print 2>/dev/null
    -name 文件名 可用正则
     
     
     
    -type 类型 
       f 通常文件
       d 目录
       b 块设备
       c 字符设备
       l 符号链接
       p 命名管道
    -mtime 修改时间
    -atime 访问时间
    -ctime 改变时间
      +n 大于n天 -n 小于n天 n 等于n天
    -size 磁盘块
    -exec 后面执行命令 得到的查询结果{}
     
    cd ~ && find /home/zyl/tmp -name a.txt 2>/dev/null -print -exec rm -rf {} ;
    find . ! ( -name memcached -o -type f ) -print 2>/dev/null
     
    find   ./   -size   +100000k   -print
     
    --xargs
    数据传递给后面执行命令充当参数
     
    --expr 简单的整数运算
    expr 1 + 2  #需要有空格 不然当成一个字符串
    --expr 使用正则,返回匹配的字符数
    abc=12345abc
    expr $abc : '[0-9]*'
    $(( 1+2 ))
     
    --bc 计算器
    bc
    obase :输出进制
    ibase :输入进制
     
     
    printf
    s:字符串
    c:字符
    d:十进制
    x:十六进制
    o:八进制
    e:指数
    f:固定浮点数
    g:紧密浮点数
    默认右对齐,-左对齐
     
    printf "%16s	%16s
    " "name"  "user name"
    printf "%16s	%16s
    " "str1"  "ranga"
    printf "%16s	%16s
    " "str2"  "zhang"
    { date; uptime; who; } > a.txt
     
     
     
    --同时在控制台和文件中输入
    cmd | tee a.txt
     
    ls << aa
    -l
    aa
     
    --用户输入
    read name
    echo $name
    --表示不输出输入的字符串
    stty -echo
    read name
    stty echo #输出输入的字符串 
    
    --文件描述符 重定向
    date 1>a.txt 2>&1
    0:stdin
    1:stout
    2:sterr
     
    >dev/null 表示丢弃输入文件
    --定向到同一个文件
     1>a.txt 2>&1
     
    --关闭定向
     6>-
     
    --查看文件信息
    file fileName
     
    --超级链接
    硬链接 ln src target
    符号链接 ln -s src target
     
    
    -- 前台进程变成后台进程,进程 ctrl+z 后输入bg变成后台运行。bg %1
    -- 后台进程变成前台进程, fg %1
     
    --一些不好后台运行的,关闭终端时候自动结束可以用 nohup 运行
    nohup ls &
    输出日志到 nohup.out
     
    
    [tomcat@wxxyweb ~]$ ps -f
    UID        PID  PPID  C STIME TTY          TIME CMD
    tomcat    9545  9379  0 May29 pts/1    00:00:00 -bash
    tomcat    9597  9545  0 00:07 pts/1    00:00:00 ps -f
    uid:运行程序的账户
    pid:进程标识符
    ppid:parent pid
    c:cpu占有率
    unlabeled:精确值,优先级
    STIME:启动时间
    cmd  执行的命令
     
    --shell 版本
    echo $BASH_VERSION
     
    echo $PWD;--路径
    echo $UID;--用户编号
    echo $SHLVL;--自动加1
    echo $REPLY;--读到输入的第一行
    echo $RANDOM;--0到32767的随机数
    echo $SECONDS;--shell 启动的花费的时间
    echo $IFS;  --分离,不清楚
    echo $PATH; --path路径
    echo $HOME; --home
     
    if [ "$a" = "start" ];then
      echo "Start"
    elif [ "$a" = "start2" ];then 
      echo "start2" 
    else
      echo "no start"
    fi
     
    
    --判断文件
    if [ -f /home/zyl/zyl.sh ];then
     
    -b file 存在并且是块文件
    -c file 存在并且是字符文件
    -d path 存在并且是一个目录
    -e path 文件或目录
    -f file 存在并且是正规文件
    -g path 存在文件夹并且设置了sgid
    -h file 存在并且是链接
    -k path 文件或目录存在,并且设置了粘泻位
    -p file 存在并且是命名管道
    -r path 文件或目录可读
    -s file 文件大小大于0
    -u path 设置了suid
    -w path 可写
    -x path 可执行
    -o path 当前进程有效用户id所拥有
     
    --字符判断 = 两边需要有空格
    if [ "$a" = "$b" ];then    
    -z str  长度为0
    -n str  长度不0
    str1=str2
    str1!=str2
     
    --数字比较
    if [ $a -eq $b ];then
    int1 -eq int2  等于
    int1 -nq int2  不等于
    int1 -lt int2  小于
    int1 -le int2  小于等于
    int1 -gt int2  大于
    int1 -ge int2  大于等于
     
    --判断上一个命令是否执行成功,临时变量写入 $?
    pwdd
    if [ $? -eq 0 ];then
     
    复合比较
    !expr
    expr1 && expr2
    expr1 || expr2
    --列子
    ! [ $a -eq $b ]
    [ ! $a -eq $b ]
    # -a = and 
    # -o = or 
    [ -d "$a" -a "$a" = "$b" ] 
    [ -d "$a" ] && [ "$a" = "$b" ] 
    
    --case语法
    case "$a" in 
        "a") echo "aa";;
        "b") echo "bb";;
        *a*) echo "*a*";;
        *) echo "default";;
    esac
     
    
    --while 语法
    x=0
    while [ $x -lt 10 ]
    do
    echo $x
    x=`expr $x + 1`  #`符号是在~按键上
    done
     
    输入重定向
    while read LINE 
    do
    case $LINE in
    *root*) echo "root $LINE";;
    esac
    done < /etc/passwd
     
    while : #无限循环
     
    break,countinue
     
    --until 直到 true 结束 和while相反
    x=0
    until [ $x -gt 10 ]
    do
    echo $x
    x=`expr $x + 1`
    done
     
    --for 语法
    for p in $*
    do
    echo "$i=$p"
    i=`expr $i + 1`
    done
     
    for i in /home/tomcat/*
     
    --select
    PS3="select menu"  #提示菜单
    select com in c1 c2 c3 all none
    do
    case $com in
     c1|c2|c3) echo "$com";;
     all) echo "c1 c2 c3";;
     none) break;;
     *) echo "erro ";;
    esac
    done
     
    
    --awk
    BEGIN:awk开始执行,运行一次
    END:awk运行到最后执行
     
    --关键字
    FILENAME:文件名
    NR:行数
    NF:字段数
    OFS:输出字段分隔符 默认空格
    FS:输出 默认空格和制表符号
    OFMT:数字输出格式
    ORS:输出记录分隔符 默认新起一行
    RS:输入记录分隔符  默认新起一行
     
    $1 表字段1 类推
    USER_INPUT_PRICE=$1
    awk '
     BEGIN { FS=":"}
      ($2>price) && (1==1) { printf "%s %s %s
    ", $1,",>",price; next}
      $2<=price { printf "%s %s %s
    ", $1,",<=",price; }
    ' price="$USER_INPUT_PRICE" b.txt
     
    --awk if
    USER_INPUT_PRICE=$1
    awk -FS=":" '{
      if(($2>price) && (1==1)) { 
       printf "%s %s %s
    ", $1,",>",price; next
      }else{ 
       printf "%s %s %s
    ", $1,",<=",price; 
      }
    }' price="$USER_INPUT_PRICE" b.txt
     
    --while 不推荐使用do while
    while(x<NF){
     printf "%s
    ",$x;
     x+=1;
    }
     
    --for
    for(x=0;x<NF;x+=1){
     printf "%s
    ",$x;
    }
     
    awk 的while if for 类c设计
     
    --特殊参数
    $0 命令名称
    $n 参数 从1开始
    $# 参数个数
    $* 所有的参数被双重应用
    $@ 独立的双重应用
    $? 最后一个执行命令的推出状态
    $$ 进程号
    $!最后一个后台命令的进程号
    $- 输出字符包含 i 表示交互式脚本
     
    #获取命令输入的参数
    # ./zyl.sh -f a -o b -v c 
    verbose=false
    while getopts f:o:v OPTION ;
    do
      case "$OPTION"  in 
      f) echo "f=$OPTARG";;
      o) echo "0=$OPTARG";;
      v) echo "v=$OPTARG";;
      ?) echo "????";;
      esac
    done
     
    
    #别名
    alias lsa="ls -a"
    lsa
     
    #取消别名
    unalias lsa
     
     
     
    --指定局部变量
    typeset x=1
     
    
    --输出唯一字符
    uniq -c a.txt
     
    --排序
    sort -rk 1,2 b.txt
    k:排序字段 1到2
     
    -r:按逆序输出
    -n:依照数值的大小排序。
    -c:检查文件是否已经按照顺序排序。如果没有回提示。
    -b:忽略每行前面开始出的空格字符。
    --
       -d    排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
       -f    排序时,将小写字母视为大写字母。
       -i    排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
       -m    将几个排序好的文件进行合并。
       -M    将前面3个字母依照月份的缩写进行排序。
       
       -o<输出文件>    将排序后的结果存入指定的文件。
       -r    以相反的顺序来排序。
       -t<分隔字符>    指定排序时所用的栏位分隔字符。
       +<起始栏位>-<结束栏位>    以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
       --help    显示帮助。
       --version    显示版本信息。
     
     
     
    --多个词的替换
    sed '/zyl/ s/1/2/; /tomcat/ s/1/3/' b.txt
     
    --d 表删除 sed '/tomcat/ d' a.txt
    --q退出
    top | sed '1,5 !d;5q'
     
     
     
    --分隔 cut
    cut -f1- -s --output-delimiter='|' -d,  b.txt
    -[b,c,f] 分别是:byte,char,field
    -d,:以分隔符号:逗号
    -s:去除没有分隔符的数据
    --output-delimiter 输出的分隔符
     
    
    --join 联合
    join -1 1 -2 2 -o 1.1 -a 1 -o1.2 -o 2.1 -t, a.txt b.txt
    -1 1 -2 2:相当于a.txt文件中的第一个字段,和b.txt表中的第二个字段
    -o 1.1 -o1.2 -o 2.1 表示显示a.txt 中的第一二个字段,b.txt表中的第一个字段
    -t,表示以逗号分隔
    -a 1 表示不匹配的
    join -1 1 -2 2 -o 1.1 -a 1 -o1.2 -o 2.1 -t, a.txt b.txt
     
    
    --单个字符的处理 查询替换
    tr '源字符' '' < a.txt > b.txt
    tr '
    ' '
    ' < a.txt
    tr 'a-z' 'A-Z' < a.txt
    tr -s 'e' 连续e,替换成单个e
    echo "a b"| tr '[:blank:]' ','
    [:blank:] 表转义字符有
    alnum 字母或数字
    alpha 字母
    blank 空格
    cntrl 控制符
    digit 数字
    graph 可印刷字符,不包括空格
    lower 小写字符
    print 可印刷字符,包括空格
    punct 标点符号
    space 空格
    upper 大写字符
    xdigit 十六进制
     
    
    --eval
    output="> b.txt"
    eval echo hell "$output"
     
    --信号
    SIGHUP  1  控制终端发起被挂着或控制进程死亡
    SIGINT  2  键盘中断
    SIGQUIT 3  来自键盘的推出信号
    SIGKILL 9  杀死进程的信号
    SIGLRM  14 定时时钟中断
    SIGTERM 15 终止信号
     
    
    --语法检测
    /bin/sh -nv ./zyl.sh
     
    
    --init
    0 :关机
    1 :单用户模式
    2 :多用户模式
    3 :网络多用户模式
    4 :未用
    5 :图像多用户模式或停机
    6 :重启
     
    --uname
    a  所有信息
    m  硬件类型
    n  系统的主机名
    r  发布的级别
    s  操作系统的名称
    

      

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/fengkui/p/6122035.html
Copyright © 2011-2022 走看看