zoukankan      html  css  js  c++  java
  • Linux基本命令讲解

    前言

    不多BB,直接上图

    Linux命令行的组成结构

    [root@oldwang ~]# 
    [root@oldwang ~]# 
    [root@oldwang ~]# 
    [root@oldwang ~]# 
    [root@oldwang ~]# 
    [root@oldwang ~]# 
    

    Linux系统命令操作语法格式

    命令 空格 参数 空格 【文件或路径】需要处理的内容
    rm -rf /tmp/*
    ls -la /home
    结婚 -没车没房 女的就行
    结婚 -有车有房 白富美

    1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的

    2.参数 > 同一个命令,跟上不同的参数执行不同的功能

    执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要!

    linux命令,参数之间,普遍应该用一个或多个空格分割!

    创建一个目录 /oldwang

    windows下:

    鼠标右击 > 新建文件夹
    

    Linux下:

    make directory > mk dir > mkdir
    -------------------------------
    mkdir /oldwang
    -------------------------------
    cd /
    mkdir oldwang
    
    #递归创建a/b   c/d
    mkdir -p a/b c/d
    
    #递归创建test/a,b,c,d四个目录
    mkdir -p test/{a,b,c,d}
    
    #递归创建文件夹a/b/c/d/e
    mkdir -p a/b/c/d/e
    

    查看目录 /oldwang

    #显示/oldwang下的内容
    ls /oldwang
    

    改变当前的目录/位置

    cd /home
    cd ~
    cd -
    

    换来换去的,迷路了怎么办?我到底在哪个目录?

    打印当前工作目录

    #打印当前工作目录
    pwd 
    

    创建文件或者修改文件时间戳(文件属性)

    创建文本

    修改文件的修改时间

    #修改文件的更改时间,很多黑客就会在恶意修改文件之后再修改成之前的时间
    ls -l 
    echo 'sb' >> xxx.py
    touch -t'07101530' 1.txt
    
    #触摸
    touch xxx.py
    

    stat命令

    显示文件或文件系统的状态。
    #用法 stat  [参数]  文件
    参数列表:
    -L, --dereference     跟随链接
      -f, --file-system     显示文件系统状态而非文件状态
      -c --format=格式      使用指定输出格式代替默认值,每用一次指定格式换一新行
          --printf=格式     类似 --format,但是会解释反斜杠转义符,不使用换行作
                                    输出结尾。如果您仍希望使用换行,可以在格式中
                                    加入"
    "
      -t, --terse           使用简洁格式输出
          --help            显示此帮助信息并退出
          --version         显示版本信息并退出
    格式化输出参数:
      %a    八进制权限
      %A   用可读性较好的方式输出权限
    
    
    #实例1
    [root@master tmp]# stat 1.txt
      File: '1.txt'
      Size: 0             Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d    Inode: 17348002    Links: 1
    (权限)Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    (最近访问)Access: 2018-07-10 15:30:00.000000000 +0800
    (最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
    (最近改动)Change: 2018-11-07 15:38:36.400989868 +0800
     Birth: -
    
    #实例2,显示文件权限
    [root@master tmp]# stat -c %a 1.txt
    [root@master tmp]# stat -c %A 1.txt
    -rw-r--r--
    

    vim

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

    但是目前我们使用比较多的是 vim 编辑器。

    vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

    #方法,命令
    vi
    vim
    使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"
    按下esc键,回到命令模式
    输入  :wq!  强制保存退出
    w write 写入
    q quit 退出
    ! 强制
    或者  :x 保存退出
    ------
    :q  不保存退出
    :q! 不保存强制退出
    

    查看文件内容

    cat命令

    cat命令用于查看纯文本文件(常用于内容较少的)

    #查看文件,显示行号
    cat -n xxx.py
    #猫,查看文件
    cat xxx.py
    
    #在每一行的结尾加上$符
    [root@master tmp]# cat -E 1.txt
    
    #追加文字到文件
    cat >>/tmp/oldboy.txt << EOF
    唧唧复唧唧
    木兰开飞机
    开的什么机
    波音747
    EOF
    

    more命令

    1.more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。

    2.more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容

    more /etc/passwd
    按下空格space是翻页
    按下b键是上一页
    回车键向下读取内容
    

    Linux快捷键

    1.tab键    用于自动补全命令/文件名/目录名
    2.ctrl + l  清理终端显示 
    3.clear/cls  清理终端显示
    4.ctrl + c 终止当前操作
    

    echo命令

    echo命令用于在终端输出字符串或变量提取后的值,格式是“echo 【字符串|$变量】”

    #默认吧内容显示到终端上    
    echo "666"
    #把“666”写入到文件里!
    echo "666" > /tmp/chaoge.txt
    echo $PATH #取出打印PATH的值
    

    特殊符号

    输入/输出 重定向符号
    1.>>    追加重定向,把文字追加到文件的结尾
    2.>     重定向符号,清空原文件所有内容,然后把文字覆盖到文件末尾
    3.<     输入重定向
    4.<<    将输入结果输入重定向
    echo "oldboy-python666" > /tmp/oldboy.txt
    echo "chaoge666" >> /tmp/oldboy.txt
    cat >>/tmp/oldboy.txt << EOF
    ------------------------------------
    我想把命令执行的结果信息,写入到文件中
    ip addr > /tmp/network.txt   #标准输出重定向 把命令执行结果信息,放入到文件中
    3.通配符  
    ls -l /etc/us*
    

    复制(拷贝)命令

    windows复制

    可以说是相当简单了
    ctrl + c 复制
    ctrl + v 黏贴
    

    Linux

    复制 > copy > cp
    #移动xxx.py到/tmp目录下
    cp xxx.py /tmp/
    #移动xxx.py顺便改名为chaoge.py
    cp xxx.py /tmp/chaoge.py
    
    Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数) 
    cp -r 递归,复制目录以及目录的子孙后代
    cp -p 复制文件,同时保持文件属性不变    可以用stat
    cp -a 相当于-pdr
    #递归复制test文件夹,为test2
    cp -r test test2
    
    cp是个好命令,操作文件前,先备份
    cp main.py main.py.bak
    

    移动命令

    移动(搬家)命令  > move > mv
    
    cd /home
    #把dogfa从沙河这破地方,搬到朝阳去
    mv /home/shahe/dogfa /tmp/chaoyang
    
    文件/文件夹改名
    mv x.log xx.log
    

    删除命令

    删除  > remove > rm
    参数  -i  需要删除确认
       -f  强制删除
         -r  递归删除目录和内容
         
    cd /tmp
    rm dogfa.py
    #默认有提示删除,需要输入y
    rm -f dogfa.py #不需要提示,强制删除
    #rm默认无法删除目录,需要跟上参数-r
    rm -rf /tmp/dogfa/
    
    --------
    友情提醒:初学者使用rm命令,随时快照虚拟机
    

    查找命令

    #Linux里如何找到需要的文件 例如 dogfa.py
    find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
    参数
    
    -name 按照文件名查找文件
    -type 查找某一类型的文件,诸如:
    b - 块设备文件。
    d - 目录。
    c - 字符设备文件。
    p - 管道文件。
    l - 符号链接文件。
    f - 普通文件。
    s - socket文件
    
    
    find /tmp/ -type f  -name "dogfa.py"
    
    #找出/tmp所有以 .txt 结尾的文件
    find /tmp/ -type f -name "*.txt"
    
    #找到/etc下所有名字以host开头的文件
    find /etc -name 'host*'
    
    #找到/opt上一个名为settings.py
    find /opt -name 'settings.py'
    

    管道命令

    Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
    常见用法:
    #检查python程序是否启动
    ps -ef|grep "python"
    
    #找到/tmp目录下所有txt文件
    ls /tmp|grep '.txt'
    
    #检查nginx的端口是否存活
    netstat -tunlp |grep nginx
    

    命令格式: 命令A | 命令B

    (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    语法:
    grep [参数] [--color=auto] [字符串] filename
    参数详解:
    -i : 忽略大小写
    -n : 输出行号
    -v : 反向选择
    --color = auto : 给关键词部分添加颜色
    
    grep "我要找什么" /tmp/dogfa.txt
    #排除 -v,排除我要找的东西
    grep -v "我要找什么 /tmp/dogfa.txt
    

    head、tail命令

    head显示文件前几行,默认前10行
    tail显示文件后几行,默认后10行
    #查看前两行
    head -2 /tmp/dogfa.txt
    #查看后两行
    tail -2 /tmp/dogfa.txt
    #持续刷新显示
    tail -f xx.log
    
    #显示文件10-30行
    head -30 /tmp/dogfa.txt |tail -21
    

    别名alias命令

    Linux在使用rm(删除)、cp(覆盖)、mv(搬家)等命令的时候,必须非常小心,因为这些命令都是“炸弹”,想必大家都听过“删库到跑路”,一言不合“rm -rf /”,假如你真的这么做了,那么。。。上帝保佑你

    Linux如何提示你,在使用这些命令时候,提醒你小心呢?
    #查看系统别名
    alias
    默认别名
    
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    别名作用是:
    我们在linux中使用cp时候相当于执行了cp -i
    -i:删除已有文件或目录之前先询问用户;
    #别名用比较危险的操作,防止你犯错
    

    为rm设置别名

    #让系统显示 do not use rm
    echo do not use rm
    #设置rm别名
    alias rm='echo do not use rm'
    #设置别名永久生效,写入到/etc/profile(针对登录用户的合同,设置环境变量)
    vim /etc/profile #编辑文件
    G  快速到达最后一行
    o  当前行下一行,创建一个新行,进入编辑模式
    source /etc/profile #读取文件(合同生效)
    ---------------
    #取消别名
    unalias rm
    

    which命令

    which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
    which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
    也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
    which pwd
    which python
    

    实例

    which python       #python命令在哪
    /usr/bin/python    #命令文件绝对路径
    

    scp命令

    Linux scp命令用于Linux之间复制文件和目录。

    scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

    语法
    scp 【可选参数】 本地源文件 远程文件标记
    

    参数

    -r :递归复制整个目录
    -v:详细方式输出
    -q:不显示传输进度条
    -C:允许压缩
    

    实例

    #传输本地文件到远程地址
    scp 本地文件  远程用户名@远程ip:远程文件夹/
    scp 本地文件  远程用户名@远程ip:远程文件夹/远程文件名
    
    scp /tmp/chaoge.py root@192.168.1.155:/home/
    scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_python.py
    
    scp -r  本地文件夹  远程用户名@远程ip:远程文件夹/
    scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy
    
    #复制远程文件到本地
    scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
    scp -r root@192.168.1.155:/home/oldboy /home/
    

    du命令

    Linux du命令用于显示目录或文件的大小。

    du会显示指定的目录或文件所占用的磁盘空间。

    用法
    du 【参数】【文件或目录】
    -s 显示总计
    -h 以k,M,G为单位显示,可读性强
    

    实例

    显示目录或文件所占空间
    #什么都不跟,代表显示当前目录所有文件大小
    du   
    
    #显示/home的总大小
    du -sh /home
    

    top命令

    top 命令用于动态地监视进程活动与系统负载等信息

    我们来分析一下图片信息

    统计信息区

    第一行 (uptime)
    系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
    第二行:进程信息
    进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
    第三行:cpu信息
    1.5 us:用户空间所占CPU百分比
    0.9 sy:内核空间占用CPU百分比
    0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
    97.5 id:空闲CPU百分比
    0.2 wa:等待输入输出的CPU时间百分比
    0.0 hi:硬件CPU中断占用百分比
    0.0 si:软中断占用百分比
    0.0 st:虚拟机占用百分比
    
    第四行:内存信息(与第五行的信息类似与free命令)
    total:物理内存总量
    used:已使用的内存总量
    free:空闲的内存总量(free+used=total)
    buffers:用作内核缓存的内存量
    
    第五行:swap信息
    total:交换分区总量
    used:已使用的交换分区总量
    free:空闲交换区总量
    cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
    

    chattr命令

    给文件加锁,只能写入数据,无法删除文件

    chattr +a test.py
    chattr -a test.py
    

    lsattr命令

    查看文件隐藏属性

    lsattr test.py
    

    linux时间同步

    linux的date命令可以显示当前时间或者设置系统时间

    查看当前时间:date
    
    格式化输出
    -d    --date=string    显示指定的时间,而不是当前时间
    以年-月-日显示当前时间
    date +"%Y-%m-%d"
    以年-月-日 时分秒 显示当前时间
    date +"%Y-%m-%d %T"
    在Linux下系统时间和硬件时间不会自动同步,在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。
    硬件时间的运行,是靠Bios电池来运行,而系统时间是用CPU tick来维持的。
    在系统开机时候,会从Bios中获取硬件时间,设置为系统时间
    

    硬件始终的查看

    [root@oldboy_python ~ 10:19:04]#hwclock
    2018年08月27日 星期一 10时23分03秒  -0.528004 秒
    

    同步系统时间和硬件时间,可以用hwclock命令

    //以系统时间为基准,修改硬件时间
    [root@oldboy_python ~ 10:29:07]#hwclock -w
    
    //以硬件时间为基准,修改系统时间
    [root@oldboy_python ~ 10:29:21]#hwclock -s
    

    日历命令

    cal命令

    calendar查看日志的意思 -y 查看一年的日历

    yugoMBP:~ yuchao$ cal
         March 2019
    Su Mo Tu We Th Fr Sa
     2
     4  5  6  7  8  9
    11 12 13 14 15 16
    18 19 20 21 22 23
    25 26 27 28 29 30
    

    Ntp时间服务器

    时间对于人类来说是密不可少的,时间就是金钱。因此对于服务器时间的把控非常重要,如果系统的时间不对,那么对于每一个文件的操作都是错误的。
    

    关于时间服务器的配置文件,有如下几种

    /bin/date     用于 Linux 时间 (软件时钟) 的修改与显示的指令;
    /sbin/hwclock  用于 BIOS 时钟 (硬件时钟) 的修改与显示的指令。 这是一个 root 才能执行的指令,因为 Linux 系统上面 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,还需要使用 hwclock 才能将修改过后的时间写入 BIOS 当中!
    /usr/sbin/ntpd: 主要提供 NTP 服务的程序啰!配置文件为 /etc/ntp.conf
    /usr/sbin/ntpdate: 用于客户端的时间校正,如果你没有要启用 NTP 而仅想要使用 NTP Client 功能的话,那么只会用到这个指令而已啦!
    

    由于我们只需要用作客户端更新时间

    ntpdate -u ntp.aliyun.com
    

    wget命令

    wget命令用于在终端下载网络文件
    参数是 wget [参数] 下载地址
    
    wget -r -p http://www.luffycity.com#递归下载路飞所有资源,保存到www.luffycity.com文件中
    

    开关机命令

    reboot命令用于重启机器
    poweroff用于关闭系统
    

    Tips

    http://linux.51yip.com/
    http://man.linuxde.net/
    Linux命令查询手册
    Linux终端下  esc  + .  可以获取上次文件名
    
  • 相关阅读:
    unsupported jsonb version number 123
    如何在MPlayer上支持RTSP
    TDengine 时序数据库的 ADO.Net Core 提供程序 Maikebing.EntityFrameworkCore.Taos
    如何使用IoTSharp对接ModBus?
    如何从源码启动和编译IoTSharp
    Asp.Net Core 自动适应Windows服务、Linux服务、手动启动时的内容路径的扩展方法
    MQTTnet 的Asp.Net Core 认证事件的扩展
    Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
    The remote certificate is invalid according to the validation procedure 远程证书验证无效
    settings插拔式源码
  • 原文地址:https://www.cnblogs.com/wangyueping/p/11546335.html
Copyright © 2011-2022 走看看