Linux命令

文件和目录

  • tree

    • 以树状形式显示当前文件和目录
    • 需要安装该软件:sudo apt install tree(centos下)
    • tree -L 2
  • ls

    • 查看指定目录下所有文件和目录信息

      • -a(all) -- 列出当前目录下所有文件内容
      • -R(recursive) -- 同时列出所有子目录层
      • -l --除了文件名之外,还将文件的权限,所有者,文件大小等信息详细列出来
  • cd

    • 进入指定目录(cd + path)

      • 相对路径 -> cd ./robertohuang/tomcat

      • 绝对路径 -> cd /home/robertohuang/tomcat

      • .. -> 当前目录的上一级

      • . -> 当前目录

      • 进入家目录(/home/robertohuang)三种方式

        • cd
        • cd ~
        • cd /home/robertohuang
  • pwd

    • 查看当前所在目录(printf working directory的缩写)
  • 创建/删除目录

    • 创建:mkdir + 目录名

      • mkdir world -> 创建world目录
      • mkdir -p world/a/b -> 创建多级目录加参数-p
    • 删除:rmdir + 目录名

      • 只能删除空目录,使用频率不高
  • 创建/删除文件

    • 创建:touch + 文件名
    • 删除:rm + 文件名
  • cp

    • 拷贝文件

      • cp file1.txt file2.txt -> 将file1.txt中的内容拷贝到file2.txt

        • 文件不存在创建文件
        • 文件存在,覆盖原文件
    • 拷贝目录

      • cp -r dir1 dir2 -> 将目录dir1中的内容拷贝到dir2中

        • dir2 目录不存在创建目录
  • scp命令

    • scp:ssh copy的缩写

    • 使用该命令的前提条件

      • 目标主机已经成功安装openssh-server
    • 使用格式

      • scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径 /保存到本机的绝对(相对)路径

        • 在后续会提示输入yes此时,只能输"yes"而不能简单输入"Y"
      • scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径 /保存到本机的绝对/相对路径

      • scp -r usertest@192.168.29.128:/home/usertest/test /home/robertohuang/test

      • 拷贝目录需要加参数 -r

  • 查看文件内容

    • cat

      • cat file.txt -> 将文件内容一次性输出到终端,如果文件太长,无法再终端全部显示
    • more

      • more + 文件名

      • 文件内容分页显示到终端,但是只能一直向下浏览,不能回退

      • 相关操作

        • 回车:显示下一行
        • 空格:显示下一页
        • ctrl+c 或 q:退出
    • less

      • less + 文件名

      • 文件内容分页显示到终端,可以自由上下浏览

      • 相关操作

        • 回车:显示下一行
        • 空格:显示下一页
        • ctrl+p 或 ↑:滚动到上一行
        • ctrl+n 或 ↓:滚动到下一行
        • q:退出
    • head

      • 从文件头部开始查看前x行的内容
      • head -5 hello.c --> 查看hello.c文件前五行的内容
      • 如果没有指定行数,默认显示前10行内容
    • tail

      • 从文件尾部开始查看后x行的内容
      • tail -5 hello.c --> 查看hello.c文件后五行的内容
      • 如果没有指定行数,默认显示后10行内容
  • ln

    • 软连接(符号链接)

      • 相当于windows下快捷方式

      • 注意事项

        • 创建软链接,源文件要使用绝对路径
        • 软连接大小:源文件+路径 的总字节数
        • 目录可以创建软链接
      • 示例:ln -s /home/robertohuang/a.txt(源文件名+绝对路径) a.test(软链接的名字)

    • 硬链接

      • 注意事项

        • 以文件副本的形式存在,但不占用实际空间
        • 不允许给目录创建硬链接
        • 硬链接只有在同一个文件系统中才能创建
      • 硬链接能够同步更新

        • linux下每一个文件都对应一个Inode,创建硬链接后两个文件的Inode是相同的
        • 查看文件的Inode:stat a.txt
        • 文件创建硬链接后,硬链接计数+1,删除一个硬链接,硬链接计数-1
  • 文件或目录属性

    • wc

      • 查看文件的字数、字节数、行数
      • wc a.txt
        •     行数  字数  字节数  文件名

          结果:7 23 120 a.txt

    • 参数

      • -c:只显示字节数
      • -l:只显示行数
      • -w:只显示字数
    • od

      • 查看二进制文件信息
    • du

      • 查看某个目录的大小(disk use的缩写)
    • df

      • 查看磁盘的使用情况(disk free的缩写)
    • 一般加参数 -h(human)以人类能看懂的方式显示

  • which

    • 查看指定命令所在的路径
    • which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
  • 删除:rm

    • 删除文件:rm file1.txt

    • 删除目录:rm -r dir 递归删除

    • rm删除的文件或目录是不易恢复的,数据不会放入回收站中

    • 相关参数

      • -i -> 提示用户是否需要删除目录或文件
      • -f -> 强制删除,使用rm命令的时候默认已经添加了-f参数

