笔记

命令

命令列表 alias 别名

bc 计算器

basename文件基本名

cp 复制

cd 进入文件夹

cat /proc/partition 查看硬盘的使用情况

cat /proc/meminfo 查看内存的使用情况

chvt 切换终端

chown改变文件的所属组 edj:chown -R www /etc/host

clock 查询或设置硬件时间

chattr +A time.log给访问时间加锁不会变 chattr -A time.log给访问时间解锁不会变

clear ctrl+l 清屏

cal 月日历

df 查看硬盘

dirname 查看目录

dd 复制并格式化处理文件

date 查看并设置时间

echo 回显

enable 临时关闭或激活shell命令

exit logout ctrl+d

free显示当前内存使用的数目

file 查看文件类型

hwclock 跟clock一样

hostname主机名

hexdump 用来查看二进制的十六进制的编码

history 查看历史输入指令

hash 哈希表

nano 编辑文档

ifconfig 查看网络详情

lscpu查看内核

lsblk查看硬盘

ln 创建链接

ls 查看文件目录详情

pwd显示当前用户

mv移动或者重命名文件

mkdir创建新的文件或者目录

mknod创建字符或块设备

mandb创建或者更新索引

makewhatis 在6版本时更新man说明

mesg 当前终端的写权限(是否显示在屏幕上)

ntpdate从服务器上下载时间

nc设置路由

rmdir删除空目录

rm删除 reboot重启

rename批量替换文件名

rz windows向linux传送文件

ssh远程登录

source . 保存激活

shred 覆盖

stat显示文件详细内容

strace 描述系统的调用和信号

startx 用来启动Linux windows

screen新建会话

scriptreplay

shutdown关机

tty查看当前任务窗口(pts)

time查看时间

tree数状列出目录内容

touch 更改时间标签或创建空文件

type查看是外部命令还是内部命令

xargs参数过长一个一个传

xxd 与hexdump相反

write 发消息给另一个用户

wall 广播

watch周期性的给指令

write命令用于向指定登录用户终端上发送信息

w who whoami who am i

which查找显示命令的绝对路径

whereis定位指令的二进制程序,源文件,man路径

whatis查命令的功能

uname 查系统的当前信息

init 3 | 5 | 0 |6

前论

认证机制:Authentication 授权: orization 审记:Audtion(日志)

startx 字符界面切换到图形界面 但是不改变init模式

命令

pwd 显示在哪个目录下

Lsb_release-a 操作系统的版本(7以上版本的不自带yum,无法解析该命令)

Uname-r 内核版本号

Init {0关机 3字符 5图形 6重启}

Whoami或who查看当前用户

cat 查看文本文件 cat /etc/enctos-release

ypm管理ypm包

free 查看内存 tty查看终端(terminal)

su 用户名 切换用户 #passwd 更改密码

mv 文件移动runlevel 查看工作模式

type 查看内嵌命令还是外部命令

echo $SHELL 查看系统用的是哪种shell

cat /etc/shells 查看系统支持哪种shell

basname 文件路径 可以去一个路径的基名

冯诺依曼五大体系: 输入输出储存运算控制

2^10=1024=1K
2^20=1024K=1M
2^30=1024M=1G
2^40=1024G=1T
2^50=1024T=1P
2^60=1024P=1E
2^70=1024E=1Z
2^80=1024Z=1Y
2^90=1024Y=1B
2^100=1024B=1N
2^200=1024N=1D

机箱单位: 机架服务器的宽度为19英寸(48.26cm),高度以U为单位,如42U 1U=1.75英寸=44.45毫米

RAM 主存储器(内存)

ROM 辅助存储器

硬盘等ROM属于外设

去IOE IBM ORCALE EMC (dell收购了)

数据库服务mariadb sybase oracle sql sever mysql

邮件服务 sendmail postfix exchange

家用电脑硬盘SATA 服务器电脑硬盘SAS SSD磁盘 接口不同STSA和SSD接口相同

SPOF : single 单一的 point 要点 of failure 故障

inustruction指令 data数据

nginx可以当缓存服务器 cache king

RPM 每分钟的旋转速度

测试硬盘速度

dd if=/dev/zero of=file bs=1M count=1024

测试内存速度

dd if=/dev/zero of=/dev/null  bs=1M count=1024

MTBF:平均无故障时间

固态硬盘(ssd)solid state disk

DAS直连存储 NAS网络连接存储 SAN存储区域网络W

单通道内存节制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是DDR内存就要再乘以2-+ 内存带宽=内存总线频率×数据总线位数/8 示例:DDR内存带宽计算 DDR2667,运行频率为333MHz,带宽为333×2×64/8=5400MB/s=5.4GB/s

windows下的可执行文件:.COM; .EXE;.BAT;.CMD;. VBS;.VBE;.JS;.JSE; .WSF;.WSH;.MSC

posix :库标准

ABI :app与os之间的接口

API:源代码与库之间的接口

看二进制代码 windows的

动态库 .dll 静态库 .lib Linux的

动态库.so 静态库.a

ldd查看是否用到动态库

Library function 函数库

system call open,read,write,iocti

strace 跟踪系统调用 ltrace

context exchange 交互

系统调用时用户空间与内核空间交互 示例: str= “www.magedu.com” // 用户空间
x = x + 100 // 用户空间
file.write(str) // 切换到内核空间
y = x + 200 // 切换回用户空间

time 命令
表示命令中花了多长时间

