Linux常用命令笔记

Linux常用命令笔记

标签: 笔记

根据慕课网达人养成计划归纳总结的相关笔记

Linux简介

1、Linux分为内核版和发行版

2、Windows与Linux的区别

(1)Linux严格区分大小写
(2)Linux中所有内容以文件形式保存,包括硬件
(3)Linux没有扩展名概念,即Linux不靠扩展名区分文件类型(靠权限区分),但会有一些约定寻常的扩展名区分:

  • 压缩包:.gz、.bz2、.tar.bz2、.tgz等
  • 二进制软件包:.rpm
  • 网页文件:.html、.php
  • 脚本文件:.sh
  • 配置文件:.conf

(4)Windows下的程序不能直接在Linux中安装和运行
好处:病毒和木马不能执行
坏处:要针对Linux单独开发

3. 硬盘分区,挂载

(1)分区:将硬盘逻辑上分为几个不同存储空间保存数据
(2)分区类型:(通用)

主分区:最多只能有四个

扩展分区(其实也是一种特殊的主分区):
最多只能有一个

主分区加扩展分区最多有四个
不能写入数据,只能包含逻辑分区

逻辑分区

(3)格式化:其目的不是为了清楚数据,而是为了写入文件系统
根据用户选定的文件系统(如FAT16(最大支持2GB分区)、FAT32(单个文件大小不能超过4GB,支持分区大小能达到16GB)、NTFS、EXT2、EXT3、EXT4等)
,在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。

首先将磁盘分为等大小的数据块(4kb一个),在分区列表里建立二维表格(ID号(I节点)、修改时间、权限、文件保存位置)

常见设备名

  • dev:硬件设备文件
  • hd:硬盘
    • 例:/dev/sda1:第一块(a)SATA接口硬盘的第一个(1)分区
    • sda1中1的位置上1、2、3、4只能给主分区命名,即使主分区只有两个,第一个逻辑分区也是5
  • sd:SCSI或SATA或USB硬盘
  • cdrom或hdc:光驱
  • fd:软盘
  • lp:打印机(25针)
  • usb/lp:打印机(USB)
  • mouse:鼠标

挂载:给分区分配盘符的过程

