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安装
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 \t world"
hello world
[root@localhost ~]# echo -e "hello \r world"
world
[root@localhost ~]# echo -e "\x68\t\x65\t\x6c\n\x6c\t\x6f\t" //按照十六进制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