linux之shell常用命令介绍

一、cd    切换目录

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

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

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

 

二、echo    输出

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

    echo -e "\n"         输出一行空行,-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\nline2" | 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)语句块工作原理:

    从文件或者标准输入读入有‘\n‘换行符分割的一条记录,然后将该条记录  按指定的分隔符划分字段,$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  ‘\n‘

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

 

二十、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 来排序

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。