必须分区:/(根分区)、swap分区(交换分区,内存2倍(内存4GB之内)、同内存相同(内存大于4GB)(虚拟内存)
推荐分区:/boot(启动分区,200M)(系统启动至少需要几十MB)
挂载:把盘符和分区连接在一起的过程
挂载点:目录

4 Linux常用命令

命令 【选项】 【参数】(个别命令不遵循)
当有多个选项是,可以写在一起 -L和-a 可写成-aL
简化选项与完整选项 -a=--all

查看文件: ls

ls【选项】 【文件或目录】(操作对象) (不加选项,不加文件也出现)
选项:

    -a 显示所有文件,包括隐藏文件
    -l 显示详细信息
    -d 查看目录属性
    -h 人性化显示文件大小
    -i 显示inode(i节点)

权限位:(10位)

-rw-r--r--:-文件类型(-文件、d目录、l软链接文件(快捷方式)、块设备文件、字符设备文件、套接字文件、管道文件。只要求掌握前三个,后四个特殊)

    除去第一位,后面每三位为一组,代表文件的(u)所有者、(g)所属组、(o)其他人三个身份。r读 w写 x执行
    用户组:相同身份,相同权限的人

建立目录: mkdir

建立目录:mkdir mkdir -p【目录名】 (-p为递归创建建(创建多个目录))
切换目录:cd
简化操作:

    cd ~/cd 进入当前用户的家目录             cd -    进入上次目录
    cd .. 进入上一级目录                   cd .    进入当前目录

显示当前目录: pwd

删除目录: rmdir

删除目录:-r 删除文件 -f 强制

     rmdir【目录名】(只能删除空白目录)
     rm -rf【目录名】强制删除所选目录

复制命令: cp

cp 【选项】 【源文件或目录】 【目标目录】
选项:

    -r 复制目录
    -p 连带文件属性复制
    -d 若原文件是链接文件,则复制链接
    -a 相当于 -pdr(复制文件和原文件一模一样)

mv【原文件或目录】 【目标目录】(两个目录是同一级的时候就是改名)

5. 常用目录的作用

    /       根目录
    /bin和/sbin   命令保存目录(普通用户就可以读取的命令)
    /boot         启动目录,启动相关文件
    /dev          设备文件保存目录
    /etc          配置文件保存目录
    /home         普通用户的家目录
    /lib          系统库保存目录
    /mnt          系统挂载目录
    /media        挂载目录
    /root         超级用户的家目录
    /proc和sys    目录不能直接操作,这两个目录保存的是内存的过载点
    /tmp          临时目录
    /usr          系统软件资源目录
        /usr/bin/ 系统命令(普通用户)
        /usr/sbin/系统命令(超级用户)
    /var          系统相关文档内容

链接命令:ln -s [源文件][目标文件] -s创建软连接

    硬连接特征:
                1、拥有相同的i节点和存储block块,可看做是同一个文件
                2、可通过i节点识别
                3、不能跨分区
                4、不能针对目录使用
              (类似于同一个教室的前后门)
    软连接特征:
               1、类似Windows快捷方式
               2、软连接拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
               3、lrwxrwxrwx    l软连接 (软连接文件权限都为rxwrxwrxw)
               4、修改任意文件,另一个都改变
               5、删除原文件,软连接不能使用

6. 文件搜索命令

1. locate 【文件】

在后台数据库中按文件名搜索,搜索速度快
数据库地址/var/lib/mlocate(数据库每天更新一次)
updatedb (强制更新数据库)
缺点:只能按照文件名来搜索
/etc/updatedb.comf配置文件(conf一般为配置文件扩展名)
PRUNE_BIND_MOUNTS="yes"
#开启搜索限制
PRUNEFS=
#搜索时,不搜索的文件系统
PRUNENAMES=
#搜索时,不搜索的文件类型
PRUNEPATHS=
#搜索时,不搜索的路径

2. 命令的搜索命令whereis与which

 —— whereis 命令名
      #搜索命令所在路径及帮助文档所在位置
       -b:只查找可执行文件        -m:只查找帮助文件
 —— which 文件名
     搜索命令的位置和别名,有的也不会显示
     cd:shell内置命令,不需要有独立执行文件
  PATH环境变量:定义的是系统搜索命令的路径
     【root@localhost ~】#echo $PATH
     /usr/lib/pt-3.3/bin:
     /ust/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
     执行自己写的脚本必须加绝对路径,否则要放在PATH环境变量中

3. 文件搜索命令 find【搜索范围】【搜索条件】

 #搜索文件
 find / -name install.log
 #避免大范围搜索,会非常耗费系统资源
 #find是在系统当中搜索符合文件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配
        通配符:*——匹配任意内容       []——匹配任意一个中括号内的字符
                ?——匹配任意一个字符
 find /root -iname install.log   #不区分大小写
 find /root -ust root            #按所有者搜索
 find /root -nouser              #查找没有所有者的文件

没有所有者的目录一般为垃圾文件,但是如果文件由内核产生,就没有所有者(proc,sys中),外来文件如U盘、光盘中的文件也没有所有者

查找10天前修改的文件
find /var/log/ -mtime +10      
      -10:10天内修改文件      10:10天当天修改的文件     
      atime  文件访问时间            ctime 改变文件属性时间       mtime 修改文件内容时间
查找文件大小为25k文件
find . -size 25k  
       -25k 小于25KB的文件        25k 等于25KB的文件     +25k 大于25KB的文件 (若是查找兆字节,必须用M,千字节用k)  size默认单位是数据块
       512字节)
find . -inum 262422  #查找i节点是262422的文件
查找/etc/目录下,大于20KB并且小于50KB的文件
find /etc/ -size +20k -a -size -50k   
 -a and 逻辑与   -o or 逻辑或
查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \;    
#-exec/-命令 {}\; 对搜索结果执行操作

4. 字符串搜索命令grep

 grep 【选项】 字符串 文件名      #在文件中匹配符合条件的字符串
       选项:    -i 忽略大小写       -v 排除指定字符

find命令与grep命令的区别

  find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
  grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配(包含字符的文件都能搜到)
  若搜索是文件名称,使用通配符,若搜索文件中内容,用正则表达式匹配

7.帮助命令

1. man (manual的缩写) man ls #查看ls的帮助

