• Linux 基础命令(二)


    1、虚拟机安装

    VMware特点

    • 不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统
    • 本机系统可以与虚拟机系统网络通信
    • 可以设定并且随时修改虚拟机操作系统的硬件环境
    • 保存系统快照(以便还原系统)

    VMware技巧

    • 快照:菜单栏 - 虚拟机 - 快照,在装好一个系统好之后可以创建一个快照,在系统奔溃的时候可以恢复快照
    • 克隆:菜单栏 - 虚拟机 - 克隆,与快照类似,分完整的克隆和简易

    虚拟机硬件配置

    • 选择“我以后再安装操作系统(s)”
    • 选择32位linux(占用内存少)
    • 推荐20G硬盘空间
    • 内存:不超过PC最大值
    • 处理器:数量1,核数4;虚拟化引擎(选择“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)”)
    • CD/DVD (IDE):连接(使用 ISO 镜像文件(M))
    • 网络适配器:桥接(局域网内的所有设备都可以通讯,推荐)、NAT(仅可以上网)、Host-only(仅本机可用)

    2、系统分区与格式化

    (windows)分区、分配盘符,(linux)分区、格式化、分配盘符

    磁盘分区

    是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分。碟片一旦划分数个分区(Partition),不同类的目录与文件可以存储进不同的分区

    # 以下仅共参考
    /boot	# 200m
    /swap	# 内存的 1.5 ~ 2倍
    /home	# 2G
    /		# 剩余大小空间
    

    分区类型

    • 主分区:最多只能有 4 个分区
    • 拓展分区:
      • 最多只能有1个
      • 主分区加拓展分区最多有4个
      • 不能写入数据,只能包含逻辑分区
    • 逻辑分区

    格式化(高级格式化)

    又称逻辑格式化,它是指根据用户选定的文件系统(如Win中的 FAT16、FAT32、NTFS以及 Linux中的 EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划分出一片用于存放分配表、目录表等用于文件管理的磁盘空间

    • 格式化可以将分区划分为等大小的数据库(block),同时创建文件目录(含ID、修改时间及权限等)用于存储数据
    • 同时也可以使逻辑分区可以写入数据
    • 先匹配ID(linux 中 为node),再查看是否有权限,匹配则取出
    • FAT32 单个文件最大不超过4G,EXT4 是目前linux中默认的文件系统

    3、分区之分区设备文件名与挂载

    linux中硬件设备文件名

    • / :表示根目录
    • dev:里面存放硬件设备

    分区设备文件名

    • 设备文件名
      • /dev/hda1(IDE 硬盘接口):hd 表示(IDE)硬盘接口,a 表示第一个硬盘(b、c分别为第二三个硬盘,依次类推),1 表示第一个分区
      • /dev/sda1(SCSI 硬盘接口、SATA 硬盘接口):sd 表示(SCSI / SATA)硬盘接口

    IDE接口:IDE 传输速度慢(133M/s)

    SCSI 接口:老式服务器接口

    SATA 接口:现在的硬盘标准接口(500M/s)

    主分区(用1234),拓展分区(逻辑分区只能从5开始)

    挂载(给分区分配盘符的过程)

    挂载点相当于win中的盘符

    • 必须分区
      • / (根分区)
      • swap 分区(虚拟内存,交换分区,内存2倍。不超过2GB)
    • 推荐分区
      • /boot (启动分区,200MB)

    文件系统结构

    boot、home 都有各自的分区,都在根目录下

    4、linux安装

    centos 各版本下载

    VMware虚拟机安装CentOS 6.9图文教程

    4.1、欢迎界面

    • Install or upgrade an existing system:安装或升级现有系统
    • Install system with basic video drive:安装过程采用基本的显卡驱动
    • Rescue installed system:进入系统修复模式
    • Boot from local drive:退出安装从硬盘启动
    • Memory test:存储介质检测

    4.2、软件包选择

    • desktop:桌面
    • minimal desktop:最小化桌面
    • minimal:最小化
    • basic server:基本服务器
    • database sever:数据库服务器
    • web server:网页服务器
    • virtual host:虚拟主机
    • software development workstation:软件开发工作站

    4.3、安装日志

    • /root/install.log:存储了安装在系统中的软件包及其版本信息
    • /root/install.log.syslog:存储了安装过程中留下的事件记录
    • /root/anaconda-ks.cfg:以Kickstart 配置文件的格式记录安装过程中舍此的选项信息

    5、xshell 安装

    • 虚拟机上登录 centos后,键入命令 ifup eth0 ,再输入 ifconfig,找到 inter add (ip)
    • 安装 xshell
    • 连接:左上角选择文件 - 新建会话 - 主机名为Linux 的 ip

    6、linux常用 命令

    6.1、命令基本格式

    [root@localhost ~]

    • root :管理员用户名
    • localhost: 主机名
    • ~ :当前所在目录(家目录/home)
    • :超级用户的提示符,普通用户提示符是$

    命令格式

    命令 [选项] [参数]         // [] 表示可选
    

    个别命令不遵循此格式,当命令有多个选项时,可写一起;选项分简化选项和完整选项(如 -a 等于 --all)

    linux中文件权限

    -rw-r-r---r--
    - :文件类型(- 表示文件、d 表示目录、l 表示软链接文件)
    rw-    r--  r--r--  每三个为一组,分别代表“所有者、所属组、其他人”
    u(所有者)、g(所属组)、o(其他人)、r(读)、w(写)、x(执行)
    

    查询目录中内容:ls

    ls [选项] [文件或目录]
    ls -l /dev/
    ls -lh install.log
    ll 为 ls -l 别名
    

    选项:

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

    • lh:人性化显示文件大小
    • rw-r--r--:文件权限
    • 1:调用计数
    • root:所有者(管理员用户)
    • 时间:最后一次修改时间

    6.2、目录处理命令

    目录(类似win中文件夹)处理命令、文件处理命令、链接命令

    建立目录:mkdir(make directories)

    mkdir -p [目录名]
    -p:递归创建
    mkdir dir1
    mkdir -p dir1/dir2
    

    切换所在目录:cd(change directory)

    cd [目录]
    
    // 简化操作
    cd ~   :进入当前用户的家目录
    cd      :进入当前用户的家目录
    cd -    :进入上次目录
    cd ..    :进入上一级目录
    cd.      :进入当前目录
    

    Tab 键技巧

    • 查看目录下所有文件:当要切换到某个目录时忘记了,可以连续按两下
    • 命令补全:当忘记某个命令时,比如输入 u,连续按两下可以查看所有 u开头的命令

    查询所在目录位置:pwd(print working directory)

    删除空白目录:rmdir(remove empty directies)

    rmdir [目录名]
    rmidr bols/
    

    删除文件或目录:rm(remove)

    rm -rf [文件或目录]
    选项:
    	-r   删除目录
    	-f   强制
    rm -r /etc    删除目录     会问是否真的删除
    
    

    复制命令:cp(copy)

    cp [选项] [源文件或目录] [目标目录]
    
    

    选项:

    -r :复制目录

    -p :连带文件属性复制(复制的时间属性与原文件有差别,要想属性完全一致可用 -a)

    -d :若源文件是链接文件,则复制链接属性

    -a :相当于 -pdf

    // 将install.log复制到tmp目录下,若tmp/后还接有名字,则为改名(即install.log 变为 ana.log)
    cp install.log /tmp/ana
    
    cp -r japan/   /tmp/      复制目录要带 r
    
    
    

    剪切或改名命令:mv(move)

    mv [原文件或目录] [目标目录]
    
    
    mv install.log longls     //改名(同目录下)
    
    

    原文件与目标目录在同一目录下为改名,否则为剪切

    6.3、linux 中常见目录作用

    • 根目录下的 bin、sbin,usr 目录下的bin 和 sbin,都是用来保存系统命令的;bin 目录所有人都可以做,sbin 只有超级用户才能用
    • proc 和 sys 目录不能直接操作,都是用于保存内存的过载点
    • 可以在 root、home目录或 tmp 目录任意创建内容

    6.4、链接命令

    链接命令:ln(link)

    ln -s [原文件] [目标文件]
    
    

    生成链接文件,-s (创建软链接soft)

    硬链接特征:

    • 拥有相同的 inode 节点和存储 block,可看做同一个文件
    • 可通过 inode 节点识别
    • 不能跨分区
    • 不能针对目录使用
    • 删除原文件硬能使用
    ln /root/anaconda-ks.cfg /tmp/ana.hard  //给anaconda-ks.cfg创建硬链接
    
    

    软链接特征(加快找寻文件速度):

    • 类似于win快捷方式
    • 软链接拥有自己的 i 节点和block块,但是数据块中只保存原文件名和 i 节点号,并没有实际的文件数据
    • lrwxrwxrwx l 软链接:软链接权限都为 lrwxrwxrwx (真实权限以原文件为准)
    • 修改任意文件,另一个都改变
    • 删除原文件,软链接不能使用
    • 原文件一定要使用 绝对路径
    • 软链接数据块中只保存了原文件名和 i 节点号,并没有实际的文件数据,找文件时先找到软链接的 i 节点 和 block 块,从而找到原文件的 i 节点 和 block 块,最后找到原文件
    ln -s /root/install.log  /tmp/sb.soft     原文件一定要使用 绝对路径(/root/install.log),否则报错
    
    

    7、文件搜索命令

    • 文件搜索命令 locate
    • 命令搜索命令 whereis 与 which
    • 文件搜索命令 find
    • 字符串搜索命令 grep
    • find 命令与 grep 命令的区别

    7.1、文件搜索命令locate命令

    • 与 find 命令相比,速度更快,它是在后台数据库(/var/lib/mlocate)中按文件名搜索;因此新建的文件需要更新数据库才能搜索成功
    • 功能单一,只能搜索文件名
    locate 文件名
    updatedb 更新数据库(在新建文件后可以手动更新,也可以自动更新)
    locate locate  查找与locate相关的命令,查看数据库名称
    
    

    /etc/updatedb.conf 配置文件:

    • locate 命令搜索时会遵循如下限制(当为yes时),因此比如在 /tmp 目录下的文件就搜索不到
    • PRUNE_BIND_MOUNTS = "yes":开启搜索限制
    • PRUNEFS = :搜索时,不搜索的文件系统
    • PRUNENAMES =:搜索时,不搜索的文件类型
    • PRUNEPATHS =:搜索时,不搜索的路径

    7.2、命令的命令

    搜索命令的命令:whereis

    搜索命令所在路径及帮助文档所在位置,只能搜索系统命令,不能搜索文件/目录

    whereis 命令名
    选项:
    	-b:只查找可执行文件
    	-m:只查找帮助文档
    
    

    搜索ls命令所在位置和帮助文档所在位置:

    /bin/ls:ls命令所在位置,后面的为帮助文档

    搜索命令所在位置及命令别名:which

    which 命令
    
    

    shell 自带的命令不能通过 whereis 和 which 查看,如 cd

    PATH环境变量:

    定义的是系统搜索命令的路径,当执行命令时,系统会在 PATH下的路径去寻找并执行命令,可用 echo $PATH 查看这些路径;当想运行自己写的脚步或者某个程序时,也可以添加路径

    [root@localhost ~]# echo $PATH
    /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    
    
    

    https://blog.csdn.net/kevinhanser/article/details/79352109

    https://blog.csdn.net/hao_rh/article/details/73275070

    https://www.cnblogs.com/leibg/p/4479921.html

    7.3、find 命令

    find [搜索范围] [搜索条件]
    find / -name install.log  //根目录搜索会耗费系统资源
    
    
    • 避免大范围搜索,会非常耗费系统资源
    • find 是在系统当中搜索符合条件的文件名,如需要匹配使用通配符匹配,通配符是完全匹配

    Linux 中的三种常用通配符:

    • *:匹配任意内容
    • ?:匹配任意一个字符
    • []:匹配任意一个中括号内的字符
    • 使用通配符应放在双引号内

    find /root -name "ab[cd]"          //搜索 abc、abd 的文件
    find /root -name "*[cd]"           //搜索以 c/d 结尾的文件
    
    

    find /root -iname install.log   //不区分大小写
    find /root -user root    // 按照所有者搜索
    find /root -nouser   // 查找没有所有者的文件
    
    

    ps:Linux 中除了内核(kernel)产生的文件及外部文件没有所有者外,其他的都应有所有者,因此可以用 find /root -nouser 命令查找Linux 中的垃圾文件

    find /var/log/  -mtime +10   //查找10天前修改的文件
    
    
    • -10:10天内的修改文件
    • 10:10天当天修改的文件
    • +10:10天前修改的文件
    • atime:文件访问时间(access)
    • ctime:改变文件属性(change)
    • mtime:修改文件内容(make)

    find . -size 25k    // 查找文件大小是25kb的文件,(.表示当前目录),也可以查找(兆M)
    ls -i   //查找i节点
    find . -inum 262422  //查找i节点是262422的文件
    
    
    • -25k:小于等于25kb的文件
    • 25kb:等于25kb的文件
    • +25kb:大于25kb的文件
    find /etc -size +20k -a -size -50k   //查找/etc/目录下,大于20kb且小于50kb的文件
    -a	and	逻辑与,两个都满足
    -o	or	逻辑或,两个满足一个即可
    ls -lh /etc/mine.types      //查看 mine.types 这个文件的详细信息
    
    
    find /etc -size +20k -a -size -50k -exec ls -lh {} ;
    //查找/etc/目录下,大于20kb且小于50kb的文件,并且显示详细信息(将find命令查找出的交给第二天命令处理即(exec 后的命令 ,如 ls -lh))
    -exec/-ok 命令 {} ; 对搜索结果执行操作
    
    

    7.4、grep 命令

    字符串搜索命令:grep

    grep [选项] 字符串 文件名     //在文件中匹配符合条件的字符串
    选项:
    	-i	忽略大小写
    	-v	排除指定字符串(除...以外的字符串)
    grep "size" install.log  //搜索 字符串 size 在 install.log中
    
    

    find 与 grep 的区别

    • find:在系统中搜索符合条件的文件名,若需要匹配则使用通配符匹配,通配符是完全匹配
    • grep:在文件中搜索符合条件的字符串,若需要匹配使用正则匹配,正则是包含匹配
    • grep命令时模糊匹配,只要字符串中含要查找的字符串,都会计算在内

    8、帮助命令

    8.1、man 命令

    获取指定命令的帮助(manual)

    man 命令
    man ls   // 查看 ls 的帮助
    
    

    man 的级别:

    查看命令拥有哪个级别的帮助:

    man -f 命令
    whereis 命令    //也可以用这个或
    whatis
    man -5 passwd 
    
    

    • whereis:可以查找出命令所在位置及 级别
    • whatis:可以查找出命令的级别以及作用(如 - password file 密码文件)
    • man 命令可以通过级别查找命令相应的帮助

    查看和命令相关的所有帮助:

    man -k 命令    //相当于
    apropos 命令
    apropos passwd   //查找包含 passwd 的所有命令的帮助,当忘记命令全名的时很有效
    
    

    8.2、其他帮助命令

    选项帮助:help

    命令 --help   //获取命令的选项帮助
    
    

    shell 内部命令帮助

    help shell内部命令    //获取shell内部命令的帮助
    whereis cd        //查看 cd 是否为 shell内部命令,查不到具体的命令路径,即为 shell内部命令
    help cd   //获取内部命令的帮助
    
    

    • whereis 可以判断命令是否为 shell 内部命令
    • help 不能查找 shell 内部命令以外的帮助
    • man 也不能查找 shell 内部命令的帮助

    详细命令帮助:info

    info 命令
    - 回车	进入子帮助页面(带有*号标记)
    - u		  进入上层页面
    - n		  进入下一个帮助
    - p		  进入上一个帮助
    - q		  退出
    
    

    9、压缩命令

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

    9.1、.zip 格式压缩

    与 win 中的 .zip 通用

    zip 压缩文件名 源文件       // 压缩文件
    zip -r 压缩文件名 源目录     // 压缩目录
    unzip 压缩文件        //解压缩
    
    

    9.2、.gz格式压缩

    压缩为 .gz 格式的压缩文件,源文件会消失,win 中也可以识别,.rar 不可以在 Linux 中使用

    gzip 源文件
    gzip -c 源文件 > 压缩文件     //压缩为.gz格式,源文件保留
    gizp -c cangls > cangls.gz
    gzip -r 目录  // 压缩目录下所有的子文件,但不能压缩目录
    
    
    gzip -d 压缩文件      //解压缩文件
    gunzip 压缩文件      // 解压缩文件
    gunzip -r 目录       //解压缩目录
    
    

    9.3、.bz2格式压缩

    不能压缩目录

    bzip2 源文件      // 压缩为.bz2格式,不保留源文件
    bzip -k 源文件    //压缩之后保留源文件
    
    
    bzip2 -d 压缩文件    //解压缩,-k 保留压缩文件
    bunzip2 压缩文件     //解压缩,-k保留压缩文件
    
    

    9.4、打包命令 tar(.tar.gz)

    tar -cvf 打包文件名 源文件
    选项:
    	-c:	打包
    	-v:	显示过程
    	-f:	指定打包后的文件名
    tar -cvf longzls.tar longzls
    
    
    • 先打包成 tar ,再用压缩成 .gz 格式
    • 解决目录不能压缩的问题

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

    也可以直接压缩成.gz格式,不用另外打包

    其实 .tar.gz 格式是先打包为 .tar 格式,再压缩为 .gz 格式

    tar -zcvf 压缩包名.tar.gz 源文件
    选项:
    	-z:压缩为 .tar.gz 格式
    
    tar -zxvf 压缩包名.tar.gz
    选项:
    	-x:解压缩.tar.gz格式
    tar -zcvf /tmp/test.tar.gz jp install.log       // 同时压缩两个文件,压缩到tmp 目录下
    tar -ztvf test.tar.gz   //查看压缩文件,不解压
    
    
    tar -jcvf 压缩包名.tar.bz2 源文件
    选项:
    	-z:压缩为 .tar.bz2 格式
    
    tar -jxvf 压缩包名.tar.bz2
    选项:
    	-x:解压缩.tar.bz2格式
    tar -jxvf jp.tar.bz2 -C /tmp/     //解压到 tmp 目录下
    
    

    10、开机关机命令

    10.1、shutdown 命令

    仅 shutdown 命令在关机重启时能保存正在运行的服务,因此也是这些关机命令中最安全的

    shutdown [选项] 时间
    选项:
    	-c:	取消前一个关机命令
    	-h:	关机
    	-r:	重启
    date                     // 查看时间
    shutdown -h now          // 现在就关机
    shutdown -h 05:30 &      //定时关机,并在后台运行,不影响xshell,双击回车
    shutdown -c 取消上一条命令
    
    

    10.2、其他关机/重启命令

    //关机
    halt
    poweroff
    init 0
    
    //重启
    reboot
    init 6
    
    

    10.3、系统运行级别

    init 表示调用系统运行级别,如 init 0、init 6

    runlevel             //查看当前系统的运行级别
    N 3                  // 第一个表示上一个运行级别(N 表示空),第二个表示当前运行级别
    cat /etc/inittab      //打开 inittab,找到  id:3:initdefault:,修改 3 或 5
    id:3:initdefault:     //修改系统默认运行级别,即当装了图形界面和字符界面的时候,设置重启默认开启的界面
    
    
    0 关机 4 未分配
    1 单用户(类似win中的安全模式) 5 图形界面
    2 不完全多用户,不含 NFS 服务(没有网络和 3 一样) 6 重启
    3 完全多用户(字符界面,也就是xshell默认的界面)

    10.4、退出登录命令

    强制退出易导致服务器服务卡死宕机,不得不重启,而服务器重启会直接导致用户体验,因此正确的退出很重要

    logout
    
    

    11、其他命令

    11.1、挂载命令

    Linux 中,挂载类似于 win 中的分配盘符;外部设备(光盘、硬盘、U盘)需要手动挂载

    查询和自动挂载

    mount          //查询系统中已经挂载的设备
    mount -a    	//依据配置文件 /etc/fstab的内容,自动挂载
    
    

    挂载命令格式

    mount [-t 文件系统] [-o 特殊设备] 设备文件名 挂载点
    
    

    选项:

    • -t 文件系统:加入文件系统类型来指定挂载的类型,、可以 ext3、ext4、iso9660(光盘) 等文件系统
    • -o 特殊选项:可以指定挂载的额外选项

    特殊选项:

    一般不建议修改,修改后一定要修改回来,避免发生不可知错误

    挂载光盘:

    在根目录下(/),有三个空目录(media(一般用来挂载光盘)、mnt(一般用来挂载U盘)、misc(一般用来挂载磁带机))可以用来挂载外部设备

    mkdir /mnt/cdrom/         //建立挂载点(先在mnt目录下新建一个目录 cdrom)
    mount -t iso9660 /dev/sr0 /mnt/cdrom/      //挂载光盘(把硬件设备挂载到这个挂载点)
    mount /dev/sr0 /mnt/cdrom/        //上一条目录的简写(省略文件权限)
    cd /mnt/cdrom/					//切换到 cdrom
    ls 								//查看挂载分区
    
    

    卸载(光盘)命令

    • Linux 中退出光盘或其他外部设备,需要先卸载
    • 卸载之前要先退出挂载点(即cdrom)回到根目录,不然报 device is busy.
    umount 设备文件名或挂载点
    umount /mnt/cdrom/
    
    

    挂载U盘

    Linux 默认不支持 NTFS 文件系统

    fdisk -l		//查看U盘设备文件名(一般情况U盘为 sdb1,若是其他的则写其他,如sdb2)
    mkdir /mnt/usb/	//建立挂载点
    mount -t vfat /dev/sdb1 /mnt/usb/		//vfat,fat指的是 fat32 文件系统
    
    

    ps:Linux 中要挂载 U盘(一般为NTFS文件系统),需要先安装 NTFS 3g 的软件,才能挂载,但也只能只读不能写入操作

    11.2、用户登录查看命令

    查看登录用户信息:

    01、w 命令

    w 用户名
    w 	//可以不加用户名
    
    

    02、who 命令

    who 用户名		//也可以省略用户名
    
    

    命令输出:

    • 用户名
    • 登录终端
    • 登录时间(登录来源IP地址)

    查询当前登录和过去登录的用户信息:

    01、last 命令

    last
    
    
    • last 命令默认读取 /var/log/wtmp文件数据
    • 命令输出:
      • 用户名
      • 登录终端
      • 登录IP
      • 登录时间
      • 退出时间(在线时间)

    02、lastlog 命令

    查看所有用户的最后一次登录时间

    lastlog
    
    
    • last 命令默认读取 /var/log/wtmp文件数据
    • 命令输出:
      • 用户名
      • 登录终端
      • 登录IP
      • 最后一次登录时间

    12、shell 基础

    12.1、shell 概述

    shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至是编写一些程序

    它还是一个功能强大的编程语言,易编写,易调试,灵活性强。shell 是解释执行的脚步语言,在 shell中可以直接调用 Linux 系统命令

    12.2、shell 的分类

    • Bourne shell:从 1979年起 Unix 就开始使用 Bourne Shell,主文件名为 sh
    • C Shell:C Shell 主要在 BSD 版的 Unix 系统中使用,语法与 C语言相类似而得名
    • Shell 的两种主要语法类型有 Bourne 和 C,彼此不兼容,Bourne 家族主要包括 sh、ksh、Bash(当前Linux中主要用这个)、psh、zsh;C家族主要包括 csh、tcsh
    //查看当前Shell 类型
    [root@localhost ~]# echo $SHELL
    /bin/bash
    
    //查看 Bash 兼容 Shell
    [root@localhost ~]vim /etc/shells         // 在shells目录下可以看到与 bash 兼容的 Shell,也就是说可以使用兼容 Shell
    [root@localhost ~]sh 			//调用 sh
    sh-4.1# exit					//退出 sh
    
    
    

    12.3、脚本执行方式

    输出命令:echo

    echo [选项] [输出内容]
    
    

    选项:

    ​ -e:支持反斜杠控制的字符转换

    [root@localhost ~]# echo "hello world"    	//有空格时需要加 双引号
    hello world
    [root@localhost ~]# echo hello
    hello
    
    

    控制字符:

    [root@localhost ~]# echo -e "hello 	 world"
    hello 	 world
    [root@localhost ~]# echo -e "hello 
     world"
     world
    [root@localhost ~]# echo -e "x68	x65	x6c
    x6c	x6f	" 	//按照十六进制ASCII码也同样可以输出(x 表示十六进制,68表示h ...)
    h	e	l
    l	o	
    
    

    输出颜色:

    // 30m=黑色,31m=红色,32=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色
    e:表示调用颜色,[1:表示开启颜色选项,e[0m:表示关闭颜色
    [root@localhost ~]# echo -e "e[1;31m 我爱你 e[0m "	//输出颜色(红色)
     我爱你 
    
    

    PS:Linux 中 ! 有特殊含义,一般不加;Linux 纯字符界面不支持 中文,xshell 和 图形界面支持中文

    12.4、第一个脚本

    Shell 可以直接调用运行脚本,Linux 中 # 代表注释,但是脚本语言中 #!/bin/bash 不是注释,也不能省略,它是标准的脚本语言格式

    [root@localhost ~]# vim hello.sh	//创建一个名为 hello.sh 的脚本
    #!/bin/bash
    #The first program			//注释
    echo -e "e[1;34m 天上掉下一个林妹妹 e[0m"
    
    

    脚本执行:

    • 方法1:脚本执行需要赋予执行权限,才能运行
    chmod 755 hello.sh
    ./hello.sh		//相对路径,./ 表示当前路径
    /root/hello.sh		//或者绝对路径执行
    
    
    • 方法2:通过Bah 调用执行脚本(不用赋予权限)
    bash hello.sh
    
    

    12.5、Bash 的基本功能

    12.5.1、命令别名与快捷键

    01、查看和设定别名:

    alias		//查看系统中所有的命令别名
    alias 别名= '原命令'		//设定命令别名,重启失效
    alias ls='ls --color=auto'
    alias vi='vim'		//将 vim 设定为 vi 
    
    

    02、别名永久生效与删除别名:

    vim ~/.bashrc		//写入环境变量配置文件,~ 表示家目录
    alias vi='vim'
    source .bashrc		//使bashrc生效
    unalias 别名			//删除别名,永久删除也需要删除配置文件里的命令
    
    

    03、命令生效顺序:

    • 第一顺位:使用绝对路径或相对路径执行的命令
    • 第二顺位:执行别名
    • 第三顺位:执行 Bash 的内部命令
    • 第四顺位:执行按照 $PATH 环境变量定义的目录查找顺序的第一个命令

    04、常用快捷键:

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

    12.5.2、历史命令

    • bash_history 是上次登录注销后正确保存的命令
    • 历史命令默认保存 1000 条,可以在环境变量配置文件 /etc/profile 中进行修改,打开找到 HISTSIZE=1000修改成你需要的即可
    history [选项] [历史命令保存文件]
    cat .bash_history 
    history -w
    
    

    选项:

    ​ -c 清空历史命令

    ​ -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

    历史命令的调用:

    • 使用上、下箭头调用以前的历史命令
    • 使用 “!n” 重复执行第 n 条历史命令
    • 使用 “!!” 重复执行上一条命令
    • 使用 “!字串” 重复执行最后一条以该字串开头的命令

    12.5.3、命令与文件补全

    在 Bash 中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按 “Tab” 键就会自动进行补全;依赖 PATH

    还可以补全目录,按两下 Tab 键

    12.5.4、输出重定向

    01、标准输入输出:

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

    02、输出重定向:

    标准输出是输出到显示屏,输出重定向是将输出结果输出到指定文件/目录或设备中,这样的好处是在没人值守时也能看到输出结果

    [root@localhost ~]# ifconfig > test.log		//将网卡信息输出到 test.log文件中,文件不存在则会自动创建
    
    
    

    PS:

    • 一个 > 会覆盖,两个 > 是追加
    • 保存错误信息需要用到 标准错误输出 错误命令 2>>文件
    • 标准错误输出,2>>文件,是没有空格的

    [root@localhost ~]# cat xdy >> access.log 2>>error.log
    [root@localhost ~]# cat error.log
    cat: xdy: 没有那个文件或目录
    
    

    03、Linux中的黑洞:

    ls &>/dev/null		//	/dev/null 相当于win中的回收站,输出进去即不会显示在显示屏,也不会显示在文件中(相当于消失了),适用于程序运行时,不要看程序进程(把进程丢弃),只看结果
    
    
    

    12.5.5、输入重定向

    一般用于打补丁,其他情况很少用到

    [root@localhost ~]# wc [选项] [文件名]
    
    

    选项:

    ​ -c 统计字节数

    ​ -w 统计单词数

    ​ -l 统计行数

    //输入 wc 后,回车再输入 字符,输入完成后再  ctrl + d
    [root@localhost ~]# wc								
    ssss  ss ss
    ss
          2       4      15
    
    
    • 命令<文件把文件作为命令的输入 (统计文件的内容 wc < access.log)
    • 命令<<标识符 (统计两个标识符之间的内容)
    • 标识符把标识符之间内容作为命令的输入

    12.5.6、管道符

    01、多命令顺序执行:

    系统自动判别脚本 / 命令是否错误的方法:

    通过多命令顺序执行,简化成最后只要判断是否是 yes 或 no 就能判断

    [root@localhost ~]# ls && echo yes || echo no		//命令正确运行,则打印 yes,不正确打印 no
    abc         anaconda-ks.cfg  hello.sh     install.log.syslog
    abc.tar.gz  error.log        install.log
    yes
    
    

    02、管道符:

    管道符(|),命令 1 的正确输出作为命令2 的操作对象

    [root@localhost ~]# 命令1 | 命令2		//命令 1 的正确输出作为命令2 的操作对象
    
    
    ls -l /etc | more	//表示,more(分屏)查看ls 的结果,more命令用来查看文件
    
    

    查看服务器中所有的连接,并统计

    • LISTEN:监听
    • ESTABLISHED:正在连接
    [root@localhost ~]# netstat -an		//查看系统中所有的网络连接
    [root@localhost ~]# netstat -an | grep ESTABLISHED		//显示所有的正在连接的会话
    tcp        0     52 192.168.0.139:22            192.168.0.132:50625         ESTABLISHED 
    [root@localhost ~]# netstat -an | grep ESTABLISHED | wc -l	//统计所有连接数
    1
    
    
    

    12.5.7、通配符

    01、通配符:

    Linux 中用来通配符来匹配目录或文件名,用正则表达式来匹配文件内容

    [root@localhost film]# ls
    dy1  dy2  dy34  dyab  dyc
    [root@localhost film]# ls dy*
    dy1  dy2  dy34  dyab  dyc
    [root@localhost film]# ls dy?
    dy1  dy2  dyc
    [root@localhost film]# ls dy[0-9]
    dy1  dy2
    [root@localhost film]# ls dy[0-9][0-9]
    dy34
    [root@localhost film]# ls dy[^0-9]
    dyc
    [root@localhost film]# ls dy[^0-9]*
    dyab  dyc
    
    

    使用通配符查询后缀名一样的文件:

    [root@hj test]# ls
    1.txt  2.txt  3.txt  a.pass  b.pass  c.pass  test.tar
    
    [root@hj test]# ls *.pass
    a.pass  b.pass  c.pass
    
    

    02、Bash 中其他特殊符号:

    变量:

    • 变量的定义不能有空格
    • 使用 $ 调用变量的值
    //变量的定义
    [root@localhost ~]# aa=123
    [root@localhost ~]# echo $aa
    123
    
    

    单引号双引号:

    //单引号双引号
    [root@localhost ~]# aa=123
    [root@localhost ~]# echo '$aa'	//特殊字符无特殊含义
    $aa
    
    [root@localhost ~]# echo "$aa"
    123
    
    

    反引号:

    //反引号
    [root@localhost ~]# bb=`ls`
    [root@localhost ~]# echo "$bb"
    abc
    abc.tar.gz
    anaconda-ks.cfg
    error.log
    film
    hello.sh
    install.log
    install.log.syslog
    
    

    $()、转义字符:

    //$()、转义字符
    [root@localhost ~]# cc=$(ls)	//与反引号结果一致
    [root@localhost ~]# echo $cc
    abc abc.tar.gz anaconda-ks.cfg error.log film hello.sh install.log install.log.syslog
    
    [root@localhost ~]# echo $cc
    $cc
    
    
  • 相关阅读:
    查找链表中是否有环linked-list-cycle
    reverse-integer
    AVL树之 Java的实现
    single-number
    Best Time to Buy and Sell Stock II
    maximun-depth-of-binary-tree
    minimun-depth-of-binary-tree
    剑指offer--矩阵中的路径
    grep的几个参数
    fsck和badlocks
  • 原文地址:https://www.cnblogs.com/midworld/p/11049542.html
Copyright © 2020-2023  润新知