目录

指令集合

  1. 命令行计算器
[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_指令杂烩的更多相关文章

  1. Linux_基础指令

    目录 目录 前言 cd和pwd ls cat du mkdir touch rm cp mv which whereis find ln head和tail wc tar vim useradd 添加 ...

  2. 20135220谈愈敏Linux_总结

    Linux_总结 具体博客链接 计算机是如何工作的 操作系统是如何工作的 构造一个简单的Linux系统MenuOS 系统调用(上) 系统调用(下) 进程的描述和创建 可执行程序的装载 进程的切换和系统 ...

  3. iOS逆向工程之Hopper中的ARM指令

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...

  4. 步入angularjs directive(指令)--点击按钮加入loading状态

    今天我终于鼓起勇气写自己的博客了,激动与害怕并存,希望大家能多多批评指导,如果能够帮助大家,也希望大家点个赞!! 用angularjs 工作也有段时间了,总体感觉最有挑战性的还是指令,因为没有指令的a ...

  5. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具

    前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...

  6. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  7. [Django]用户权限学习系列之User权限基本操作指令

    针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...

  8. 机器指令翻译成 JavaScript —— No.5 指令变化

    上一篇,我们通过内置解释器的方案,解决任意跳转的问题.同时,也提到另一个问题:如果指令发生变化,又该如何应对. 指令自改 如果指令加载到 RAM 中,那就和普通数据一样,也是可以随意修改的.然而,对应 ...

  9. ARM的栈指令

    ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...

随机推荐

  1. pip 安装超时解决方案

    已经使用梯子,安装某依赖时仍然超时. 首先检查pip的版本是否需要更新,如果不是最新版本运行命令更新: python -m pip install --upgrade pip 如果仍然超时错误,则运行 ...

  2. Maven项目构建利器04——Maven的一些核心概念

    1.坐标 1)数学上的坐标: [1].在平面上. 使用X,Y两个向量可以唯一的定位平面上的任意一个点 [2]在空间中, 使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点 2)Maven中的坐标: ...

  3. VM错误解决:This Virtual Machine Appears To Be In Use

    刚才准备做网站(数据备份都在VM里面),没想到启动不起来,咋一看,出现This Virtual Machine Appears To Be In Use字号,不过貌似我没有启动任何VM啊,何来in u ...

  4. P1903 奖学金题解

    众所周知,这是一道通过struct结构体进行排序的题目 思路:平常的输入.. 然后定义一个结构体grade,存放每个学生的学号.三科成绩.(也可以只存语文成绩和总分和学号) 自定义cmp函数,通过三层 ...

  5. C++11 学习笔记

    unique_ptr 可以实现如下功能: 1.为动态申请的内存提供异常安全 2.讲动态申请的内存所有权传递给某函数 3.从某个函数返回动态申请内存的所有权 4.在容器中保存指针 5.auto_ptr ...

  6. JSTL标签(转载)

    JSTL标签是一个实现web功能的定制标签库,包括输出功能,条件判断,循环等,使用JSTL标签,为动态编写WEB应用程序提供了很大的方便性,能很好的和Java语言和HTML进行结合.下面我们看看jst ...

  7. event对象中offsetX,clientX,pageX,screenX的区别

    1.offsetXoffset意为偏移量,是事件对象距左上角为参考原点的距离.以元素盒子模型的内容区域的左上角为参考点.不包括border.2.clientX事件对象相对于浏览器窗口可视区域的X,Y坐 ...

  8. Linux基本命令+Makefile

    1.linux下查看进程占用cpu的情况(top): 格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参数 d:指定更新的间隔,以秒计算. q:没有任何延 ...

  9. html address标签 语法

    html address标签 语法 作用:定义文档作者/所有者的联系信息. 说明:如果 <address> 元素位于 <body> 元素内部,则它表示该文档作者/所有者的联系信 ...

  10. python 线程模块

    Python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁. threading 模块提供的其他方法: threading.cu ...