www.kernel.org linux内核官网

novell natware IPX/SPX

redhat 9.0 分为rhel febora

Linux分支参考网站:http://futurist.se/gldt/

如何获得发行版 CentOS https://wiki.centos.org/Download http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com

网卡启动 图片描述

sha1sum  /dev/sr0 计算哈希值

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。

它接收用户输入的命令并把它送入内核去执行

显示当前使用的shell
#echo ${SHELL}
显示当前系统使用的所有shell
#cat /etc/shells


显示提示符格式
    [root@localhost~]:echo $PS1


修改提示符格式
    PS1="\[\e[31m\][\u@\h \W]\\$\[\e[0m\]"
    \e \033         \u 当前用户
    \h 主机名简称    \H 主机名
    \w 当前工作目录    \W 当前工作目录基名
    \t 24小时时间格式   \T 12小时时间格式
    \! 命令历史数      \# 开机后命令历史数

修改颜色 图片描述

在shell中可执行的命令有两类:

内部命令:由shell自带的,而且通过某命令形式提供

help 内部命令列表

enable cmd可以启用

enable –n cmd禁用内部命令

enable –n 查看所有禁用的内部命令

外部命令:在文件系统路径下有对应的可执行程序文件

查看路径:which -a |--skip-alias; whereis

区别指定的命令是内部或外部命令:
# type COMMAND

Hash常见用法:

hash 显示hash缓存
     –l 显示hash缓存,可作为输入使用
    hash –p path name 将命令全路径path起别名为name
    hash –t name 打印缓存中name的路径
    hash –d name 清除name缓存
    hash –r 清除缓存

.nano文本编辑

date

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; -s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号; -u:显示GMT;

date +<时间格式>

%H 小时,24小时制(00~23) 
 %I 小时,12小时制(01~12) 
 %k 小时,24小时制(0~23)
 %l 小时,12小时制(1~12)
 %M 分钟(00~59) 
 %p 显示出AM或PM %r 显示时间,12小时制(hh:mm:ss %p) 
 %s 从1970年1月1日00:00:00到目前经历的秒数 %S 显示秒(00~59) 
 %T 显示时间,24小时制(hh:mm:ss)
 %X 显示时间的格式(%H:%M:%S)
 %Z 显示时区,日期域(CST) 
 %a 星期的简称(Sun~Sat)
 %A 星期的全称(Sunday~Saturday)
 %h,%b 月的简称(Jan~Dec) 
 %B 月的全称(January~December)
 %c 日期和时间(Tue Nov 20 14:12:58 2012) 
 %d 一个月的第几天(01~31) 
 %x,%D 日期(mm/dd/yy)
 %j 一年的第几天(001~366) 
 %m 月份(01~12)
 %w 一个星期的第几天(0代表星期天) 
 %W 一年的第几个星期(00~53,星期一为第一天)                      
 %Y 年的最两个数字(1999年就是99)



加减操作

例如:

修改时间

hwclock,clock: 显示硬件时钟
   -s     hctosys  以硬件时间为准来修改系统时间
   -w      systohc  以系统时间为准修改硬件时间

MM 月 DD号 hh小时 mm分钟 CC年份后两位 CCYY年份 例如;

cal 显示当前日历(默认为月)

cal 年份 显示年日历

时区:/etc/localtime ?

/dev 磁盘

分区类型: 主分区 1-4 一个硬盘最多四个。最少没有,前提是有别的硬盘。 只有主分区才能做引导,不可再分,只有活动的计算机才有启动系统的资格。一块硬盘只能有一个活动分区。 功能 启动操作系统,存数据。

扩展分区 1-4 一个硬盘最多一个,不能直接存数据,必须划分小的逻辑分区才能存数据。

逻辑分区 5- 存数据,不能启动计算机

lsblk 硬盘分区显示:

挂载mount:将本地分区或者网络共享分配一个目录名 mount point :目标目录即为挂载点

/dev   /etc文件不能独立

硬盘转换系统格式 windows 输入Convert X:/fs:ntfs(“X”为你的磁盘代号)

anaconda 安装向导的名称

cter+alt+f2 安装过程中可执行命令 cter+alt+f6 退出界面

cat  /proc/meminfo       查看内存信息
cat  /proc/partitions    看分区
chvt  1  =  cter+alt+f1      切换虚拟终端

hostname 主机名

dd  命令用于复制文件并对原文件的内容
    进行转换和格式化处理

例如:

dd if=/dev/zero of=sun.txt bs=1M count=1
   if 代表文件
   of代表输出文件
  bs代表字节单文的块大小
  count 代表被复制的块-数
  
df  显示磁盘分区上的可使用的磁盘空间
du   查看对文件和目录磁盘使用空间大小
who     看到登陆信息
    本机登陆是tty  远程连接是pts (虚拟端口的)
runlevel    查看当前模式
gidit   打开记事本(图形界面的)
startx  切换到图形界面相当于打开一个图形软件 不切换模式
id -u   确定身份
id -u   用户名   (管理员是0或500 普通用户1000以上)
w   可以看见用户都在干什么
bc   计算器
rm                  删除      
          -r 将木哭下的文件递归处理
     -f   强制删除
     -I   询问删除

     -v   显示指令的操作过程