文件权限,用户,用户组

  • whoami

    • 查看当前登录用户
  • chmod

    • 修改文件访问权限(change mod的缩写)

    • 修改方式

      • 文字设定法

        • chmod [who] [+|-|=] [mode] 文件名

          • 操作对象【who】

            • u -- 用户(user)
            • g -- 同组用户(group)
            • o -- 其他用户(other)
            • a -- 所用用户(all)【默认】
          • 操作符【+-=】

              • -- 添加权限
              • -- 取消权限
            • = -- 赋予给定权限并取消其他权限
          • 权限【mode】

            • r -- 读
            • w -- 写
            • x -- 执行
        • 例:chmod u + wx file.txt

      • 数字设定法

        • 数字表示的含义

          • 0 -- 没有权限(-)
          • 1 -- 执行权限(x)
          • 2 -- 写权限(w)
          • 4 -- 读权限(r)
        • 操作符【+-=】

            • -- 添加权限
            • -- 取消权限
          • = -- 赋予给定权限并取消其他权限 (默认为=)
        • 例:chmod 777 file.txt

  • chown

    • 将指定文件的拥有者改为指定的用户或组(change owner的缩写)

    • 用法

      • chown + 文件所属用户 + 文件或目录名

        • chown robertohuang text.txt
      • chown + 文件所属用户:文件所属组 + 文件或目录名

        • chown robertohuang:robertohuang text.txt
  • chgrp

    • 改变文件或目录的所属群组

    • 用法

      • chgrp + 用户组 + 文件或目录名
      • chgrp robertohuang text.txt

用户管理

  • 创建用户

    • adduser + 用户名

    • useradd -s /bin/bash -g usertest -d /home/usertest -m usertest

      • -s:指定新用户登陆时shell类型
      • -g:指定所属组,该组必须已经存在
      • -d:用户家目录
      • -m 用户家目录不存在时,自动创建该目录
  • 设置用户组

    • groupadd usertest
  • 删除用户

    • deluser + 用户名

    • userdel -r usertest

      • 选项 -r 的作用是把用户的主目录一起删除
  • 切换用户

    • su + 用户名
  • 设置密码

    • sudo passwd + 用户名(luffy)
    • passwd root
    • passwd
    • 设置root密码
  • 退出登录用户

    • exit
  • 用户信息文件

    • /etc/passwd
    • /etc/group
    • /etc/shadow
  • visudo添加用户到sudoer组

