linux计算机的设备有两种 1 字符设备(顺序数据) 键盘,显示器 共同点是数据交换时是一个一个字符来进行的. 2 块设备(随机数据) 硬盘 交换数据按包为单位进行.

Linux的文件:在存储空间存储的一段流式数据。命名严格区分大小写且同一路径下不能重名(也不能与根目录重名,因为目录也算文件,linux上一切皆文件) 文件名可以使用除了“/”之外的任何字符,包括空白。但最长不能超过255个字符. 以点好.开头的文件名为隐藏文件 特殊的标记 .:表示当前目录 ..: 表示上一级目录 一条完整的路径中:最右侧的叫基名basename,其余叫目录名 dirname

linux程序的编译方式 1 动态链接式编译 编写程序时,没有将所调用的 库 复制入程序中,程序只能在包含有该类型库的计算机上运行,缺点对计算机适应性差,但体积很小。 2 静态链接式编译 编写程序时,将所调用的 库 复制入程序中.优点程序可在任意计算机上运行.缺点体积很大.

Linux哲学思想 一切皆为文件 具体表现:硬件设备也通过文件来表现 linux开源协定主要有 GPL LGPL BSD Apache 几种
BSD主要几点: 1、如果二次发布的产品中包括源代码,则在源代码中必须带有原来的代码中的BSD协定 2、如果二次发布的产品是二进制的格式的库或程序,则需要在发布的文档或版权声明中说明原来的代码所遵守的BSD协定 3、不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广。

linux下的 FHS:(文件的层级结构) /bin 供所有用户使用的基本命令程序文件。与/sbin大体相同.

/sbin 供系统管理员使用的命令程序文件.

/boot 引导加载器必须用到的各静态文件.比如内核.

/dev 设备文件.启动时计算机所识别的硬件.以及存储特殊文件(虚拟硬件之类)

/etc 存放系统程序的配置文件.只能为静态的,不能为二进制程序.

/home 可选目录,非基本系统路径.但是每个主机上都会有的路径. 普通用户的家目录路径(默认为在此文件下与用户名相同的子目录).比如cenos用户下的就是 /home/centos

/lib 基础共享库与模块.一般为系统启动或根文件系统上的应用程序 (如/bin /sbin) 提供库,其下子目录:

libc.so.* 动态链接的c库 ld* 执行时链接器或加载器 modules 用来存储内核模块的目录.

/lib64 64位系统独有的存放处,与lib相同.如系统是32位,则显示/lin32. 64位兼容32位.

/usr 全局共享的只读数据.除了根之外最主要的文件系统.不建议在此目录下创建文件.本身也是层结构,目录下 /bin /sbin /lib /lib64 的子目录虽然不是系统启动必需程序,运行一些附加功能会用到(图形界面程序).这个目录下的库文件,也会调用/lib根目录的库文件. 其下的子目录: bin : 所有可执行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 内的); include C程序头文件, 各种头文件,编译文件等时需要使用 include/’package-name’ 程序特定的头文件; lib : 所有可执行文件所需要的库文件 share 命令手册页和自带文档等. man帮助命令就在这. local 另一个层级目录 X11R6 x-windows程序的安装位置 src 程序源码文件的存储位置 local 可以再次单独架构一个层级目录(再挂载一个设备).存放本地第三方安装程序的位置.让系统管理员安装的本地应用程序,大部分存在此处。此目录下的文件与usr基本一致,但这里的子目录无论是bin或ect都只为本地计算机提供服务。

/media 便携式设备挂载点,比如 USB,光盘等等.

/mnt 其他非关键性文件系统的临时挂载店.

/opt 通常是装一些第三方非关键性软件安装位置.

/root 管理员的家目录(可选).

/srv 当前主机为服务提供的数据,具有特有性,不具有通用性.

/tmp 临时文件目录,可供所有用户都可写入操作或使用.有特殊权限.

/var 存储经常变化的数据的目录(比如日期),其下子目录: cache 应用程序的缓存数据. lib 程序的状态书数据. local 专门为/usr/local目录下的程序存放经常发生变化的数据. lock 锁文件 log 日志文件 opt 专门为/opt目录下的程序存放经常发生变化的数据. run 运行中的进程相关的数据.如pmd数据. spool 应用程序的spool数据.可理解为 暂存 管道这样. tmp 系统重启之后依然需要留存的的临时数据.

特殊目录 /proc 和/sys /proc 虚拟文件系统,为内核和进程存储相关信息.多为内核参数,并将内核参数虚拟为文件目录的形式 比如内核net.ipv4.ip_forward的参数,就虚拟为 net/ipv4/ip_forward. 参数的值就保存在ip_forward里面.完成路径为 /pock/sys/net/ip_forward. /sys 和/proc类似,除了可以查看内核参数外.主要为管理linux的设备接口,提供了一种统一模型的接口. /sys和/proc都是临时性文件,关机不再存在. /sys子目录下,以多种视角的方式将不同的设备类型数据,分类(外接,内接,电源总线,等等)保存在不同的文件目录下.

linux终端分类 虚拟终端 /dev/ttys+{1----6}数字 串行终端 /dev/tty+数字 物理终端 /dev/console 伪终端 /dev/pts+数字 终端 terminal

命令提示行 格式(中括号部分) 用户名+@主机名+~ 其中~表示用户所在目录 #表示用户为root $ 表示普通用户 非root 从root切换到非root 命令 先 useradd(创建一个普通用户) centos 后 su - centos (-前后均有空格)

