命令
Linux命令分为内部命令(shell层;Linux自带)和外部命令(二进制文件)
- enable 展示所有内部命令
- [command]+help 内部命令及其说明
- type [command] 查看命令类型
设置别名
- 例:alias cdnet=“cd /etc/sysconfig/twork-scripts/”
- alias 查看系统中所有的别名
- unalias cdnet 别名取消
alias cdnet=“cd /etc/sysconfig/twork-scripts/”
alias hostname=cdnet
hostname
centos7.magedu.com
命令优先级
别名 > 内部命令 > 外部命令
命令输入
多个命令可以用;
隔开
一个命令可以用\
分成多行
开机启动项
reboot 重新启动
halt,poweroff 关机
shutdown -h +10 #-h 小时
会话
【命令】
- screen -S [SESSION] 创建会话
- screen -x [SESSION] 加入会话
- exit 退出会话
- ctrl+a,d 剥离当前会话
- screen -ls 显示所有打开的screen会话
- screen -r [SESSION] 恢复会话
重定向
-
STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名 -
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
> 文件内容会被覆盖
set –C 禁止将内容覆盖已有文件,但可追加
>| file 强制覆盖
set +C 允许覆盖
>> 原有内容基础上,追加内容
软连接和硬链接
硬连接
ln filename [linkfile]
硬连接
ln -s filename [linkfile]
软连接和硬链接区别
根本区别:
硬链接本质是一个文件多个名字而已
软连接本质是多个不同的文件
区别:
1.跨分区 (硬链接不可以,软连接可以)
2.inodenumber(硬链接相同,软连接各不相同)
3.连接数(硬链接会增加,软连接不会增加)
4.文件夹(硬链接不支持,软连接支持)
5.删除(硬链接还能访问,软连接不能访问)
文本编辑
grep
grep – 全局搜索正则表达式并输出到屏幕
-
选项
-v 不包含 -o 仅显示匹配 -i 忽略大小写 -q 静默输出 (输出结果不显示再控制台) -c 统计匹配的行数 -n 显示匹配行数 -A# 后#行 //#为数字 -B# 前#行 -C# 前后各#行 -e 多个选项间的逻辑关系 or 关系 -w 匹配整个单词 -E 使用扩展正则表达式
-
命令展示
ifconfig |grep -o “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}” --color=auto
ifconfig |grep -o --color “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”
ifconfig |grep -o --color “([0-9]{1,3}.){3}[0-9]{1,3}”
vim
*选项
s替换
:1s/root/ROOT/g g全局
:1s/root/ROOT/i i忽略大小写
%s/^[^#]/#&/
高级扩展命令
:set ai 自动缩进 set noai
:set nu 增加行号 set nonu
:set hlsearch 增加高亮 set nohlsearch
:set format=unix 设置文件格式为linux
:set format=docs 设置文件格式为windows
:set cul 增加行标示线 set nocul
sed
sed ‘1p’ /etc/passwd 第1行自动打印(第1行打印2次)
- 选项 -n 不自动打印
ifconfig|sed -n '2p' 只打印第2行
seq 10 |sed -n '3,5p'
sed -n '/^[^#]/p' /etc/fstab
sed '/^#/d' /etc/fstab d删除
seq 10|sed -n '1~2p' 只打印奇数行
seq 10|sed -n '2~2p' 只打印偶数行
seq 10|sed '5,8a\ xyz\nabc'
sed '=' f3 = 加行号
sed '5!d' f3 除了第5行都删
sed -n 's/quiet/& net.ifnames=0/p' /etc/default/grub
ifconfig eth0 |sed -n '2p' |sed -e 's/^.*inet//' -e 's/ net.*//'
sed '/^#Name/s/#//' /etc/httpd/conf/httpd.conf
【特殊写法】
sed ‘s/bash/’’’$USER’’’/g’ /etc/passwd 三个单引号
awk
awk '{print "hello,awk"}'
awk '{print "hello,awk"}' /etc/fstab
awk 'BEGIN{print 2*3}'
awk -F: '{print $1}' /etc/passwd $1第一个字段,$0整行
awk -F: '{print $1,$3}' /etc/passwd
df |awk '{print $5}'
awk -F: '{print $1"\t"$3}' /etc/passwd
awk -F: '{print $1"======"$3}' /etc/passwd
awk -F: '{print $1"\n"$3}' /etc/passwd
awk -F: '{print "user shell is "$7}' /etc/passwd
awk -v FS=":" '{print $1FS$3}' /etc/passwd
D=":";awk -v FS="$D" '{print $1FS$3}' /etc/passwd
echo $D
awk -v FS="$D" '{print $1FS$3}' /etc/passwd
awk -v FS="$D" -v OFS="---" '{print $1,$3}' /etc/passwd
f1(a,b,c;xx,yy,zzz;12,34,5\n67,89;A,B,C)
awk -v FS=',' -v RS=';' '{print $2}' f1
awk -v FS=',' -v RS=';' -v ORS=';' '{print $2}' f1
awk -F: '{print NF}' /etc/passwd
awk -F: '{print $NF}' /etc/passwd
awk -F: '{print $(NF-1)}' /etc/passwd
awk -F: '{print NR,$NF}' /etc/passwd
awk 'BEGIN{i=1;sum=0;while(i <= 100){sum+=i;i++};{print sum}}'
Package安装
rpm
局限性:无法解决包的依赖性问题
-
选项
-i(install)
-v(verbose) 详细过程
-h(查看执行进度)
–test 干跑
–nodeps 忽略依赖性
–replacepkgs 覆盖
-e
-ql
-qp
-qi
-qf 查看磁盘中的文件来自哪个包
-K 查看合法性
-V 是否不一致
–import 导入秘钥
yum安装
主要解决包的依赖性问题
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
yum命令的用法
yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)
升级程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] [...]
查看程序包information:
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
yum makecache
源码编译安装
以httpd源码包再centos7安装为例
1 下载源码并解压缩
tar xvf httpd-2.4.37.tar.bz2 -C /usr/local/src/
2 安装编译相关工具及依赖的包
yum groupinstall "development tools"
yum install apr-devel apr-util-devel pcre-devel
3 进入解压目录
./configure --prefix=/apps/httpd24 --sysconfdir=/etc/httpd24
4.make -j 4 #j 进程
5 make install
6 PATH变量的设置
echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh
7 使用软件
apachectl 启动服务
8.关闭防火墙
查看 ss -vnL
关闭(下次开机启动)systemctl disable firewall --Centos7
(立即启动) systemctl stop firewall ---centos7
变量
变量声明
name='hello'
echo "$name"
set name='wang'
echo $name or echo '$name'
环境变量
export
声明 declare -x,env ,printenv,export
取消 unset name
位置变量
$1,$2
$0 脚本名称
$* 传递脚本所有参数,全部参数合为一个字符串
$@ 传递脚本所有参数,每个参数独立为字符串
$# 传递给脚本的所有参数的个数
$@ $* 只有在被双引号括起来的时候才有差异
set -- 清空所有位置变量
只读变量
read 读取键盘输入
read name
wang #name=‘wang’