当前位置 博文首页 > A minor:【项目杂记】Linux 最常用命令大全(Ubuntu)

    A minor:【项目杂记】Linux 最常用命令大全(Ubuntu)

    作者:[db:作者] 时间:2021-08-15 10:15

    首先放上一张包含了Linux核心命令的脑图:

    在这里插入图片描述
    下面的文章再对重点命令和上图没列出的命令进行单独讲解。

    1.文件操作命令

    下面是 Linux 主要的文件目录:

    /root:系统管理员的主文件夹
    /home:用户主目录(自行创建的用户的用户目录就在该文件夹下)
    
    /usr/local:用户自行安装的软件
    /opt:放置第三方的软件
    
    /etc:配置文件
    /dev:任何设备与接口都以文件形式存放在此目录
    
    /bin:单用户维护模式下还能够被操作的命令
    /boot:开机所需文件——内核,开机菜单及所需配置文件等
    
    /tmp:任何人均可使用的“共享”临时目录
    /var:主要存放经常变化的文件,如日志
    

    1.1 文件读写操作

    1.读(cat/more/less/head/tail)

    pwd // 当前位置
    
    ls    // 当前目录下所有文件(夹)
    ls -l // 以列的形式显示
    ls -a // 当前目录下所有文件夹,包含.(点)开头的隐藏文件
    ls -F // 以"/"形式显示文件夹,比如 usr/ etc/ 
    ls -R // 递归展示子目录,相当于可以显示当前路径内的所有子文件
    ls -r // 倒序展示,,默认的顺序是(a,b,c,d)正序的
    
    cat [选项].. [文件] // 读一个文件
    cat -n 			   // 查看并显示行号
    cat >b<<EOF 	   // 以覆盖的形式向文件(b)写入,写入EOF时结束(注:1.如果文件不存在会创建,2.该命令可用来清空文件)
    cat a > b 		   // 用文件a的内容覆盖文件b的内容
    cat a >> b         // 将文件a的内容追加到文件b后面
        
    more a.txt // 分页读,一次性加载完
    less a.txt // 分页度,逐页加载,适合读大文件
    cat  a.txt | more  // 只读,-n行号,more分页
        
    head (-n 5) a.txt 	   // 首读,默认10
    tail(-n 5) (-f) a.log // 尾读,默认 10,-f 实时更新
    

    PS:这张图片出自这篇博客。

    2.写(vim/echo/>/>>)

    vim:
        yy / 5yy:  // 复制5行
        p:		    // 粘贴
        dd:        // 删除
        G/gg:      // 首/尾
        a:	        // 撤销
        /~~:       // 查找~(n下一个,N上一个)
        set nu:    // 行号
        
    echo // 打印到控制台
        
    > 	// 重定向:覆盖,可配合所有读操作(ls /a > a.txt)
    >>  // 重定向:追加
    

    3.执行

    sh a.sh  // 前台执行,也可以(./)
        
    nohup command>out.file 2>&1 & // 后台执行
        // nohup: no hang up 不挂起
        // 2>&1: 标准错误与标准输出合并,合并到out.file
        // &: 后台运行
        
    ps -ef|grep 关键字|awk '{print %2}'|xargs kill -9 // 查找,进程号,并关闭
    

    1.2 文件的CRUD

    1.增(mkdir/touch)

    mkdir a 	  // 创建目录a
    mkdir -p a/b  // 创建级联目录a/b,-p多级目录
    touch a.txt   // 创建空文件
    

    2.删(rm)

    rm a.txt    // 删除a.txt
    rm -r a/    // 删除目录a
    rm -f a.txt // -f强制删除
    

    3.改(mv/cp/解压)

    mv a.txt /root // 移动到指定目录
    mv a.txt b.txt // 同一目录下的移动表示重命名
    mv a/ /root/b  // 移动a目录到b目录(注:如果b目录不存在,则会在移动时创建,最终的结果是a目录所有内容进入b目录) 
        
    cp a.txt /root // 拷贝文件到指定目录
    cp -r a/ /root // 拷贝 a 文件夹到 /root 目录
        
    tar -zcvf a.tar.gz  a.txt b.txt // 打包成tar.gz,将当前目录下的a.txt,b.txt打包成a.tar.gz
    tar -zxvf a.tar.gz			    // 解压tar.gz
        
    zip a.txt            // 打包成a.zip
    zip -r a.zip /a  	 // 将a目录打包成a.zip
    unzip (-d /a) a.zip  // 解压zip,-d指定解压目录
        
    gzip a.txt    // 打包成a.gzip
    gunzip a.gzip // 解压a.gzip
    

    4.查(find/locate/grep/history)

    find /a -name a.txt		// 在/a目录下按名查找(注:还可以采用通配符,比如*.conf、redis*)
    find . -user a 		   	// 在当前目录下按user查找
    find /a -size +20M 		// 在/a目录下按文件大小查找
        
    updatedb	 // 创建locate库
    locate a.txt // 寻找指定文件,快
        
    grep // 管道连接符
        
    histroy (5) // 查看历史指令,5只显示近5个
    !178	    // 执行178号历史了命令
    

    2.应用操作命令

    2.1 安装卸载

    apt-get 相当于Ubuntu的软件管家,而CentOS的软件管家是yum

    apt-get update				    // 更新源
    apt-get install (--reinstall) a // 安装,--reinstall重新安装
    apt-get remove (--purage) a 	// 卸载,--purage包括配置文件
    apt-get pgrade a 				// 更新已安装
    apt-get source a 				// 下载源码包
        
    apt-cache search a // 搜索安装包
    apt-cache show a   // 获取包相关信息
    
    // 配置环境变量,
    export JAVA_HOME=/root/jdk-XXX_linux-x64 
    export PATH=$JAVA_HOME/bin:$PATH // 命令行使用export只在当前会话有效,退出命令行后就失效
    source .bashrc					 // 可以通过编辑.bashrc实现永久配置
    

    另外,关于系统环境变量的配置,比如 jdk,maven,git,可以通过以下方式(以配置jdk为例)

    1.首先打开编辑环境变量的文件(注:在用第一次配置时该文件为空)
    vim ~/.bash_profile 	
    
    2.然后输入要配置的环境
    export JAVA_HOME=$/usr/local/java/jdk1.8.0_211
    export PATH=$PATH:$JAVA_HOME/bin
    注:1)export 命令的意思是导入
        2)mac 的 jdk 默认地址是 Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
        3)建议不要直接配置 PATH 而是先配置 JAVA_HOME,因为在开发时可能会用到 JAVA_HOME
    
    3.使配置的环境变量生效
    source ~/.bash_profile
    
    4.检查jdk环境是否配置成功
    java -version
    
    5.另外,上述配置只是当前会话有效,所以,为了它在整个系统设生效,我们还需(注:这里只用配置一次)
    vim ~/.zshrc
    在最后加上一句
    source ~/.bash_profile
    然后使该配置生效
    source ~/.zshrc
    

    2.2 运行管理

    systemctl status ~		       // 查看指定程序状态
    systemctl enable/disable ~ 	   // 自启
    systemctl start/restart/stop ~ // 开始/停止/重启
        
    ufw stauts			   // 防火墙状态
    ufw enable/disable     // 防火墙开关
    ufw allow 22 (from ip) // 开放端口,from指定ip
    ufw deny smtp 		   // 禁止的服务
    

    两点注意:

    1. Centos 等系统的防火墙是 iptables
    2. 如果没有 systemctl 命令,可以用 service 命令,但格式变为 service iptables stop/status。

    2.3 查看运行情况

    ps 
      -a:显示当前终端所有进程信息
      -u:以用户格式显示
      -x:显示后台运行参数
      -e:所有进程
      -f:全格式
      -T:显示现行终端机下的所有进程
    pstree  // 进程树
        
    kill (-9) a // 杀死指定进程,一般要指定杀死级别(默认15)
    killall	    // 全部杀死
          
    netstat -tlpn // 查看网络状态
    	-t:显示TCP传输协议的连线状态
    	-l:显示监控中的服务器的Socket
    	-p:显示正在使用Socket的程序识别码和程序名称
    	-n:显示网络硬件外围设备的符号连接名称
    	
    top // 查看cpu状态
    
    // 定时任务相关
    crontab [-u username] [-l|-e|-r]
    	-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
    	-e :编辑 crontab 的工作内容
    	-l :查阅 crontab 的工作内容
    	-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑
    

    2.4 系统操作

    shutdown (-h now/1) // 关机,-h定时关闭(现在/1min)
    halt 	// 立即关机
    reboot 	// 重启
    sync    // 数据同步
    设置运行级别
    磁盘操作
    

    3.权限相关命令

    3.1 用户管理

    useradd a  // 创建用户
        -m:创建用户目录(注:如果不-m,则不会创建在/home下创建用户目录)
        -d /home/abc : 自行指定用户主目录(注:如果此目录不存在,就需要加上-m参数,表示创建该目录(abc),并指定它为(a)用户目录)
        -g abc :加入指定用户组(注:用户创建后默认自为一组,比如此时用户a的组为a)
        
    passwd a // 设置密码(注:之后会弹出提示--输入新的 UNIX 密码)
        
    userdel (-r) a // 删除用户,-r删掉用户目录
        
    id 用户名 // 查看指定用户,包括uid和gid(组)
    
    usermod -g 用户组 用户名 // 更改用户组
    usermod -d 目录 用户名   // 更改用户登录目录(注:默认是自己的用户目录(/home/~),root 用户是 /root)
        
    su -xf a // 用户切换,exit退出,高(root)->低(普通用户)不用密码
    sudo	 // 以root身份执行
    

    注:Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

    3.2 用户组管理

    groupadd 用户组 // 创建用户组
    groupdel 用户组 // 删除用户组
    

    3.3 文件管理

    chown (-r) 用户名 文件名 // 更改文件所有者
        
    chgrp (-r) 组名 文件名  // 更改文件所属用户组
        
    chmod u=rwx,g=rx,o=r 文件名 // 更改文件权限 u=所有者,g=同组,o=other
    chmod 7 5 1 文件名   	   // r=4,w=2,x=1
    

    常用命令基本就这些,文末再放个参考链接 …

    cs