1、Linux上的文件管理类命令都有哪些,其常用的方法及其相关示例演示:
命令格式:命令 -选项 参数
文件处理命令
Ls
功能:查看目录下文件的详细信息
语法:ls 选项[-ald] [文件或目录]
-a显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性
演示:
[root@server30 mytest1]# ls
p23b p2e
[root@server30 mytest]# ll
total 0
drwxr-xr-x. 2 root root 6 Sep 24 19:58 p23b
drwxr-xr-x. 2 root root 6 Sep 24 19:58 p2e
Cd
功能:切换目录
演示:cd / (切换到根目录)
Cd …. (回到上一级目录)
Pwd
功能:显示当前所在的工作目录
演示:
[root@server30 mytest1]# pwd
/tmp/mytest1
Touch
功能:创建空文件
语法:touch [文件名]
演示:
[root@server30 mytest1]# touch file 1
Mkdir
功能:创建新目录
语法:mkdir [目录名]
演示:
[root@server30 mytest1]#mkdir aaa
Cp
功能:复制文件或目录
语法:cp -R[源文件或目录] [目的目录]
-R复制目录
演示:
1.将文件file1,file2复制到目录dir1
$ cp file1file2 dir1
2.将dir1下的所有文件及子目录复制到dir2
$ cp -R dir1 dir2
Mv
功能:移动文件,更名
语法:mv [源文件或目录] [目的目录]
演示:
1. 将当前目录下的文件file1更名为file3
$ mv file2 dir2
RM
功能:删除文件
语法:rm -r [文件或目录]
-r 删除目录
演示:
1. 删除文件file3
$ rm file3
2. 删除目录dir1
$ rm-r dir1
Cat
功能:显示文件内容
语法:cat[文件名]
演示:
$cat /etc/services
More
功能:分页显示文件内容
语法:more[文件名]
(空格)或f 显示下一页
(enter) 显示下一行
Q或q 退出
演示:
$more /etc/services
Head
功能:产看文件的前几行
语法:head -n [文件名]
n 显示文件的前几行
演示:
$head -20/etc/services
Tail
功能:查看文件的后几行
语法:tail -n [文件名]
-n 显示文件的后几行
-f 动态显示文件内容
演示:$tail -30 /etc/services
Ln
功能:产生链接文件
语法:ln -s[源文件][目标文件]
-s 创建链接
演示:
1:创建文件/etc/issue的软链接/issye.soft
[root@blog ~]# ln-s/etc/issue/issue.soft
[root@blog ~]#ls-l/
etc/issue /issue.soft
-rw-r--r--. 1 root root 75 Jan 29 2013/etc/issue
lrwxrwxrwx. 1 root root10Oct 21 16:01 /issue.soft ->/etc/issue
2.创建文件/etc/issue的硬链接/issue.hard
[root@bolg ~]ln /etc/issue /issue.hard
[root@blog ~]
# ls -l/etc/issue/issue.hard
-rw-r--r--. 2 root root ll75 Jan 29 2013/etc/issue
-rw-r--r--. 2 root root 75 Jan 29 2013/issue.hard
硬链接与软链接的区别:
软链接类似于windows下的快捷方式,软链接可以跨文件系统生成,当删除原文件后软链接的目的文件也没意义了。
硬链接类似于windows下的拷贝,硬链接不能跨文件系统生成,当删除原文件后,硬链接后的文件还会存在,硬链接与原文件有相同的inode,所以可以同步更新。硬链接=cp+ 同步更新
文件搜索命令
Which
功能:显示系统命令所在目录
语法:which [命令名称]
演示:
$Which ls
Find
功能描述:查找文件或目录
语法:find [搜索路径] [搜索关键字]
演示:
1.在目录/etc中查找文件init
find / -size +204800
3. 在根目录下查找所有者为sam的文件
Find / -user sam
4.在/etc下查找24小时内被修改过属性的文件盒目录
$ find /etc -size +163840 -a -size -a -204800
6.在/etc下查找inittab文件并显示其详细信息
$find /etc -nameinittab -exec ls -l{} \;
Find参数详解:
(-name 文件名
*:匹配任意字符包括零个字符,init*----》以init开头的文件
*init*--》文件名里包含init的文件
-size文件大小
文件大小以block数据块为最小单位,1个数据块大小等于512字节,512字节=0.5KB,1block=0.5KB.
100MB=?block
100MB=102400KB=204800block
大于 +
小于–
-user文件所有者
根据时间查找: 1.ctimeatimemtime以天为单位
2.cmin aminmmin以分钟为单位
c---change改变,表示文件的属性被修改过,所有者,所属组,权限。
a---access访问
m—modify修改,文件的内容被修改过。
“-”代表多长时间内,-1代表一天之内
“+”超过多久时间。
例如:find /etc -mmin -120表示查询120分钟内被修改的文件。
1. 连接符:-a and 逻辑与
-o or 逻辑或
-type:按类型查询
-f :二进制文件
-l :链接文件
d: 目录文件
例如:[root@blog ~]# find /etc/ -name init*-a-type l
/etc/init.d
[root@blog ~]# find /etc/ -name inittab -o-size+204800
/etc/inittab
2. 连接符:find ……. –exec 命令{}\;
-ok (询问确认)
{}代表find查询的结果。
\ 转义符,符号命令使用本身的含义。
;代表语句的结束。
-inum: 按i节点查询
例如:把文件名为-abc的文件删掉。
[root@blog test]#ls -i
655336 a 655340 ab 655341 -abc 655333 \-abc 655339 \-\a\b\c 655335 issue
[root@blog test]#find . -inum 655341
./-abc
[root@blog test]#find . -inum 655341 -exec rm -rf {}\;
)
Locate
功能:查找文件或目录 局限:对于新创的文件,用locate命令查询不到
语法:locate[搜索关键字]
演示:
列出所有跟file相关的文件
$ locate file
Grep
功能:在文件中搜索字串匹配的行并输出
语法:grep [指定字串] [源文件]
演示:
#grep ftp /etc/services
文件帮助命令
Man
功能:获得帮助信息
语法:man [命令或配置文件]
1.查看ls命令的帮助信息
$Man services
Info
功能:获得帮助信息
语法:info [任何关键字]
演示:
查看ls指令的帮助信息
$ tar -zcvf dir1.tar.gz dir1
解压dir1.tar.gz目录
语法:zip 选项[-r] [压缩后文件名] [文件或目录]
优点:.zip默认windows和linux通用格式。当压缩文件时,和gzip命令不同的是压缩后会保留原文件
$zip services.zip /etc/services
压缩目录
$ unzip test.zip
Bzip2
功能:压缩文件
语法:bzip2 选项[-k] [文件]
-k 产生压缩文件后保留源文件
演示:
$ bunzip2 -k file1.bz2
注意:于后缀为.tar.bz2包解压的命令:tar -jxvf package
文件权限管理命令
Chmod
功能:改变文件或目录权限
语法:chmod [{ugo}[{+-=}{rwx}] [文件或目录]
[mode=421]
演示:
1.赋予文件file1所所属组写权限
$ chmod 777 dir1
命令小结:文件目录的权限为r,w,x
文件:
R读---cat, more, head, tail
W写—echo, vim
X执行---命令脚本
目录:
R读---ls
W写—touch , rm,mkdir
X执行---cd
Chown
功能:改变文件或目录的所有者
语法:chown [用户] [文件或目录]
演示:
改变文件file1的所有者为nobody
$ chgrp adm file1
2.Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示
3.请使用命令行展开功能来完成以下练习
创建/tmp目录下的a_c,a_d,b_c, b_d
[root@server30 tmp]# mkdir a_c a_d b_cb_d
[root@server30 tmp]# ls
a_c a_d b_c b_d
创建/tmp/mylinux目录下的:
Mylinux/
|-----bin 一般命令存放目录
|-----boot 系统启动目录,内核文件vmlinux引导文件,启动加载bootloader,grub
|------grub 开机设置文件相关
|------dev 任何设备与接口设备都是以文件的形式存放在此目录
|------etc 配置文件存放目录,init.d下存放了各种软件的启动脚本
|-----rc.d 存放脚本启动文件
| |-----init.d 存放通过xin
|------sysconfig
|---network-scripts
|--lib 基本共享库
| |---modules 内核模块文件
|---lib64 专用于x86_64系统上的辅助共享库文件存放位置
|---proc 属于虚拟文件系统如外设备的状态,网络状态,处于动态变化
|---sbin 开机或单用户模式还能操作的命令
|----sys 属于虚拟文件系统,内存中的数据,如内核、文件系统等
|----tmp 临时存放目录,所用用户都能访问
|----usr 用户程序
| |----local 包含了从源安装的用户程序
| |-----bin 普通用户可执行目录
| |-----sbin 超级用户root的可执行命令
|-----var 常态性变动的文件
|---lock 程序文件
|--log 登录文件
|--run 软件运行所产生的文件
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?
文件的元素信息包括文件的权限,大小,拥有者,组,以及修改时间等信息
用ls -l可以查看
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
释:这里涉及到命令别名和命令替换符两个小知识
定义一个别名:
演示:alias copy=cp
Alias xrm=’rm –r’
查看别名信息:alias
删除别名:unalias copy
在命令中引用另一个命令的执行结果:也叫命令替换
命令替换:
功能:将一个命令的输出作为另一个命令的参数
语法:命令1 `命令2`(注意:`是飘号,是一个重音符)
演示: ls -l `whichtouch`(当然这只是临时的,如果要想永久生效就需要)
补充shell变量知识:
$0获取当前执行的shell脚本的文件名,包括路径
$n获取当前执行的shell脚本的第n 个参数值,n=1….9,当n为0时表示脚本的文件名,如果n大于9用大括号括起来{10}
$*获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于$1$2$3….注意与$#的区别
$#获取当前shell命令行中参数的总个数
$@这个程序的所有参数’$1’ ‘$2’‘$3’‘….’,这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白
Ping -c2 $host &>/dev/null
If[$?=0];
Then
Echo “$host is up”
Echo “$host is down”
6.显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现以数字(可以有其他字符)的文件或目录
[root@server30var]# ls /var | grep ^1[0-9]*[a-z]$
7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
[root@server30etc]# ls /etc | grep^[0-9]|grep -v [0-9]$
8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录
[root@server30 var]# ls /etc |grep -v ^[a-z]|grep [a-z]*$
9.在/tmp目录下创建以tfile开头,后面跟当前日期和时间的文件,文件名形如tfile-2016-05-27-09-32-22
[root@server30 tmp]# mkdir tfile`date +%Y-%m-%d-%H-%M-%S`
6—9知识点小结:这几题主要内容为grep搜索关键字和date(date的学习见博客一)
关键字内容学习:
*:表示匹配多个任意字符(可以是0个也可以是多个)
?:表示匹配一个字符
[0-9]:表示匹配0到9这个范围中的任意一个字节
[abc]:表示匹配abc中的任意一个
[^abc]:表示匹配除abc中的其他任意
tail -f/var/log/messages(在一个标签中,执行完后想要退出的话按ctl+c)
/etc/init.d/NetworkManagerrestart(在另外一个标签中)
显示中间部分
head -n 20/etc/passwd |tail
cat passwd |head -n20 |tail -n 10
head -n 22/etc/passwd |tail -n 3
显示行号的两种方法:
vim passwd ----:set nu
nlpasswd
*grep
-v 除什么以外反选
^#表示以#开头
$以什么结尾的搜索出来(^$表示空格)
-A5匹配关键字后5行显示出来
-B5匹配关键字前5行显示出来
cat passwd |grep root筛选关键字以行为单位
grep root passwd
*cut -d(d是分界符的意思 f:from) 显示的是截止符前面的内容
练习1:只显示/etc/passwd中的用户名
解答:cut -d:-f1 /etc/passwd
练习2:只显示/etc/passwd中的shell环境
解答:cut -d:-f7 /etc/passwd
解析:由于/etc/passwd文件中每排只有6个:这里是以:为分界符并且从第7个开始截取所以就是从最后的空格,也就是行尾截取
10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
[root@server30 mytest1]# find /etc -namep*[^0-9] -exec /bin/cp-rf {} /tmp/mytest1 \;
11.复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
[root@server30 mytest2]# find /etc -name *.d -exec /bin/cp-rf {} /tmp/mytest2 \;
12.复制/etc/目录下所有以1或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
[root@server30mytest3]# find /etc -name [1mn]*.conf -exec /bin/cp {} /tmp/mytest3\;
10-12知识点小结:考察的内容有find和cp(参见文件处理命令)