Linux命令篇之du命令和read命令

du 命令

用途

概述磁盘使用。

语法

du [ -a | -s][ -k] [ -m] [ -g][ -l][ -r] [ -x ] [ -H | -L ][ File ... ]

描述

du命令显示用于文件的块的数量。如果指定的File参数实际上是一个目录,就要报告该目录内的所有文件。如果没有提供 File参数,du命令使用当前目录内的文件。

如果File参数是一个目录,那么报告的块的数量就是分配到目录中文件以及分配到目录自身的块之和。

指定-a标志,报告个体文件中块数量。不管是否使用了-a标志,由File参数指定的个体文件总是要列出。

指定-s标志,报告用于所有指定文件和目录中所有文件的全部块。

块计数包括每个文件的间接块。块计数是通过 512 字节单位计算的,它与系统使用的群集大小无关。指定-k标志,通过 1024 字节单位计算块数。

注:

1.  具有多个链接的文件只为一个条目计数和书写。

2.  由于块计数只基于文件大小,所以在报告的块数中,未分配的块是没有包含进去的。

3.  如果du得不到文件属性,或者无法读取目录,它就报告一个错误,并且会影响命令的退出状态。

标志

-a 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。将该标志      与-s标志进行对比。

-g 用 GB 单位计算块数,而不是用缺省的 512 字节单位。对磁盘使用情况的输出值要用浮点数,      这是因为如果用字节为单位的话,值会非常大。

-H 如果在命令行指定了符号链接,du 命令将统计链接引用的文件或文件层次结构的大小。

-k 用 1024 字节单位计算块数,而不是用缺省的 512 字节单位。

-l 在文件链接和多链接之间均匀地分配块。根据缺省值,有两个或者更多链接的文件只计数一        次。

-L 如果在命令行指定了符号链接或者在文件层次结构的遍历中多次遇到符号链接,则 du 命令应      统计链接引用的文件或文件层次结构的大小。

-m 用 MB 单位计算块数,而不是用缺省的 512 字节单位。对磁盘使用情况的输出值要用浮点数,      这是因为如果用字节为单位的话,值会非常大。

-r 报告不可访问的文件或者目录名。此为缺省设置。

-s 为所有指定文件显示整个磁盘使用情况,或者为一个目录中的所有文件显示总的磁盘使用情        况。将该标志与-a标志进行对比。

-x 在评估文件大小时,只评估那些与File参数指定的文件或者目录驻留在相同设备上的文件。例      如,您可以指定一个在多个设备上包含文件的目录。这种情况下,-x标志就为与目录驻留在相      同设备的所有文件显示块的大小。

如果指定了全部-k、-m和-g标志,或者是其中任意两个,最后指定的那个起作用。用标志-m和-g输出磁盘使用情况就会近似成最接近的第二位十进制数。

退出状态

此命令返回下列出口值:

 

0


成功结束。

 

>0


发生错误。

示例

1.  要概述一个目录树及其每个子树的磁盘使用情况,请输入:

du /home/fran

这在/home/fran目录及其每个子目录中显示了磁盘块数。

2.  要通过 1024 字节块概述一个目录树及其每个子树的磁盘使用情况,请输入:

du -k /home/fran

这在/home/fran目录及其每个子目录中显示了 1024 字节磁盘块数。

3.  要通过 MB 磁盘块概述一个目录树及其每个子树的磁盘使用情况,请输入:

du -m /home/fran

这在/home/fran目录及其每个子目录中显示了 MB 磁盘块数(近似到最接近的第二位十进制数)。

4.  要通过 GB 块概述一个目录树及其每个子树的磁盘使用情况,请输入:

du -g /home/fran

这在/home/fran目录及其每个子目录中显示了 GB 磁盘块数(近似到最接近的第二位十进制数)。

5.  要显示每个文件磁盘使用情况,请输入:

du -a /home/fran

这显示了包含在每个文件以及目录/home/fran的子目录中的磁盘块数。在目录旁的数字就是该目录树的磁盘使用情况。在常规文件旁的数字就是该文件单独的磁盘使用情况。

6.  要只显示一个目录树的全部磁盘使用情况,请输入:

du -s /home/fran

-s标志控制du命令,只显示/home/fran目录和其中包含的文件的磁盘使用情况的总和。通过缺省值,如果du命令无法读取一个文件或者目录,就显示一条错误消息。

7.  除了在 /home/fran 的遍历中找到的常规文件,还要显示所有符号链接引用的文件或文件层次结构的磁盘使用,请输入:

du -L /home/fran

8.  要报告符号链接 mylink 引用的文件或文件层次结构的磁盘使用,请输入:

du -H mylink

read 命令用法详解

1. 简介

read是一个buildin命令,主要完成对参数的赋值,类似C语言中的scanf。其不仅可以赋值变量,还可以赋值数组;其输入不仅是屏幕,还可以是文件描述符。

2. man中选项说明

-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。

-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说  明。

-p 后面跟提示信息,即在输入前打印提示信息。

-e 在输入的时候可以时候命令补全功能。

