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,但是是很实用的一些命令。学习命令并不是一定要去背,要熟悉了解一些命令,最好的办法就是一行一行的执行,不断尝试,自然而然熟悉每行命令,每个参数。

    如果本文有什么写的不对的地方或有什么更好地建议和想法,欢迎在下方评论留言或私信我,大家一起进步学习!大佬勿喷~~

常用Linux Shell命令,了解一下!的更多相关文章

  1. 精选37条强大的常用linux shell命令组合

    任务                             命令组合 1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \;find . type f ...

  2. 37条常用Linux Shell命令组合

    序号 任务 命令组合 1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \; find . type f -size 0 -delete 2 查看进程, ...

  3. 转 精选37条强大的常用linux shell命令组合

    1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \; find . type f -size 0 -delete 2 查看进程,按内存从大到小排列 p ...

  4. 常用Linux shell命令汇总

    1.检查远程端口是否对bash开放:echo >/dev/tcp/8.8.8.8/53 && echo "open" 2.让进程转入后台:Ctrl + z 3 ...

  5. 常用Linux Shell命令组合

    序号 任务 命令组合 1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \;find . type f -size 0 -delete 2 查看进程,按 ...

  6. Linux下最常用的Shell命令的介绍

    Shell基础: 你可以通过打开Linux的terminal(终端)来执行Shell命令.Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell.在现在的大多数Linux ...

  7. 常用的shell命令整理

    工作快一年了,shell命令也玩了一年了.还是有点积累的,下面是本人常用的. 1.pwd | xargs -i basename {}   获取当前所在目录的名称 2.ps -ef|grep -w   ...

  8. 73条日常Linux shell命令汇总,总有一条你需要!

    转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...

  9. Lua 常用的shell命令

    lua作为一种小巧的脚本语言,其函数等动作可以使用shell命令进行运行和调试,以下是几个常用的shell命令.基本格式是  lua [选项参数] [脚本参数] (1)%lua 程序名.lua     ...

随机推荐

  1. java web应用启动报错:Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use.

    Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The serve ...

  2. Vuex mapState的基本使用

    mapState把Store中的state映射到组件中的计算属性 Store文件 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) ...

  3. Android 开发学习进程0.13 Androidstudio快捷键 xmlns

    xmlns XML namespace xml命名空间 其中主要是定义xml文件定义位置 前缀有三种,android app tools 后面为唯一标识符URI android 表示为引用自安卓系统 ...

  4. win10 + Ubuntu 20.04 LTS 双系统 引导界面美化

    版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ZChen1 ...

  5. GitHub标星120K+的JDK并发编程指南,连续霸榜GitHub终于开源了

    前言 在编程行业中,有一个东西是和广大程序员形影不离的,在最一开始接触编程就是配置它的运行环境,然后java / javac,对,这个东西就是jdk 昨天项目刚上线,可以稍微休息一下了,但是猛的闲下来 ...

  6. 快速搭建一个Vue-cli项目(简单到爆炸)

    引言: 2013-2020年,这7年是web前端技术的一个高速发展期,也是前端开发岗位的考验期. 在我接触前端时,JQuery十分热门,开发者从原生JS到JQ的应用,可以说是大大提高了开发效率,也被广 ...

  7. PythonCrashCourse 第九章习题

    创建一个名为Restaurant 的类,其方法__init__() 设置两个属性: restaurant_name 和cuisine_type 创建一个名为describe _restaurant ( ...

  8. Nginx学习简记_part1

    内容概览 nginx简介 (1)介绍nginx的应用场景和具体可以做什么事情 (2)介绍什么是反向代理 (3)介绍什么是负载均衡 (4)介绍什么是动静分离 nginx安装 (1)介绍nginx在lin ...

  9. HTML5移动开发之路(1)——jqMobi中Side Menu实现(类似人人网)

    记得以前在做Native App的时候类似于人人网侧边滑动的效果非常的热,很多app仿照该效果进行开发,在jqMobi中也有类似的效果被称为Side Menu.下面我们来一步一步实现该效果. 首先新建 ...

  10. ACM集训第一次积分赛赛前复习+day4

    不知不觉4天过去了,我们迎来了我们第一次积分赛,赛前的四天我们学了以下知识点吧: day 1.排序 之前一直想用qsort,但是总是写不明白,STL的sort()可以说是很方便了. 先写一个最基础的数 ...