zoukankan      html  css  js  c++  java
  • linux之shell常用命令介绍

    一、cd    切换目录

        cd /etc  切换到/etc目录下              cd ~       切换到主目录下

        cd  ..      返回上级目录                     cd ../..  返回上两级目录

        cd  -       返回进入此目录之前所在的目录

    二、echo    输出

        echo "this is a test!"        显示普通字符串:

        echo -e " "         输出一行空行,-e 开启转义

        echo `date`          显示命令执行结果

    三、chmod    授予使用权限

        chmod abc file    基本格式

        其中a,b,c各为一个数字,分别表示User、Group、及Other的权限,权限可分为:r=4 表示可读取,w=2 表示可写入,x=1 表示可执行。

        若要rwx属性则4+2+1=7;

        若要rw-属性则4+2=6;

        若要r--属性则为4。

    四、cat   查看文件

    1)打印文件内容:

        cat cat1.txt    打印单个文件内容

        cat cat1.txt cat2.txt    打印多个文件内容,将文件内容拼接在一起

        echo "Test" | cat - cat1.txt    将标准输入和文件内容拼接在一起

        在上面的代码中 - 被作为stdin文本的文件名

    2)打印文件内容时常用参数:

        cat -n cat3.txt    打印文件内容及行号,会为空白行加上行号

        cat -b cat3.txt    打印文件内容及行号,跳过空白行

        cat -s cat3.txt    压缩相邻的空白行

    3)从键盘创建一个文件:

        cat > cat4.txt    只能创建新文件,不能编辑已有文件

    4)将几个文件合并为一个文件:

        cat cat1.txt cat2.txt cat3.txt > cat5.txt

    五、sed    文本编辑文本

    1)局部替换:

        sed 's/world/sed/' sed1.txt​

        仅替换每行的第一个匹配者,不会修改源文件

        sed 's/world/sed/2' sed1.txt​​

        替换每行的第2个匹配者​

    2)全局替换:

        sed 's/world/sed/g' sed1.txt

        替换文件中的所有匹配者

    3)替换的字符串使用正则表达式:

        sed 's/^hello.*/sed/g' sed1.txt

    4)分界符/可以替换成# ; *等字符

        sed 's*world*sed*g' sed1.txt

    5)删除字符:

        sed '/^$/d'  sed1.txt    删除sed1.txt中的空行

    6)如果操作的字符串中包含变量,要将变量再次用单引号引起来:

        b="sed"

        sed 's/world/'$b'' sed1.txt​

        否则变量名直接当做字符串处理

    7)直接操作源文件:​

        sed -i 's/world/sed/' sed1.txt​

    8)一次性替换多个:​

        sed -e 's/hello/this is/g' -e 's/sed/the sed/g' sed1.txt​

    9)替换动作包含在文件中:​

        vim ./test.sed

        s/hello/this is/g​

        s/sed/the sed/g​

        sed -f test.sed sed1.txt​ > sed2.txt   --保存在新的文件中

        sed -i -f test.sed sed1.txt​   --直接作用在源文件中

    六、read    接受键盘数据和读取文件

    1)read接受从键盘的输入:

        read -p "Enter your name: " name

        echo "Hello $name"

        如果不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中:

        read -p "How old are you? "

        echo "I'm $REPLY"

    2)接受多个数据:​

        ​read -p "Enter your name and age: " name age

        echo "My name is  $name, and I'm $age."

    3)计时输入:​

     ​   read -t 3 -p "Enter your name: " name

    4)默读:

        read -s -p "Enter your password: " password

        echo "Your password is $ password "

        输入的密码不会显示在屏幕上。

    5)读文件:​

        vim ./test.txt

        first

        second

        third

        vim ./read4.sh

        cat -n test.txt | while read line

        do

            echo $line

        done

    七、awk    高级文本处理

    1)基本结构介绍:

        awk 'BEGIN{ commands }  { commands }  END{commands }' file

        awk命令也可以从stdin中读取:

        echo | awk 'BEGIN{ commands }  { commands }  END{ commands }'

        awk脚本通常由3部分组成:BEGIN,语句块,EDN,3部分都是可选项,在脚本中可省略任意部分。

        其中BEGIN和END关键字必须大写,awk的脚本内容要包含在单引号或者双引号内,awk脚本使用print输出。

        所有的commands之间用分号隔开。

    2)awk工作原理:​

        (1)执行BEGIN{ commands }​语句

        (2)从文件或者stdin中读取一行,然后执行{ commands },重复这个过程,直到文件全部读取完毕

        (3)当读至输入流末尾时,执行END{ commands }中的语句

    3)从文件中读取行:​

        awk 'BEGIN{ print "start" } { print } END{ print "end" }' awk1.txt

        语句块中使用不带参数的print时,它会打印从stdin或者文件中读取到的当前行。

    4)从标准输入中读取行:​

         echo -e "line1 line2" | awk 'BEGIN{ print "start" } { print } END{ print "end" }'

    5)省略BEGIN:

         awk '{ print } END{ print "end" }' awk1.txt

    6)再省略END:

        awk '{ print }' awk1.txt

    7)省略语句块:

        awk 'BEGIN{ print "start" } END{ print "end" }' awk1.txt

    8)语句块工作原理:

        从文件或者标准输入读入有' '换行符分割的一条记录,然后将该条记录  按指定的分隔符划分字段,$0则表示该条记录所有字段,$1表示该条记录第一个字段,$n表示该条记录第n个字段。默认分隔符是"空白键" 或 "[tab]键"。

    9)其它一些特殊变量:

        NR:表示记录数量,在执行过程中对应于当前行号。

        NF:表示字段数量,在执行过程中对应于当前的字段数。

        举例:

        awk '{ print $0 }' awk2.txt   --打印全部的文本内容

        awk '{ print NR,NF,$3 }' awk2.txt  --打印每行第3列的文本内容

        awk 'END{ print NR }' awk2.txt      --统计文件中的行数

        awk 'END{ print NF }' awk2.txt      --统计文件中的列数

        awk -F ';' '{ print $2 }' awk3.txt      --输出第二个字段

    八、ssh    linux之间远程登录

        ssh remote_username@remote_ip     终端远程登录到目标机器

        ssh remote_username@remote_ip  "command; command;…"

        远程登录目标机器执行各种shell命令,命令之间用分号隔开

    九、scp    Linux之间复制文件和目录

        1、从本地复制到远程

        scp -r local_folder remote_username@remote_ip:remote_folder

        scp -r local_folder remote_ip:remote_folder

        2、从远程复制到本地

        scp -r remote_username@remote_ip:remote_folder local_folder

    十、重定向

        command > filename      ">" 表示标准输出到filename中,如果文件不存在,则创建文件,已存在,则覆盖文件中原有的内容

        command >> filename    ">>" 表示标准输出到filename中,如果文件不存在,则创建文件,已存在,追加到原有文件的后面

        command >> filename 2>&1     “2>&1”是将错误输出重定向到标准输出,这里的标准输出已经重定向到了filename ,即将错误输出也重定向到filename文件中   

    十一、rm    删除文件和目录

    1)删除文件:

        rm rm1.txt   删除rm1.txt

        rm rm2.txt rm3.txt  依次删除指定的两个文件

    2)删除目录:

        rm -r dir1      通过-r参数删除目录

        注意:上面方法删除文件或目录都会询问用户是否删除,如果想直接删除,通过指定参数-f

        rm -f rm4.txt   直接删除文件rm4.txt

        rm -rf dir2        直接删除目录dir2

    3)显示执行过程信息:

        rm -vf  rm5.txt   直接删除文件rm5.txt ,并显示执行过程信息

        rm -vrf dir3         直接删除dir3目录,并显示执行过程信息

    4)使用正则表达式:

        rm -vf *.log    删除当前目录下的所有.log文件

        rm -vrf *rm*  删除所有名字中包含rm字符的文件和目录

    十二、cp    复制文件和目录

    1)复制文件:

        cp cp1.txt cp2.txt        当前目录下复制文件

        cp cp1.txt cp2.txt      当目标文件已存在,通过cp强制复制

        cp cp1.txt /root/cp2.txt    跨目录复制文件

    2)复制文件、目录到新的目录(新的目录必须已经存在):

        cp cp1.txt dir1  复制一个文件到目录dir1中

        cp cp1.log cp2.txt dir1     复制多个文件到目录dir1下

        cp -r dir2 dir1   复制目录dir2到目录dir1中

    3)使用正则表达式

        cp *.log dir3     把当前目录下所有的.log文件复制到dir3目录下

        cp -r dir1/ * dir3     复制dir1下的所有文件以及目录到dir3中

    4)常用参数:

        cp -v cp1.txt cp3.txt    显示执行过程信息

        cp -i cp1.txt cp3.txt     如果目标文件已存在,复制前先询问用户

    十三、free    检查内存的使用情况:

        -b 、 -k 、 -m     以Byte、 KB、 MB为单位显示内存使用情况

        -s<间隔秒数>  持续观察内存使用状况

    十四、mkdir    创建目录

        mkdir dir   仅可创建普通的不含有子目录的目录

        mkdir -p dir /dir1    可创建含有子目录的目录

        注意:指定的目录名不能是当前目录中已有的目录

    十五、let     对变量进行数值计算

        a=1       let "a+1"      echo &a       输出结果为2

    十六、ls    列出目标目录中所有的子目录和文件

        ls /root  列出/root目录下的内容

        也可以先cd命令进入到/root目录下,然后执行ls:

        cd /root

        ls  -lh     #列出文件详细信息,文件大小以KB为单位,每行只列出一个文件信息

    十七、df    检查文件系统的磁盘空间占用情况

        df -h    根据目前磁盘空间的使用情况 以更易读的方式显示

    十八、mv    文件和目录重命名、移动

    1)文件、目录重命名:

        mv mv.txt new_mv.txt    文件重命名

        mv dir new_dir       目录重命名

    2)移动文件到目录中(目标目录必须已经存在):

        mv new_mv.txt mv.log dir1    移动当前目录下多个文件到dir1中

        mv dir1/new_mv.txt dir2     移动dir1目录下的new_mv.txt到dir2中

    3)移动目录到新的目录中(新目录必须已存在):

        mv dir1 dir2   将dir1移动到dir2中

    4)使用正则表达式

        mv dir2/*.txt dir3    把dir1里的所有.txt文件移动到dir3

    5)常用参数 :

        mv -f  dir3/new_mv.txt dir    当dir下已存在该文件时,直接强制覆盖

        mv log1.txt -b log2.txt      先对log2.txt备份(名字为log2.txt~)再覆盖

        mv -t dir2 log1.txt log2.txt   移动多个文件到dir2中,目标目录在前

    十九、tr    字符操作(替换、删除、压缩等)

    1)字符转换(替换):

        echo "TEST" | tr 'A-Z'  'a-z'

        echo  "abc adf" | tr 'abc' 'xyz'

        这里是将"a"替换成"x","b"替换成"y","c"替换成"z",而不是将整个字符串"abc"替换成"xyz"

    2)删除字符:

        cat cat_tr.txt | tr -d  '0-9'

    3)压缩字符

        echo "tesssssssst" | tr -s 's'

    4)摒除多余的空行:

        cat cat_tr.txt | tr -s  ' '

        tr将多余的" "字符合并为单一的" "

    二十、find    查找文件

    1)基本格式:

        find path -option [-print] [-exec -ok command] {} ;

        -print 将查找到的文件输出到标准输出
        -exec command {} ;  对查到的文件执行command操作
        -ok 和-exec相同,只不过在操作前要询用户
    2)常用的命令选项:​

        -name   按照文件名查找文件
        -perm    按照文件权限来查找文件
        -user      按照文件所属用户来查找文件
        -group   按照文件所属的组来查找文件

        -size       按照文件大小来查找文件

        -type      查找某一类型的文件,诸如:b 块设备文件;d 目录;

                        c 字符设备文件;p 管道文件;l 符号链接文件;f 普通文件

        -empty  查找空白文件、没有子目录的文件夹

    3)举例:

        find /root/linux-shell/find -name '*.txt'   --指定查找路径

        find ./ -name '*dir1'     --查找当前目录下名字为dir1的文件或者目录

        find ./ -name '*dir1' -type d    --查找名字为dir1的目录

        find ./ -name '*dir1' -type f     --查找名字为dir1的普通文件

        find ./ -perm 777        --按照文件权限查找文件或者目录

        find . -user oscar         --查找所属用户为oscar的文件或者目录

        find . -group oscar      --查找所属组为oscar的文件或者目录

        find . -size +50k           --查找大于50k的文件

        find . -size +50k -size -100k    --查找大于50k小于100k的文件

        find . -empty         --查找空白文件或者空文件夹

        find . -name '*.log' -exec cat {} ;   --查找文件并查看文件内容

        find . -name '*.log' -exec cp {} new_find.log ;  --查找文件并复制

    二十一、sar    系统性能分析工具之一

        sar是一个Linux系统性能分析工具之一,基本格式:

        sar [options] [t] [n]

        t为采样间隔,n为采样次数,默认值是1

        常用options:

            -u:输出CPU使用情况的统计信息

            -r:输出内存和交换空间的统计信息

            -b:输出I/O和传输速率的统计信息

            -d:输出每一个块设备的活动信息

            -x:进程ID

        sar -u 2 3   每2秒采样一次,连续采样3次,监控CPU 的使用情况

        sar -r 2 3   每2秒采样一次,连续采样3次,监控内存和交换空间使用情况

        sar -b 2 3   每2秒采样一次,连续采样3次,监控缓冲区的使用情况

        sar -d 2 3   每2秒采样一次,连续采样3次,监控设备使用情况

        sar -u 2 3 -x pid  每2秒采样一次,连续采样3次,监控pid的CPU 的使用情况

    二十二、ps静态的结果输出某个时间点的程序运作情况

        ps aux

        ps -ef  

        两个命令均能查看目前所有正在内存当中的程序,不同点,第一个还包含程序的cpu、内存使用率。

        ps -ef | grep oscar   查看含有oscar字符串的进程的使用情况

    二十三、top动态输出程序的变化

    1)top命令举例:

        top -b -n 2 > /tmp/top.txt

        top 批次的方式更新2次,并将结果信息存到 /tmp/top.txt文件中

        top -d 3 -n 3   -p pid 

        每间隔三秒监控一次进程号为pid的进程使用情况,共更新3次

    2)在 top 执行过程当中常用的按键指令:

        P :以 CPU 的使用资源排序显示

        M:以 Memory 的使用资源排序显示

        N :以 PID 来排序

  • 相关阅读:
    Merge sorted ranges
    call_once/once_flag的使用
    对‘boost::serialization::singleton_module::get_lock()’未定义的引用
    C++多线程lock_guard
    长度为0的数组—— Arrays of Length Zero
    Utunbu VLC 播放器播放本机rtp码流
    Utunbu VLC 播放器播放本机h264码流
    Declaration of non-local variable in 'for' loop
    ZFEC--Demo--C语言接口
    malloc-demo
  • 原文地址:https://www.cnblogs.com/fsw-blog/p/4548869.html
Copyright © 2011-2022 走看看