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

原文地址:https://www.cnblogs.com/midworld/p/11049542.html