Linux_指令杂烩
2015-12-19 11:05 云物互联 阅读(90) 评论(0) 编辑 收藏 举报目录
指令集合
- 命令行计算器
[jmilk@localhost Desktop]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+2
3
11+13
24
常用于脚本的指令:
basename /etc/fstab 得到文件名
dirname /etc/fstab 得到文件的上级目录名
查看变量的指令:
env 查看环境变量(存放在开机、登陆、打开bash、运行脚本前都要开的4个文件中)
set 查看全部变量
监控命令
watch -n1 "df -i" #每一秒监控一次命令,显示一个分区的inode号剩余量
除了root用户的其他用户不能login
touch /etc/nologin
重定向
标准输入设备:stdin 0 ,只能输入(键盘)
正确输出:stdout 1,只能输出(屏幕)
错误输出:stderr 2,只能输出(屏幕)
其他文件:3+,输入/输出
所有输出(正确、错误)重定向:&>
错误输出定向到正确输出:2>&1 ,为了能够通过管道(管道只能通过正确输入)
输入重定向: < <<
脚本中常用于here结束符:
cat text << EOT #导入配置文件
grep 过滤文件内容
grep keyWord fileName
--color=auto #keyWord颜色高亮
-n #得到keyWord所在行号
-i #不区分大小写
-A3 #keyWord后3行
-B3 #keyWord前三行
vim预设定
个性化设置
vim ~/.vimrc
set nu #在此文件加入自定义的vim个性化设置。
所有用户设置
vim /etc/vimrc
批量注释:CTRL+v -> 选择块 -> I -> 插入# -> ESC -> ESC
替换一列字符: CTRL+v -> 选择 -> s -> 输入字符 -> ESC
替换一行内的字符:
:s/要查找的/要替换的/ #不加g只替换第一个:
:s/要查找的/要替换的/g #加g替换一行内所有
替换多行:
:开始行,结束行 s//要查找的/要替换的/g
全文替换:
:0,$s/要查找的/要替换的/g
:%s/要查找的/要替换的/g
替换当前行到最后一行:
:,$s/要查找的/要替换的/g
当前行到倒数第 3 行:
:,$3s/要查找的/要替换的/g
查看vim当前打开的文件名字:
:args
其他操作:
ctrl+r 还原上一个动作
u 取消上次操作
vim +行号 文件 –>快速的跳到行
系统在启动时要依次运行4个脚本
(1)/etc/profile
(2) /home/~/.bash_profile
(3) /home/~/.bashrc
(4) /etc/bashrc
其中profile 主要写入路径和(全局)变量声明
bash 主要写入存放别名
归档、压缩、文件互传
压缩:
gzip 文件名
gunzip 文件名.gz
bzip2 文件名
bunzip2 文件名.bz2
打包:
tar Xcvf 目的文件名.tar.gz 压缩的源文件或目录(X=z、j、J)
--add-file= #向tar包追加文件
解包:
tar Xxvf 源文件名.tar.gz -C 目的存放路径
解开包后删除原始包文件:
--remove-files
安装软件
rpm– redhat package manager:
安装: rpm -ivh 软件包名
卸载: rpm -e 软件名
更新(卸载老版本,安装新版本):
系统中软件包不能多个版本共存,内核是可以多版本共存的。
rpm -U 软件名 -->若之前没安装则安装并且升级
rpm -F 软件名 -->若之前没安装则不安装,也不升级。安装了,就看看是不是可以升级
rpm -Uvh 软件名 --force -->安装某个已经安装的软件包当中丢失的文件
查询(已经安装):
rpm -q 软件名 查询软件包是否安装
-qi 查询已经安装的软件包的详细信息
-ql 查询软件包文件的安装位置
-qc 安装的配置文件
-qa 所有已经安装的 rpm包
-qf 文件名 找出文件对应的软件包的全称
-q --scripts 安装软件包时运行的脚本
--changelog 更新信息
-qd 安装的帮助文档
查询(没有安装):rpm -qp ...
检测rpm的可靠性:
rpm --import /etc/pki/rpm-pgp/RPM-GPG-KEY-redhat-release #rpm出于安全考虑,每个出厂的rpm都利用非对称加密
rpm --checksig 软件包名 #先引导KEY 再检测
yum –yellow dog updater modifier(黄狗包管理器)
前提:需要建立仓库 repo –>/etc/yum.repos.d/
创建yum源:
yum-config-manager --add-repo=file:///mnt/cdrom
gpgcheck=0
关闭yum源:
yum-config-manager --disable yum 位置
开启yum源:
yum-config-manager --enable yum 位置
yum缓存(yum 安装软件时,先从 yum 源中将软件包和依赖包下载到本地缓存,安装后清除缓存。):
yum makecache 建立缓存
yum clean all 清除缓存
安装:yum install 软件名
localinstal
groupinstall
升级:yum update 更新所有可以升级的软件包
yum update 软件名
yum check_update 检测系统中可升级的软件包
yum groupupdate 组名 检查系统中可升级的软件包
卸载:
yum remove 软件名
yum groupremove 组名
查询:
yum info 软件名
yum list 显示yum仓库列表
yum list 软件名 显示软件是否安装
yum dislist 软件名 显示软件依赖关系
yum search keyWold 查找软件包
yum whatprovides 软件名 找软件从哪个包提供的
yum provides /etc/fstab 找出提供此文件的软件包
yum list kernel 列出可使用的kernel
yum repolist 显示有多少个repo
yum history 查看安装的记录
yum history info ID 号 查看某个 yum 事件
yum history undo ID 号 恢复某个 yum 事件
制作yum仓库:
1.mount /dev/cdrom /mnt/cdrom
2.安装vsftpd (rpm 或 yum)
3.安装createrepo
4.mkdir /var/ftp/cdrom
5.createrepo -v /var/ftp/cdrom –>生成yum数据库
5.cp -rvf /mnt/cdrom /var/ftp/cdrom
6.启动vsftpd–>注意防火墙策略
注:有些系统中,会把升级的软件包放到一个独立的 repo 中。
[update]
name=red hat update
baseurl=http://content.example.com/rhel7.0/x86_64/errata
enabled=1
gpgcheck=0
链接文件
ln -s 软链接, 可以跨分区
ln 硬链接, 不能跨分区
文件查找
1).查找指令 which whereis
2).查找文件
locate 文件
原理:查询的一个数据库(此数据库保存了所有文件的绝对路径),但新建立的文件找不到,由于数据库未更新 ,可以用 updatedb 更新,4:22 自动更新
3) .find
find 路径 -找什么 -exec 命令 {} \;
{}代表找到的结果
-name 按名称
-size +- 按大小
-user 按文件的拥有者
-group 按文件的拥有组
-perm 按权限 --> -(/)324 -wx-w-r-- 只要满足一位就 ok
+324 -wx-w-r-- 此几位必须要有
-newer 文件名 找比此文件新的文件
-older 文件名 找比此文件老的文件
-mmin 120 找正好在前 120 分钟更改或建立的文件 --> +120 找正好在 120 分钟前更改或建立的文件
-120 找更改或建立不到 120 分钟的
find / type f -links +1 找硬链接大于 1 个的普通文件
find / -name host* -ls
正则表达式 :
使用 grep 配合 :
通配符:
? 一个任意字符
* 0-多个任意的字符
cat file | grep [a,b,c] 匹配其中的一个字符
cat file | grep [a-z] 匹配其中的一个字符
[^ab] 以ab开头
[^a-z]* 第一个字符以 a-z 开头的
ls /etc/ | grep [a-z][0-9] 找前面结果包括一个字符 a-z 同时相连字符 0-9 的行
ls ?* 第一个字符随意,后面 0-多个字符
[!.] 除了.
rm -rf .[!.]* 第一个字符是.,第二个字符不是.的,后面随意
rm -rf * --> *通配符默认不会删除隐藏文件的
shopt -s dotglob 指令使得*通配符可以包含.
shopt -u dotglob *通配符不会包括隐藏文件
正则通配符:
(grep -E 或 egrep – 代表后面选项可以有正则表达式)–>官方推荐在正则表达式加上’ ,不加单引号,shell 会认为这个 shell 的通配符?
. 代表单个任意字符
grep .. file 找 file 文件中包含 2 个字符的行
+ +前面字符可以出现多次,一次以上,不能是 0 次
? ?前面的字符可以出现 1 次或 0 次
* *前面的字符可以出现多次或 0 次
.* 相当于任意字符(和 shell 中的*)
grep -E 'a.+' file 包括 a 开头,后面任意多个字符(1-多次)
grep -E 'a.+?' file 包括 a 开头,后面任意字符 0-多次
^a 以 a 开头
a$ 以 a 结尾
^a..b$ a11b axxb akkb