Linux根目录下的目录结构以及作用
- /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
- /etc: 系统管理和配置文件。
- /lib: 标准程序设计库,作用类似于Windows里的DLL文件。
- /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
- /bin: 二进制执行可执行命令
- /sbin:系统管理命令。
外部文件管理:
- /dev : 设备特殊文件。
- /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
- /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
- /lost+found:非法关机产生文件存储。
- /tmp:公用临时文件存储位置。
账户:
- /root:系统管理员的用户主目录。
- /home:用户起始目录的基点。
- /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin:系统用户使用的应用程序与指令。
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:内核源代码默认的放置目录。
运行过程中要用:
- /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
- /proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:
- /opt:默认是空的,我们安装额外软件可以放在这个里面。
- /srv:存放服务启动后需要提取的数据。
Linux的一切设备皆是文件,文件操作指令如下:
ls、cat、tac、nl、more、less、head、tail、pr、od、wc、vi、sed、tr、uniq 、awk、grep、sort、cut、paste
touch、rm、find、mkdir、rmdir、cp、mv、cd、file、pwd、diff、cmp、comm、meld
chown 、chgrp、chmod
<、>、<<、>>、|
打开目录:ls [选项] 目录文件名
ls -l :缩写ll(通过alias设置的),显示结果
total 36 | |||||||
drwxr-xr-x-t | 5 | root | root | 4096 |
Jan 25 17:16
| ../ | |
类型和权限 | 硬链接个数 | 属用户 | 属组 | 字节 | 最后一次修改时间 | 目录文件 |
total 36代表多少个存储块,这里4096字节是4个块,说明每个块1024个字节
第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”、“c表示字符设备”、“b表示块状设备”等等;
第2-4位:表示文档属主用户权限
第5-7位:表示属组用户权限
第8-10位:表示other用权限
第11位:表示粘着位,防止被其它用户删除
其中:rwx分别表示读、写、执行权限;没有对应权限就用 – 代替。
ls -s:能打印出具体每个文件占用的块
改变文件所属用户:chown [-R] newuser:newgroup 文件/目录 、chgrp [-R] newgroup 文件名
注意:①改文件不用加选项-R,该目录需要加选项-R;
②执行者必须为root;owner身份没有权限(其他人不想你随便把文件归给他);
chown user:group filename 把文件的属主和属组改为user,group
chown user filename 把文件的属主改为user
chown :group filename 把文件的属组改为group
chown user: filename 自动继承user这个用户所有的组
改变文件权限:chmod [选项] 文件/目录
数字形式:chmod (o-八进制,例:777用户、组、其它都拥有读、写、执行权限) 文件 ,111 111 111对应上面的2-10位
字母形式:chmod (u,g,o,a +/-/= r,w,x,- ,t) 文件
查看文件: cat [选项] 文件名
tac [选项] 文件名 --按行倒置
-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-h 帮助
cat [选项] 文件名 > 文件名
实现文件的合并并转存
cat > 文件名
创建一个新文件但是不可便编辑
nl [选项] 文件名
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
more、less 文件名
在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter:代表向下翻『一行』;
/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
f:立刻显示出档名以及目前显示的行数;
q:代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b:代表往回翻页,不过这动作只对文件有用,对管线无用。
less运行时可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]:向上翻动一页;
/字串:向下搜寻『字串』的功能;
?字串:向上搜寻『字串』的功能;
n:重复前一个搜寻 (与 / 或 ? 有关!)
N:反向的重复前一个搜寻 (与 / 或 ? 有关!)
q:离开 less 这个程序;
head、tail [选项] 文件名
head正向读取每行,tail逆向读取每行
-n :指定多少行,head -n 10 file 就是读文件前10行
pr [选项] 文件名
打印文件
-n 显示行号
od [选项] 文件名
将文件看作一组字节来检查文本内容,默认8进制字节打印
-A 指定第一列的位移值显示 x:16进制,o:8进制,d:10进制,n:无位移值
-t 指定文本的显示方式,xn:16进制,8进制on,带符号10进制dn,不带符号的10进制un|n表示每个显示值几个字节,
c:ascii码显示
查看文件格式:file 文件名
查看文件以ascii、utf8等哪种格式存储
统计文件内容:wc [选项] 文件名
-l:统计行数
-w:统计单词数
-c:统计字节数
文件批处理:vi/vim 文件名
--交互式编辑器
普通模式:打开文件默认是该模式,(num)dd:表示删除下面的num行,yy:表示复制,pp:表示粘贴,shift+g:表示光标 定位到最后
插入模式:通常由普通模式点击i、a、o等字符进入,该模式下可输入字符文本,点击“Esc”,退出该模式。
命令模式:普通模式使用shift+:可以输入命令w保存、q离开、q!强行离开会产生交换文件。
sed
sed的命令格式:sed [options] 'command' 编辑文件名
sed的脚本格式:sed [options] -f 脚本文件 编辑文件名
--流编辑
options:
-e :直接在命令行模式上(支持多条指令)进行sed动作编辑,此为默认选项;
-f :将sed的动作写在一个文件内,用–f 脚本文件 执行脚本文件内的sed动作;
-i :直接修改文件内容;
-n :只打印匹配行;
-r :支持扩展表达式(少用转义\);
-h或--help:显示帮助;
-V或--version:显示版本信息
command:
a\ 在当前行下面插入文本;
i\ 在当前行上面插入文本;
c\ 把选定的行改为新的文本;
y 将匹配的行进行字符替换 -格式:sed "/aa/y/1:/2?/" file 将file文件中存在aa的行中的1替换为2,:替换为?
类似tr 源字符 目标字符 tr -c(除源目标以外) -s 压缩多次出现的空格变为一个空格 -d 删除字符
d 删除模式空间中的所有行,并读入下一新行到pattern中
D 删除模式空间中的第一行,不读入下一行
s 替换指定字符;
h 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
H 将pattern space中的内容append到hold space后
g 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除 |如果放在指令后面表示整行匹配
G 将hold space中的内容append到pattern space后
l 列表不能打印字符的清单;
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令;
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码;
p 打印匹配行。
P 打印匹配行。
q 模式匹配完成退出;
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾;
r 会把其后面的任何字符判读为文件名,直到回车符或是单引号;
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾;
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾;
w 写文件并追加模板块到文件末尾;
W 写文件并追加模板块的第一行到文件末尾;
! 表示后面的命令对所有没有被选定的行发生作用;
= 显示文件行号;
# 把注释扩展到下一个换行符以前
cut、paste
--字符串列处理工具(sed ,tr处理行)
cut [选项] 文件名
-d:更改采用什么分割符
-f 分割开后的第几纵列字段
-b 字段中分割开字节 -1b1-2,1,2两个字节
paste 文件1 文件2
两个文件纵列文件合并中间使用tab字符分割
uniq
uniq [选项] 文件
-c 计数重复
-d 重复的行只列出来一次
删除文件中重复的行
awk
--文本分析工具
awk [选项] 文件
-F : '{ print $1 }' : -F表示以什么行处理以:为分隔符,如果不指定则表示默认空格或tab,{print $0,$1,$2},$0表示打印整行,$1表示打印分隔符的第一个
'BEGIN {print "start1,start7"} {print $1 "," $7} END {print "end1,end7"}' 支持正文前后跟内容使用大写的BEGIN和END。
'{ print "NR " " NF " " $0 }' 每行前面统计当前的行数以及总的列数 ,NR和NF是awk的内置变量
'print length("this is a text")' 支持打印函数,toupper:转为大写,tolower:转换为小写,length:返回字符串的长度,substr:分割字符串
'$0 ~ /daemon/' 支持正则表达式-- <小于 <=小于等于 >大于 >=大于等于 ==等于 !=不等于 ~匹配正则表达式 !~不匹配正则表达式
-f 将''中的语句控制语句写到脚本中执行,支持if else while for break continue
grep
--查找工具
grep命令格式:grep [选项] 文件
-e 使用正则表达式
-c 反转匹配的含义,统计不匹配的行数
-v 反转匹配的含义,选择不匹配的行
-r 递归查找整个目录中的文件内容
-E 支持扩展正则表达式
-i 不区分大小写
-n 在输出前显示每一行的行数
-q 与其他命令一起,抑制输出
-s 抑制错误信息输出显示
-num 前后各显示行数
文件内容排序:sort [选项] 文件名
-b 不管排序键前面的空格字符
-f 不区分大小写
-n 将排序键整体作为数字,而非文本
-r 从高到低排序,不是从低到高排序
-o file 将输出送入文件中
-t s 更换分割字符
-k s1,s2 用s1,s2字段作为排序键
文件比较:diff、cmp、comm、meld
diff、cmp、comm、meld 文件1 文件2
meld:图形软件比较
diff:显示文件所有不同的行,不同行上下分割开
cmp:只告诉你这两个文件是否一样
创建文件:touch [选项] 文件名
删除文件:rm [选项] 文件名
-i 删除前,需要确认每个文件是否删除
-f 强制删,无需逐一确认。
-r 将目录及以下之档案亦逐一删除,若删除目录则必须加-r
查找文件:find [路径] [选项]
-name 查找内容
-type(-t)查找文件类型限定,可跟f,d,l等。
-print 操作表达式,将匹配文件名输出
-exec 操作表达式,对匹配的文件名执行其它命令,通过{}将文件名传递给命令
-size 指定查找文件长度,比如查找长度为0的文件
创建目录:mkdir [选项] 目录名
-m --mode=模式,设定权限<模式> (类似 chmod)
-p --parents 递归创建目录
-v, --verbose 每次创建新目录都显示详见信息
删除空目录:rmdir [选项] 目录名
-p,递归的方法删除空目录
复制文件或目录:cp [选项] 源文件 目的文件
-r、R,拷贝目录及递归拷贝目录下的文件
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-a:此参数的效果和同时指定"-dpR"参数相同
移动文件与目录,或修改名称 mv [选项] 源文件 目的文件
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-b:当文件存在时,覆盖前,为其创建一个备份;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
切换路径:cd 绝对路径/相对路径
获取当前绝对路径:pwd
重定向及管道:<、>、>>、|
> 输出重定向到一个文件或设备 覆盖原来的文件(!<是指强制)
< 输入重定向到一个程序
>> 输出重定向到一个文件或设备 追加原来的文件
| 指令结果通过通道传给下一条指令