获取命令帮助的办法

1、命令--(两个减号)+help

2、使用手册(说明书) manual 位于 /usr/share/man目录下 命令格式 man+空格+命令 帮助后的选项: SECTION下的 1、NAME 功能性说明 2、SYNOPSIS 语法格式 3、DESCRTPION 描述 4、OPTIONS 选项 5、EXAMPLES 使用范例 6、AUTHOR 作者 7、BUGS 报错方式 8、SEE ALSO 参考

SYNOPTS下的内容用来,表示命令的使用方式,其中 带中括号[]的表示可选内容 带尖括号<>的表示必须提供的内容 带竖线并且左右俩侧都有的,表示二选一或多选一 带省略号...的表示同类内容可出现多个

使用手册:压缩格式的文件,有章节之分:举例 /usr/share/man目录下 存在 man1 man2 man3...的目录,而一个帮助文件的内容或许在man1有一段,man2有一段... 第一章节 用户命令 所有用户都能用的命令 第二章节 系统调用 第三章节 C库调用 第四章节 设备文件及特殊文件 第五章节 配置文件格式 第六章节 系统自带的游戏的使用帮助 第七章节 不便归类的杂项 第八章节 管理工具及守护进程 只有管理员才能运行的命令

查看指定目录的命令格式 man+章节目录数字+所查看的命令

查看某一命令在哪一章节 whatis+所查看的命令

帮助命令man是通过数据库来实现的,更新数据库命令 makewhatis

使用man后,再弹出的界面里 空格表示向后翻一屏幕 b表示向前翻一屏幕

ctrl+D或+u分别是向尾及向首翻半屏 回车表示向下一行,k表示向上一行

G表示跳跃到最后一行 #G(#表示数字)表示跳转至第#行

查找命令: /或?+想要查找的内容 然后小写n表示查看下一个,大写N表示查看上一个

/ 表示从文件首部依次向尾部查找,且不区分大小写

? 与/相反.除此之外,大小写的N是按照命令顺序查看下一个的,故/命令下的n是从头到尾,?命令反之. 退出按q 表示quit

有时候man帮助文件不在默认目录下,可以使用-M(大写)+空格+指定位置来查看并打开

第三种获取帮助办法: info+命令名 获取在线帮助 第四种 应用程式自带的帮助文档 通常路径 /usr/share/doc/目录下.多为命令名+版本号的形式存在. 有三个文件 1 README 程序的相关信息 2 INSTALL 安装帮助 3 CHANGES 版本迭代时的改动信息

第五种 互联网帮助 google 用法 搜索指定文档类型 名字+filetype+格式名(txt,exe之类) 在指定网站上搜索 名字+site+域名

常用命令 type 显示指定命令的类型,判断给出的指令是内部指令还是外部指令. 如果给出的指令是外部指令,则显示绝对路径. type -t 会显示以下字符代表所输命令的意义,比如: file 该指令为外部指令 alias 该指令为命令别名所设定的名称 builtin 该指令为bash内置的命令功能.

type -p 只有指令为外部命令时,才会显示其绝对路径. type -a 会PATH发量定义的路径中,将所有包含名字的指令都列出来.包含alias(别名).

pwd显示当前所在的绝对路径 -P 如果当前所在位置是软链接目录,则显示源路径

绝对路径与相对路径 绝对:从根位置到文件的路径。 相对:从当前位置到文件的路径。 pwd 以及$pwd 分别是shell环境中,两个保存当前位置和上一次位置的变量.

enable 查看内核命令 命令格式 选项 参数

-a 显示所有已激活的内部命令. -n 关闭指定的内部命令. -f 从指定文件中读取内部命令.

enable –n pwd 禁用了pwd内部命令

pwd 依然可以使用

enable pwd 重新启用pwd

因为在linux当中,pwd不光在内部命令中存在,/usr/bin/pwd下也有这个命令.在linux中,执行命令时候,优先从内部命令中查找,如果没有,就从$PATH环境变量中指定的路径依次去寻找该命令.

hash 查看、记录缓存命 格式 选项+命令 -l 列出当前所有缓存过的命令,包括路径及别名(如果有的话) -d+命令名 删除指定缓存命令 -p 原命令路径+新名字 创建hash命令

hash –p /bin/ls aa

aa 此时的aa等于/bin/ls

hash –d aa 删除aa

Linux当中,命令执行的优先级依次为 别名>内部命令>hash(可理解为缓存)>外部命令.

cd 切换目录 如不带任何参数,则表示切换为用户的(跟)家目录 cd+~+指定用户名 表示切换到指定的用户名的跟目录下 cd+ - 表示在当前目录与上一次目录之间来回切换 cd+..表示回到上一个目录 加入指定路径可改为到指定路径目录下 cd+空格+文件名 表示从当前路径进去到该文件里。也可以cd /的形式进入

init 进程管理工具,这是一个由内核创建的用户级进程.其进程号始终为1.它的位置/sbin/init,如没有,尝试运行bin/sh,还没有,系统启动失败. 命令格式 选项+参数 Init+0(此处是数字0) 关机 Init1 单用户模式,只能root用户进行维护
Init2 多用户模式,不能使用NFS(Net File Syetem) Init3 完全多用户模式(标准模式) Init4 安全模式 Init5 图形化模式 Init6 重启