man的级别:     1:查看命令的帮助      
                2:查看可被内核调用的函数帮助
                3:查看函数和函数库的帮助
                4:查看特殊文件的帮助(主要是/dev(硬件)目录下的文件)
                5:查看配置文件的帮助
                6:查看游戏的帮助
                7:查看其他杂项的帮助
                8:查看系统管理员可用命令的帮助
                9:查看和内核相关文件的帮助
 man -f 命令 相当于 whatis 命令             man -数字 打开相应等级
 man -k 命令 相当于 apropos 命令       只要包含关键字的有关文件全部显示

其他帮助命令 命令 --help

shell内部命令帮助和man差不多: help shell内部命令   #获取shell内部命令的帮助
            info命令
              按 回车:   进入子帮助页面(带有*标记)
              按 u:      进入上层页面
              按 p:      进入上一个帮助小节
              按 n:      进入下一个帮助小节
              按 q:      退出

8. 压缩与解压缩命令

常用压缩格式:.zip    .gz    .rar  .bz2    .tar.gz     .tar.bz2

1、 .zip格式压缩

zip 压缩文件名(不一定要写后缀名) 源文件  #压缩文件        软件包为红色
zip -r 压缩文件名 源目录    #压缩目录
解压缩:unzip 压缩文件    #解压缩.zip文件

2、 .gz格式压缩

 gzip 源文件                      #压缩为.gz格式的压缩文件,源文件会消失
 gzip -c 源文件 > 压缩文件        #压缩为.gz格式,源文件保留
 gzip -r 目录                     #压缩目录下所有的子文件,但是不能压缩目录
 解压缩:gzip -d 压缩文件         #解压缩文件
         gunzip 压缩文件          #解压缩文件

3、 .bz2格式压缩

 bzip2 源文件              #压缩为.bz2格式,不保留源文件
 bzip2 -k 源文件           #压缩之后保留源文件
    不能压缩目录 
 解压缩:bzip2 -d 压缩文件  #解压缩,-k保留压缩文件
         bunzip2 压缩文件   #解压缩,-k保留压缩文件

4、 .打包命令 tar -cvf 打包文件名 源文件

     选项:   -c: 打包    -v: 显示过程    -f: 指定打包后的文件名

5、 .解打包命令: tar -xvf 打包文件名 选项:-x 解打包

    .tar.gz格式是先打包为.tar格式,再压缩为.gz格式
    tar -zcvf 压缩包名.tar.gz 源文件    
          选项:  -z:压缩为.tar.gz格式
    tar -zxvf 压缩包名.tar.gz
          选项:  -x:解压缩.tar.gz格式
    tar -jcvf 压缩包名.tar.bz2 源文件
          选项:  -z:压缩为.tar.bz2格式
    tar -jxvf 压缩包名.tar.bz2
          选项:  -x:解压缩.tar.bz2格式
         解压缩目录在之后加   -C 目录  就能把压缩包放到所写目录里
         压缩多个目录在压缩包之前加绝对路径
    tar -ztvf 压缩文件     只查看不解压

9. 关机和重启命令

1、 shutdown[选项]时间

    选项:    -c:取消前一个关机命令    -h:关机     -r:重启     
    时间:now    (加&表示将这条命令放在后台执行,因为这条命令后电脑将不在有反应)
    Ctrl+c:取消命令     尽量避免远程关机(?)

2、 其他关机命令

    [root@localhost ~]# halt
    [root@localhost ~]# poweroff
    [root@localhost ~]# init 0
    但是不是太安全,不会在关机重启是正确保存文件

其他重启命令

    [root@localhost ~]# reboot
    [root@localhost ~]# init 6   init:调用系统级别

系统运行级别

    0 关机
    1 单用户:Windows中安全模式,启动最小程序,主要做系统修复
    2 不完全多用户,不含NFS服务:字符界面    NFS:文件共享服务
    3 完全多用户:字符界面
    4 未分配 
    5 图形界面
    6 重启

[root@localhost ~]# cat/etc/inittab 修改系统默认运行级别 id:3(开机进入字符界面):initdefault
[root@localhost ~]# runlevel 查询系统运行级别 蹦出来的是前一个是之前的级别,后一个是现在级别

退出登录命令

[root@localhost ~]#logout

10. 其他常用命令