查找和检索

  • find

    • 按文件名查询:-name

      • find + 路径 + -name + 文件名
      • find /home/robertohuang -name a.txt
    • 按文件大小查询:-size

      • find + 路径 + -size + 范围

        • 范围

          • 大于:+表示 -- +100k
          • 小于:-表示 -- -100k
          • 等于:不需要添加符号 -- 100k
        • 大小

          • M必须大写
          • k必须小写
      • 例子:

        • 等于100k的文件: find ~/ -size 100k
        • 大于100k的文件: find ~/ -size +100k
        • 大于50k, 小于100k的文件: find ~/ -size +50k -size -100k
    • 按文件类型查询:-type

      • find + 路径 + -type + 类型

        • 类型

            1. 普通文件类型用 f 表示而不是 -
            1. d -> 目录
            1. l -> 符号链接
            1. b -> 块设备文件
            1. c -> 字符设备文件
            1. s -> socket文件,网络套接字
            1. p -> 管道
      • 例子:find /home/robertohuang -type d

  • grep

    • 按文件内容查找

      • 参数:-r

      • grep -r + “查找的关键字” + 路径

        • grep -r "main void" /home/robertohuang

进程管理

  • who

    • 查看当前在线用户的情况

      • 登录的用户名
      • 使用的设备终端(pts)
      • 登录到系统的时间
  • ps

    • 查看整个系统内部所运行的进程状况

    • 涉及的参数

      • a:(all)当前系统所有用户的进程
      • u:查看进程所有者及其他一些信息
      • x:显示没有控制终端的进程 -- 不能与用户进行交互的进程【输入、输出】
      • -e:显示所有进程
      • -f:显示UID,PPIP,C与STIME栏位
    • 显示当前用户下所有进程

      • ps aux
    • 对显示的进程过滤

      • ps aux | grep xxx

        • 什么是管道(|)

            - 指令1的输出作为指令2的输入
            - 指令2处理完毕,将信息输出到屏幕
        • grep查询是需要占用一个进程的,所有结果 > 2 才能说明查询结果存在

        • 如果结果有一条,表示没有查询的进程

        • 查询结果中PID表示进程ID

  • kill

    • 用来终止指定的进程(terminate a process)的运行

    • 查看信号编号

      • kill -l
    • 杀死进程

      • kill -9 89899【PID-进程标识号】

        • 向当前进程发送了9号信号(SIGKILL)
  • env

    • 查看当前进程环境变量

    • 环境变量

      • 当前系统下用户的配置路径信息

      • 格式为键值对:key=value:value (多个值之间用 : 分隔)

      • PATH:该环境变量中记录着shell命令解析器去查找命令的目录位置,从前往后的顺序查找

        • LANG:语言以及字符集
  • top

    • 相当于windows下的任务管理器

      • 文字版
      • 不能翻页

压缩包管理

  • .gz格式

    • 压缩:gzip命令

      • 压缩过程中不保留源文件
      • 不能对目录进行压缩
      • 不能对多个文件进行打包压缩
    • 解压缩:gunzip 命令

  • .bz2格式

    • 压缩:bzip2命令

      • 通过使用参数 -k(keep) 保留源文件
      • 不能对目录进行压缩
      • 不能对多个文件进行打包压缩
    • 解压缩:bunzip2命令

  • zip

    • 打包

      • zip -r + 打包之后的文件名(dir.zip) + (打包的目录)dir
    • 解包

      • unzip dir.zip
      • 使用参数-d来解压到指定目录 unzip dir.zip -d /home/robertohuang/test
  • tar

    • 该命令可以只打包不压缩

    • 通过添加参数,来完成文件的压缩和解压

      • 参数

        • z -> 用 gzip 来压缩/解压缩文件
        • j -> 用 bzip2 来压缩/解压缩文件
        • c -> create,创建新的压缩文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
        • x -> 从压缩文件中释放文件
        • v -> 详细报告tar处理的文件信息
        • f -> 指定压缩文件的名字
      • 压缩

        • tar + 参数(zcvf) + 压缩包名字.tar.gz + 原材料(要打包压缩的文件或目录)
        • tar + 参数(jcvf) + 压缩包名字.tar.bz2 + 原材料(要打包压缩的文件或目录)
      • 解压缩

        • tar + 参数(zxvf) + 已有的压缩包(test.tar.gz)

        • tar + 参数(jxvf) + 已有的压缩包(test.tar.bz2)

        • 指定解压目录:添加参数 -C(大写)

          • tar zxvf test.tar.gz -C + 解压目录(/home/robertohuang)