rm -rf *  删除除隐藏文件外的所有文件
madir   创建一个文件  
   -m 选择文件的权限
       权限分类:
           r(1) 执行
           w(2)写入
           x(4)读取
       文件格式      
          d          rwxr-             xr-                  x
      文件目录         所有者    所有者所在的组            其他人
   -p   如果上层目录没有建,将上层目录一起建立
su   切换用户

alt+f2(5/6版本有)

二进制打开

物理终端 /dev/console

图形下用户的自动登陆

**nano /etc/gdm/custom.conf

[daemon]

AutomaticLoginEnable=true

AutomaticLogin=wang**

在同一台机器上,多个终端通讯 tty账号的通讯(root用户)

wall     广播发送
write   用户名  正规发送

实验  退出当前的shell
ctel+c   强行退出
ctrl+d    正常退出
logout      exit 退出

ctrl+l  / clar  清屏
reset   清除乱码
rz  与windows传文件   



rpm -qi bash    查看内核版本
echo $shells    使用的shell
cat   /etc/shells       支持的shell

实验:更改提示符颜色

export PS1="\[\e[32m\][\u@\h \W]\\$\[\e[0m\]"




更改登陆提示
    nano  /etc/motd

文件

/bin:二进制可执行命令,系统所需的配置命令;

/boot:开始启动过程所需的文件;

/dev:即设备驱动;

/etc:系统管理和配置文件;

/home:普通用户存储其个人数据和配置文件的主目录;

/root:系统管理员的主目录;

/run:自上一次系统启动以来启动的进程的运行时数据。包括进程ID文件和锁定文件,此目录中 的内容在重启时重新创建;

/sbin:类似/bin目录,系统管理命令,这里存放的是系统管理员使用的管理程序,一般不给普通用户使用;

/tmp:供临时文件使用的全局可写空间,目录存放程序在运行时产生的信息和数据;

/usr:最庞大的目录,安装的软件、共享的库,包括文件和静态制度程序数据;

/var:特定于此系统的可变数据,在系统启动之间保持永久性;

/lib:根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件;

/mnt:系统管理员临时安装文件系统的安装点;

/proc:文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,因而这是一个非常 特殊的目录;

2017/5/19 9:01:54

Linux入门

计算进制 图片描述

strace 查看系统调用itrace查看内存调用?

命令的类型

外部命令:不在bash里,是一个独立文件。

内部命令:在bash里,自身都在的。依赖于shall类型的。

内部命令优先级更高,优先于外部命令

命令前带*号是禁用的意思

执行命令

type 区别指定的命令是内部或外部命令
跟文件名可以查看命令所在的文件   
-a 所有
-p 路径

enable 开启命令
enable -n (命令)  禁用命令,可以一次禁用多个
enable -n 查看所有禁用命令

mesg  (n,y)关闭打开接收广播

yes (内容) 死循环的打印东西

echo $ PATH 查看命令所在的所有文件?

启动后执行过的命令都会存在内存里(存的是路径) 缓存下来的命令会存在哈希表

hash 显示哈希表
  -l 显示详细的命令本身
  –p path name 将命令全路径path起别名为name
  –t name 打印缓存中name的路径
  –d name 清除name缓存
  –r 清除缓存

缓存有一个重要指标 命中率

计算机只会按照目录去寻找命令,要是不告诉它命令,
默认是找不到的,用type也查不到,要想能识别,
就要把这个命令放到/bin目录里,
所以只要把命令放到bin目录下,系统就会识别为外部命令。

witch 查看外部命令的路径
-a 查找所有该命令的路径
witch和type有可能查看的是别名
  --skip-alias可以让命令不显示别名 只显示路径 例如:查看ls
 
whereis 查看外边命令本身路径和帮助文档路径

执行命令的顺序

  1. 内部

  2. hash path

  3. 外部


别名

alias 定义别名 

示例:alias ac="/etc/sysconfig/network-scripts/"

unalias 别名 删除别名

.相当于source

source . bashrc

. bashrc 保存

 halt 断电
 poweof 断电

 
 如果想永久有效,要定义在配置文件中
 
 仅对当前用户:~/.bashrc
 
 对所有用户有效:/etc/bashrc
 
 
 定义别名NAME,其相当于执行命令VALUE
 #alias NAME='VALUE'
   
   不想用别名,想用原始命令的话,在别名后加\或者‘’号
   
   例如:
   “\COMMAND”
   ’COMMAND’
   /PATH/COMMAND:外部命令

优先级: 别名 内部命令 哈希表 外部命令

别名内部命令外部命令 那个优先级高?

常见执行命令格式总结

选项:用于启用或关闭命令的某个或某些功能;

短选项:-c, 例如:-l, -h

长选项:–word,例如:–all, –human-readable

参数:命令的作用对象,比如文件名,用户名等

命令必须要在第一个,大多数情况下都是选项在参数前面
 

多选项,以及多参数和命令之间使用空白字符分隔    
取消和结束命令执行:Ctrl+c,Ctrl+d    
多个命令可以用;符号分开    
一个命令可以用\分成多行 

前面的命令错了,后面还会继续执行。

date

显示时间和日期

更改时间 date MMDDHHmCCYY.SS      
  MM月份DD几号hh小时CCYY年份ss秒
  
  系统时钟:由Linux内核通过CPU的工作频率进行的      
  硬件时钟:主板时间
  
  hwclock,clock: 显示硬件时钟
    -s, --hctosys以硬件时钟为准,校正系统时钟       
    -w, --systohc以系统时钟为准,校正硬件时钟
  ntpdate 172.17.0.1 时间同步协议
  
  时区: /etc/localtime
  timedatectl set-timezone 地点  更改时区(7版本支持)
  cal 显示日历
  cay -y 显示年日历
  
  改为中文 LANG="zh_CN.UTF-8"
  英文"en_US.UTF-8"
  
  ln 参考前一个路径创建另一个 跟cp比较像


