Linux命令及shell编程浅谈

Linux命令及shell编程浅谈

  • Linux文件系统结构

image-20220515190158467.png
  • 通配符

    • 匹配任何字符任何数目*的字符
    • ?匹配任何单字符
    • [...] 匹配任何包含在括号里的单字符
    • 目录表示:. 指示当前目录,.. 表示当前目录的父目录
  • 启动退出命令

    • logout 注销
    • exit 退出
    • reboot 重启系统(需要管理员权限)
    • shutdown 关机 (需要管理员权限 )
  • 目录操作命令

    • pwd 显示出用户当前工作目录的全部路径(print working directory)
    • mkdir directory_name 创建新目录(make directory)
    • cd directory_name 改变当前工作目录
    • rmdir directory_name 删除目录,但要求目录中不存在文件或子目录
  • 常用命令

    • ls [-a/-R/-l/-lc/-lu] [dir_name] 显示目录命令
  • cat filename 显示出文件内容

    • view filename 只能读出文件内容
  • head [-i] filename 显示文件的开始i行

    • tail [-i] filename 显示文件的末i行
  • pr filename 显示格式化的文本内容(print)

    • cp source_file target_file 复制文件(新的文件可以同名)
  • rm -i/r/f file_or_dir 删除文件 (i互动删除,删除前再确认一次,r递归删除,强制删除)

    • chmod pattern filename 修改文件权限
  • find pathname [option] expression 寻找文件名

    • diff filename1 filename2 比较来两个文件的不同
  • touch filename 改变文件日期,不对文件内容改动,若文件不存在则创建新文件

    • date 显示或设置日期(只有root用户才有权设置日期)
  • cal [month] year 显示某年指定的日历

    • time [command] 计算程序或命令在其执行所消耗的时间
  • history 帮助用户回忆执行过的命令

    • man [command_name] 显示参考手册,提供联机帮助信息
  • echo [-n] [arguments] 将参数即字符串至标准输出即显示器

  • 简单实例一

    1. 设定变量file的值为/etc/passwd

    2. 使用循环变量读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容

    3. 把这些行保存至/tmp/mypasswd文件中

      #!/bin/bash
      file="/etc/passwd"       # 务必使用“”
      for i in 2 4 6 10 13 15
      do
              head -$i $file   # 务必使用 $
              head -$i $file>"/tmp/mypasswd"
      
      done
      
      
  • 简单实例二

    1. 传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商。

      #!bin/bash
      a=$1      # 执行脚本是应为 sh filename argument1 argument2
      b=$2
      var1=`expr $a + $b`   # 务必注意运算符与参数之间的空格
      var2=`expr $a - $b`
      var3=`expr $a \* $b`  # 注意 \*
      var4=`expr $a / $b`
      echo "a+b=$var1"
      echo "a-b=$var2"
      echo "a*b=$var3"
      echo "a/b=$var4"
      
      
  • 简单实例三

    1. 显示系统日期和时间,而后创建目录/tmp/lstest

    2. 切换工作目录至/tmp/lstest

    3. 创建目录a1d,b56e,6test

    4. 创建空文件xy,x2y,732

    5. 列出当前目录下以a,x或者6开头的文件或目录

    6. 列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录

      #!/bin/bash
      date
      mkdir /tmp/lstest
      cd /tmp/lstest
      mkdir a1d b56e 6test  # 注意空格
      touch xy x2y 732      # 注意空格
      ls [ax6]*             # 注意正则表达式的运用
      ls [[:alpha:]][[:digit:]]*   # 注意[]
      
      
  • 简单实例四

    1. 编写一个名为myfirstshell.sh的脚本

    2. 包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的

    3. 问候用户

    4. 显示日期和时间

    5. 显示这个月的日历

    6. 显示您的机器名

    7. 显示当前这个操作系统的名称和版本

    8. 显示父目录中的所有文件的列表

    9. 显示root正在运行的所有进程

    10. 显示变量TERM、PATHHOME的值

    11. 显示磁盘使用情况

    12. 用id命令打印出您的组ID

    13. 跟用户说“Good bye”

    ```shell
    #!/bin/bash
    # author:@Ezralin 
    # name:myfirstshell
    # pourpose: to improve myself
    user=`whoami`
    case $user in
        root)
            echo "hello root";;
        Ezralin)
            echo "hello Bin";;
        *)
            echo "hello $user,welcome"
    esac
    echo "日期和时间:`date`"
    echo "本月的日历:`cal`"
    echo "本机的机器猫:`uname -n`"
    echo "当前这个操作系统的名称和版本:`uname -s;uname -r`"
    echo "父目录中的所有文件的列表:`ls ../`"
    echo "root正在运行的所有程序:`ps -u root`"
    echo "变量TERM的值:$TERM"
    echo "变量PATH的值:$PATH"
    echo "变量HOME的值:$HOME"
    echo "磁盘的使用情况:`df`"
    echo "用id命令打印出你的组ID:`id -g`"
    echo "Good bye!"
    
    
    ```
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容