mount 挂载命令 linux中,根文件系统之外的其他文件要想能被访问,必须通过关联跟目录上的某个文件来实现,这一关联的过程叫做挂载,关联的目录被叫做挂载点.解除此关联过程叫做卸载. Ps:挂载点最好为 命令格式 选项+参数1 参数2 参数1为被挂载的文件,参数2为挂载点 -t 指定文件系统,通常可省略,linux可自动识别文件系统. -o 将决定用何种方式挂载 loop 将被挂载的文件当做一个硬盘分区来挂载. ro 只读的方式来挂载 rw 只写的方式来挂载 iocharset:指定访问文件系统所用字符集 举例

mount –o loop /dev/sr0/centos7.iso /mnt/cdrom

将目录/dev/sr0以硬盘分区的方式挂载到/mnt/cdrom下

screen 创建新会话命令,这个命令在终端被关闭后仍能正常运行. 一般命令在进程树上输入子级命令,终端被关闭也随着关闭,screen命令 可自己创建进程命令树,只要其所依附的服务器没被关闭就可一直运行. 命令格式 选项 -S+名字 创建 screen会话 S是大写的 -x+名字 加入screen会话 exit 退出 -d 转为后台运行 -r 恢复转为后台的会话 -ls 显示所有screen会话 -wipe 检查所有screen,并删除已经无法使用的screen会话.

bc计算命令

bc 回车

#44*44 #1936 #CTRL+c 退出计算。

ls 列出指定目录下的文件 ls / 显示跟目录下的文件. ls -a 显示隐藏文件 -A 表示显示除. 和..外的所有的文件 ls -a +指定路径,则显示指定路径下的内容 ls -l 显示文件的详细信息 最左侧是文件类型(- d b c l s d)接着左三位rw-表示文件属主.中三位文件属组,右三位表示其他用户(非属主,属组)访问的权限.再向右的数字,表示文件硬连接的次数,root表示文件的属主,第二个root表示文件的属组.最右边的数字表示文件的大小,单位是字节,最后的一组数字表示上一次文件被使用的时间. 文件类型(- d b c l s d) ,-是普通文件,d是目录文件,b是块设备文件,l是软链接文件,s是套接字文件,p是管道文件。 ls -l -h 把详细列出的文件信息大小单位换算成人容易理解的.比如b换算成k. ls -d 显示目录自身属性,而不是内部属性。必须跟l命令一起使用。例:ls -ld ls -r 反顺序展开目录文件 ls -R 显示文件子目录的内容。 ls后文件的默认颜色: 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 红色闪烁:表示链接的文件有问题 ×××:表示设备文件 灰色:表示其他文件

文本文件查看命令 cat 连接文件并显示(一个文本文件)使用不当会损坏文件。text格式的是文本文件。 cat可以同时打开多个文件,不同文件路径用空格分开 -n 会在打开的文件行数进行编号,存在多个文件时则一起编号,不会单独编号. -e 显示文件的行结束符号$. -E 显示结束符$ -T 显示TAB(^I) -v 显示windows换行符(^M) -t = -vT -A = -vTE 表示所有控制符 -n 显示行号 -b 空行不参加行数编号

  • s 将连续的空行压缩为一个空行

使用cat在重定向时候,可以创建之前不存在的文件。举例 cat /etc/issue > /tmp/issue.out 执行后,会先在/tmp目录下创建一个issue.out 的文件,再把/etc/issue当中的值复制过去.

tac 连接文件并显示(与cat相反,tac是将文件内容倒序显示).举例

tac /app/123 内容为,执行后显示

1 5

2 4

3 3

4 2

5 1

rev 一样是倒序显示,与tac不同的是rev是在一行之中倒序显示的。

echo ”abcde”|rev 显示 edcba

head 看指定文件的前n行(默认为10) head -n 20 +指定文件 效果为 显示指定文件的头20行.其中-n+数字 可省略为 -数字 即 head -n 20+指定文件 = head -20+指定文件.

tail 看指定文件的后n行(默认为10) tail -n 20 +指定文件 效果为 显示指定文件的尾20行 其中-n+数字 可省略为 -数字 即 tail -n 20+指定文件 = tail -20+指定文件. -c 看最后的字节,加上数字则显示多少位字节。

tail –c 10 123 # 显示123文件的最后10个字节。

-f 查看文件尾部内容结果后,不自动退出,跟随显示新增的行,直至使用ctrl+c退出为止。但文件被删除后自动停止. 因为-f是基于文件描述符追踪,一个文件对应一个描述符,删除文件等于删掉了描述符,所以不再继续追踪。

-F查看文件尾部内容结果后,不自动退出,跟随显示新增的行,直至使用ctrl+c退出为止。但文件被删除立即自动重新创建一个同名文件继续显示新增的行.因为-F是基于文件名追踪,tail会自己创建事先不存在的文件,而只要文件名在,tail –F 就会自动追踪。

tailf tailf 和taili – f 比较类似,共同点是文件被删除都停止追踪,区别是tailf是只有文件数据发生了改变之后,才继续追踪。相对来说减少了对硬盘的访问量。 PS:打开一个文件,再复制一份打开,使用了-F 参数后,修改复制后的内容时,会在原文件中同步显示。 在工作中,多用于人工监控日志新增内容来使用。

more 分屏查看命令 格式 more+文件路径 翻屏至文件尾部后自动退出 (空格向后翻 b剑向前翻)

less 分屏查看命令 格式 less+文件路径 等同与man.