nano 文本编辑器

更改时区 图片描述


简单命令

关机:halt, poweroff    
 重启:reboot       
 -f: 强制,不调用shutdown
 -p: 切断电源
 关机或重启:shutdown
  shutdown [OPTION]... TIME [MESSAGE]
   -r: reboot 重启
   -h: halt 可以选择几分钟后或者写一个具体时间   (now马上)
    -c:cancel 取消
     TIME:now: 立刻
      +m: 相对时间表示法,多久之后;例如+3
      hh:mm: 绝对时间表示,指明具体时间

前台执行:不能再用终端应用了,被该命令全部霸占 。

后台执行:不占用前台,调入后台执行。

screen命令

创建新screen会话
  screen –S [SESSION]
加入screen会话
  screen –x [SESSION]
退出并关闭screen会话
  exit
剥离当前screen会话
  Ctrl+a,d
显示所有已经打开的screen会话
  screen -ls
恢复某screen会话
  screen -r [SESSION]

ps aux|grep yes 可以查看yes的进程

录屏

script -t 2> t.lop -a waa.log录制
scriptreplay time.log waa.log回放

echo命令

图片描述 图片描述 回显 :显示字符

-E (默认)不支持\解释功能
 -n 不自动换行
 -e 启用\字符的解释功能
    \a 发出警告声
    \b 退格键
    \c 最后不加上换行符号
    \n 换行且光标移至行首
    \r 回车,即光标移至行首,但不换行
    \t 插入tab
    \\插入\字符
    \0nnn 插入nnn(八进制)所代表的ASCII字符
       echo -e '\033'二进制转换成ASCII字     
                 \x1a插入1a(十六进制)所代表的ASCII字
     echo -e '\033[43;31;5mmagedu\033[0m'
     显示变量
       echo "$VAR_NAME“ 变量会替换,弱引用
       echo '$VAR_NAME‘ 变量不会替换,强引用
       echo `$VAR_NAME`反向单引号时 可以识别出命令跟参数=echo $(VAR_NAME)

符号的应用

用反向单引号可以嵌套使用命令,把第二个命令放到引号里

括号扩展:{ } 
.打印重复字符串的简化形式
  $echofile{1,3,5}  组合
     file1file3file5
  $rm-f file{1,3,5}  分别创建
  $echo {1..10}   代表范围
  $echo {a..z}    字母范围
  $echo {000..20..2}  定义4位 20位最大 一次加2

touch 创建新文件或者
  把已有文件的时间标签改为当前系统的,其他数据不变。

hwxdump -c 文件 二进制打开文件

ibase=16在计算机中说明输入的16进制
obase=2 说明2进制输出

sz 把linux文件传到windows里

装程序 rpm -ivh 文件路径

dos2unix  文件名 win文件转换成linux    
 unix2dos 文件名 Linux转换成win的
 
 gb2312 国标    
 
 把gb2312格式的转换为abc.txt格式的
   inconv -f gb2312 abc.txt  -o abc2.txt

teb

teb补全安装 图片描述

命令补全

内部命令:
 外部命令:bash根据PATH环境变量定义的路径,
 自左而右在每个路径搜寻以给定命令名命名的文件,
 第一次找到的命令即为要执行的命令

用户给定的字符串只有一条惟一对应的命令,直接补全 否则,再次Tab会给出列表

路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名如果惟一:则直接补全 否则:再次Tab给出列表

双teb

command 2Tab 所有命令行补全
string2Tab 以string开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录(centos7不支持)
=2Tab 相当于ls –A

帮助

whatis  告诉你指令的描述
command--help
manandinfo
本地帮助文档/usr/share/doc/
官网在线文档
其它网站和搜索
whatiscal 或man –f cal

mandb 7.3创建数据库 makewhats 6.9创建数据库

内部命令:#help COMMAND
   #man bash
 外部命令:(1) # COMMAND --help
    # COMMAND -h
   (2) 使用手册(manual)
    # man COMMAND
   (3) 信息页
    # info COMMAND
   (4) 程序自身的帮助文档
    README
    INSTALL
    ChangeLog
    (5) 程序官方文档
    官方站点:Documentation
    (6) 发行版的官方文档
    (7) Google

help查内部命令 man查外部命令

man 章节

提供命令帮助的文件

手册页存放在/usr/share/man

几乎每个命令都有man的“页面” man页面分组为不同的“章节” 统称为Linux手册 man命令的配置文件:/etc/man.config | man_db.conf MANPATH /PATH/TO/SOMEWHERE: 指明新手册文件搜索位置 # man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示

帮助手册中的段落说明:

.NAME 名称及简要说明

.SYNOPSIS 用法格式说明

.[]可选内容

.<> 必选内容

.a|b二选一

.{ }分组

….同一内容可出现多次

.DESCRIPTION 详细说明

.OPTIONS 选项说明

.EXAMPLES 示例

.FILES 相关文件

.AUTHOR 作者

.COPYRIGHT版本信息

.REPORTING BUGS bug信息

.SEE ALSO 其它帮助参考

