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

     

    前言

    前面咱们已经成功安装了Linux系统--centos7,那么现在我们来熟悉一下基本命令吧.

     Linux命令行的组成结构

    [root@oldboy_python ~]# 
    [root@oldboy_python ~]# 
    [root@oldboy_python ~]# 
    [root@oldboy_python ~]# 
    [root@oldboy_python ~]# 

    Linux系统命令操作语法格式

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

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

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

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

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

    创建一个目录  /oldboy

    windows下:

    鼠标右键  --> 新建文件夹

    Linux下:

    make directory > mk dir > mkdir
    -------------------------------
    mkdir /oldboy
    -------------------------------
    cd /
    mkdir oldboy
    
    #递归创建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

    查看目录  ls

    # 例如 查看opt目录
     ls /opt

    改变当前的目录  cd

    cd  /   #切换到根目录下
    cd  ~ # 切换到当前目录家目录下
    cd ..  #返回上一层

    打印当前工作目录 pwd

    # 直接输入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
    644
    [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 -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键是上一页
    回车键向下读取内容

    echo命令

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

    #默认吧内容显示到终端上    
    echo "财哥666"
    #财哥平时比较低调,不想让别人知道他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
    #把家从沙河这破地方,搬到朝阳去
    mv /home/shahe/oldboy /tmp/chaoyang
    
    文件/文件夹改名
    mv x.log xx.log

    删除命令

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

    查找命令

    #Linux里如何找到需要的文件 例如 oldboy.py
    find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
    参数
    -name 按照文件名查找文件
    -type 查找某一类型的文件,诸如:
    b - 块设备文件。
    d - 目录。
    c - 字符设备文件。
    p - 管道文件。
    l - 符号链接文件。
    f - 普通文件。
    s - socket文件
    
    find /tmp/ -type f  -name "oldboy.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

    grep

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

    语法:
    grep [参数] [--color=auto] [字符串] filename
    参数详解:
    -i : 忽略大小写
    -n : 输出行号
    -v : 反向选择
    --color = auto : 给关键词部分添加颜色
    
    grep "我要找什么" /tmp/oldboy.txt
    #排除 -v,排除我要找的东西
    grep -v "我要找什么 /tmp/oldboy.txt
    例题,找出/etc/passwd下root用户所在行,以及行号,显示颜色
    cat /etc/passwd |grep '^root' --color=auto -n
    找出/etc/passwd所有不允许登录的用户
    grep /sbin/nologin /etc/passwd
    找到/etc/passwd的所有与mysql有关行,行号
     
    cat /etc/passwd |grep 'mysql' -n

    head、tail命令

    head显示文件前几行,默认前10行
    tail显示文件后几行,默认后10行
    #查看前两行
    head -2 /tmp/oldboy.txt
    #查看后两行
    tail -2 /tmp/oldboy.txt
    #持续刷新显示
    tail -f xx.log
    
    #显示文件10-30行
    head -30 /tmp/oldboy.txt |tail -21
     1 sed
     2 
     3 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
     4 
     5 命令格式
     6 
     7 sed [options] 'command' file(s)
     8 sed [options] -f scriptfile file(s)
     9 选项
    10 
    11 -e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件;
    12 -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
    13 -h或--help:显示帮助;
    14 -n或--quiet或——silent:仅显示script处理后的结果;
    15 -V或--version:显示版本信息。
    16 -i ∶插入, i 的后面可以接字串
    17 sed命令
    18 
    19 a 在当前行下面插入文本。
    20 i 在当前行上面插入文本。
    21 c 把选定的行改为新的文本。
    22 d 删除,删除选择的行。
    23 D 删除模板块的第一行。
    24 s 替换指定字符
    25 h 拷贝模板块的内容到内存中的缓冲区。
    26 H 追加模板块的内容到内存中的缓冲区。
    27 g 获得内存缓冲区的内容,并替代当前模板块中的文本。
    28 G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
    29 l 列表不能打印字符的清单。
    30 n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
    31 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
    32 p 打印模板块的行。
    33 P(大写) 打印模板块的第一行。
    34 q 退出Sed。
    35 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
    36 r file 从file中读行。
    37 t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
    38 T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
    39 w file 写并追加模板块到file末尾。  
    40 W file 写并追加模板块的第一行到file末尾。  
    41 ! 表示后面的命令对所有没有被选定的行发生作用。  
    42 = 打印当前行号码。  
    43 # 把注释扩展到下一个换行符以前。  
    44 sed替换标记
    45 
    46 g 表示行内全面替换。  
    47 p 表示打印行。  
    48 w 表示把行写入一个文件。  
    49 x 表示互换模板块中的文本和缓冲区中的文本。  
    50 y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
    51 1 子串匹配标记
    52 & 已匹配字符串标记
    53 sed元字符集
    54 
    55 ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
    56 $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
    57 . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
    58 * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
    59 [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
    60 [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
    61 (..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替换成lovers。
    62 & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**63 < 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
    64 > 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
    65 x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
    66 x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
    67 x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。
    68 sed实际用例
    69 #替换oldboy.txt中所有的oldboy变为oldboy_python
    70 #此时结果输出到屏幕,不会写入到文件
    71 sed 's/oldboy/oldboy_python/' /tmp/oldboy.txt
    72 #使用选项-i,匹配每一行第一个oldboy替换为oldboy_python,并写入文件
    73 sed -i 's/oldboy/oldboy_python/' /tmp/oldboy.txt
    74 #使用替换标记g,同样可以替换所有的匹配
    75 sed -i 's/book/books/g' /tmp/oldboy.txt
    76 #删除文件第二行
    77 sed -i '2d' /tmp/oldboy.txt
    78 #删除空白行
    79 sed -i '/^$/d' /tmop/oldboy.txt
    80 #删除文件第二行,到末尾所有行
    81 sed '2,$d' /tmp/oldboy.txt
    82 #显示10-30行
    83 -p --print
    84 -n --取消默认输出
    85 sed -n '10,30p' /tmp/oldboy.txt
    sed

    Linux快捷键

    1.tab键    用于自动补全命令/文件名/目录名
    2.ctrl + l  清理终端显示 
    3.clear/cls  清理终端显示
    4.ctrl + c 终止当前操作
    5. Linux终端下  esc  + .  可以获取上次文件名

    别名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命令)
    8053444 total:物理内存总量
    7779224 used:已使用的内存总量
    274220 free:空闲的内存总量(free+used=total)
    359212 buffers:用作内核缓存的内存量
    第五行:swap信息
    8265724 total:交换分区总量
    33840 used:已使用的交换分区总量
    8231884 free:空闲交换区总量
    4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

    chattr命令

    给文件加锁,只能写入数据,无法删除文件
    chattr +a test.py
    chattr -a test.py

    lsattr命令

    查看文件隐藏属性
    lsattr test.py

    常见问题

    问题1:
    yudanL:~ yuchao$ cd~
    -bash: cd~: command not found
    
    问题2:
    yudanL:~ yuchao$ cd /oldboy
    -bash: cd: /oldboy: No such file or directory

    Linux时间同步

    linux的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

    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用于关闭系统
     
  • 相关阅读:
    OSX安装nginx和rtmp模块(rtmp直播服务器搭建)
    用runtime来重写Coder和deCode方法 归档解档的时候使用
    Homebrew安装卸载
    Cannot create a new pixel buffer adaptor with an asset writer input that has already started writing'
    OSX下面用ffmpeg抓取桌面以及摄像头推流进行直播
    让nginx支持HLS
    iOS 字典转json字符串
    iOS 七牛多张图片上传
    iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them
    Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
  • 原文地址:https://www.cnblogs.com/lingcai/p/10408985.html
Copyright © 2011-2022 走看看