cut 按列抽取文本 格式cut + 选项 +文件

-d 指明分隔符

-f 第几列 1,3,6,表示分散的字段 1-6表示连续的字段

-c 按字符切割.

cp /etc/passwd /app/shiyan 复制passwd到shiyan中

cut -d: -f1,3 /app/shiyan -d:之间没有空格.用来指明分隔符为:,-f后面的数字指明第几列.

显示账号以及UID号.

cut -d: -f1-3 /app/shiyan -d:之间没有空格.用来指明分隔符为:而1-3表示第一列到第三列.

显示账号密码位及UID.

--output-delimiter= 将默认分隔符替换为指定的

cut -d: -f1,3 --output-delimiter="的UID是" /app/shiyan

显示root的UID是0,这里将分隔符由:替换为了"的UID是"

将df中磁盘占用了多少百分比提取为数字形式,不要%符号

df |tr -s " " % |cut -d% -f5 |cut -d% -f1

df内容传给管道tr命令,-s " " %将多余的空格压缩为一个并改变为%,然后管道给cut命令-d% -f5 去掉分隔符%并取出第五列的数字,结束.

取出ifconfig当中的ip地址.

ifconfig |head -2 |tail -1 |tr -s " " |cut -d" " -f3

ifconfig内容管道给head,-2打开头两行后管道给tail,-1只要最后一行后管道给tr将多余的空格

变为一个,最后管道给cut,去掉空格,取出第三列的ip地址.

wc 统计命令,统计指定文件的行数,字节数,字数,并将统计结果输出。 命令格式:选项+文件。 -c 统计字节数。 -l 统计行数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。 -L 打印最长行的长度。 举例

wc -c /etc/issue 输出/etc/issue文件的字节数

31 /etc/issue 显示31

paste 合并两个文件同行号的列到一行 格式 选项+文件,多个文件用空格隔开. -d 分隔符:指定分隔符,默认用TAB -s : 所有行合成一行显示 只对一个文件有效,不能将多个文件内容变为一行。

vim 123 创建并输入内容 # vim 123 创建并输入内容

a b # c d

1 2 # 3 4

paste 123 456 合并123 456两个文件,将按照行数进行合并。

a b c d 第一个文件的第一行放在行首,第二个文件的放行尾。

1 2 3 4 第一个文件的第一行放在行首,第二个文件的放行尾。

paste -d " " 123 456 将默认分隔符由tab键改为了空格,所以间距变小了。

a b c d

1 2 3 4

vim 789 创建并编辑如下内容

a b c d

1 2 3 4

paste -s 789 将789文件内容合为一行,默认分隔符是tab,故间距大

a b c d 1 2 3 4 显示内容。

sort 文本排序,把整理过的文本显示在STDOUT(标准输出),不改变原始文件. 格式 选项+文件 默认不加选项的默认排序方式---- 受LC_COLLATE影响.为UTF8的影响,按首字母来排列. 使用locale 显示当前终端使用了什么编码.

常用选项

-r 执行反方向(从大到小)整理 即倒序排列.

-n 执行按数字大小整理 它是按照数字的首列大小,由低向高排序,拍完第一列,再排第二列..依次类推.不会按照整体的数字来排序.比如输入 111 22 排序,先开始排111,再开始排22.

-f 选项忽略(fold折叠)字符串中的字符大小写

-u 选项(独特,unique)删除输出中的重复行(重要)

-t c选项使用c做为字段界定符 举例: 将/etc/passwd文件,按UID数字顺序来排.

cat /etc/passwd |sort -t:-k3 -n

-t相当于cut的-d ,-k相当与cut的-f, -n按数字来排序. -k后面可加多个数字,用逗号分隔.

-k X 选项按照使用c字符分隔的X列来整理能够使用多次.相当于cut中的-f.

uniq 从输入中删除前后相接的重复的行,一般都是与sort搭配使用来去除重复. 格式 选项+文件 常用选项 -c: 显示每行重复出现的次数.

-d: 仅显示重复过的行. -cd可以表示出第几行重复了几次的意思.

-u: 仅显示不曾重复的行(连续且完全相同才判定为重复).

sort abc.txt | uniq - c 显示出abc.txt文件中每行重复的次数.

diff 比较文件,比较两个文件之间的区别. 格式 选项+ 文件+文件 ,文件之间用空格隔开. 如果两个文件有不同的地方,则会以第几行第几个字符不同的方式告诉你.

-u 打补丁形式

diff -u 老文件 新文件 > 补丁.patch 将新老文件的不同之处导入到补丁文件中.

patch -b 老文件 补丁.patch 将补丁打入到新文件中,使之变的和新文件一样.

patch 复制对文件改变,通常用来打补丁. 格式 选项+文件 -b 选项来自动备份改变了的文件 与diff比较命令一起使用.(未来对于软件升级有很好的帮助.)

grep 文本搜索工具,以行为单位。 根据用户指定的“规则”对目标文本逐行进行匹配检查;打印匹配到的行 格式 选项+制定的规则+文件 制定的规则,可以是字符串,引用的变量 grep root /etc/passwd 显示passwd中包含root的行

grep "$USER" /etc/passwd 显示passwd中包含变量值 "用户"的行

grep '$USER' /etc/passwd 显示passwd中包含字符串USER的行

grep whoami /etc/passwd 显示passwd中包含,引用命令值whoami (登录用户)的行。