1、挂载命令

  • 查询与自动挂载

     [root@localhost ~]# mount     查询系统中已经挂载的设备
     [root@localhost ~]# mount -a  依据配置文件/etc/fstab的内容,自动挂载
    
  • 挂载命令的格式

     [root@localhost ~]# mout [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
     -t文件系统:加入文件系统类型来指定挂载的类型,ext3、4(标准文件系统)、iso9660(光盘文件系统)
     -o特殊选项:可以指定挂载的额外选项
     参数                说明
     atime/noatime    更新访问时间/不更新访问时间。范文分区文件时,是否更新文件的访问时间,默认为更新。
     async/sync       异步/同步。默认为异步
     auto/noauto      自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动
     defaults         定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
     exec/noexec      执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
     remount          重新挂载已经过载的文件系统,一般用于指定修改特殊权限
     rw/ro            读写/只读,文件系统挂载时,是否具有读写权限,默认是rw
     suid/nosuid      具有/不具有SUID权限,设定文件系统是否具有SUID和SGID权限,默认是具有
     user/nouser      允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
     usrquota         写入代表文件系统支持用户磁盘配额,默认不支持
     grpquota         写入代表文件系统支持组磁盘配额,默认不支持
    
  • 挂载光盘
    mount -t iso9660 /dev/sr0 /mnt/cdroom(光盘挂载点)
    或mount /dev/sr0 /mnt/cdroom

  • 卸载命令

     [root@localhost ~]# umount 设置文件名或挂载点
     用完之后必须卸载
    
  • 挂载U盘

     fdisk -l(查看系统中已识别硬盘)
     mount -t vfat /dec/(U盘所在分区)/mnt/usb/(挂载点)
    

注:Linux默认不支持NTFS文件系统,所以不能直接挂载U盘 可以在系统中安装ntfs-3g,但是只读模式

2、 用户登录查看

  • w 用户名
  • USER:登录的用户名
  • TTY:登录终端
  • FROM:从哪个IP地址登陆
  • LOGIN@:登录时间
  • IDLE:用户闲置时间
  • JCPU:指的是个该终端连接的所有进程占用的时间。这个时间并不包括过去的后台作业时间,但包括当前正在运行的后台作业所占用的时间
  • PCPU:是指当前进程所占用的时间
  • WHAT:当前正在运行的命令
  • who 用户名
    命令输出:用户名 登录终端 登录时间(登录来源IP地址)
  • last
    last命令默认是读取/var/log/wtmp文件数据
    命令输出:用户名 登录终端 登录IP 登录时间 推出时间(在线时间)
    /var/log/wtmp是二进制文件不能用vi打开,为了防止人为修改
  • lastlog
    lastlog命令默认是读取/var/log/lastlog文件内容
    命令输出:用户名 登录终端 登录IP 最后一次登录时间

Shell基础

1、Shell概述

Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序,用户可以用Shell开启动、挂起、停止甚至是编写一些程序。它还是一个功
能强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令

2、Shell的分类

Bourne Shell:从1979起Unix就开始使用Bourne Shell,主文件名为sh
C Shell:主要在BSD班的Unix系统中使用,其语法和C语言相似而得名
Shell的两种主要语法彼此不兼容。Bourne主要包括sh、ksh、Bash、psh、zsh;C主要包括csh、tcsh
Bash兼容sh、tcsh等

3、脚本执行方式

  • echo [选项] [输出内容] 输出有空格时,须加双引号

     选项:
     -e  支持反斜线控制的字符转换
     \a     警告音
     \b     退格键,即左删除键
     \n     换行符
     \r     回车键
     \t     制表符,即Tab键
     \v     垂直制表符
     \0nnn  按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
     \xhh   按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
    

例:

    echo -e “Hello\b world”(回车)
    Hell world
    echo -e “\x68\t\x65\t\x6c\n\x6c\t\x6f\t”(回车)
    h    e    l
    l    o