查看man手册页
   man [章节] keyword
 列出所有帮助
   man –a keyword
 搜索man手册
   man -kkeyword列出所有匹配的页面
   使用whatis数据库
 相当于whatis
   man –f keyword
 打印man帮助文件的路径
   man –w [章节] keyword

语法

man命令的操作方法:使用less命令实现
    space, ^v, ^f, ^F: 向文件尾翻屏
    b, ^b: 向文件首部翻屏
    d, ^d: 向文件尾部翻半屏
    u, ^u: 向文件首部翻半屏
    RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行y or ^Y or ^P or k or ^K:向文件首部翻一行
    q: 退出
    #:跳转至第#行
    1G: 回到文件首部
     G:翻至文件尾部
     
    man  
      /string 默认向下 n同向,N反向
      ?string 默认向上 n同向,N反向

info

man常用于命令参考,GNU工具info适合通用文档参考。没有参数,列出所有的页面info 页面的结构就像一个网站,每一页分为“节点” 链接节点之前* info 命令

方向键,PgUp,PgDn 导航
  Tab键移动到下一个链接
  d 显示主题目录
  Home 显示主题首部
  Enter进入选定链接
  n/p/u/l进入下/前/上一层/最后一个链接
  s文字文本搜索
  q退出info

/etc/issue 登录前显示

hexdump 看二进制文件 tab 时区

作业:

实现screen 实验大括号的功能

命令选项的补全

显示昨天的星期几

在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间

2017/5/22 8:54:20

文件管理

文件系统分层结构:LSB Linux Standard Base 图片描述

图片描述 /dev 硬件或软件的设备文件

主设备号;次设备编号。
 c字符文件 ,b块

/etc 配置文件

/home 家目录

/usr 次级跟

/bin 二进制程序

var/log/ 日志文件

大小写敏感跟文件系统类型有关

文件和目录被组织成一个单根倒置树结构

文件系统从根目录下开始,用“/”表示

根文件系统(rootfs):root filesystem

以.开头的文件为隐藏文件

路径分隔的/

文件有两类数据:

元数据:metadata

数据:data

文件颜色代表的类型 蓝色–>目录绿色–>可执行文件红色–>压缩文件浅蓝色–>链接文件灰色–>其他文件 粉色的sock 套接字文件 黄色的管道文件

命令历史 登录shell时,会读取命令历史文件中记录下的命令~/.bash_history

重复前一个命令,有4种方法:
   •重复前一个命令使用上方向键,并回车执行
   •按!! 并回车执行
   •输入!-1 并回车执行
   •按Ctrl+p并回车执行
   •!:0 执行前一条命令(去除参数)
Ctrl + n 显示当前历史中的下一条命令,但不执行
Ctrl + j 执行当前命令
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令