网络管理

  • ifconfig

    • 获取网络接口配置信息,还可以修改这些配置
    • 获取网络接口信息
  • ping

    • 测试与目标主机的连通性

    • 命令格式

      • ping [参数] [主机名或IP地址]
    • 参数

      • -c 数目:在发送指定数目的包后停止。
      • -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次
  • nslookup

    • 需要先安装nslookup: sudo apt-get install bind-utils
    • 查看服务器域名对应的IP地址
    • 一般访问网站都是使用域名,如:www.baidu.com,使用该命令就可查看百度所有服务器的IP地址

磁盘管理

  • 增加硬件
  • 格式化
  • blkid获得UUID
  • 修改fstab

其他命令

  • 清屏

    • clear
    • Ctrl + l
  • 查看帮助命令

    • man + 命令,如man ls
  • 设置或查看别名

    • 查看

      • alias
    • 设置

      • alias pag='ps aux | grep'

        • 需要长久有效需要去设置配置文件:.bashrc
  • echo

    • 在显示器上显示数据

      • 普通数据:echo 字符串
      • 显示环境变量:echo $PATH
      • 显示上一次程序退出值:echo $?
      • $ : 取值

?:最近一次程序退出时的返回值

  • 关机重启

    • poweroff

    • reboot

    • shutdown

      • 参数

        • -t<秒数>:送出警告信息和删除信息之间要延迟多少秒
        • -k:只是送出信息给所有用户,但不会实际关机
        • -r:shutdown之后重新启动
        • -h:将系统关机
        • -n:不调用init程序进行关机,而由shutdown自己进行
        • -f:重新开机时,跳过fsck指令,不检查档案系统
        • -F:重新开机时,强迫做fsck检查
        • -c:将已经正在shutdown的动作取消
      • 例子:

        • shutdown -r now 立刻重新开机
        • shutdown -h now 立刻关机
        • shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有真的关机
        • shutdown -t3 -r now 立刻重新开机,但在警告和删除processes 之间, 延迟3秒钟.
        • shutdown -h 10:42 'Hey! Go away!' 10:42 分关机
        • shutdown -r 10 'Hey! Go away!' 10 分钟后关机
        • shutdown -c 将刚才下的shutdown指令取消,必须切换至其它tty,登入之後,才能下此一指令
        • shutdown now切换至单人操作模式(不加任何选项时)
  • free

    • 查看内存使用情况

Linux目录结构

根目录结构 /

  • dev

    • 设备文件所在目录(device的缩写)
  • etc

    • 包含了当前操作系统用户所有配置的相关信息
  • home

    • 当前操作系统所安装的用户的主目录
  • lib

    • 操作系统使用的库文件以及相关的配置都放在此目录下
  • mnt

    • 手动挂载的目录
  • media

    • 系统自动挂载目录
  • usr

    • unix软件资源包管理目录,存放的是当前用户下的一些东西
  • bin

    • Linux操作系统下可执行的系统级的二进制命令(binary 的缩写)
  • sbin

    • 超级用户需要用到的一些二进制命令存储在该目录(super binary的缩写)
  • boot

    • 系统开机时需要加载的一些文件和配置
  • lost+found

    • 存放系统错误产生的文件碎片,方便用户查找和恢复
  • proc

    • 内核提供的一个接口,主要用来存储系统统计信息
  • root

    • root用户的宿主目录
  • run

    • 存放系统运行时需要的一些文件

