命令
命令列表 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 查看外边命令本身路径和帮助文档路径
执行命令的顺序
-
内部
-
hash path
-
外部
别名
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