shell常用命令&脚本编写

常用命令

  1. 想看看你的Shell是哪一种,执行命令: echo $SHELL

    在Linux中,$符号代表一个shell变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动
    的时候就有了默认值。例如,$SHELL;$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。
    echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。
        
    
  2. ls -la

    这行命令的意义是输出当前目录的所有文件的文件名,l代表“long”,a代表“all”,有了l选项,你会发现,输
    出的内容比较丰富,不只包括文件 名,还有文件的访问权限,所有者,所属组等。你会发现这个命令会在屏幕上
    输出大量的信息,如果当前目录的文件比较多的话。现在就是“pipe”出场的时候了。
    ls -la | more
    ls -l a*
    这个命令会列出在当前工作目录下所有的以小写a开头的文件,比如说abc.txt,alpha.jpg等等。
    ls a?cd
    这条命令会列出所有以小写a开头隔一个未知字符以小写cd结尾的所有文件。例如adcd,axcd,但是不会列出adfdcd,
    也不会列出axcd.txt。
    
    
  3. man:如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令,例如:

    man ls ,man输出的内容是为系统管理员和开发者编写的,如果你想了解更多命令的用法,你可以去找网络上
    的Linux命令文档,有一个非常方便的就是丹尼尔·巴雷特的Linux的袖珍指南。
        
    
  1. su和sudo

     su命令的作用是切换用户,这也被称为超级用户,因为在有些系统中su命令可以使你以系统的所有权限用户
     root登录。除非你是系统管理员,否则我绝不推荐你使用su切换到root,因为这可能给你带来很多麻烦。
     一个相对安全的多的办法是使用sudo命令,这个命令可以上你以root权限运行一个命令。这两个命令都需要
     系统密码。在大多数Linux的桌面发行版中这两个是相同的,就是你系统的第一个用户设置的密码。
    
  2. grep:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

     例如:
     grep foo /etc/passwd
     返回在password文件中所有的含有foo的行
     grep -i “foo” /etc/passwd
     -i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到。
     grep还支持递归搜索:
     grep -r “foo” /home/sjvn
     这条命令将会搜索/home/sjvn目录及其子目录下所有的包含“foo”的行
     grep也通常与其他命令串连起来使用,例如:
     ls -la | grep foo*
     列出当前目录下任何以foo开头的文件或目录。例如如下文件将被匹配:foo,foobar,foolish.txt等等。
    
  3. history : 显示出最近使用的全部命令

  4. ! : 返回上一次使用的命令

     如: ! ls 显示出上一次ls 命令的具体内容.选取哪一个命令后默认已经将该命令复制到剪切板,
     直接command+v就可以粘贴该命令了.
    
  5. cat + 文件名 : 列出该文件的内容

  6. mv +旧文件名 + 新文件名 : 更改文件名

  7. 切换文件目录

    cd : 根目录,即当前用户的目录
    cd . : 当前目录
    cd .. : 进入当前目录的上级目录
    
  8. ./可执行文件 : 执行当前文件

  9. ls : 列出当前用户的所有文件夹

  10. ls -F : 列出当前用户的文件夹,如是文件夹,文件名后面有/

  11. ls -lrt : 以文件修改的时间列出当前用户的文件夹

  12. tab : 补齐正在输入的文件名

  13. clear:如果你觉得你的屏幕上有太多的东西,看起来很讨厌,可以使用clear命令清空文件/目录命令

  14. cp:cp代表copy,就是复制,他可以复制一个或多个文件到指定的一个或多个目录下。

    一个通常的用法是:
    cp fred.txt ethel.txt
    把fred.txt中的内容复制到当前文件夹中名为ethel.txt中
    cp fred.txt /home/sjvn/docs/fred.txt
    把fred.txt复制到指定文件中。
    cp *.txt  /home/sjvn/docs/
    复制当前目录下所有以.txt结尾的文件到指定的目录下。
    cp -r /home/sjvn/docs/* /home/sjvn/backup
    递归的复制在/home/sjvn/docs/目录下的所有文件到指定的文件夹。
    
  15. hostname:显示你当前登录进去的计算机的名称。

  16. mv:mv(意义为move)顾名思义就是移动,可以移动指定文件到指定位置。当然这个命令有的时候还可以用来实现重命名。

    例如:
    mv fred.txt ethel.txt
    这条命令的作用你可以简单的认为是重命名fred.txt为ethel.txt。
    当然此命令还有其他用法,此处不再一一罗列,用法与cp类似,只是这条命令不再保留原文件。
    
  17. rm:rm代表remove,是删除的意思,所以我运行:

    rm fred.txt
    我将删除fred.txt。
    我强烈推荐你在执行rm命令的时候使用-i选项。这儿选项将在你执行命令的时候询问你是否要真的删除文件。就像这样:
    rm -i fred.txt
    

编写shell脚本

  1. 例如:find + <条件> 是执行命令,意思为查找文件

     $ find ./ -size +200M -exec du -h {} \;  
     //表示在当前目录下查找大于200M的文件
    
  2. 但是每一次输入这些命令,比较麻烦,如果有更多的命令需要一起执行,那将会更加麻烦,我们可以事先将我们需要执行的一系列命令放在一个文件中,这个文件就是一个脚本文件,以.sh结尾,然后编译脚本,最后执行脚本就可以得到我们想要执行一系列命令的结果,这对于我们经常用的一系列命令非常方便。

     vim findLarger200M.sh
     //创建一个脚本并打开
     find ./ -size +200M -exec du -h {} \;
     //在里面利用find写一个查找文件脚本
     chmod u+x findLarger200M.sh
     //编译脚本,生成可执行脚本文件
     ./findLarger200M.sh
     //执行,注意是 ./ + 脚本文件名
    
    原文作者:Jingege
    原文地址: https://www.jianshu.com/p/c001e145a7d6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