Linux_指令杂烩
目录
指令集合
- 命令行计算器
[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
Linux_指令杂烩的更多相关文章
- Linux_基础指令
目录 目录 前言 cd和pwd ls cat du mkdir touch rm cp mv which whereis find ln head和tail wc tar vim useradd 添加 ...
- 20135220谈愈敏Linux_总结
Linux_总结 具体博客链接 计算机是如何工作的 操作系统是如何工作的 构造一个简单的Linux系统MenuOS 系统调用(上) 系统调用(下) 进程的描述和创建 可执行程序的装载 进程的切换和系统 ...
- iOS逆向工程之Hopper中的ARM指令
虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...
- 步入angularjs directive(指令)--点击按钮加入loading状态
今天我终于鼓起勇气写自己的博客了,激动与害怕并存,希望大家能多多批评指导,如果能够帮助大家,也希望大家点个赞!! 用angularjs 工作也有段时间了,总体感觉最有挑战性的还是指令,因为没有指令的a ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- [Django]用户权限学习系列之User权限基本操作指令
针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...
- 机器指令翻译成 JavaScript —— No.5 指令变化
上一篇,我们通过内置解释器的方案,解决任意跳转的问题.同时,也提到另一个问题:如果指令发生变化,又该如何应对. 指令自改 如果指令加载到 RAM 中,那就和普通数据一样,也是可以随意修改的.然而,对应 ...
- ARM的栈指令
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
随机推荐
- Java的GUI框架如何选择? Swing、SWT、AWT、SwingX、JGoodies、JavaFX、Apache Pivot、BeautyEye框架(美观)?
AWT 是swing的基础,运行良好,但缺少高级组件.如果您打算创建丰富的应用程序,那么AWT可能不是最好的方法.但是对于不需要丰富用户界面的较小gui应用程序来说.这可能非常适合,因为它是一个久经考 ...
- vue 列表渲染 v-for
1.数组列表 v-for 块中,我们拥有对父作用域属性的完全访问权限.v-for 还支持一个可选的第二个参数为当前项的索引 1.1 普通渲染 v-for="item ...
- IDEA设置类头,方法头自定义内容~图文
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 2019-11-29-Roslyn-打包自定义的文件到-NuGet-包
title author date CreateTime categories Roslyn 打包自定义的文件到 NuGet 包 lindexi 2019-11-29 08:23:21 +0800 2 ...
- pycharm 激激活码
pycharm 激活码 [20191224亲测可用] http://lookdiv.com/neet/youd/codes.html
- boost多线程编译出错
添加 -lpthread CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/tools/boost/includeexport CPLUS_INCLUDE_PATH LI ...
- 【NOIP2017模拟6.25】小W的动漫
题目 小W最近迷上了日本动漫,每天都有无数部动漫的更新等着他去看,所以他必须将所有的动漫排个顺序,当然,虽然有无数部动漫,但除了1号动漫,每部动漫都有且仅有一部动漫是它的前传(父亲),也就是说,所有的 ...
- chrome scrollTop 获取失败问题及解决方案
https://blog.csdn.net/h357650113/article/details/78384621
- 对url给后台传数据的时候特殊字符需要转义
URL中的字符只能是ASCII字符,但是ASCII字符比较少,而URL则常常包含ASCII字符集以外的字符,如非英语字符,汉字,特殊符号等等,所以要对URL进行转换.这个过程就叫做URL编码,或者叫U ...
- Missing radix parameter.报错解决方法
当报“Missing radix parameter.”这个错的时候,是因为使用parseInt没有传第二个参数,以前简写的时候大家几乎都不传,甚至不知道还有第二个参数. 当时候Eslint预发检查时 ...