head
**作用:**用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容
**语法:**head [参数] [文件]
命令参数:
参数 | 参数描述 |
---|---|
-q | 隐藏文件名 |
-v | 显示文件名 |
-c<数目> | 显示的字节数 |
-n<行数> | 显示的行数 |
(1)显示 1.log 文件中前 20 行
[root@localhost ~]# head 1.log -n 20
(2)显示 1.log 文件前 20 字节
[root@localhost ~]# head -c 20 log2014.log
(3)显示 t.log最后 10 行
[root@localhost ~]# head -n -10 t.log
扩展:tail 命令,查看文件的末尾
which
在 linux 要查找某个命令或者文件,但不知道放在哪里了,可以使用下面的一些命令来搜索
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
**作用:**用于查找文件(which指令会在环境变量$PATH设置的目录里查找符合条件的文件。)
**语法:**which [文件…]
命令参数:
参数 | 参数描述 |
---|---|
-n<文件名长度> | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 |
-p<文件名长度> | 与-n参数相同,但此处的<文件名长度>包括了文件的路径 |
-w | 指定输出时栏位的宽度 |
-V | 显示版本信息 |
(1)查看 ls 命令是否存在,执行哪个
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
(2)查看 which
[root@localhost ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias
/usr/bin/which
(3)查看 cd
[root@localhost ~]# which cd
/usr/bin/cd
(注意:显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
(4)查看当前 PATH 配置
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
whereis
whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,
而find则是遍历硬盘查找文件
**作用:**用于查找文件
**语法:**whereis [-bfmsu][-B <目录>…]-M <目录>…][-S <目录>…][文件…]
命令参数:
参数 | 参数描述 |
---|---|
-b | 定位可执行文件 |
-B<目录> | 只在设置的目录下查找可执行文件 |
-f | 不显示文件名前的路径名称 |
-m | 定位帮助文件 |
-M<目录> | 只在设置的目录下查找说帮助文件 |
-s | 定位源代码文件 |
-S<目录> | 只在设置的目录下查找源代码文件 |
-u | 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件 |
(1)查找 locate 程序相关文件
[root@localhost ~]# whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz
(2)查找 locate 的源码文件
[root@localhost ~]# whereis -s locate
(3)查找 lcoate 的帮助文件
[root@localhost ~]# whereis -m locate
locate
需要注意这个命令在我们的最小mini系统里面是没有安装的
[root@localhost ~]# yum install mlocate
...省略...
[root@localhost ~]# updatedb
**作用:**用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录
**语法:**locate [-d ][–help][–version][范本样式…]
命令参数:
参数 | 参数描述 |
---|---|
-b | 仅匹配路径名的基本名称 |
-c | 只输出找到的数量 |
-d | 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db |
-e | 仅打印当前现有文件的条目 |
-1 | 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。 这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料 |
-0 | 在输出上带有NUL的单独条目 |
-S | 不搜索条目,打印有关每个数据库的统计信息 |
-q | 安静模式,不会显示任何错误讯息 |
-P | 检查文件存在时不要遵循尾随的符号链接 |
-l | 将输出(或计数)限制为LIMIT个条目 |
-n | 至多显示 n个输出 |
-m | 被忽略,为了向后兼容 |
-r | REGEXP – 使用基本正则表达式 |
–regex | 使用扩展正则表达式 |
-o | 指定资料库存的名称 |
-h | 显示帮助 |
-i | 忽略大小写 |
-V | 显示版本信息 |
常用参数:
参数 | 参数描述 |
---|---|
-l | num(要显示的行数) |
-f | 将特定的档案系统排除在外,如将proc排除在外 |
-r | 使用正则运算式做为寻找条件 |
(1)查找和 pwd 相关的所有文件(文件名中包含 pwd)
[root@localhost ~]# locate pwd
/etc/.pwd.lock
/usr/bin/pwd
...省略...
(2)搜索 etc 目录下所有以 sh 开头的文件
[root@localhost ~]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
(3)查找 /root 目录下,以 sh 结尾的文件
[root@localhost ~]# locate -r '^/root.*sh$'
/root/test.sh
find
**作用:**用于在文件树中查找文件,并作出相应的处理
语法:
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
命令参数:
参数 | 参数描述 |
---|---|
pathname | find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录 |
find命令将匹配的文件输出到标准输出 | |
-exec | find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格 |
-ok | 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行 |
命令选项:
选项 | 选项描述 |
---|---|
-name | 按照文件名查找文件 |
-perm | 按文件权限查找文件 |
-user | 按文件属主查找文件 |
-group | 按照文件所属的组来查找文件 |
-type | 查找某一类型的文件,诸如: b - 块设备文件 d - 目录 c - 字符设备文件 l - 符号链接文件 p - 管道文件 f - 普通文件 |
-size n :[c] | 查找文件长度为n块文件,带有c时表文件字节大小 |
-amin n | 查找系统中最后N分钟访问的文件 |
-atime n | 查找系统中最后n*24小时访问的文件 |
-cmin n | 查找系统中最后N分钟被改变文件状态的文件 |
-ctime n | 查找系统中最后n*24小时被改变文件状态的文件 |
-mmin n | 查找系统中最后N分钟被改变文件数据的文件 |
-mtime n | 查找系统中最后n*24小时被改变文件数据的文件 |
-maxdepth n | 最大查找目录深度 |
-prune | 选项来指出需要忽略的目录。在使用-prune选项时要当心, 因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略 |
-newer | 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项 |
来看例子
(1)查找 48 小时内修改过的文件
[root@localhost ~]# find -atime -2
.
./.bash_profile
...省略...
(2)在当前目录查找 以 .log 结尾的文件。 . 代表当前目录
[root@localhost ~]# find ./ -name '*.log'
./mydir/text2.log
./test.log
(3)查找 /opt 目录下 权限为 777 的文件
[root@localhost ~]# find /opt -perm 777
(4)查找大于 1K 的文件
[root@localhost ~]# find -size +1000c
./anaconda-ks.cfg
./.bash_history
./.viminfo
(5)查找等于 1000 字符的文件
[root@localhost ~]# find -size 1000c
-exec
注意:-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名
(6)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
[root@localhost ~]# find . -type f -mtime +10 -exec rm -f {} \;
# 可以不用操作,了解一下结构即可
(7)当前目录中查找所有文件名以.log结尾、更改时间在0日以上的文件,并删除它们,
只不过在删除之前先给出提示。 按y键删除文件,按n键不删除
[root@localhost ~]# find . -name '*.log' -mtime +0 -ok -exec rm {} \;
< -exec ... ./mydir/text2.log > ? n
(8)用 exec 选项执行 cp 命令
[root@localhost ~]# find . -name '*.log' -exec cp {} test3 \;
-xargs find
-xargs find 命令把匹配到的文件传递给 xargs 命令,而 xargs 命令每次只获取一部分文件而不是全部,不像 -exec 选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
(9)查找当前目录下每个普通文件,然后使用 xargs 来判断文件类型
[root@localhost ~]# find . -type f -print | xargs file
(10)查找当前目录下所有以 js 结尾的并且其中包含 ‘editor’ 字符的普通文件
[root@localhost ~]# find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
[root@localhost ~]# find -type f -name '*.js' | xargs grep -lF 'editor'
(11)利用 xargs 执行 mv 命令
[root@localhost ~]# find . -name "*.log" | xargs -i mv {} test4
(12)用 grep 命令在当前目录下的所有普通文件中搜索 hostnames 这个词,并标出所在行:
[root@localhost ~]# find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'
(13)查找当前目录中以一个小写字母开头,最后是 4 到 9 加上 .log 结束的文件:
[root@localhost ~]# find . -name '[a-z]*[4-9].log' -print
(14)在 test 目录查找不在 test4 子目录查找
[root@localhost ~]# find test -path 'test/test4' -prune -o -print
(15)实例1:查找更改时间比文件 log2012.log新但比文件 log2017.log 旧的文件
[root@localhost ~]# find -newer log2012.log ! -newer log2017.log
depth
depth 选项可以使 find 命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
实例:find 命令从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。 它将首先匹配所有的文件然后再进入子目录中查找
[root@localhost ~]# find / -name "CON.FILE" -depth -print
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。
用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用 ls -l test.txt 查找
[root@localhost ~]# ll
总用量 20
-rw-------. 1 root root 1437 8月 31 15:54 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 9月 8 18:29 file1
lrwxrwxrwx. 1 root root 15 9月 7 16:31 link_text2 -> mydir/text2.log
drwxr-xr-x. 4 root root 92 9月 7 18:08 mydir
-rw-r--r--. 1 root root 13 9月 8 16:35 myfile
-rw-r--r--. 1 root root 36 9月 9 13:16 test3
-rw-r--r--. 1 root root 36 9月 8 18:36 test.log
-rwxr-xr-x. 1 root root 67 9月 8 18:36 test.sh
这里使用test.log作为例子
-rw-r--r--. 1 root root 36 9月 8 18:36 test.log
第一列共有 10 个位置,
第一个字符指定了文件类型。
在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。
如果是 d,表示是一个目录。
从第二个字符开始到第十个 9 个字符,3 个字符一组,分别表示了 3 组用户对文件或者目录的权限。
权限字符用横线代表空许可,r 代表只读,w 代表写,x 代表可执行
语法:
chmod [-cfvR] [--help] [--version] mode file...
常用参数:
参数 | 参数描述 |
---|---|
-c | 当发生改变时,报告处理信息 |
-R | 处理指定目录以及其子目录下所有文件 |
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
代号 | 代号权限 |
---|---|
r | 读权限,用数字4表示 |
w | 写权限,用数字2表示 |
x | 执行权限,用数字1表示 |
- | 删除权限,用数字0表示 |
s | 特殊权限 |
环境:-rw-r--r--. 1 root root 36 9月 8 18:36 test.log
(1)增加文件 t.log 所有用户可执行权限
[root@localhost ~]# ls -n test.log
-rwxr-xr-x. 1 0 0 36 9月 8 18:36 test.log
(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
[root@localhost ~]# chmod u=r test.log -c
mode of "test.log" changed from 0755 (rwxr-xr-x) to 0455 (r--r-xr-x)
[root@localhost ~]# ls -n test.log
-r--r-xr-x. 1 0 0 36 9月 8 18:36 test.log
(3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
[root@localhost ~]# chmod 751 test.log -c
或者
[root@localhost ~]# chmod u=rwx,g=rx,o=x t.log -c
(4)将mydir 目录及其子目录所有文件添加可读权限
[root@localhost ~]# chmod u+r,g+r,o+r -R text/ -c
chown 将指定文件的拥有者改为指定的用户或组,
用户可以是用户名或者用户 ID;
组可以是组名或者组 ID;文件是以空格分开的要改变权限的文件列表,支持通配符
注意:一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。
语法:
chown [-cfhvR] [--help] [--version] user[:group] file...
常用参数:
参数 | 参数描述 |
---|---|
user | 新的文件拥有者的使用者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
–help | 显示辅助说明 |
–version | 显示版本 |
(1)改变拥有者和群组 并显示改变信息
[root@localhost ~]# chown -c mail:mail test.log
changed ownership of "test.log" from root:root to mail:mail
-r--r-xr-x. 1 mail mail 36 9月 8 18:36 test.log
(2)改变文件群
[root@localhost ~]# chown -c :mail test.sh
changed ownership of "test.sh" from root:root to :mail
(3)改变文件夹及子文件目录属主及属组为 mail
[root@localhost ~]# chown -cR mail: mydir
changed ownership of "mydir/test1/text1.txt" from root:root to mail:mail
changed ownership of "mydir/test1" from root:root to mail:mail
...省略...
用来压缩和解压文件。tar 本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件
**作用:**用于备份文件(tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件)
语法:
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F