目录路径介绍

  • 绝对路径

    • 从根目录开始描述的路径,也就是从/开始
  • 相对路径

    • 从当前位置开始描述的路径
    • .表示当前目录
    • ..表示当前目录的上一级目录
    • 两个临近目录直接进行切换 命令:cd -
  • robertohuang@robertohuang:~$

    • 1.第一个robertohuang:当前登录的用户
    • 2.@:英文at,在的意思
    • 3.第二个robertohuang:主机名
    • 4.~:当前工作目录的位置,宿主目录
    • 5.$:表示当前登录的用户为普通用户 如果为#则是超级用户

vim操作

描述

  • 是一个文本编辑程序
  • 没有菜单,只有命令,且命令繁多

基本工作模式

  • 命令模式

    • 移动光标

      • h:← 左移
      • l:→ 右移
      • j:↓ 下移
      • k:↑ 上移
      • gg: 光标移动文件开头
      • G: 光标移动到文件末尾
      • 0:光标移动到行首
      • $:光标移动到行尾
      • 123G:跳转到第123行
    • 删除

      • x:删除光标后一个字符,相当于Del

      • X:删除光标前一个字符,相当于Backspace

      • dw:删除光标开始位置的字,包含光标所在字符

        • 光标必须移动到删除单词的首字符上
      • d0:删除光标前本行所有内容,不包含光标所在字符

      • D(d$):删除光标后本行所有内容,包含光标所在字符

      • dd:删除光标所在行

      • n dd:删除指定的行数

      • 并不是真的删除,实际上是剪切

    • 撤销操作

      • u:一步一步撤销
      • Ctr-r:反撤销
    • 复制粘贴

      • yy:复制当前行,n yy复制n行
      • p:在光标所在位置向下新开辟一行,粘贴
      • P:在光标所在位置向上新开辟一行,粘贴
    • 可视模式

      • v:按字移动
      • 配合 h、j、k、l 使用
    • 使用y复制选中内容

    • 查找操作

      • /hello -> 从光标所在位置向后查找hello

        • n:下一个
        • N:上一个
      • ?hello -> 从光标所在位置向前查找hello

        • n:上一个
        • N:下一个
      • 在要查询的单词上使用#进行查找

    • 替换操作

      • r: 替换当前字符
    • 文本行移动

      • >>:文本行右移
      • <<:文本行左移
  • 文本输入模式

    • 进入输入模式

      • i:插入光标前一个字符
      • I:插入行首
      • a:插入光标后一个字符
      • A:插入行未
      • o:向下新开一行,插入行首
      • O:向上新开一行,插入行首
      • s:删除光标所在的字符
      • S:删除当前行
  • 末行模式

    • 命令

      • 行跳转

        • :123 -> 跳转到第123行
      • 保存与退出

        • :w
        • :w 其他文件名
        • :wq 保存退出
        • :q! 不保存退出
        • :q 未修改过内容时可退出
      • 替换

        • 替换一行

          • :s/abc/123 -> 将当前行中的第一个abc替换为123
          • :s/abc/123/g -> 将当前行中的abc全部替换为123
        • 替换全部

          • :%s/abc/123 -> 将所有行中的第一个abc替换为123
          • :%s/abc/123/g -> 将所有行中的abc全部替换为123
        • 替换指定行

          • :10,30s/abc/123/g -> 将10-30行中的abc全部替换为123
      • 执行shell命令

        • 末行模式里输入!,后面跟命令

分屏操作

  • 末行模式

    • 命令:sp 将屏幕分为两部分 --> 水平

    • 命令:vsp 将屏幕分为两部分 --> 垂直

    • 命令:sp(vsp) + 文件名 水平或垂直拆分窗口显示两个不同的文件

    • 操作

      • 命令:wqall 保存并退出所有屏幕
      • 命令:wq 保存并退出光标所在的屏幕
      • Ctrl+ww切换两个屏幕

vim打造IDE

  • 系统级配置文件目录:/etc/vim/vimrc
  • 用户级配置文件目录:~/.vim/vimrc
  • 修改配置文件vimrc或者.vimrc
Last modification:November 17th, 2020 at 03:09 pm