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—增强for循环与for循环的区别/泛型通配符/LinkedList集合

    增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的. 它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作. ...

  2. 2020-03-25:快排、堆排和归并都是O(nlog n)的算法,为何JDK选择快速排序?

    福哥答案2020-03-26: 口诀如下:冒选插希快 堆归计桶基(冒泡,选择,插入,希尔,快速,堆,归并,计数,桶,基数)冒线 平平 稳常小选平 平平 不常小插线 平平 稳常序希线 四组 不常组快四 ...

  3. C#LeetCode刷题之#237-删除链表中的节点(Delete Node in a Linked List)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3832 访问. 请编写一个函数,使其可以删除某个链表中给定的(非末 ...

  4. 浅谈:什么是.NET

    .NET是 Microsoft XML Web services 平台.XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统.设备或编 ...

  5. python设计模式之享元模式

    python设计模式之享元模式 由于对象创建的开销,面向对象的系统可能会面临性能问题.性能问题通常在资源受限的嵌入式系统中出现,比如智能手机和平板电脑.大型复杂系统中也可能会出现同样的问题,因为要在其 ...

  6. 对于python装饰器结合递归的进一步理解

    对于python装饰器结合递归的进一步理解 代码如下: import functools def memoize(fn): print('start memoize') known = dict() ...

  7. eric4 编译 中文 控件 报错 解决

    eric4 在qt设计师界面, 设计 中文名控件 时,有时候不能编译,报错如下: 解决办法: 打开eric4---setting----preferences 按下图操作后 ,重新启动eric4即可解 ...

  8. Cobalt Strike简单使用

    ---恢复内容开始--- 一.介绍: 后渗透测试工具,基于Java开发,适用于团队间协同作战,简称“CS”. CS分为客户端和服务端,一般情况下我们称服务端为团队服务器,该工具具有社工功能(社会工程学 ...

  9. C++ Templates(1.3 多模板参数 Multiple Template Parameters)

    返回完整目录 目录 1.3 多模板参数 Multiple Template Parameters 1.3.1 为返回类型设置模板参数参数 Template Parameters for Return ...

  10. Java 添加条码、二维码到PDF文档

    本文介绍如何通过Java程序在PDF文档中添加条码和二维码.创建条码时,可创建多种不同类型的条码,包括Codebar.Code11.Code128A.Code128B.Code32.Code39.Co ...