zoukankan      html  css  js  c++  java
  • 常用Linux Shell命令,了解一下!


    1 前言

    1. Linux Shell命令应该是算是非常入门的东西,但是实际上在使用的时候,会遇到各种各样的问题,前几天写了一个课程设计,要杀死一个进程。
      我们正常的操作是:
      ps | grep xxx
      kill -9 xxxx
      
    2. kill命令是常用的,但是用killall命令会更快:
      killall -9 xxx
      

    2 正文

    2.1 关机/重启

    1. #关机(root用户)
      shutdown -h now  # 立刻关机
      shutdown -h +10  # 10分钟后关机
      shutdown -h 12:00:00  # 12点整关机
      halt  # 等于立刻关机
      
      #重启
      shutdown -r now  # 立刻重启
      reboot  # 等于立刻重启
      

    2.2 echo

    1. root@Ubuntu:~# a="Hello World!"
      root@Ubuntu:~# echo a  # 单纯的把字母a打印
      a
      root@Ubuntu:~# echo &a  # 报错
      [1] 8012
      
      a:command not found
      [1]+  Done               echo
      root@Ubuntu:~# echo $a  # 正确打印a代表的字符串
      Hello World!
      root@Ubuntu:~#
      

    2.3 vim文本编辑器

    2.3.1 最基本用法

    1. vim filename
      
    2. 首先会进入“一般模式”,此模式只接受各种快捷键和命令,不能直接编辑文本内容
    3. i键,就会从一般模式进入编辑模式,在此模式下,敲入的都是文本内容
    4. 编辑完成之后,按Esc键退出编辑模式,重新回到一般模式
    5. 再按:,进入“底行命令模式”,输入wq命令,回车即可保存退出

    2.3.2 常用快捷键

    1. # 下面的一些快捷键或命令只是简单的一小部分,我只是列举出来一些比较常用的命令
      # 在一般模式下使用
      a  # 在光标后一位开始插入
      A  # 在该行的最后插入
      I  # 在该行的最前面插入
      gg  # 直接跳到文件的首行
      G  # 直接跳到文件的尾行
      nG  # 直接跳到第n行
      dd  # 删除一行
      3dd  # 删除3行
      yy  # 复制一行
      3yy  # 复制3行
      p  # 粘贴
      u  # undo撤销
      v  # 进入字符选择模式,选择完成后,按y复制,按p粘贴
      Ctrl+v  # 进入块选择模式,选择完成后,按y复制,按p粘贴
      V(Shift+v)  # 进入行选择模式,选择完成后,按y复制,按p粘贴
      

    2.3.3 查找/替换

    1. :set nu  # 显示行号
      :set nonu  # 隐藏行号
      :/you  # 查找文本中出现的you,并定位到第一个出现的地方,按n可以定位到下一个(按N定位到上一个)
      :s/aaa/bbb  # 查找光标所在行的第一个aaa,替换为bbb
      :%s/aaa/bbb  # 查找文本中所有的aaa,替换为bbb
      

    2.4 拷贝/删除/移动/重命名

    1. cp filename /home/tmp/  # 将filename拷贝到 /home/tmp/下
      rm /home/tmp/filename  # 删除/home/tmp/下的filename文件
      rm -f /home/tmp/filename  # 强制删除/home/tmp/下的filename文件
      mv /home/tmp/filename ./  # 移动/home/tmp/下的filename文件到本层目录
      mv filename1 filename2  #将filename1重命名为filename2
      

    2.5 打包压缩

    1. gzip压缩
      gzip a.txt
      
    2. gzip解压
      gunzip a.txt.gz
      gzip -d a.txt.gz
      
    3. bzip2压缩
      bzip2 a
      
    4. bzip2解压
      bunzip2 a.bz2
      bzip2 -d a.bz2
      
    5. 打包:将指定文件或文件夹整理成包
      tar -cvf bak.tar ./a  # 将本目录下的a打包成bak.tar
      tar -rvf bak.tar /etc/password  # 将/etc/password追加到bak.tar中
      
    6. 解包
      tar -xvf bak.tar
      
    7. 打包并压缩
      tar -zcvf a.tar.gz a/
      
    8. 解包并解压缩
      tar -zxvf a.tar.gz
      tar -zxvf a.tar.gz -C /usr  # 解压到/usr/下
      
    9. 查看压缩包内容
      tar -ztvf a.tar.gz
      
    10. 打包并压缩成bz2
      tar -jcvf a.tar.bz2
      
    11. 解包并解压缩
      tar -jxvf a.tar.bz2
      

    2.6 常用查找命令的使用

    1. 查找可执行的命令所在路径
      which ls
      
    2. 查找可执行的命令和帮助的位置
      whereis ls
      
    3. 从某个文件夹开始查找文件
      find / -name "file*"
      find / -name "file*" -ls
      
    4. 查找并删除
      find / -name "file*" -ok rm {} ;
      find / -name "file*" -exec rm {} ;
      
    5. 查找用户为lzyuse的文件
      find /usr -user lzyuse -ls
      
    6. 查找用户为lzyuse的文件夹
      find /home -user lzyuse -type d -ls
      
    7. 查找权限为777的文件
      find / -perm -777 -type d -ls
      
    8. 在指定目录不分大小写查找某个文件
      find ./a/ -iname a.txt
      
    9. 显示历史命令
      history  # 查看历史命令
      history -c  # 清理历史命令记录
      

    2.7 grep命令

    1. 最常用的全字匹配
      grep -wrn lzy ./a/
      
    2. 查找某个字符串,但是不在指定文件夹查找
      grep -E "http" ./ -R --exclude-dir=./a/
      grep -E "http" . -R --exclude-dir={.git,res,bin}
      grep -E "http" . -R --exclude=*.{java,js}  # 排除扩展名为java和js的文件
      

    2.7.1 基本使用

    1. 查询包含lzy的行
      grep lzy /etc/password
      grep lzy ./*.txt
      
    2. cut截取以:分割保留第七段
      root@Ubuntu:~# grep root /etc/passwd
      root:x:0:0:root:/root:/bin/bash
      root@Ubuntu:~# grep root /etc/passwd | cut -d: -f7
      /bin/bash
      root@Ubuntu:~# 
      
    3. 查询不包含lzy的行
      grep -v lzy /etc/passwd
      
    4. 正则表达包含lzy
      grep 'lzy' /etc/passwd
      
    5. 正则表达
      grep 'l.*y' /etc/passwd
      
    6. 正则表达以lzy开头
      grep '^lzy' /etc/passwd 
      
    7. 正则表达以lzy结尾
      grep 'lzy$' /etc/passwd
      

    2.7.2 正则表达

    1. .   # 任意一个字符
      a*  # 任意多个a(零个或多个a)
      a?  # 零个或一个a
      a+  # 一个或多个a
      .*  # 任意多个任意字符
      .  # 转义.
      o{2}  # o重复两次
      
    2. 查找不是以#开头的行
      grep -v '^#' a.txt | grep -v '^$'
      
    3. 以h或r开头的
      grep '^[hr]' /etc/passwd
      
    4. 不是以h或r开头的
      grep '^[^hr]' /etc/passwd
      
    5. 不是以h到r开头的
      grep '^[^h-r]' /etc/passwd
      

    2.8 Linux 文件/文件夹

    2.8.1 Linux文件权限的描述格式解读

    1. drwxr-xr-x(二进制表示 111 101 101 --> 755)
      d: 标识节点类型(d:文件夹 -:文件 l:链接)
      r: 可读 w: 可写 x: 可执行
      第一组rwx: 表示这个文件夹的拥有者对它的权限: 可读可写可执行
      第二组r-x: 表示这个文件夹的所属组用户对它的权限: 可读,不可写,可执行
      第三组r-x: 表示这个文件夹的其他用户(相对于上面两类用户)对它的权限: 可读,不可写,可执行

    2.8.2 修改文件权限

    1.  chmod g-rw phd.dat  # 表示将phd.dat对所属组的rw权限取消
       chmod o-rw phd.dat  # 表示将phd.dat对其他人的rw权限取消
       chmod u+x phd.dat  # 表示将phd.dat对所属用户的权限增加x
       chmod a-x phd.dat  # 表示将phd.dat对所用户取消x权限
      
       # 也可以用数字的方式来修改权限
       chmod 664 phd.dat  # 将权限修改成 rw-rw-r--
       # 如果要将一个文件夹的所有内容权限统一修改,则可以添加-R参数
       chmod -R 770 a/
      

    2.8.3 修改文件所有权

    1. 只有root权限能执行
      chown angela aaa  # 改变所属用户
      chown :angela aaa  # 改变所属组
      chown angela:angela aaa/  # 同时修改所属用户和所属组
      

    2.8.4 统计文件或文件夹的大小

    1. du -sh a/  # 查看文件夹a的大小
      du -sh a.txt  # 查看文件a.txt的大小
      df -h  # 查看磁盘空间
      

    3 END

        这些Linux shell命令只是一些简单常见的命令,并没有多么的nb,但是是很实用的一些命令。学习命令并不是一定要去背,要熟悉了解一些命令,最好的办法就是一行一行的执行,不断尝试,自然而然熟悉每行命令,每个参数。
        如果本文有什么写的不对的地方或有什么更好地建议和想法,欢迎在下方评论留言或私信我,大家一起进步学习!大佬勿喷~~

  • 相关阅读:
    【Codechef】Chef and Bike(二维多项式插值)
    USACO 完结的一些感想
    USACO 6.5 Checker Challenge
    USACO 6.5 The Clocks
    USACO 6.5 Betsy's Tour (插头dp)
    USACO 6.5 Closed Fences
    USACO 6.4 Electric Fences
    USACO 6.5 All Latin Squares
    USACO 6.4 The Primes
    USACO 6.4 Wisconsin Squares
  • 原文地址:https://www.cnblogs.com/lzyws739307453/p/12909880.html
Copyright © 2011-2022 走看看