常用选项: --color=auto: 对匹配到的文本着色显示. centos7默认作为别名,centos6可以手动设置.

-v: 显示不被pattern匹配到的行. 只显示规则之外的行,即反向选择.

-i: 忽略字符大小写 . 将大小写一起列出(大小写之间按源文件先后顺序排序)

-n:显示匹配的行号. 匹配到的选项前面加上编号(行数号)

-c: 统计匹配的行数. 只显示行数不显示匹配的内容.

-o: 仅显示匹配到的字符串. 这个结果区分大小写

-q: 静默模式,不输出任何信息 一般在只使用命令结果的时候用

-A #: after, 后#行 显示匹配结果及#号代表的数字再接着向上显示#行

-B #: before, 前#行 显示匹配结果及#号代表的数字再接着向下显示#行

-C #:context, 前后各#行 等于-A # -B #,显示匹配选项及本身的上下n行.

-e:实现多个选项间的逻辑or关系 搜索多个匹配项,-e 条件1 -e 条件2 -e... -e 条件1 -e 条件2 = "条件1/|条件2" 两个条件之间是或的关系不是和.条件可存在多个.

-w:匹配整个单词 只匹配单词本身,不匹配包含这个单词的选项.

文件中有a aa aaa,使用# grep -w a 文件后,只会显示a,不会显示其余的.

-E:使用ERE,相当于egerrp 使用扩展正则表达式.

-F:相当于fgrep,不支持正则表达式 不使用正则表达式.

stat 显示文件或文件系统的状态 (即元数据) 元数据 文件的概况,相当于一本书的索引部分,不是正文. 格式 stat+文件路径/名 显示指定文件的 名称,大小,占据磁盘空间多少块(比如占据32块,一块io块是5000,那么就是32*5000的大小.), 什么类型的文件,设备所在的设备号.索引节点号,权限,环境,最近访问,最近更改,最近改动等等, 其中 最近访问,最近更改,最近改动被称为时间戳,基本每个文件都有.

文件管理工具 cp 文件复制 单个文件目录/多个文件目录

单个文件复制 格式 cp+源文件路径+空格+目标文件路径

源文件(被复制的文件),目标文件(复制后的文件)

单个文件复制,如果目标(dest)不存在,则先创建出目标文件,再复制源文件数据至目标。 举例 cp /etc/a /tmp/b 将etc目录下的a文件复制到/tmp下的b文件里面去 如果b不存在的话,将先建立b文件,再将a文件里面的内容复制进去执行后的结果是目录tmp里面新增了一个b文件,且其内容与目录etc中的a一致。

单个文件复制,目标存在的话,有两种情况 1 目标文件是非目录文件:则会将源目标的数据,覆盖目标文件中的数据。(被覆盖后无法撤销) 举例 cp /etc/a /tmp/b 将etc目录下的a文件复制到/tmp下的b文件里面去 b已经存在,那么结果就是名字为b,但b里面的内容会被a里面的内容覆盖。

2 目标文件是目录文件:先在指定的目录中创建与源文件同名的文件,再将源文件的数据流复制进来。 cp /etc/a /tmp/b/ 将etc目录下的a文件复制到/tmp下的b目录里面去 若b事先存在,则a的名字和内容都放在b目录下,执行后为 /tmp/b/a 若b不存在,则直接报错:不是目录.

多个文件复制 转移后的目录,在同一个目录下 cp 文件名 文件名 目标目录 举例 cp a b /c/ 执行结果,将a,b复制到目录c下.

转移后的目录,不在同一个目录下 cp /原目录/{文件名+逗号+文件名}+空格+目标目录/子目录/

举例 cp /etc/{a,b} /tmp/c/ 执行结果 将/etc下的a,b两个文件,复制到/tmp下的c目录内

如果目标不存在,报错 如果目标不是目录文件,报错 如果目标是目录文件,分别复制每个文件到目标目录中,并保存原名. 多文件复制目标必须为目录文件且事先存在这个目录。

cp /etc/a /tmp/b与cp /etc/a /tmp/b/ 相差一个/符号,差距很大. 前者是复制文件到另一个文件中,后者是复制文件到另一个目录中, 复制目录文件必须加-r参数,否则会忽略该目录,复制失败.

-a 保留文件属性,否则可能导致文件的拥有者改变导致其他问题.(例如源文件属主为a.,直接cp会改变源文件属主为root)多用于备份.

-d 拷贝时保留链接(即复制快捷方式本身,不是快捷方式指向的源文件数据).

-f 删除已经存在的目标文件而不提示,强制覆盖目标文件.

-i 覆盖目标文件之前提示用户确认,回复y时目标文件被源文件覆盖,是交互式(询问是否)拷贝,恢复n 则取消.

-p 此时cp除复制源文件的内容外,还将其修改时间和访问权限也复制到新文件中. -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件,但要求目标文件必须为一个目录名,不能为文件或其它.

-1 不作拷贝,只是链接文件,

mv: 移动并重命名文件

单个文件 若目标名字不存在,先创建一个指定的目标名字的文件,再将输入转入。 单个目录 若目标名字不存在,则报错。 必须事先存在目标目录,才可以移动。

源文件和目标文件在同一个目录下相当于改名 格式 mv a b 把a改为b的名字,但其的内容不变. 相当于把a改名为b.

源文件和目标文件在不在同一目录是移动 格式 mv 根/a 根/b 把a文件转移到b目录下。

mv命令转移目录不需要-r选项。

