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

  • 相关阅读:
    蓝桥杯训练 2n皇后问题
    AtCoder Grand Contest #026 B
    AtCoder Grand Contest #026 A
    AtCoder Beginner Contest 103
    7-26 单词长度(15 分)
    uva 10006 Carmichael Numbers
    java并发带返回结果的批量任务执行(CompletionService:Executor + BlockingQueue)
    并发容器之CopyOnWriteArrayList
    模板模式
    静态工具类中使用注解注入service
  • 原文地址:https://www.cnblogs.com/lzyws739307453/p/12909880.html
Copyright © 2011-2022 走看看