• Linux基础命令、软件安装


    常用命令

    查看当前系统中存在哪些shell

    cat /etc/shells
    [root@** ~]# cat /etc/shells 
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    

    查看当前操作系统正在使用的命令解析器:

    [root@** ~]# echo $SHELL
    /bin/bash
    

    输入命令时,光标移动

    功能 快捷键 助记
    Ctrl+P previous
    Ctrl+N next
    Ctrl+B backward
    Ctrl+F forward
    Del ctrl+D delete光标后面的
    Home Ctrl+A the first letter
    End Ctrl+E end
    Backspace Backspace 删除光标前面的

    常用的有 Ctrl+A, Ctrl+E

    目录和文件

    every thing is file

    目录介绍

    [root@** ~]# ls /
    bin   etc  lib    lost+found  mnt  proc  run   srv  tmp  var
    boot  dev  home  lib64  media       opt  root  sbin  sys  usr
    
    • bin :可执行文件目录
    • boot 开机启动配置
    • etc 用户信息和系统配置文件
    • dev 设备
    • lib 库路径,如:标准C库 libc.so.6
    • media 挂载媒体设备,如光驱、优盘等
    • mnt 磁盘挂载,如硬盘
    • root root用户
    • usr Unix software resource 用户资源管理目录

    切换目录(cd)

    cd -  # 切换到上一个目录
    cd ~  # home 
    

    创建文本文件(touch)

    touch test.cpp
    

    文件列表(ls)

    ls /
    ls -a  # 所有文件
    ls -l  # long  详细信息
    ls -dl dir # 查看目录信息
    ls -R  #递归
    
    1. 文件描述
    [root@** code]# ls -l
    total 20
    drwxr-xr-x 2 root root 4096 Feb  7 13:59 mysql_test
    -rwxr-xr-x 1 root root 8656 Feb  3 11:43 test
    -rw-r--r-- 1 root root   88 Feb  3 11:43 test.cpp
    

    文件类型,当前用户的权限[读,写,是否,可执行],当前组,其他用户

    文件类型(7种)

    • 普通文件:-

    • 目录文件:d

    • 字符设备文件:c

    • 块设备文件:b 如磁盘

    • 软连接:l

    • 管道文件:p

    • 套接字:s

    which

    查看目录路径

    [root@** ~]# which pwd
    /usr/bin/pwd
    

    隐藏[root@** ~]字符

    编辑文件~/.bashrc,添加配置

    PS1=$
    

    rmdir

    删除空目录,一次可以删除多个。

    • -p 删除多级目录,不能包含文件
    [root@** demo]# rmdir -p aa/cc/
    

    rm

    删除文件。

    • -r:递归
    • -f:force
    • -v:可视化

    cp

    cp a.cpp dir/
    cp a.cpp b.cpp
    cp -a dir1/ ./  # 目录,all
    cp -r dir1/ ./  # 目录,不包括文件属性,如:时间,权限等
    

    mv

    mv a.cpp dir/
    mv a.cpp b.cpp  # 重命名
    mv dir1/ dir2/ 
    

    cat

    查看文件内容

    可以读终端

    tac

    倒着显示

    more

    空格翻页,enter一行

    less

    不显示百分比,只能用q退出

    head

    显示默认前10行

    head -20  # 前20行
    

    tail

    显示默认后10行

    ln

    软硬链接

    1. 创建软链接
    ln -s file file.s
    [root@** demo]# ls -l
    -rw-r--r-- 1 root root    30 Feb  8 09:35 file
    lrwxrwxrwx 1 root root     4 Feb  8 09:35 file.s -> file
    
    ln -s ./file file.s
    [root@** demo]# ls -l
    -rw-r--r-- 1 root root    30 Feb  8 09:35 file
    lrwxrwxrwx 1 root root     6 Feb  8 09:35 file.s -> ./file
    

    使用相对路径创建的软链接不可以移动。软链接保存的时创建时的路径,因此一定要使用绝对路径

    [root@** demo]# ln -s /root/demo/file file.s2
    [root@** demo]# ls -l
    lrwxrwxrwx 1 root root    15 Feb  8 09:41 file.s2 -> /root/demo/file
    

    此时可以移动软链接文件

    • 文件权限

    软链接全开放代表软链接的权限

    1. 创建硬链接
    ln file file1
    

    对于硬链接,文件数据同步

    [root@** demo]# stat file
      File: ‘file’
      Size: 30              Blocks: 8          IO Block: 4096   regular file
    Device: fd01h/64769d    Inode: 1051448     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-02-08 09:35:57.020407922 +0800
    Modify: 2020-02-08 09:35:55.186414489 +0800
    Change: 2020-02-08 09:35:55.189414478 +0800
    

    硬链接文件的Inode相同,删除时,将硬链接计数减一。

    tree

    安装:

    yum install tree
    

    wc

    计算文件字节数、字数等。

    • -c 或--bytes 或 --chars
    • 只显示Byte数
    • -l 或 --lines显示列数
    • -w 或 --words显示字数

    od

    显示文件的进制

    od -tcx file
    

    -t制定数据显示格式,主要参数有:

    • c ASCII字符或反斜杠序列
    • d[SIZE] 有符号十进制数,每个整数SIZE字节
    • f[SIZE] 浮点数,每个整数SIZE字节
    • o[SIZE] 八进制
    • u[SIZE] 无符号十进制
    • x[SIZE] 十六进制
    [root@** code]# od -tcd test.cpp 
    0000000   #   i   n   c   l   u   d   e   <   m   y   s   q   l   .   h
                 1668180259      1701082476      1937337660      1747872881
    0000020   >  
       #   i   n   c   l   u   d   e   <   i   o   s   t   r
                 1763904062      1970037614      1765565796      1920234351
    0000040   e   a   m   >  
      
       u   s   i   n   g       n   a   m   e
                 1047355749      1937050122       543649385      1701667182
    0000060   s   p   a   c   e       s   t   d   ;  
      
       i   n   t    
                 1667330163      1953701989       168442724       544501353
    0000100   m   a   i   n   (   )  
       {  
      	   M   Y   S   Q   L    
                 1852399981      2064263464      1498220810       541872467
    0000120   c   o   n   n   ;  
       }  
    
                 1852731235       175966779
    

    du

    显示某个目录的磁盘大小

    • 单位M
    [root@** code]# du -hm mysql_test/
    1       mysql_test/
    
    • 单位B
    [root@iZy4sb7b6agxt2Z code]# du -hb mysql_test/
    12991   mysql_test/
    
    • 单位K(默认)
    [root@** code]# du -hk mysql_test/
    20      mysql_test/
    

    df

    查看磁盘使用情况

    [root@** code]# df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    devtmpfs          930660       0    930660   0% /dev
    tmpfs             941116       0    941116   0% /dev/shm
    tmpfs             941116     444    940672   1% /run
    tmpfs             941116       0    941116   0% /sys/fs/cgroup
    /dev/vda1       41147472 4169976  35074004  11% /
    tmpfs             188224       0    188224   0% /run/user/0
    

    文件属性和用户组

    whoami

    查看当前登录用户

    chmod

    修改文件属性,所有者,组,其他

    • u+x,u-x user
    chmod u+x file
    
    • g+x group

    • o+x other

    • a+x all

    • 777

    chmod 777 file
    

    chown

    文件所有者,所有组

    chown username file
    chown username:groupName file
    

    chgrp

    chgrp name file
    

    adduser

    adduser username
    

    deluser

    deluser username
    

    addgroup

    addgroup name
    

    delgroup

    delgroup groupName
    

    查找和检索

    find

    find dir -type 'l'

    find dir 必须放在前面

    # 查找当前目录下的软链接
    [root@** demo]# find ./ -type 'l'
    ./file.s
    ./file.s2
    
    # 查找 .java 文件
    find ./ -name '*.java'
    
    # 查询深度
    find ./ -maxdepth 1 -name '*.java'
    
    # 查询指定大小的文件
    find ./ -size +2k -size -10k
    
    • -type f|d|l
    • -name
    • -maxdepth
    • -size +-10M|k|m
    • -atime
    • -mtime
    • -ctime
    • -exec
    • -ok 交互式
    • -print0 0表示查询出的结果集的分隔符为 NUL
    [root@iZy4sb7b6agxt2Z demo]# stat stdio.h 
      File: ‘stdio.h’
      Size: 31641           Blocks: 64         IO Block: 4096   regular file
    Device: fd01h/64769d    Inode: 1051436     Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/   fight)   Gid: (    0/    root)
    Access: 2020-02-08 10:32:56.157924435 +0800
    Modify: 2020-02-07 17:39:56.495737825 +0800
    Change: 2020-02-08 10:32:37.490994734 +0800
    
    1. 将查询结果用来执行某个操作
    # {} 代表查询出的结果
    [root@** demo]# find ./ -name "*.s" -exec ls -l {} ;
    lrwxrwxrwx 1 root root 4 Feb  8 09:35 ./file.s -> file
    
    # exec的衍生版,可以提示用户是否操作
    [root@** demo]# find ./ -name "*.s" -ok rm -r {} ;
    lrwxrwxrwx 1 root root 4 Feb  8 09:35 ./file.s -> file
    

    注意:{}和之间必须有一个空格,;代表结束

    grep

    查询文件内容

    [root@** demo]# grep -r -n 'copy' ./
    ./stdio.h:15:   You should have received a copy of the GNU Lesser General Public
    
    • -r 递归
    • -n 显示行号

    ps aux :查看后台进程

    [root@** demo]# ps aux | grep mysql
    mysql     4394  0.0  9.0 1145288 171212 ?      Sl   Feb03   2:26 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
    root     14635  0.0  0.0 112712   964 pts/6    R+   11:33   0:00 grep --color=auto mysql
    

    xargs

    和find、管道组合使用,将文件查询结果作为执行参数

    xargs 和 -exec {} ; 效果一样

    xargs和 -exec相比,将查询结果做了分片处理,将结果集分片映射

    [root@** demo]# find ./ -type f | xargs ls -l
    -rw-r--r-- 1 root  root     0 Feb  8 09:47 ./bb/a1
    -rw-r--r-- 1 root  root    30 Feb  8 09:35 ./file
    -rw-r--r-- 1 fight root 31641 Feb  7 17:39 ./stdio.h
    

    xargs的问题:默认将结果集用空格作为分隔符,当文件名包含空格时,就会出问题

    解决办法:自己设定分隔符

    [root@** demo]# find ./ -type f | xargs ls -l
    ls: cannot access ./11: No such file or directory
    ls: cannot access 22: No such file or directory
    -rw-r--r-- 1 root  root    30 Feb  8 09:35 ./file
    -rw-r--r-- 1 fight root 31641 Feb  7 17:39 ./stdio.h
    
    # 设定分隔符
    [root@** demo]# find ./ -type f -print0 | xargs -print0 ls -l
    xargs: WARNING: a NUL character occurred in the input.  It cannot be passed through in the argument list.  Did you mean to use the --null option?
    ls -l ?...y
    total 44
    -rw-r--r-- 1 root  root     0 Feb  8 11:46 11 22
    # 没有提示操作
    [root@** demo]# find ./ -type f -print0 | xargs -0 ls -l
    -rw-r--r-- 1 root  root     0 Feb  8 11:46 ./11 22
    -rw-r--r-- 1 root  root     0 Feb  8 09:47 ./bb/a1
    -rw-r--r-- 1 root  root    30 Feb  8 09:35 ./file
    -rw-r--r-- 1 fight root 31641 Feb  7 17:39 ./stdio.h
    

    或者 find ./ -type f -print0 | xargs -0 ls -l

    安装卸载软件

    从源中安装

    1、 centos Redhat系列

    安装

    yum install tree

    卸载

    yum remove tree

    2、Ubuntu deb系列
    安装

    apt install gcc

    卸载

    dpkg -r gcc

    安装包

    1. Redhat --> centos --->
     rpm -ivh mysql57-community-release-el7-8.noarch.rpm 
    
    1. deb --> Ubuntu
    dpkg -i  xxx .deb 安装
    dpkg -r 命令|xxx.deb 删除
    dpkg -r --purge  xxx.deb 同时删除配置文件
    dpkg -info xxx.deb  查看信息
    dpkg -l  查看系统中已安装软件包信息
    

    源码安装

    1) 解压源代码包
    2) cd dir
    3) ./confiure

    检查文件是否缺失,创建Makefile,检测编译环境
    4) meke
    编译源代码,生成库和可执行文件
    5) sudo make install
    把库和可执行程序,安装到系统中
    6) sudo make distclean

    删除和卸载软件

    压缩解压

    tar

    压缩

    # 压缩并打包
    tar -zcvf file.tar.gz file1 file2 ..
    # 使用bzip2方式压缩
    tar -jcvf file.tar.bz file1 file2 ..
    
    # 将文件或文件夹下的所有文件压缩  file ->file.gz
    gzip file/dir
    
    • -z 用gzip压缩
    • -c|x 压缩 |解压
    • -v 可视化
    • -f force

    gzip

    只能压缩一个文件

    • -r 递归压缩
    • -c 保留原文件
    • -v 可视化
    • -d 解压缩

    解压

    tar  -zxvf file.tar.gz
    tar  -jxvf file.tar.bz
    gunzip file
    

    rar

    安装:

    yum install rar
    rar a -r file.rar dir
    
    unrar x file.rar
    

    zip

    yum install zip
    zip -r file.zip dir
    
    unzip file.zip
    

    其他命令

    ps

    ps aux | grep mysql
    

    查看进程

    &

    后台运行

    ./file &
    

    fg

    切换到前台

    作业好前面需要加 %

    bg

    切换到后台

    kill

    kill PID
    

    env

    查看当前环境变量

    top

    文字版的任务管理器

    man

    安装man-pages,查看库函数

    yum install -y man-pages
    

    在vim中光标在函数上,normal模式下输入K,即可进入man-pages

    帮助文档

    man printf
    man 1 printf  # shell
    man 2 printf  # 系统调用
    man 3 printf  # 库调用
    man 5 passwd  # 文件规范,如第一列代表什么意思
    

    alias

    alias la = 'ls -al'
    

    date

    显示系统时间

    umask

    显示文件掩码,默认touch的文件的权限

    $ umask
    0002
    

    poweroff

    shutdown

    rebot

    用户管理

    切换用户

    # 普通用户
    sudo su username
    # root
    su
    

    设置密码

    # 普通用户
    passwd username
    # root
    passwd
    

    网络管理

    ifconfig

    # ifconfig查看网卡信息
    ifconfig
    # 关闭网卡
    sudo ifconfig eth0 down
    # 开启网卡eth0
    sudo ifconfig eth0 up
    # 给eth0配置临时IPsudo ficonfig eth0 IP
    

    ping

    ping ip
    
  • 相关阅读:
    使用 OpenSmtp.dll 发送邮件 (记录) 西安
    国庆假期加班头疼 西安
    asp.net 下 使用 showModalDialog 模式窗口 (记录) 西安
    严重声讨 西安
    牙痛,医生说我这是根尖周炎,有点郁闷
    Google域名被国内某商抢注 竟只得重金去赎
    Windows自带的一个罕为人知的无敌命令
    在CSS中使用继承
    删除字符串最后一个字符的几种方法
    如何在一个RowFilter过的dataview中增加一行
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/12273510.html
Copyright © 2020-2023  润新知