!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p仅打印命令历史,而不执行
!$:p 打印输出!$ (上一条命令的最后一个参数)的内容
!*:p打印输出!*(上一条命令的所有参数)的内容
^string删除上一条命令中的第一个string
^string1^string2将上一条命令中的第一个string1替换为string2
!:gs/string1/string2将上一条命令中所有的string1都替换为string2
 
 
 使用up(向上)和down(向下)键来上下浏览从前输入的命令
 .ctrl-r来在命令历史中搜索命令
 .(reverse-i-search)`’:
 Ctrl+g:从历史搜索模式退出
 要重新调用前一个命令中最后一个参数:
   !$ 表示
   Esc, .(点击Esc键后松开,然后点击. 键)
   Alt+ .(按住Alt键的同时点击. 键)
   
   
   command !^ : 利用上一个命令的第一个参数做cmd的参数
   command !$ : 利用上一个命令的最后一个参数做cmd的参数
   command !* : 利用上一个命令的全部参数做cmd的参数
   command !:n : 利用上一个命令的第n个参数做cmd的参数
   command !n:^ 调用第n条命令的第一个参数
   command !n:$ 调用第n条命令的最后一个参数
   command !n:m 调用第n条命令的第m个参数
   command !n:* 调用第n条命令的所有参数
   command !string:^ 从命令历史中搜索以string 开头的命令,并获取它的第一个参数
   command !string:$ 从命令历史中搜索以string 开头的命令,并获取它的最后一个参数
   command !string:n 从命令历史中搜索以string 开头的命令,并获取它的第n个参数
   command !string:* 从命令历史中搜索以string 开头的命令,并获取它的所有参数

history

history [-c] [-d offset] [n] history -anrw[filename] history -psarg[arg…]

-c: 清空命令历史
  -d offset: 删除历史中指定的第offset个命令
  n: 显示最近的n条历史
  -a: 追加本次会话新执行的命令历史列表至历史文件
  -n: 读历史文件中未读过的行到历史列表
  -r: 读历史文件附加到历史列表
  -w: 保存历史列表到指定的历史文件
  -p: 展开历史参数成多行,但不存在历史列表中
  -s: 展开历史参数成一行,附加在历史列表后

HISTSIZE:命令历史记录的条数

HISTFILE:指定历史文件,默认为~/.bash_history

HISTFILESIZE:命令历史文件记录历史的条数

HISTTIMEFORMAT=“%F %T “ 显示时间

HISTIGNORE=“str1:str2:… “ 忽略string1,string2历史 精确匹配

HISTCMD下一条命令编号

控制命令历史的记录方式:

环境变量:HISTCONTROL
  ignoredups默认,忽略重复的命令,连续且相同为“重复”
  ignorespace忽略所有以空白开头的命令
  ignoreboth相当于ignoredups, ignorespace的组合
  
  erasedups删除重复命令

export 变量名=”值“ 存放在/etc/profile 或~/.bash_profile

快捷键

Ctrl + l清屏,相当于clear命令

Ctrl + o执行当前命令,并重新显示本命令

Ctrl + s阻止屏幕输出,锁定

Ctrl + q允许屏幕输出

Ctrl + c终止命令

Ctrl + z挂起命令

Ctrl + a光标移到命令行首,相当于Home

Ctrl + e光标移到命令行尾,相当于End

Ctrl + f光标向右移动一个字符

Ctrl + b光标向左移动一个字符

Alt + f光标向右移动一个单词尾

Alt + b光标向左移动一个单词首

Ctrl + xx光标在命令行首和光标之间移动

Ctrl + u从光标处删除至命令行首

Ctrl + k从光标处删除至命令行尾

Alt + r 删除当前整行

Ctrl + w从光标处向左删除至单词首

Alt + d从光标处向右删除至单词尾

Ctrl + d删除光标处的一个字符

Ctrl + h删除光标前的一个字符

Ctrl + y将删除的字符粘贴至光标后

Alt + c从光标处开始向右更改为首字母大写的单词

Alt + u从光标处开始,将右边一个单词更改为大写

Alt + l从光标处开始,将右边一个单词更改为小写

Ctrl + t交换光标处和之前的字符位置

Alt + t交换光标处和之前的单词位置

Alt + N提示输入指定字符后,重复显示该字符N次

注意:Alt组合快捷键经常和其它软件冲突

gnome-terminal 应用程序->附件->终端 支持多个“标签”shell的图形化终端模拟器

Ctrl-Shift-n 创建新窗口

Ctrl-Shift-q关闭当前窗口

Ctrl-Shift-t 创建一个标签页

Ctrl-Shift-w 关闭一个标签页

Ctrl-PaUp/PgUn切换到下一个/前一个标签页

Ctrl-Shift-c 复制选中的文本

Ctrl-Shift-v 把文本粘帖到当前光标处

有些目录文件创建时跟命令或者其他有冲突,可以添加一个完整的路径,这样就可以成功创建,删除也一样。

文件详情

/usr: universal shared, read-only data

bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share

7默认没有 net

/var: variable data files

cache: 应用程序缓存数据目录
 lib: 应用程序状态信息数据
 local:专用于为/usr/local下的应用程序存储可变数据;
 lock: 锁文件
 log: 日志目录及文件
 opt: 专用于为/opt下的应用程序存储可变数据;
  run: 运行中的进程相关数据,通常用于存储进程pid文件
  spool: 应用程序数据池
  tmp: 保存系统两次重启之间产生的临时数据

/proc:

用于输出内核与进程信息相关的虚拟文件系统

/sys:

用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux:

security enhanced Linux,selinux相关的安全策略等信息的存储位置

二进制程序:

/bin, /sbin, /usr/bin, /usr/sbin,
/usr/local/bin, /usr/local/sbin

库文件:

/lib, /lib64, /usr/lib, /usr/lib64, 
/usr/local/lib, /usr/local/lib64

配置文件:

/etc, /etc/DIRECTORY, /usr/local/etc

帮助文件:

/usr/share/man, /usr/share/doc, 
/usr/local/share/man, /usr/local/share/doc

文件类型

-:普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket IP+端口号

netstat -ntu查看有谁远程链接主机

显示当前目录: #pwd: printing working directory -P 显示真实物理路径 -L 显示链接路径(默认)

绝对路径

以正斜杠开始 完整的文件的位置路径 可用于任何想指定一个文件名的时候

相对路径名

不以斜线开始 指定相对于当前工作目录或某目录的位置 可以作为一个简短的形式指定一个文件名

取基名:basename
取目录名:dirname

PWD:当前目录路径
OLDPWD:上一次目录路径  (cd - 的记录)

加硬盘 加硬盘

装 dos2unix 图片描述

ls

显示目标列表,彩色加亮来区分不同类型的文件 参数可以指定要显示的列表的目录,㛑可以是具体的文件

ls默认显示的是非隐藏文件

-a 显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);

-A 显示除影藏文件“.”和“..”以外的所有文件列表;

-C 多列显示输出结果。这是默认选项; -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;

-F 在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

-b 将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;

-c 与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;

-d 仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;

-f 此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;

-I 显示文件索引节点号(inode)。一个索引节点代表一个文件; –file-type:与“-F”选项的功能相同,但是不显示“*” –ignore;

-k 以KB(千字节)为单位显示文件大小;

-l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

-m 用“,”号区隔每个文件和目录的名称;

-n 以用户识别码和群组识别码替代其名称;

-r 以文件名反序排列并输出目录内容列表;

-s 显示文件和目录的大小,以区块为单位,由大到小;

-t 用文件和目录的更改时间排序;

-L 如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

-R 递归处理,将指定目录下的所有文件及子目录一并处理;

-1(数字一) 显示时一行一个

ls –u 配合-t选项,显示并按atime从新到旧排序

ls –U 按目录存放顺序显示

–full-time 列出完整的日期与时间;

–color[=WHEN] 使用不同的颜色高亮显示不同类型的。

元数据metadate 文件的属性
数据   文件的内容

modify time 修改时间

access time 访问时间

chang time 文件属性时间

chattr +A time.log给访问时间加锁不会变 chattr -A time.log给访问时间解锁不会变

touch如果文件再,强行刷新三个时间,如果没有文件就创建一个。

stat 文件名 查看inode内容

modify比access新 或者超过一天了 那就会触发时间更新

通配符

* 匹配一个或多个字符
? 匹配一个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~-前一个工作目录
[0-9]匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang]匹配列表中的任何的一个字符
[^wang]匹配列表中的所有字符以外的字符

只显示隐藏文件

ls -d /app/. ls -aI “[^.]” ls -aI –ignore=[^.]*

练习

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

2、显示/etc目录下以任意一位数字开头,且以非数字结尾文件或目录

3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录

5、显示/etc目录下,所有以.d结尾的文件或目录

6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

7、只显示/root下的隐藏文件和目录

8、只显示/etc下的非隐藏目录

1 ls -d /var/l*[0-9]*[[:lower:]]
 2 ls -d /etc/[0-9]*[^0-9]
   ls -d /etc/[[:digit:]]*[^[:digit:]]
 3 ls -d /etc/[^[:alpha:]][[:alpha:]]*
 4 ls -d  /etc/rc[0-6]*
 5 ls -d /etc/*.d 
 6 ls -d /etc/[mnrp]*.conf
 7 ls -d /root/.*
 8 ls -d /etc [^.]*/

预定义的字符类:

man 7 glob

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:alnum:]:任意数字或字母

[:blank:]:水平空白字符

[:space:]:水平或垂直空白字符

[:punct:]:标点符号

[:print:]:可打印字符

[:cntrl:]:控制(非打印)字符

[:graph:]:图形字符

[:xdigit:]:十六进制字符

通配符匹配的是文件名称的字符串 ##touch命令:

touch [OPTION]… FILE…

-a仅改变atime和ctime

-m 仅改变mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳

-c如果文件不存在,则不予创建

>覆盖原来的文件 >>什么都不改变

语法错误 后面的命令还可以执行,命令错误,后面的命令还可以执行。

删除大文件:

> 文件;df-h;rm 文件

暴力破解字典 图片描述

环境变量 环境变量 环境变量


ls /misc/cd 进入等于把光盘挂载上,按需挂载。

LINUX上的应用程序的组成部分

1,二进制文件:/bin;/sbin;/uer/bin;usr/sbin;
     /usr/local/bin;/usr/local/sbin.
 
 2,库文件:/lib;/lib64;/usr/lib;/usr/bin64;
      /usr/local/lib;/usr/local/bin64.
  
 3,配置文件:/etc;/etc/DIRECTORY;/usr/local/etc
 
 4,帮助文件:/usr/share/man;/usr/shar/doc;/usr/local/share/man;
             /usr/local/shar/doc

cp复制

cp[OPTION]… [-T] SOURCE DEST cp[OPTION]… SOURCE… DIRECTORY cp[OPTION]… -t DIRECTORY SOURCE… cpSRC DEST

-i:覆盖前提示
 –n:不覆盖,注意两者顺序
 -r, -R: 递归复制目录及内部的所有内容
 -a: 归档,相当于-dR--preserv=all
 -d:--no-dereference --preserv=links 不复制原文件,只复制链接名
 --preserv[=ATTR_LIST]
    mode: 权限
    ownership: 属主属组
    timestamp:
    links
    xattr
    context
    all
 -p: 等同--preserv=mode,ownership,timestamp
 -v: --verbose
 -f: --force  如果原来的不能打开就删了原来的重      新复制

移动和改名

mv [OPTION]… [-T] SOURCE DEST

mv [OPTION]… SOURCE… DIRECTORY

mv [OPTION]… -t DIRECTORY SOURCE…

常用选项:
 -i: 交互式
 -f: 强制

rename改名

直接指向数据块位置的指针叫直接指针 指向地址的指针是间接指针 在一个分区中 每个文件节点编号是唯一的

which -n1  命令   这个命令1S执行一次

文件粉碎工具

shred 重复覆盖  
    -u覆盖最后删除   
    -z最后一次覆盖清零  
    -v 显示过程  
    -n覆盖几次

xargs解决参数过长的问题,会把参数一个一个传

符号链接

软连接创建后那个链接数不会增长

严重依赖与原始文件的

软连接的大小就是路径指向的大小

软连接的相对路径是相对于软链接的路径

一个符号链接指向另一个文件

ls -l的显示链接的名称和引用的文件

一个符号链接的内容是它引用文件的名称

可以对目录进行

可以跨分区

指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

语法:

ln -s filename [linkname]

硬链接

路径相对于当前工作路径

链接是一个文件多个名

硬链接不能跨分区和设备

硬链接不会对文件夹链接

硬链接拥有完全相同的属性

不占节点号

增加连接数

创建硬链接会增加额外的记录项以引用文件

对应于同一文件系统上一个物理文件

每个目录引用相同的inode号

创建时链接数递增

删除文件时: rm命令递减计数的链接 文件要存在,至少有一个链接数 当链接数为零时,该文件被删除

不能跨越驱动器或分区

语法:

ln filename [linkname]

文件可以包含多种类型的数据

检查文件的类型,然后确定适当的打开命令或应用程序使用

file [options]… 常用选项:

-b 列出文件辨识结果时,不显示文件名称
   -f 列出文件中文件名的文件类型
   -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
   -L 查看对应软链接对应文件的文件类型
   --help 显示命令在线帮助

mknod 创建设备文件 hexdump或者xxd 查看二进制文件

liunx 看文件格式只看头部的魔数(magic namber) 跟后缀名无关

标准I/O与管道

程序:指令+数据

读入数据:Input 输出数据:Output

file descriptor 文件描述

Linux默认给出三总i/o

标准输入(stdin) 0 默认接受来自键盘的输入 标准输出 (stdout) 1 默认输出到终端窗口 标准错误 (stderr) 2 默认输出到终端窗口

I/O重定向:改变默认位置

> 把stdout重定向到文件    >>追加
2>  把stderr重定向到文件
&> 把所有输出重定向到文件

>文件内容会被覆盖

#set -c:进制将内容覆盖已有文件,但可追加

强制覆盖: >|

#set +c 允许覆盖

>>原有内容基础上,追加内容
  2>:覆盖重定向错误输出数据流
  2>>:追加重定向错误输出数据流

标准输出和错误输出各自定向到不同位置:

COMMAND > /path/to/file.ou  t2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向:

&>:覆盖重定向
 &>>:追加重定向
 COMMAND > /path/to/file.out 2>&1 (顺序很重要)
 COMMAND >> /path/to/file.out 2>&1
 find/etc-namepasswd2>/dev/null

():合并多个程序的STDOUT

(cal2007;cal2008)> all.txt

单行重定向 cat >z.log

输入重定向 cdt < /etc/issue
 
 输入重定向加输出重定向 相当于cp

tr 转换删除字符

前后不能用同一个文件名 要不然会被破坏 > 可以前后相同 标准输入比标准输出的优先级高

选项:

-c–C --complement:取字符集的补集
 -d--delete:删除所有属于第一字符集的字符
 -s--squeeze-repeats:把连续重复的字符以单独一个字符表示
 -t--truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符

[:alnum:]:字母和数字 :alpha::字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 :upper::大写字母 [:xdigit:]:十六进制字符

作业: 1 cmd linkfile 2 硬,软链接的区别 3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 cat /etc/issue | tr ‘a-z’ ‘A-Z’ >> /app/issue.o

4、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 id | tr ‘a-z’ ‘A-Z’ >> /app/who.out

5、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下: Hello, I am 用户名,The system version is here,pleasehelp me to check it ,thanks! 操作系统版本信息

echo Hello, I amwhoami,The system version is here,pleasehelp me to check it ,thanks!uname -a|mail -s haha www

echo Hello, I amwhoami,The system version is here,pleasehelp me to check it ,thanks!uname -a|write www

6、将/root/下文件列表,显示成一行,并文件名之间用空格隔开 ls|tr [[:space:]] ‘ ‘

7、计算1+2+3+..+99+100的总和 echo {1..100} |tr ‘ ‘ ‘+’ |bc

8、删除Windows文本文件中的‘^M’字符 cta 111.txt |tr -d ”

9、处理字符串“xt.,l 1 jr#!$mn2 c/fe3 uz4”,只保留其中的数字和空格 echo xt.,l 1 jr#111.txtmn2 c/fe3 uz4|tr [:punct:] ‘ ‘|tr :alpha: ‘ ‘

10、将PATH变量每个目录显示在独立的一行 echo $PATH |tr / ”

11、将指定文件中0-9分别替代成a-j cat 1.log |tr ‘0-9’ ‘a-j’

12、将文件中每个单词(由字母组成)显示在独立的一行,并无空行

cat 1.log |tr ‘ ‘ ” |tr [:punct:] ”|tr -s ‘ ‘ ”

原创文章,作者:phosphor,如若转载,请注明出处:http://www.178linux.com/76844

(0)
phosphorphosphor
上一篇 2017-05-25
下一篇 2017-05-25

相关推荐

  • linux下安装配置DHCP服务器

    前提是已经安装了 core 及 base 两个组   1 2 3 4 5 # cat /etc/redhat-release   Red Hat Enterprise Linux Server release 6.8 (Santiago)&…

    Linux干货 2017-05-03
  • MySQL慢日志监控脚本实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1577326        公司线上的 MySQL 慢日志,之前一直没有做好监控。趁着上周空闲,我就把监控脚本写了下,…

    Linux干货 2016-08-15
  • 磁盘管理之LVM

    1、什么是LVM     LVM(Logical Volume Manager)逻辑卷管理,是linux环境下将一种将一个或多个硬盘的分区在逻辑上集合来呈现给上层应用,对磁盘实现动态管理的机制。相对于普通的磁盘分区有很大的灵活性,使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。 2、专业术语     &nbsp…

    Linux干货 2016-09-02
  • Linux Cluster之keepalived及keepalived + LVS DR的实现

      一、HA Cluster基础 系统可用性A=MTBF/(MTBF+MTTR) MTBF:平均无故障时间 MTTR:平均修复时间 降低MTTR的方式:冗余(redundent) 衡量标准:几个9 90%、99%、99.9%… 提升系统可用性的办法之一:降低MTTR 通过冗余(redundant)的方式能够避免单点故障(SPoF),从而…

    2016-11-02
  • 推荐-LAMP的编译安装

    首先解释一下LAMP,L:Linux;A:apache;M:MariaDB;P:php。Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件。 本文就是介绍编译安装apache2.4,MariaDB5.5,以及php(基于模块化和fpm的这两种方式来配合php提供服务)。 因为php是…

    Linux干货 2016-04-11