-n 后跟一个数字,定义输入文本的长度,很实用。

-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。

-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。

-t 后面跟秒数,定义输入字符的等待时间。

-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

1. 简单读取

read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。下面是 read命令的最简单形式:


01


[email protected]  linuxTest$ vi read-simple.sh


02


03


#!/bin/bash


04


#这里默认会换行


05


echo "enter  your website: "


06


#读取从键盘的输入


07


read website


08


echo "your  website is $website"


09


exit 0  #退出


10


11


12


#直接执行shell的结果


13


[email protected]  linuxTest$ sh read-simple.sh


14


enter your  website:


15


www.wirelessqa.com


16


your  website is www.wirelessqa.com


17


18


#如果想看清楚每一步的执行,可以加上-x


19


[email protected]  linuxTest$ sh -x read-simple.sh


20


+ echo ‘enter  your website: ‘


21


enter your  website:


22


+ read website


23


www.wirelessqa.com


24


+ echo ‘your  website is www.wirelessqa.com‘


25


your  website is www.wirelessqa.com


26


+ exit 0

2.直接跟上提示read -p


01


[email protected]  linuxTest$ vi read-p.sh


02


03


#1.读取单个变量


04


05


#!/bin/bash


06


07


read -p "enter  your website: " website #这里的变量只有一个,也可以有多个


08


echo "your  website is $website"


09


exit 0


10


11


12


#执行结果


13


[email protected]  linuxTest$ sh read-p.sh


14


enter your  website: www.wirelessqa.com


15


your  website is www.wirelessqa.com


16


17


#2.读取多个变量


18


19


[email protected]  linuxTest$ vi read-p-more.sh


20


21


22


#!/bin/bash


23


#读取输入的多个变量


24


read -p "enter  your name and website: " name website


25


echo "your  name is $name,your websit is $website"


26


exit 0


1


#执行结果


2


[email protected]  linuxTest$ sh -x read-p-more.sh


3


+ read -p ‘enter  your name and website: ‘ name website


4


enter your  name and website: bixiaopeng www.wirelessqa.com


5


+ echo ‘your  name is bixiaopeng,your websit is www.wirelessqa.com‘


6


your name  is bixiaopeng,your websit is www.wirelessqa.com


7


+ exit 0

3.计时输入read -t

-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;

使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。


01


[email protected]  linuxTest$ vi read-t.sh


02


03


04


[email protected]  linuxTest$ cat read-t.sh


05


#!/bin/bash


06


07


if read -t 10  -p "请在10秒内输入毕小朋博客的地址: " website


08


then


09


   if [ $website  = "www.wirelessqa.com" ]


10


   then


11


      echo "你输入的地址是对的:$website"


12


   else


13


      echo "你输入的网址是错的:$website"


14


   fi


15


else


16


   echo "对不起,你已超时,请在10秒内输入!"


17


fi


18


exit 0


19


20


#执行结果1


21


[email protected]  linuxTest$ sh read-t.sh


22


请在10秒内输入毕小朋博客的地址: 对不起,你已超时,请在10秒内输入!


23


24


#执行结果2


25


[email protected]  linuxTest$ sh read-t.sh


26


请在10秒内输入毕小朋博客的地址: weibo.com/wirelessqa


27


你输入的网址是错的:weibo.com/wirelessqa


28


29


#执行结果3


30


[email protected]  linuxTest$ sh read-t.sh


31


请在10秒内输入毕小朋博客的地址: www.wirelessqa.com


32


你输入的地址是对的:www.wirelessqa.com

4.计数输入read -n数量

当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量


01


[email protected]  linuxTest$ vi read-n.sh


02


03


[email protected]  linuxTest$ cat read-n.sh


04


#!/bin/bash


05


06


#例子1.只接收一个输入就退出


07


read -n1  -p "你喜欢老毕的博客吗[y/n]? " answer


08


case $answer in


09


Y | y)


10


   echo " 好,谢谢哈!";;


11


N | n)


12


   echo " oh,我会继续努力的!";;


13


*)


14


   echo " 输入错误,请输入y/n";;


15


esac


16


17


#例子2.只接收2个输入就退出


18


read -n2  -p "请随便输入两个字符: " any


19


echo "  您输入的两个字符是:$any"


20


exit 0


21


22


#执行结果


23


[email protected]  linuxTest$ sh read-n.sh


24


你喜欢老毕的博客吗[y/n]? n oh,我会继续努力的!


25


请随便输入两个字符: ai 您输入的两个字符是:ai

5.隐藏输入read -s


01


[email protected]  linuxTest$ vi read-s.sh


02


[email protected]  linuxTest$ cat read-s.sh


03


#!/bin/bash


04


#如果想让用户的输入不显示在屏幕上,请使用read -s


05


read -s  -p "请输入你的密码: " pass


06


echo


07


echo "你的密码是: $pass"


08


exit 0


09


10


#执行结果


11


[email protected]  linuxTest$ sh read-s.sh


12


请输入你的密码:


13


你的密码是: bixiaopeng

6.读取文件