输出颜色

    #30m=黑色   31m=红色   32m=绿色   33m=黄色    34m=蓝色  35m=洋红  36m=青色   37m=白色
    \e代表调用颜色
    命令格式:echo -e “\e[1;(颜色序号)XXXXX\e[0m”   [1表示开启颜色,[0表示关闭颜色
  • 脚本执行

     赋予执行权限,直接运行
     chmod 755 hello.sh
     ./hello.sh方向路径   或绝对路径
     通过Bash调用执行脚本
     bash hello.sh
    

4、Bash的基本功能

  • 命令别名与快捷键

     alias:查看系统中所有的命令别名
     alias 别名=‘原命令’      设定命令别名  临时生效,注销重启后就会还原
    
  • 别名永久生效与删除别名

     vi ~/.bashrc   写入环境变量配置文件    环境变量配饰文件:所有定义操作环境的文件   重启才会生效
     source  .bashrc  会立即生效    将文件内容调用一遍
     unalias  别名   删除别名(临时删除)
    
  • 命令生效顺序:

     第一顺位执行用绝对路径或相对路径执行的命令
     第二顺位执行别名
     第三顺位执行Bash的内部命令
     第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
     PATH:用“:”分割的一些系统目录
    
  • 常用快捷键

     ctrl+c:强制终止当前命令
     ctrl+l:清屏
     ctrl+a:光标移动到命令行首
     ctrl+e:光标移动到命令行尾
     ctrl+u:从光标所在位置删除到行首
     ctrl+z:把命令放入后台
     ctrl+r:在历史命令中搜索   出现(reverse-i-search)'vi':
    
  • 历史命令

     history[选项][历史命令保存文件]
     选项:   -c 清空历史命令      -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
     历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改
     HISTSIZE=      (数字)
    
  • 历史命令的调用
    使用上、下箭头调用以前的历史命令
    使用“!n”重复执行第n条命令
    使用“!!”重复执行上一条命令
    使用“!字串”重复执行最后一条一该字串开头的命令

  • 输出重定向
    把数据写进电脑叫输入,电脑显示出来叫输出

  • 标准输入输出:

    设备           设备文件名       类型               文件描述符
    键盘           /dev/stdin    标准输入              0
    显示器         /dev/sdtout   标准输出              1
    显示器         /dev/sdterr   标准错误输出          2
    
  • 输出重定向

     正确输出是输出到显示器,输出重定向是指不在输出到显示器中,一般是输出到文件中
     类型                    符号                        作用
     标准输出重定向        命令 > 文件                  以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
                         命令 >> 文件                 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
     标准错误输出重定向    命令 2> 文件                 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
                         命令 2>> 文件                以追加的方式,把命令的错误输出输出到指定的设备或文件当中
     正确输出和错误       命令 > 文件 2>&1           以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
     输出同时保存         命令 >> 文件 2>&1          以追加的方式,把正确输出和错误输出都保存到同一个文件当中
                        命令 &>文件                  以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
                        命令 &>>文件                 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
                        命令 >>文件1 2>>文件2      把正确的输出追加到文件1中,把错误的输出追加到文件2中
    
  • 输入重定向<

  • wc [选项][文件名] (统计命令)

     选项:     -c统计字节数        -w统计单词数        -l统计行数
     例如:    yum list | wc -l      统计yum list 命令结果行数
    
  • 多命令执行符:

     ;       命令1;命令2     多个命令顺序执行,命令之间没有任何逻辑联系
     &&       命令1&&命令2     逻辑与    当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行
     ||       命令1||命令2     逻辑或    当命令1执行不正确,则命令2才会执行,当命令1正确执行,则命令2不会执行
    
  • 管道符:

     |        命令1 | 命令2     命令1的结果作为命令2的操作对象(此时命令2不用再写操作对象)
     <5>通配符
     ?        匹配一个任意字符                   *         匹配0个或任意多个任意字符,即可以匹配任何内容
     []        匹配中括号中任意一个字符           ^         逻辑非,即去除所写的字符
     <6>Bash中其它特殊符号
     ''   若将变量放在单引号中,任何字符没有特殊意义
     ""   双引号中只有“$”,“`(反引号)”,“\”有“调用变量的值”、“引用命令”和“转义符”的特殊含义,其他符号没有特殊意义
     ``(反引号)  aa=`ls`    表示先执行ls命令,然后将值赋给aa变量。也可用$(___)代替,两种表示相同。
    

推荐阅读更多精彩内容

  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 2,563评论 0 4
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    O感悟人生O阅读 9,696评论 2 32
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 2,927评论 0 13
  • 大胆表达自己的内心,珍惜
    丢丢明阅读 24评论 0 0
  • 室友的妈妈从家乡给她寄了腊肉和香肠来,我们寝室里有六个人,第一次室友煮了香肠,是川味的,每个人对着香肠眼睛都发光,...
    紫薇忘了水葫芦阅读 122评论 0 1