• linux常用命令持续更新带案例


    shell快捷键

    trl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令
    
    Ctrl+s 与Ctrl+r类似,只是正向检索
    
    Alt+< 历史列表第一项
    
    Alt+> 历史列表最后一项
    
    Ctrl+f 光标向前移动一个字符,相当与->
    
    Ctrl+b 光标向后移动一个字符,相当与<-
    
    Alt+f 光标向前移动一个单词
    
    Alt+b 光标向后移动一个单词
    
    Ctrl+a 移动到当前行的开头
    
    Ctrl+e 移动到当前行的结尾
    
    Esc+b 移动到当前单词的开头
    
    Esc+f 移动到当前单词的结尾
    
    Ctrl+l 清屏
    
    Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)
    
    Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
    
    Ctrl+d 删除光标所在处字符
    
    Ctrl+h 删除光标所在处前一个字符
    
    Ctrl+y 粘贴刚才所删除的字符
    
    Ctrl+w 剪切光标所在处之前的一个词(以空格、标点等为分隔符)
    
    Alt+d 剪切光标之后的词
    
    Esc+w 删除光标所在处之前的字符至其单词尾(以空格、标点等为分隔符)
    
    Ctrl+t 颠倒光标所在处及其之前的字符位置,并将光标移动到下一个字符
    
    Alt+t 交换当前与以前单词的位置
    
    Alt+u 把当前词转化为大写
    
    Alt+l 把当前词转化为小写
    
    Alt+c 把当前词汇变成首字符大写
    
    Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符键
    
    Esc+t 颠倒光标所在处及其相邻单词的位置
    
    Ctrl+c 删除整行
    
    Ctrl+(x u) 按住Ctrl的同时再先后按x和u,撤销刚才的操作
    
    Ctrl+s 挂起当前shell
    
    Ctrl+q 重新启用挂起的shell
    
    [Ctrl] + [Alt] + [Backspace] = 杀死你当前的 X 会话。杀死图形化桌面会话,把你返回到登录屏幕。如果正常退出步骤不起作用,你可以使用这种方法。
    
    [Ctrl] + [Alt] + [Delete] = 关机和重新引导 Red Hat Linux。关闭你当前的会话然后重新引导 OS。只有在正常关机步骤不起作用时才使用这种方法。
    
    [Ctrl] + [Alt] + [Fn] = 切换屏幕。 [Ctrl] + [Alt] + 功能键之一会显示一个新屏幕。根据默认设置,从 [F1] 到 [F6] 是 shell 提示屏幕, [F7] 是图形化屏幕。
    
    [Alt] + [Tab] = 在图形化桌面环境中切换任务。如果你同时打开了不止一个应用程序,你可以使用 [Alt] + [Tab] 来在打开的任务和应用程序间切换。
    
    [Ctrl] + [a] = 把光标移到行首。它在多数文本编辑器和 Mozilla 的 URL 字段内可以使用。
    
    [Ctrl] + [d] = 从 shell 提示中注销(并关闭)。使用该快捷键,你就不必键入 exit 或 logout 。
    
    [Ctrl] + [e] = 把光标移到行尾。它在多数文本编辑器和 Mozilla 的 URL 字段内都可使用。
    
    [Ctrl] + [l] = 清除终端。该快捷操作与在命令行键入 clear 作用相同。
    
    [Ctrl] + = 清除当前行。如果你在终端下工作,使用这一快捷操作可以清除从光标处到行首的字符。
    
    [鼠标中间键] = 粘贴突出显示的文本。使用鼠标左键来突出显示文本。把光标指向你想粘贴文本的地方。点击鼠标中间键来粘贴它。在两键鼠标系统中,如果你把鼠标配置成模拟第三键,你可以同时点击鼠标的左右两键来执行粘贴。
    
    [Tab] =命令行自动补全。使用 shell 提示时可使用这一命令。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配你键入字符的所有命令。
    
    [向上] 和 [向下] 箭头 = 显示命令历史。当你使用 shell 提示时,按 [向上] 或 [向下] 箭头来前后查看你在当前目录下键入的命令历史。当你看到你想使用的命令时,按 [Enter] 键。
    
    clear = 清除 shell 提示屏幕。在命令行下键入它会清除所有这个 shell 提示屏幕中显示的数据。
    
    exit = 注销。在 shell 提示中键入它会注销当前的用户或根用户帐号。
    
    history = 显示命令历史。在 shell 提示中键入它来显示你所键入的被编号的前 1000 个命令。要显示较短的命令历史,键入 history f之后,空一格,在键入一个数字。例如: history 20 。
    
    reset = 刷新 shell 提示屏幕。如果字符不清晰或乱码的话,在 shell 提示下键入这个命令会刷新屏幕。
    
    Ctrl-U: 擦除一行光标前面的部分。
    
    Ctrl-H: 擦除光标前面的一个字符。
    
    Ctrl-D: 终止输入。(退出 shell,如果您正在使用 shell 的话)。
    
    Ctrl-C: 终止当前正在运行的程序。
    
    Ctrl-Z: 暂停程序。
    
    &’’)
    
    Ctrl-S: 停止向屏幕输出。
    Ctrl-Q: 重新激活向屏幕输出。
    默认的 shell,`bash’, 有历史编辑和 tab 补齐功能。
    
    up-arrow: 开始历史命令搜索。
    Ctrl-R: 开始增量历史命令搜索,可以按照关键字查查自己用过哪些命令。
    Ctrl-V TAB: 输入 TAB 而不是扩展命令行。
    
    Ctrl + P - 上一条命令
    
    Ctrl + N - 下一条命令
    
    Ctrl-U: 擦除一行光标前面的部分。
    Ctrl + Y - 粘贴前一Ctrl+U类命令删除的字符 ,是粘贴不是撤销啊!
    下面的应用可能稍稍高级一点点
    
    !! - 上一条命令
    !-n - 倒数第N条历史命令
    !-n:p - 打印上一条命令(不执行)
    
    !?string?- 最新一条含有“string”的命令
    
    其他一些有用的Linux命令行按键组合。
    
    Ctrl-Alt-Del:挂起或者重新启动系统,这三个Linux命令行按键在Linux下可以轻松地修改成关机的操作,这对于单用户的朋友还是很方便的
    
    Ctrl + l - 清屏
    
    Ctrl + A - 光标移到行首
    
    Ctrl + E - 光标移到行尾
    
    Ctrl + W - 清除光标之前一个单词
    
    Ctrl + K - 清除光标到行尾的字符
    
    Ctrl + T - 交换光标前两个字符
    
    Ctrl + V - 输入控制字符 如Ctrl+v ,会输入^M
    
    Ctrl + F - 光标后移一个字符
    
    Ctrl + B - 光标前移一个字符
    
    Ctrl + H - 删除光标前一个字符
    
    N++F - 光标后移N个单词,N为1时可省略
    
    N++B - 光标前移N个单词,N为1时可省略
    
    

    ip 网卡相关的命令

    ifup,ifdown命令

    启动/关闭一块网卡
    ifup eth0
    ifdown eth0
    
    ---如果关闭网卡,xshell会怎样?
    

    ifconfig查询、设置网卡和ip等参数

    ifconfig 查看网卡的ip地址
    

    实列

    [root@peng ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.252.195  netmask 255.255.240.0  broadcast 172.17.255.255
            ether 00:16:3e:0c:64:12  txqueuelen 1000  (Ethernet)
            RX packets 3594542  bytes 609672518 (581.4 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2831543  bytes 359762107 (343.0 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 120380  bytes 16382904 (15.6 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 120380  bytes 16382904 (15.6 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    
    

    ip命令

    ip是一个命令,不是TCP/IP那个ip,这个ip命令是结合了ifconfig和route两个命令的功能。
    ip addr show #查看ip信息
    

    systemctl restart network 重启网络服务

    实列

    
    

    基础命令

    cd(切换命令)

    描述:
        目录切换命令
        
    语法:
        cd 文件路径
        
    参数 
        无
    

    实列切换

    [root@pen ~]# cd ..     #切换上级目录
    [root@pen /]# cd ~      #切换家目录
    [root@pen ~]# cd -      #切换 上一次工作目录
    [root@pen /]# cd /tmp   #切换根目录下tmp目录
    

    pwd(打印当前所在目录路径)

    (翻译全称print work directory) ,打印当前工作目录  
    
    

    实列

    [root@peng ~]# pwd
    /root
    

    tree以树状图列出目录的内容

    描述:
        Linux tree命令用于以树状图列出目录的内容。执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
        
    语法:
        tree 路径
        
    参数 
        -s 列出文件或目录大小。
        tree -L 2     #-L n 只显示 n 层目录 (n 为数字)
        
    注意
        要先下载才可以使用tree命令
        yum install tree -y
    

    实列

    显示当前文件夹
    [root@peng ~]# ls
    a  cs  cs2  cs2.txt  cs.bak  cs.txt
    [root@peng ~]# tree
    .
    ├── a
    │   └── aa
    ├── cs
    ├── cs2
    ├── cs2.txt
    ├── cs.bak
    └── cs.txt
    
    显示指定文件夹
    [root@peng ~]# tree ./a
    ./a
    └── aa
    
    显示指定文件夹结构并大小
    [root@peng ~]# tree -s  ./a
    ./a
    └── [       4096]  aa
    
    

    yum安装更新命令

    • 1.列出所有可更新的软件清单命令:yum check-update
    • 2.更新所有软件命令:yum update
    • 3.仅安装指定的软件命令:yum install <package_name>
    • 4.仅更新指定的软件命令:yum update <package_name>
    • 5.列出所有可安裝的软件清单命令:yum list
    • 6.删除软件包命令:yum remove <package_name>
    • 7.查找软件包 命令:yum search
    • 8.清除缓存命令:
      • yum clean packages: 清除缓存目录下的软件包
      • yum clean headers: 清除缓存目录下的 headers
      • yum clean oldheaders: 清除缓存目录下旧的 headers
      • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
    yum   install  tree -y  # 如同 pip3 install django (这个命令随便在哪敲,安装在默认路径) 
    

    hostname 查看主机名

    查看主机名 
        hostname
    
    修改主机名
        hostnamectl  set-hostname  新的主机名  
    

    实列hostname

    打印当前登录主机名字
    [root@peng ~]# hostname
    peng
    
    实列修改主机名 重新连接才会生效
    [root@peng ~]# hostnamectl  set-hostname  pengzhiqiang
    [root@peng ~]# 
    

    whoami打印与当前生效的用户

    打印当前在用的用户
    [root@pengzhiqiang ~]# whoami
    root
    
    

    echo 显示一行文本

    描述:
        显示一行文本
    语法:
        echo 变量名
    参数 
        
    

    实列

    [root@pengzhiqiang ~]# a=6666 #设置变量a=6666
    [root@pengzhiqiang ~]# echo $a
    6666
    [root@pengzhiqiang ~]# echo a
    a
    

    特殊符号

    >重定向覆盖输出符
    >>重定向追加输出符
    < 重定向覆盖写入符
    << 重定向追加写入符
    1>    标准输出重定向  先把文件的内容清空   把内容放在文件的最后一行
    1>>   追加重定向      把内容放在文件的最后一行
    2>        标准错误重定向
    2>>       错误追加重定向
    

    实列

    将输出覆盖文件里面
    [root@pengzhiqiang ~]# echo 666 > cs3.txt
    [root@pengzhiqiang ~]# ls
    cs3.txt  cs.txt
    
    

    文件夹操作的命令

    mkdir(创建目录)

    描述:若指定目录不存在则创建目录。
    语法:mkdir 文件夹名
    参数 
        -p递归创建文件夹
    

    实列

    递归创建
    [root@pengzhiqiang ~]# ls
    cs3.txt  cs.txt
    [root@pengzhiqiang ~]# mkdir -p a/aa/aaa/aaaa
    [root@pengzhiqiang ~]# ls
    a  cs3.txt  cs.txt
    [root@pengzhiqiang ~]# tree a
    a
    └── aa
        └── aaa
            └── aaaa
    
    普通创建 在没有aa文件夹 且没-p参数 报错
    [root@pengzhiqiang ~]# mkdir aa/cc
    mkdir: cannot create directory ‘aa/cc’: No such file or directory
    
    普通创建 有aa文件夹情况下
    [root@pengzhiqiang ~]# mkdir a/aa2
    [root@pengzhiqiang ~]# tree a
    a
    ├── aa
    │   └── aaa
    │       └── aaaa
    └── aa2
    
    

    rm(删除文件 文件夹)

    实列

    [root@pen ~]# rm -rf hhheee/    #/删除当前文件夹hhheee
    [root@pen ~]# rm -rf ./*        #/删除当前目录所有文件与文件夹
    
    rm oldboy.py
    #默认有提示删除,需要输入y
    rm -f oldboy.py #不需要提示,强制删除
    
    #rm默认无法删除目录,需要跟上参数-r
    rm -rf /tmp/oldboy/
    --------
    友情提醒:初学者使用rm命令,随时快照虚拟机
    

    mv修改文件夹名字

    实列

    修改当前文件夹a名字为aa6
    [root@pengzhiqiang ~]# ls
    a  cs3.txt  cs.txt
    [root@pengzhiqiang ~]# mv a aa6
    [root@pengzhiqiang ~]# ls
    aa6  cs3.txt  cs.txt
    
    
    注意把当前目录下的file1文件名改成file2,如果该目录下有file2,则覆盖以前的file2文件。
    

    mv 移动文件夹

    mv  /源目录/文件夹名 /目的目录/文件夹名
    

    实列

    移动hh文件夹到aa6文件夹下
    [root@pengzhiqiang ~]# ls
    aa6  cs.txt  hh
    [root@pengzhiqiang ~]# tree
    .
    ├── aa6
    │   ├── aa
    │   │   └── aaa
    │   │       └── aaaa
    │   ├── aa2
    │   ├── cs3.txt
    │   └── hh
    ├── cs.txt
    └── hh
        └── hhh
    
    8 directories, 2 files
    [root@pengzhiqiang ~]# mv hh aa6
    mv: overwrite ‘aa6/hh’? y
    [root@pengzhiqiang ~]# ls
    aa6  cs.txt
    [root@pengzhiqiang ~]# tree
    .
    ├── aa6
    │   ├── aa
    │   │   └── aaa
    │   │       └── aaaa
    │   ├── aa2
    │   ├── cs3.txt
    │   └── hh
    │       └── hhh
    └── cs.txt
    
    7 directories, 2 files
    
    

    find 查找文件或文件夹路径

    描述
        查找命令
    语法
        find   从哪找  -type  文件类型 -name  你要找什么名字的文件
    
    注意
    文件类型 
        l  快捷方式类型
        d 文件夹类型 
        f   文本类型  
        
    

    实列全局搜索,所有以.txt结尾的文件

    find  /  -type  f  -name  "*.txt"
    

    实列2 在tmp目录下搜索小黑.txt

    find  /opt  -name '小黑.txt'
    

    在/opt下搜索和python有关的文件夹

    find  /opt  -type  d   -name "python*"
    

    cp复制文件夹或文件

    使用cp -a 相当于将原数据原封不动的拷贝过来,不改变里面的任何信息 相当于-pdr 的意思(参数pdr分别bai为:保留权限du,复制软链接本身,递归复制
    );
    使用cp -r 拷贝数据,拷贝的结果是生成新的时间戳等信息 
    cp -p 复制文件,同时保持文件属性不变    可以用stat
    
    

    实列

    复制文件夹

    [root@pengzhiqiang ~]# ls
    aa6  cs.txt
    [root@pengzhiqiang ~]# cp -r aa6 aa6.bak
    [root@pengzhiqiang ~]# ls
    aa6  aa6.bak  cs.txt
    [root@pengzhiqiang ~]# tree
    .
    ├── aa6
    │   ├── aa
    │   │   └── aaa
    │   │       └── aaaa
    │   ├── aa2
    │   ├── cs3.txt
    │   └── hh
    │       └── hhh
    ├── aa6.bak
    │   ├── aa
    │   │   └── aaa
    │   │       └── aaaa
    │   ├── aa2
    │   ├── cs3.txt
    │   └── hh
    │       └── hhh
    └── cs.txt
    
    
    

    移到或者复制

    复制 > copy > cp
    #移动xxx.py到/tmp目录下
    cp xxx.py /tmp/
    #移动xxx.py顺便改名为chaoge.py
    cp xxx.py /tmp/chaoge.py
    
    cp是个好命令,操作文件前,先备份
    cp main.py main.py.bak
    

    强制复制不提示

    cp命令加了-f参数仍然提示是否覆盖
    linux系统中,cp命令用于拷贝文件,常用的参数:
    -r 是递归,拷贝目录下的所有子目录及文件
    -f 是强制覆盖,如果存在相同参数时
    -i 是覆盖同名文件时进行提示
    
    但有时候,即使加上了-rf参数,系统还是会对重名文件的覆盖一个个作出确认提示,必须依次确认非常麻烦。
    产生此问题的原因是,此时的cp实际上是 cp -i 的别名。
    可以在系统中用alias指令,查询当前cp指令默认值, 如下:
    
    查询当前cp指令默认值
    
    alias cp
    1
    修改cp指令为cp
    
    alias cp = ‘cp’
    1
    再输入cp -rf参数进行拷贝,系统就不会发出提示了
    
    cp -rf xxx/ ../example/
    

    文件操作的命令

    touch(创建文件)

    描述:
        Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
        
    语法:
        touch 文件名
        
    参数 
        a 改变档案的读取时间记录。
        m 改变档案的修改时间记录。
    

    实列普通用法

    [root@pen ~]# touch 66.txt  #在当前文件夹创建66.txt
    [root@pen ~]# touch ./666/77.txt    #在666文件夹下创建77.txt
    [root@pen ~]# tree ./666
    

    创建了文件在创建不会覆盖

    [root@pengzhiqiang NETPRO5.02.8]# touch 1.txt
    [root@pengzhiqiang NETPRO5.02.8]# echo 123 > 1.txt 
    [root@pengzhiqiang NETPRO5.02.8]# cat 1.txt 
    123
    [root@pengzhiqiang NETPRO5.02.8]# touch 1.txt
    [root@pengzhiqiang NETPRO5.02.8]# cat 1.txt 
    123
    
    

    rm (删除文件)

    描述:
        删除文件。
        
    语法:
        rm 文件路径
        
    参数 
        i 删除文件且交互式提示,是否删除
        r  文件夹 #递归删除文件夹 
        f  强制删除文件,且不提示  
    

    实列删除文件

    [root@pen ~]# rm -rf hhheee/    #/删除当前文件夹hhheee
    [root@pen ~]# rm -rf ./*        #/删除当前目录所有文件与文件夹
    

    mv(移动和重命名的作用)

    描述:
        移动和重命名的作用
        
    语法:
        mv  旧的文件名  新的文件名
        mv  文件   文件夹  #更改目录  
        
    参数 
        无
    

    实列移动文件

    [root@pen tmp]# mv 66.txt aaa/bbb   #将66.txt移动到aaa的bbb的文件夹下
    

    实列改名

    [root@pen tmp]# mv aaa aa  #将文件夹改名 如果改的名字原来就有,就好变为移动
    [root@pen tmp]# mv 666.txtt 6.txt  #将文件改名
    

    find 查找文件或文件夹路径

    描述
        查找命令
    语法
        find   从哪找  -type  文件类型 -name  你要找什么名字的文件
    
    注意
    文件类型 
        l  快捷方式类型
        d 文件夹类型 
        f   文本类型  
        
    

    实列全局搜索,所有以.txt结尾的文件

    find  /  -type  f  -name  "*.txt"
    

    实列2 在tmp目录下搜索小黑.txt

    find  /opt  -name '小黑.txt'
    

    在/opt下搜索和python有关的文件夹

    find  /opt  -type  d   -name "python*"
    

    文件内容操作的命令

    cut指定显示内容

    使用说明:
    
    cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
    
    如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
    参数:
        -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
        -c :以字符为单位进行分割。
        -d :自定义分隔符,默认为制表符。
        -f :与-d一起使用,指定显示哪个区域。
        -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
        范围之内,该字符将被写出;否则,该字符将被排除
    

    提取每一行的第3个字节,

    [root@pengzhiqiang test]# ls
    12345  linux
    [root@pengzhiqiang test]# ls ./ | cut -b 3
    3
    n
    
    

    提取每一行的前2个字节

    [root@pengzhiqiang test]# ls ./
    12345  linux
    [root@pengzhiqiang test]# ls ./ | cut -c 1,2
    12
    li
    

    指定路径切割:找出指定内容

    PATH 变量如下
    [root@www ~]# echo $PATH
    /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
    # 1 | 2       | 3   | 4       | 5            | 6            | 7
    将 PATH 变量取出,我要找出第五个路径。
    #echo $PATH | cut -d ':' -f 5
    /usr/local/bin
    

    将 PATH 变量取出,我要找出第三和第五个路径

    将 PATH 变量取出,我要找出第三和第五个路径。
    #echo $PATH | cut -d ':' -f 3,5
    /sbin:/usr/local/bin
    

    将 PATH 变量取出,我要找出第三到最后一个路径。

    echo $PATH | cut -d ':' -f 3-
    /sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
    

    将 PATH 变量取出,我要找出第一到第三个路径。

    #echo $PATH | cut -d ':' -f 1-3
    /bin:/usr/bin:/sbin:
    

    将 PATH 变量取出,我要找出第一到第三,还有第五个路径。

    echo $PATH | cut -d ':' -f 1-3,5
    /bin:/usr/bin:/sbin:/usr/local/bin
    

    cat输出文件内容

    描述:
        输出文件内容
        将[文件]或标准输入组合输出到标准输出
        
    语法:
        cat 文件名
        
    参数 
        
        
    注意
        
    

    实列

    显示文件内容
    [root@pengzhiqiang ~]# cat  c
    cscscs
    
    #显示文件内容并输出行号
    [root@pengzhiqiang ~]# cat -n c.txt
         1	cscscs
    
    
    

    head 看文件的前n行

    语法 
        head  -n  数字  filename   #看文件的前n行 
    

    实列

    [root@pengzhiqiang ~]# head -1 c.txt
    111
    

    tail输出文件的末尾部分

    描述:
        输出文件的末尾部分
        在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个地显示, 并在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE是-,那么就从标准输入上读取.
        
    语法:
        tail 参数 文件夹名
    参数 
        
    

    实列

    查看后两行
    [root@pengzhiqiang ~]# tail -2 c.txt
    555
    666
    
    默认全部显示
    [root@pengzhiqiang ~]# tail  c.txt
    111
    222
    333
    444
    555
    666
    

    实列2 -f 实时监控

    窗口实时监控 文件内容变化会实时改变
    [root@peng ~]# tail -f 7.txt #一个窗口实时监控
    
    
    

    利用head tail输出文件的10-20行

    head 20 english.txt | tail -10
    

    more less分屏显示文本内容

    命令用于分屏显示文本内容

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

    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! 不保存强制退出
    

    grep 过滤查找文件中想要的字符串

    语法
        grep  你想要的字符串   文件名  
        
    参数
        -i 不区分大小写
        -v取反
        -n 显示行号
    

    实列 在6.txt文件中找到5

    [root@pengzhiqiang ~]# cat c.txt 
    111
    222
    333
    444
    555
    [root@pengzhiqiang ~]# grep 5 c.txt 
    555
    找到包含5并显示行号
    [root@pengzhiqiang ~]# grep -n 5 c.txt 
    5:555
    
    

    权限相关命令

    ls (列出目录的内容)查看权限

    描述:
        Linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
        
    语法:
        ls 路径
        
    参数 
        -a 显示隐藏文件
        -h, --human-readable          与-l 一起,以易于阅读的格式输出文件大小
                                    (例如 1K 234M 2G)
         -l 显示详细信息  使用较长格式列出信息                      
    

    实列普通操作

    [root@pen /]# ls /      #显示/目录下所有文件
    [root@pen /]# ls        #显示当前所在目录下所有文件
    [root@pen /]# ls /tmp   #显示指定目录文件
    

    实列 -a参数

    [root@pen /]# ls -a  #显示所有文件包括隐藏文件
    

    实列 -l /参数

    [root@pengzhiqiang NETPRO5.02.8]# ls -l
    total 32
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 bin
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 conf
    drwxrwxrwx 2 root root 4096 Aug 18 19:00 data
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 lib
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 logs
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 plugins
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 scripts
    drwxr-xr-x 2 root root 4096 Aug 18 19:00 working
    
    [root@pengzhiqiang NETPRO5.02.8]# ls -l -h
    total 32K
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 bin
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 conf
    drwxrwxrwx 2 root root 4.0K Aug 18 19:00 data
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 lib
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 logs
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 plugins
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 scripts
    drwxr-xr-x 2 root root 4.0K Aug 18 19:00 working
    
    

    ls -i查看文件的inode号(inode存储文件的详细信息)

    
    

    Linux权限的观察

    使用一条命令查看权限

    ls -l /var/log/mysqld.log 
    

    img

    解读上图:

    1. 权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
    2. 文件链接数
    3. 文件拥有者-属主
    4. 文件拥有组-属组
    5. 文件大小
    6. 最后一次被修改的时间日期
    7. 文件名

    先来分析一下文件的类型

    -    一般文件
    d    文件夹
    l    软连接(快捷方式)
    b    块设备,存储媒体文件为主
    c    代表键盘,鼠标等设备
    

    文件权限

    r    read可读,可以用cat等命令查看
    w    write写入,可以编辑或者删除这个文件
    x    executable    可以执行
    

    目录权限

    权限这里测试不要用root实验!!!!root太牛逼了

    请用普通用户执行!!!!!测试文件、文件夹权限操作,请用普通用户!

    r    可以对此目录执行ls列出所有文件
    w    可以在这个目录创建文件
    x    可以cd进入这个目录,或者查看详细信息
    

    权限与数字转化

    img

    ls -l /var/log/mysqld.log 
    -rw-r--r-- 1 mysql mysql 6735642 8月  11 14:19 /var/log/mysqld.log
    这个就代表mysqld.log文件属主是mysql,属组是mysql,只有mysql用户可以读取编写这个文件,其他人只能读此文件。
    

    img

    查看用户权限命令

    id指令查看用户所属群主
    [root@oldboy_python ~ 16:34:52]#id root
    uid=0(root) gid=0(root) 组=0(root)
    

    修改文件权限属性

    普通用户只能修改自己的文件名,时间与权限(注意)
    因此修改其他用户权限,只能用最nb的root用户
    

    #切换root用户

    [pyyu@oldboy_python root]$ su -

    当前/tmp/pyyu.txt文件以存在,且信息是
    -rw-rw-r-- 1 pyyu pyyu    0 8月  11 16:41 pyyu.txt
    

    修改属主为root

    chown

    [root@oldboy_python /tmp 16:43:12]#chown root pyyu.txt 
    

    查看信息

    [root@oldboy_python /tmp 16:43:42]#ll pyyu.txt 
    -rw-rw-r-- 1 root pyyu 0 8月  11 16:41 pyyu.txt
    

    修改属组

    chgrp

    [root@oldboy_python /tmp 16:43:42]#ll pyyu.txt 
    -rw-rw-r-- 1 root pyyu 0 8月  11 16:41 pyyu.txt
    [root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt 
    [root@oldboy_python /tmp 16:45:51]#ll pyyu.txt 
    -rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
    

    文件权限

    我们已知三种身份权限(属主,属组,其他人),每种身份都有rwx的三种权限,系统还提供了数字计算权限。

    r    read          4
    w    write        2
    x    execute     1
    

    每种身份最低是0分,最高是r+w+x 7分

    因此三种身份,最高权限是777,最低是000

    -rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
    因此可知pyyu.txt的权限是
    属主是6 r+w(4+2)
    属组是6 r+w(4+2)
    其他人是4 r(4)
    

    chmod修改权限的命令

    chmod [身份]   [参数]   [文件]
        u(user)   +(添加)  
        g(group)   -(减去)
        o(other)  =(赋值)
        a(all)
    

    实列将文件 file1.txt 设为所有人皆可读取 :

    chmod ugo+r file1.txt
    

    将文件 file1.txt 设为所有人皆可读取 :

    chmod a+r file1.txt
    

    将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

    chmod ug+w,o-w file1.txt file2.txt
    

    将 ex1.py 设定为只有该文件拥有者可以执行 :

    chmod u+x ex1.py
    

    将目前目录下的所有文件与子目录皆设为任何人可读取 :

    chmod -R a+r *
    

    此外chmod也可以用数字来表示权限如 :

    chmod 777 file
    

    语法为:

    chmod abc file
    

    其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

    r=4,w=2,x=1

    • 若要rwx属性则4+2+1=7;
    • 若要rw-属性则4+2=6;
    • 若要r-x属性则4+1=5。
    chmod a=rwx file
    

    chmod 777 file
    

    效果相同

    chmod ug=rwx,o=x file
    

    chmod 771 file
    

    lsattr查看文件特殊权限的命令

    描述
        显示文件在Linux第二扩展文件系统上的特有属性
        查看文件特殊权限的命令
        
    chattr概述:凌驾于r、w、x、suid、sgid之上的权限。
    命令功能:设置特殊权限,chattr命令用来改变文件属性。
        -i     #锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行
        -a     #仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
        示例:
        (1)用chattr命令防止系统中某个关键文件被修改。
        chattr +i /etc/fstab
        
        (2)让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
        chattr +a /data1/user_act.log
    

    实列

    [root@pengzhiqiang ~]# ls
    b  cs24  cs.txt  cs.txt.bak  c.txt
    [root@pengzhiqiang ~]# lsattr 
    -------------e-- ./b
    -------------e-- ./c.txt
    -------------e-- ./cs.txt.bak
    -------------e-- ./cs.txt
    -------------e-- ./cs24
    
    

    chattr设置文件特殊权限的命令

    描述
        设置文件特殊权限的命令 
    
    参数
        i设置该文件不能进行任何形势的修改
        a     #仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
    

    实列 设置文件不可以修改

    chattr +i 6.txt   #设置该文件不能进行任何形势的修改
    注意
    有了此权限 文件不可以修改 不可以删除
    

    取消 i权限

    chattr -i 6.txt                    #取消-i的权限设置
    

    路径相关的命令

    rpm查询命令的所有安装路径

    [root@pen tmp]# rpm -ql tree   ???????
    
    查询命令的所有安装路径
    

    进程 端口 磁盘 内存相关命令

    ps 查看进程信息

    ps aux 或者 ps -ef  #查看机器所有进程信息
    ps aux  |  grep  "vim"  #过滤出和vim有关的进程
    ps aux |  grep  "python"  #找到机器所有和python有关的进程   
    
    [root@pengzhiqiang ~]# ps -ef | grep python
    root       564     1  0 Apr24 ?        00:00:09 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
    root       934     1  0 Apr24 ?        00:11:48 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
    root       990     1  0 Apr24 ?        00:11:09 python main.pyc 8888
    root      1124     1  0 Apr24 ?        00:15:53 python task.pyc
    root     26732 22153  0 17:18 pts/1    00:00:00 grep --color=auto python
    
    

    top显示当前系统正在执行的进程

    描述
        可以显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
    

    du报告磁盘空间使用情况

    描述
        报告磁盘空间使用情况
        
    参数
        -h  显示mb  gb单位
        -s  显示统计 
    

    实列

    查看文件夹大小
    [root@pengzhiqiang ~]# du -sh b
    76K	b
    查看文件大小
    [root@pengzhiqiang ~]# du -sh cs.txt
    4.0K	cs.txt
    
    
    注意 可能有隐藏文件
    

    df磁盘使用率

    df 命令,用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。

    【例 1】

    [root@localhost ~]# df
    Filesystem      1K-blocks      Used Available Use% Mounted on
    /dev/hdc2         9920624   3823112   5585444  41% /
    /dev/hdc3         4956316    141376   4559108   4% /home
    /dev/hdc1          101086     11126     84741  12% /boot
    tmpfs              371332         0    371332   0% /dev/shm
    
    [root@pengzhiqiang ~]# df /
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/vda1       41147472 4429452  34814528  12% /
    
    

    不使用任何选项的 df 命令,默认会将系统内所有的文件系统信息,以 KB 为单位显示出来。

    本例中,由 df 命令显示出的各列信息的含义分别是:

    • Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
    • 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
    • Used:表示用掉的硬盘空间大小;
    • Available:表示剩余的硬盘空间大小;
    • Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
    • Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。

    free查看内存

    https://www.cnblogs.com/ultranms/p/9254160.html参考

    free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。

    [root@pengzhiqiang ~]# free
                  total        used        free      shared  buff/cache   available
    Mem:        1882160      501284      124228       17348     1256648     1159408
    Swap:       1049596           0     1049596
    
    下面先解释一下输出的内容:
    Mem 行(第二行)是内存的使用情况。
    Swap 行(第三行)是交换空间的使用情况。
    total 列显示系统总的可用物理内存和交换空间大小。
    used 列显示已经被使用的物理内存和交换空间。
    free 列显示还有多少物理内存和交换空间可用使用。
    shared 列显示被共享使用的物理内存大小。
    buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
    available 列显示还可以被应用程序使用的物理内存大小。
    
    我想只有在理解了一些基本概念之后,上面的输出才能帮助我们了解系统的内存状况。
    

    其他命令相关

    uname显示系统信息

    uname
    显示系统信息
    	-r	显示系统内核版本
    	-m	显示系统32位64位
    
    

    管道符”|”

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

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

    img

    scp传输命令

    描述
        传输命令
    
    语法
        scp  你想要的内容  传输到哪里
    

    本地传其他机器

    实列1 把我本地机器1的/tmp/666.txt发到远程机器的/opt目录下

    scp   /tmp/666.txt   root@机器的ip:/opt/   
    

    实列2 把本地的first.py 发送给root@192.168.16.105这个机器

    scp  ./first.py   root@192.168.16.105:/data 
    
    注意
        1.如果data文件夹存在,则放入data文件夹中
        2.如果没有data这个文件夹,则把first.py改名为data
    

    其他机器传本地

    语法
        scp  root@ip地址:文件路径   要存的路径
    
    
    scp  root@192.168.16.105:/data/666.txt   /opt 
    

    wget在线下载资源的命令

    描述
        在线下载资源的命令 
    

    实列递归下载

    wget  -r -p   www.luffycity.com   # -r -p  递归爬取网站资源 
    

    alias 别名

    描述:
        设置命令的别名
        
    语法:
        alias[别名]=[指令名称]
        
    参数 
        若不加任何参数,则列出目前所有的别名设置。
        
    注意
        别名就是便利贴
    

    实列

    查看别名
    [root@pen tmp]# alias rm      #查看rm 别名
    设置别名使用别名
    [root@pengzhiqiang ~]# alias dy='echo 66'
    [root@pengzhiqiang ~]# dy
    66
    
    

    date查看系统时间

    描述
        查看系统时间 
        
    [root@pengzhiqiang ~]# date
    Fri Jul 17 17:35:56 CST 2020
    
    

    更新系统时间

    yum install ntpdate -y
    ntpdate ntp.aliyun.com #和阿里提供的时间服务器,进行时间同步

    EOF

    特殊作用注释shell脚本

    特殊用法:
    : << EOF
    shell脚本代码段
    用来注释整段脚本代码。 :
    是shell中的空语句。
    EOF
    
    这段脚本执行时,中间部分不会被执行:
    
    下面通过具体实例来感受下EOF用法的妙处:
    1)向文件test.sh里输入内容。
    [root@slave-server opt]# cat << EOF >test.sh 
    > 123123123
    > 3452354345
    > asdfasdfs
    > EOF
    [root@slave-server opt]# cat test.sh 
    123123123
    3452354345
    asdfasdfs
    
    追加内容
    [root@slave-server opt]# cat << EOF >>test.sh 
    > 7777
    > 8888
    > EOF
    [root@slave-server opt]# cat test.sh 
    123123123
    3452354345
    asdfasdfs
    7777
    8888
    
    覆盖
    [root@slave-server opt]# cat << EOF >test.sh
    > 55555
    > EOF
    [root@slave-server opt]# cat test.sh 
    55555
    
  • 相关阅读:
    母函数
    匈牙利算法
    AC 自动机
    MFC Invalidate闪屏问题
    求解x=a^b(mod m)
    Millar_rabin和Pollard_Rho
    图论入门算法理解
    Numpy 库常用函数大全
    Linux 系统中“|”管道的作用是什么
    win10 万能修复公式
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12465170.html
Copyright © 2020-2023  润新知