每次调用read命令都会读取文件中的”一行”文本。当文件没有可读的行时,read命令将以非零状态退出。

通过什么样的方法将文件中的数据传给read呢?使用cat命令并通过管道将结果直接传送给包含read命令的while命令


01


[email protected]  linuxTest$ vi read-file.sh


02


03


[email protected]  linuxTest$ cat read-file.sh


04


#!/bin/bash


05


06


count=1


07


cat read-s.sh  |while read line #通过cat read-s.sh文件的输出,作为read 的输入给line


08


do


09


   echo "$count: $line"


10


   count=$[ $count + 1 ]


11


done


12


echo "结束"


13


exit 0


14


15


#执行结果


16


[email protected]  linuxTest$ sh read-file.sh


17


1: #!/bin/bash


18


2: #如果想让用户的输入不显示在屏幕上,请使用read -s


19


3: read -s  -p "请输入你的密码: " pass


20


4: echo


21


5: echo "你的密码是: $pass"


22


6: exit 0


23


结束

时间: 2024-10-11 12:13:24

Linux命令篇之du命令和read命令的相关文章

Linux——学习篇(二)之find命令

Linux中的find命令: 对于Linux而言,有着"一切皆文件"的这一特性,所以相比较windows而言对于文件没有后缀名,查找是并不轻松的的.因此,需要我们熟悉Linux下的find命令,更快地找到我们所需要的文件. 1. 命令格式 find   pathname   -options   [   -print  -exec   -ok ...] 2. 命令参数 pathname: find 命令所查找的目录路径.例如用.来表示当前目录,用.表示系统根目录. -print:   

Linux系统管理——基础命令篇

终于开始接触Linux,现在是一个标准的菜鸟,那么就踏踏实实,一步一步开始进阶,希望我的博客慢慢可以给后来人带来帮助. 废话少说,下面就是我所接触的Linux系统管理的一些基础命令,以及我个人添加的命令的释义,还望大大们多多指教. 一.Linux命令行基础 [[email protected] ~]# uname -r       //查看内核版本 [[email protected] ~]# uname -a       //查看内核相关详细信息 [[email protected] ~]#

Linux命令篇之cut命令和join命令

cut命令的用法 cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的 (1)其语法格式为:cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file] 使用说明cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出.如果不指定 File 参数,cut 命令将读取标准输入.必须指定 -b.-c 或 -f 标志之一. 主要参数-b

Linux基础篇之五基础命令 ---- 2

回顾: 上一篇博文我们讲的是几个处理目录类的常用命令,分别是ls, cd, pwd, mkdir, rmdir, cp, rm  链接:http://ccschan.blog.51cto.com/11854461/1841723 本文主要讲文件查看类的命令,在linux中,这些命令是最基本的,也是必须掌握的. 文件查看类命令,主要有以下几个: ·cat    由第一行开始显示文件内容 ·tac     由最后一行开始逆序显示文件内容,同tac命令是倒着写的 ·nl     显示的时候,顺道输出行

每天一个linux命令(3):du命令

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是查看当前指定文件或目录(会递归显示子目录)占用磁盘空间大小,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilo

Linux 磁盘管理命令fdisk.df.du.mount等的介绍

今天给大家带来的是Linux的一下磁盘管理的一些简单的命令总结. fdisk 命令说明:fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区           语法:fdisk(选项)(参数) -l:列出指定的外围设备的分区表状况: -v:显示版本信息. 直接跟设备分区  fdisk /dev/sda1                                     分区管理子命令:                                                   

Android系统篇之----Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)

一.前言 最近一周比较忙,没时间写东西了,今天继续开始我们今天的话题:run-as命令,在上周的开发中,遇到一个问题,就是在使用run-as命令的时候出现了一个错误,不过当时因为工作进度的问题,这问题就搁浅没有解决,用了其他一个曲线救国的方式去解决的.那么咋们今天闲来说说Android中的run-as命令吧. 二.遇到的问题&解决问题 Android中我们知道如果设备没有root,我们想看一个应用的沙盒数据(/data/data/目录内容),在以前的方式很难办到,一般人都是选择root之后,去查

Linux下df与du两个命令的差别?

Linux下df与du两个命令的差别? 一.df显示文件系统的使用情况,与du比較,就是更全盘化. 最经常使用的就是 df -T,显示文件系统的使用情况并显示文件系统的类型. 举比例如以下: [[email protected] ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root ext4 18134344 780860 16432296 5% / tmpf

Linux笔记整理——命令篇

一.列出目录内容 ls -a:显示所有文件(包括隐藏文件): ls -l:显示详细信息: ls -R:递归显示子目录结构: ls -ld:显示目录和链接信息: ctrl+r:历史记录中所搜命令(输入命令中的任意一个字符): Linux中以.开头的文件是隐藏文件: pwd:显示当前目录 二.查看文件的类型 file:查看文件的类型 三.复制文件目录 1.cp:复制文件和目录 cp源文件(文件夹)目标文件(文件夹) 常用参数:-r:递归复制整个目录树:-v:显示详细信息: 复制文件夹时要在cp命令后