多个文件,同cp一样,目标文件必须是目录形式。转移的目录必须事先存在.

rm 删除文件 格式 rm+文件路径即可

删除目录 格式 rm -r+目录路径即可 rm -r /tmp/123/ 删除tmp目录下的123目录文件. 若要删除的子目录过多,可以rm -rf+目标路径即可。 rm -rf /tmp/z123/ 彻底删除tmp目录下的 z123及其子目录且不在交互(问询).

复制,移动,删除,可在目录后加号键代表所有的意思。 cp/etc 就是复制所有etc目录下的文件的意思.

自杀命令 rm -rf /* 删除所有跟目录下的文件=系统崩溃.

linux的文件有两种数据 1 元数据 文件的概况,相当于一本书的索引部分,不是正文. 2 数据 文件的具体内容,相当于一本书的正文. 最近访问 access time 最近更改 modify time 最近改动 change time

linux上没有回收站,可以自建一个目录当回收站.切忌将无用文件彻底删除,很难找回.

更改是指文件的数据发生了变化,改动是指文件的元数据发生了变化.如果文件的数据发生了变化,哪么这个文件的元数据也必定会随之变化.最近访问和最近更改是可以任意改变的,但最近改动无法更改,并以最后一次的访问/更改时间为准.

touch命令 手动修改时间戳 直接运行 touch+文件名 将指定文件的时间戳(atime访问mtime修改,ctime改变)修改为当前系统的时间,如果所输入的文件不存在,则自动创建一个空文件. 创建名字包含空白字符的文件时,需使用转意符,举例 touch p a 这样执行后是创建两个文件(a和b) touch p\ a 这样执行后创建的文件才是名字为p a的一个文件. 不加转意符,touch p a中,p和a之间的空格是用来表示两各参数的分隔符的 加入转意符,则表示p和a之间的空格就是空白字符本身,不再作为参数分隔数识别. -c 如果指定的文件路径不存在时,不予创建. -a 只改访问时间 access time -m 只改更改时间 modify time -t 修改的时间为指定值.格式 年月日时分秒 举例 toouch -m -t 0212010303.03/tmp/functions 执行后:将 /tmp/functions的更改时间变为2002年12月1号凌晨3点3分3秒. 确认执行后的结果 stat /tmp/functions 即可查看.

file 用来看文件内容属于什么类型的. 文本,二进制之类.file+文件路径 可同时存在多个

echo 回显命令 echo -n 运行命令后不自动换行. echo -e 让转义符生效.比如\表示换行. echo \n 换行 \t 制表符(横向),相当与一个(TAB键)字段的位置 echo 加上单引号,表示变量引用不执行替换变量值,双引号会被替换. 举例 echo $SHELLl命令 是替换一个变量的名字为变量名当中所存储的值, 假设shell值为123,则显示123,而加单引号则为显示命令本身.不在替换变量名中所包含的值. 而echo $’SHELL’ 则只会显示SHELL.

日期命令 linux启动时从硬件(主板之类)读取日期和时间信息,读取完成后,不再与硬件时间关联.故linux时间分系统时间及硬件时间,date是关于系统时间的,clock则是硬件时间. date 显示和修改时间 直接date 显示当前年月日星期几时几分几秒 加入字符串+%Y(年)%m(月)%d(日)%H(时)%M(分)%S(秒)可指定只显示其中一项 同时显示指定的几个 例如 年月日 格式为 +%Y-%m-%d 或者+“%Y %m %d”不能同时使用多个加号。 同理,想要电脑认为这是同一个指令时,用双引号把指令集圈起来即可,指令之间以空格隔开。 +%T 则以 时:分:秒的 形式显示, +%s 表示从1970年1月1号凌晨开始计算到命令个执行的那一刻经过了多少秒。 设置时间命令格式 date 月日时分年.秒 举例 改为 2013年8月8号8点8分8秒 命令为 date 080808082013.08 clock 显示或设定硬件时钟. -s (hctosys的简写 hc代表硬件,sys代表系统,以to之前的时间为准,也就是以硬件时间为准统一系统跟硬件的时间). -w (systohc) 以系统时钟为准统一系统跟硬件的时间, hwclock 跟hwclock一样 cal 日历 格式 cal+年份或月份 例子 cal 2015 显示2015全年日历 cal 10 2015 查看2015年的10月份。

linux下的文件类型

  • 常规文件 d 目录文件 路径映射之用 b 块设备文件 支持随机访问 c 字符设备文件 支持顺序访问 l(L) 符号链接文件(软链接文件) 大体相当于WINDOWS上的快捷方式。 p 命名管道: s 套接字文件 两个进程之间进行通信时进行套接。主要用于服务提供。

linux下的设备文件都有自己的编号,同一类型的多个设备分主次编号 用 ls -l(是L不是1)显示的详细信息中,中间用逗号隔开的数字(在大小那一栏中作特殊显示) 左侧是主编号(major numbei):不同设备,它们的主编号不同,同一设备的主设备号相同,但次设备号不同。 主设备号只要是为了标识设备类型,进而确定要加载的驱动程序。 右侧是次编号(minor number):主要用于标识同一种类型设备中的不同设备。 主设备号是为标识设备类型,次设备号是为了标识设备本身。 以前编号是8进制,也就是2的8次方取值为0----255。即共有255个。

目录管理类的命令 mkdir:创建目录 mkdir /tmp/x/y/z 是创建z的.z属于基名,基名前方的路径必须要存在,否则会报错. /tmp/x/y这个绝对路径如果不存在,z是无法建立目录.

-p 自动按需创建副目录 -v 显示命令执行过程(大部分命令都支持v) -pv 自动按需创建并显示执行过程. -m 给定目录权限,如无则为默认权限.

rmdir:移除空目录 -p 删除指定目录后,如果上一级是空的也会被删除,直到上一级目录不为空为止。 -v 显示命令执行过程(大部分命令都支持v).

bash基础特性之 :命令行展开 ~ 自动展开为用户的家目录,或指定的用户的家目录. {} 可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径. 举例:tmp/{a,b}相当于 /tmp/a /tmp/b 问题1 如何创建/tmp/x/y1, /tmp/x/y2 /tmp/x/y1/a, /tmp/x/y1/b? mkdir -v /tmp/x/{y1{a,b},y2} 问题2 如何创建a_c,a_d,b_c,b_d mkdir -v {a,b}_{c,d} 两花括号类似于互乘的关系. 问题3 创建如下目录结构. /tmp/mysysroot /tmp/mysysroot/bin /tmp/mysysroot/sbin /tmp/mysysroot/etc/sysconfig /tmp/mysysroot/etc/sysconfig/network-scripts /tmp/mysysroot/usr /tmp/mysysroot/usr/bin /tmp/mysysroot/usr/sbin /tmp/mysysroot/usr/local /tmp/mysysroot/usr/local/bin /tmp/mysysroot/usr/local/sbin /tmp/mysysroot/usr/local/etc /tmp/mysysroot/usr/local/lib /tmp/mysysroot/usr/lib /tmp/mysysroot/usr/lib64 /tmp/mysysroot/var /tmp/mysysroot/var/cache /tmp/mysysroot/var/log /tmp/mysysroot/var/run

mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}

tree命令 以树状显示用户目录的层级结构。 无任何附加选项的话,就显示当前目录的所有层级结构。 -L+数字 显示指定的层级。 举例 tree -L 2 /etc 效果是显示/etc 目录下最多2层的目录,超过的不予显示.

bash的基础特性: 命令的执行状态结果 bash通过状态返回值来输出命令执行后的结果: 1 成功 用0来标会 2 失败 用非0来表示1---255之间. 命令执行完成之后,其状态返回值保存于bash的特殊变量$?中. 举例 运行 ls /etc 此命令会成功,再使用echo $? 显示变量值,只会是0 再次 运行 ls /tecc 或 lss /etc 则必定失败(无此目录或命令), 再使用 echo $?显示变量值,则为1--255之间的数字.($?只显示最近一条的命令的值). $? 变量也叫 命令的状态结果,ls则为运行结果.

命令正常运行时,有时还会有命令返回值,根据命令及其功能不同,结果也不相同. 引用命令的执行结果: 格式 $(命令)或反引号把命令圈起来 举例 $date就是引用日期的值 可以用来重复执行,用来创建不同的文件 举例 mkdir $(date +%H-%M-%S) 执行结果就是创建以当前日期为名字的目录,因为时间不断变化,所以重复执行的时候,创建的目录不会重名.($默认保存最近一次的值).

bash的基本特性 引用 1 强引用 ' ' 单引号 不会替换原有变量值,只显示变量本身. 举例 执行命令 ls /erc 后,变量$?的值为0. 执行 echo ‘$?’ 后显示 $?

2 弱引用 “” 双引号 会替换原有变量值,只显示变量的值. 举例 执行命令 ls /erc 后,变量$?的值为0. 执行 echo “$?” 后显示0

3 命令引用$() 只引用当前变量的值.

bash的快捷键 ctrl+a 跳转命令行首. ctrl+e 跳转命令行尾. ctrl+u 删除光标所在处至行首之间的所有字符. ctrl+k 删除光标坐在出至行尾之间的所有字符. ctrl+l 清屏 相当于 clear命令. Tab 自动补全命令,存在多个命令时按两下列出符合条件的供选择.若什么都不显示可能命令、目录等有错误。 命令类型 外部命令:所有命令都属于外部命令,共同点在计算上必定有一个与命令本身同名的文件 内嵌命令:一些外部命令本身,自带的命令,如 bash, shell .

命令的别名:即自命名,可以跟原名相同,这是原名被隐藏。 运行被隐藏原名的命令,使用+命令原名即可. alias 显示当前计算机上的所有命令别名. 如何自定义命令名. 命令 alias 别名=’’命令原名’’即可(命令原名可为组合指令,如abc=“ls /tmp” ,使用组合指令需用引号圈起来) 只为当前sheel及系统使用,重新登录就无效 如何撤销别名 命令 unalias 别名 即可. 永久命名一个自定义名字的命令,分为这几步骤 1 命令提示行下输入自己想自定义的命令名称并回车,检查是否有重名 2 在定义永久别名的文件里面加入自己要设置的永久别名,这个文件是根目录下的 .bashrc 文件,输入命令 vim ~/ .bashrc来打开.bashrc 文件。 在alias下面插入想修改的命名即可 举例 alias a=ls .

which 显示命令的完整路径 显示别名命令及其所指向的命令本身. which --skip-alias+命令 就能跳过别名直接显示原名的命令路径. whereis命令 显示命令路径,源码及手册页. -b 只搜索二进制程序路径. -m 仅使用手册文件路径.

who命令 显示已登录的相关用户信息 -b 上一次的启动时间 -d 显示死亡的进程. -l 显示登录进程. -u 显示谁登录的 比不加-u多了时间和进程编号. -r 运行级别 w命令 w可以理解为增强版的who命令,可以显示谁登录了,还能显示做什么,资源占用等等.

bash的基础特性 查看历史 能辅助我们完成系统管理

命令历史:使用上下箭头可以查看之前使用过的命令. 也可以使用history命令来列表查看之前执行过的. shell进程会在它的会话中保存用户执行过的命令. history可以通过环境变量来实现,定制一些功能,比如选择性的保存之前执行过的命令. history命令用法 -c 清空历史记录 -d 从指定位置删除历史 history -d+数字 删除指定数字的历史记录.history -d 30 表示删除第三十行的历史记录. history -d+数字+数字 则表示 从第一个数字开始,删除其后面的第二个数字的记录数.(包括第一条数本身) -a 将当前内存的历史记录追加到历史文件中去(从内存到文件) -n 从历史文件中读取所有未被读取的行 -r 读取历史文件并将内容追加到历史列表(内存)中(从文件到内存) -w 将当前历史写入到历史文件中并追加到历史列表(内存)里. 直接输入 history+数字 则为显示最近的命令历史,显示数量与数字一致。

环境变量 HSITSIZE 是设置shell进程保存命令的条数的, 初始值为1000,即保存1000条.(查看方法 echo $HSITSIZE). 保存在 .bash_history文件里. root目录下 ls -a 可见. 使用命令 cat .bash_history 也可以显示以往命令.但相比HISTSIZE来说会少点,因为还有一些开机 后的命令仍在内存当中,还没放入到存储文件中去.

HISTFILESIZE 命令历史文件大小 此文件只保存1000个命令(前面的会被后面的刷新掉) 特殊情况会超过 比如历史文件中有800个命令,而内存中有300个.但这俩个是单独的,只有等到用户登出系统时,内存中的才会保存到文件中去,此时,由于上限1000个的缘故,文件当中所保存的800个里面,最前面的100个会被刷掉.

调用命令历史中的命令 1 上下箭头翻到后回车 2 !+数字,再一次执行历史列表中的相应数字的命令。 3 !!再一次执行上一条命令。 4 !+命令 再一次执行最近一次(倒序的顺序)指定名字的命令。 可简化为首字母的形式。 一些命令不适合重复执行,比如创建文件,再次执行就会提示文件已存在。 帮助手册,查看日期等可以重复。这些命令重复执行多次,结果是一样的,具有幂等性的。 调用上一条命令的最后一个参数 1 esc键,点号键 逗号表示分开按,加号表示一起按. 2 file !$

控制命令历史记录的方式: 环境变量:HISTCONTROL 有三个选项 默认属性 ignoredups 忽略重复的命令

ignorespace 忽略以空白字符开头的命令 不想被别人看到自己的命令历史,就先设置为这个,然后所有命令都以空白字符打头就不会被保存了. 更改方式 HISTCONTROL=ignorespace即可.

ignoreboth 忽略重复及空白字符开头的.

修改变量的格式 变量名称=要修改的值 =号键等于赋值.(只对当前shell有效).

命令补全:shell在接受到用户执行命令的请求后,分析完成之后,最左侧的字符串会被当做命令,会在其内部寻找,没有就在外部寻找(根据PATH)环境变量中设定的目录,自左而右逐个搜索目录下的文件名.直到找出与用户给出的一致,并将此程序启动为进程.

比如 输入 whereis时候,输入wher按tab键,那么系统会自动补齐为 whereis 但是,只输入wh的话,由于存在多个wh开头的命令,第一次按tab键无反应,第二次按则把所有wh开头的命令全部列出,供用户自选.

路径补全:与命令补齐差不多. 区别 命令补全是根据起始命令来进行补全,路径补全是按起始路径来逐一匹配与用户给出的相同路径, 同时当路径补全遇到,多个目录一致时,列表供用户选择.

利用补充特性,可以有效避免错误,提前察觉到一些根本不存在的文件或命令.

变量就是 有名称的内存空间。 变量类型:×××,浮点型,字符型,布尔型,日期时间型等,分两大类。 1 字符型 2 数值型 分为 精确数值型,近似数值型 变量类型决定了 存储格式,数据的存储范围,参与运算的方式。 1 存储格式 十进制的8,二进制是1000, 8进制是0000 0100, 十进制的16 二进制是10000, 8进制是 0001 0000 数字转换为字符,称为字符集 ASCII码表:一共128个 英文大写26个,小写26个,加上一些数字及控制符号共127(128)个。 每一个二进制对应每一个字符。8个二进制编成一组,叫1字节byte。 2的8次方即256个,超过了英文字符本身,所以通常一个英文字母需要占用1个字节的位置。 但是汉字的数量远远超过256个,所以一个汉字就占用2个字节,也就是2的16次方=65536个。

存储格式不同,占用位置不同。8个位置等于1字节byte 比如存储数字16,当做数值的话,只占用5个位置。但作为字符,则需要16个位置。 存储数字160,当做数值的话,8个位置也足够。10100000 但作为字符,则需要三个字节,一个字节存1,一个字节存6,一个字节存0.共计3*8=24个位置。

变量的赋值操作,就是向变量所代表的存储空间去存数据, 比如 name=tom 就是把name这个变量所指向的存储空间,替换为tom这三个名字的值。