• 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  操作系统的名称
    

      

  • 相关阅读:
    学习进度第七周
    NABCD---生活日历
    学习进度第六周
    人月神话阅读笔记(3)
    人月神话阅读笔记(2)
    人月神话阅读笔记(1)
    石家庄地铁查询(双人项目)
    学习进度第五周
    学习进度第四周
    返回一个整数数组中最大子数组的和。(续2)---二维数组
  • 原文地址:https://www.cnblogs.com/fengkui/p/6122035.html
Copyright © 2020-2023  润新知