Linux基础(第一部分)-必会

440 阅读20分钟

CentOS7下载 mirrors.aliyun.com/centos/7/is…

Linux基础(第一部分)-必会

Linux基础(第二部分)-网络管理

Linux基础(第三部分)-进程管理

Linux基础(第四部分)-搜索

Linux基础(第五部分)-防火墙

Linux基础(第六部分)-软件安装


目录介绍

boot    存放启动文件
dev     存放设备文件
etc     存放配置文件
home    普通用户家目录,以/home/$username的方式存放
media   移动存储自动挂载目录,以 /media/$device_name的方式来存放
mnt     手动挂载目录
opt     三方软件安装目录
proc    内存系统文件
root    管理员家目录
run     里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
srv     服务相关数据
sys     系统文件
tmp     临时文件夹
usr     存放库文件、文档、命令、用户数据等
var     日志存放
lib     库文件

文件管理

touch(创建文件)

创建空文件

[root@localhost ~]# touch hello.txt
[root@localhost ~]# ls
hello.txt

创建多个文件

[root@localhost ~]# touch a.txt b.txt
[root@localhost ~]# ls
a.txt  b.txt

批量创建文件

[root@localhost ~]# touch hello{1..3}.txt
[root@localhost ~]# ls
hello1.txt  hello2.txt  hello3.txt

mkdir(创建文件夹)

创建一个文件夹

[root@localhost ~]# mkdir soft
[root@localhost ~]# ls
soft

创建多级文件夹

[root@localhost ~]# mkdir -p soft/linux/nginx
[root@localhost ~]# tree
.
└── soft
    └── linux
        └── nginx

3 directories, 0 files

tree命令需要单独安装yum -y install tree


在多级文件夹下同时创建多个文件夹

[root@localhost ~]# mkdir -p languages/{python,java,golang,php}
[root@localhost ~]# tree
.
└── languages
    ├── golang
    ├── java
    ├── php
    └── python

5 directories, 0 files

rmdir(删除空文件夹)

rmdir 命令只能删除空文件夹

[root@localhost ~]# rmdir test

删除的时候显示删除的文件

[root@localhost ~]# rmdir -v hello/
rmdir: 正在删除目录 "hello/"

递归删除空目录

[root@localhost ~]# rmdir -pv soft/linux/nginx/
rmdir: 正在删除目录 "soft/linux/nginx/"
rmdir: 正在删除目录 "soft/linux"
rmdir: 正在删除目录 "soft"

rm(删除文件)

删除文件

[root@localhost ~]# ls
hello.txt

[root@localhost ~]# rm hello.txt
rm:是否删除普通空文件 "hello.txt"?y

递归删除文件或文件夹

[root@localhost ~]# tree
.
└── content
    └── hello.txt

1 directory, 1 file
[root@localhost ~]# rm -r content/
rm:是否进入目录"content/"? y
rm:是否删除普通空文件 "content/hello.txt"?y
rm:是否删除目录 "content/"?y

忽略提示删除文件

[root@localhost ~]# tree
.
└── content
    └── hello.txt

1 directory, 1 file
[root@localhost ~]# rm -rf content

cp(复制文件)

复制一个文件

[root@localhost ~]# ls
hello.txt
[root@localhost ~]# cp hello.txt hello2.txt
[root@localhost ~]# ls
hello2.txt  hello.txt

覆盖一个文件

[root@localhost ~]# ls
hello2.txt  hello.txt
[root@localhost ~]# cp hello.txt hello2.txt
cp:是否覆盖"hello2.txt"? y

覆盖文件不提示

[root@localhost ~]# ls
hello2.txt  hello.txt
[root@localhost ~]# cp hello.txt hello2.txt
cp:是否覆盖"hello2.txt"? y
[root@localhost ~]# \cp hello.txt hello2.txt
[root@localhost ~]#

mv(移动文件或重命名)

mv 命令用来移动文件和修改文件名

移动文件

[root@localhost ~]# touch hello.txt
[root@localhost ~]# mkdir content
[root@localhost ~]# ls
content  hello.txt
[root@localhost ~]# mv hello.txt content/
[root@localhost ~]# tree
.
└── content
    └── hello.txt

1 directory, 1 file

移动文件并修改名称

[root@localhost ~]# ls
hello.txt
[root@localhost ~]# mv hello.txt world.txt
[root@localhost ~]# ls
world.txt

移动文件夹

[root@localhost ~]# tree
.
└── languages
    └── python

2 directories, 0 files
[root@localhost ~]# mv languages/python ./
[root@localhost ~]# ls
languages  python

修改文件夹名称

[root@localhost ~]# ls
languages  python
[root@localhost ~]# mv languages lang
[root@localhost ~]# ls
lang  python

ln(软连接,硬链接)

软连接和硬链接修改都会影响原始文件,删除都不会影响原始文件,linux的软连接相当于windows的快捷方式,硬链接文件只要有一个文件存在,文件就会存在,删除原始文件硬链接文件还可以继续使用,软链接可以跨分区,硬链接不能跨分区。

创建 软链接

[root@localhost ~]# ls
hello.txt
[root@localhost ~]# ln -s hello.txt he.txt
[root@localhost ~]# ls
hello.txt  he.txt
[root@localhost ~]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 6月  10 05:26 hello.txt
lrwxrwxrwx. 1 root root 9 6月  10 05:27 he.txt -> hello.txt

创建 硬链接

[root@localhost ~]# ln hello.txt h2.txt
[root@localhost ~]# ls
h1.txt  h2.txt  hello.txt
[root@localhost ~]# ls -l
总用量 0
lrwxrwxrwx. 1 root root 9 6月  10 05:29 h1.txt -> hello.txt
-rw-r--r--. 2 root root 0 6月  10 05:29 h2.txt
-rw-r--r--. 2 root root 0 6月  10 05:29 hello.txt

通过颜色页可以看出来区别

查看文件内容

cat(查看文件内容)

cat 经常用来显示文件的内容

查看文件内容

[root@localhost ~]# cat hello.txt
不要再哭了
快把眼泪擦一擦
这样吧
再爱我有缘的话

快去把东西收拾一下
再耗下去都天亮了

这里的钥匙你先留着吧
怕你有东西

假如你有东西忘了拿

那就这样吧
再爱都曲终人散了
那就分手吧
再爱都无需挣扎

查看文件内容并显示行号

[root@localhost ~]# cat -n hello.txt
     1	不要再哭了
     2	快把眼泪擦一擦
     3	这样吧
     4	再爱我有缘的话
     5
     6	快去把东西收拾一下
     7	再耗下去都天亮了
     8
     9	这里的钥匙你先留着吧
    10	怕你有东西
    11
    12	假如你有东西忘了拿
    13
    14	那就这样吧
    15	再爱都曲终人散了
    16	那就分手吧
    17	再爱都无需挣扎

查看文件内容并显示行号,空行不编号

[root@localhost ~]# cat -b hello.txt
     1	不要再哭了
     2	快把眼泪擦一擦
     3	这样吧
     4	再爱我有缘的话

     5	快去把东西收拾一下
     6	再耗下去都天亮了

     7	这里的钥匙你先留着吧
     8	怕你有东西

     9	假如你有东西忘了拿

    10	那就这样吧
    11	再爱都曲终人散了
    12	那就分手吧
    13	再爱都无需挣扎

tac(反向查看)

tac 命令和cat 命令类似,是将文件反序输出,即第一行最后显示,最后一行先显示。

[root@localhost ~]# tac hello.txt
再爱都无需挣扎
那就分手吧
再爱都曲终人散了
那就这样吧

假如你有东西忘了拿

怕你有东西
这里的钥匙你先留着吧

再耗下去都天亮了
快去把东西收拾一下

再爱我有缘的话
这样吧
快把眼泪擦一擦
不要再哭了

head(查看头部内容)

head 命令用于显示文件头部内容(默认显示前10行)

[root@localhost ~]# head hello.txt
不要再哭了
快把眼泪擦一擦
这样吧
再爱我有缘的话

快去把东西收拾一下
再耗下去都天亮了

这里的钥匙你先留着吧
怕你有东西

指定显示的行数

[root@localhost ~]# head -n 3 hello.txt
不要再哭了
快把眼泪擦一擦
这样吧

tail(查看尾部内容)

tail 命令用于输入文件中的尾部内(默认显示后10行内容)

[root@localhost ~]# tail hello.txt

这里的钥匙你先留着吧
怕你有东西

假如你有东西忘了拿

那就这样吧
再爱都曲终人散了
那就分手吧
再爱都无需挣扎

指定显示行数

[root@localhost ~]# tail -n 3 hello.txt
再爱都曲终人散了
那就分手吧
再爱都无需挣扎

监视文件的变化, 显示文件最新追加的内容

[root@localhost ~]# tail -f hello.txt

more(内容查看器)

more 命令基于vi编辑器,支持关键字定位,使用Enter向下滚动一行,空格向下滚动一屏,b上一屏内容,q退出

[root@localhost ~]# more /etc/services

指定每屏显示多少行

[root@localhost ~]# more -3 hello.txt
不要再哭了
快把眼泪擦一擦
这样吧
--More--(17%)

less(可上下滚动的内容查看器)

less命令与more类似,less命令允许用户向前向后浏览,使用PageUp 键向上翻页,使用PageDown键向下翻页

[root@localhost ~]# less /etc/services

显示行号

[root@localhost ~]# less /etc/services -N
[root@localhost ~]#
      1 # /etc/services:
      2 # $Id: services,v 1.55 2013/04/14 ovasik Exp $
      3 #
      4 # Network services, Internet style
      5 # IANA services version: last updated 2013-04-10
      6 #
      7 # Note that it is presently the policy of IANA to assign a single well-known
      ...

grep(文本搜索工具)

grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

在文件中搜索一个单词

[root@localhost ~]# grep 'max' /etc/services
wimaxasncp      2231/tcp                # WiMAX ASN Control Plane Protocol
wimaxasncp      2231/udp                # WiMAX ASN Control Plane Protocol
maxim-asics     3276/tcp                # Maxim ASICs
maxim-asics     3276/udp                # Maxim ASICs
max             6074/tcp                # Microsoft Max
max             6074/udp                # Microsoft Max


忽略大小写查找内容

[root@localhost ~]# grep -i 'max' /etc/services
wimaxasncp      2231/tcp                # WiMAX ASN Control Plane Protocol
wimaxasncp      2231/udp                # WiMAX ASN Control Plane Protocol
maxim-asics     3276/tcp                # Maxim ASICs
maxim-asics     3276/udp                # Maxim ASICs
ml-svnet        4171/tcp                # Maxlogic Supervisor Communication
MaxumSP         4179/tcp                # Maxum Services
MaxumSP         4179/udp                # Maxum Services
max             6074/tcp                # Microsoft Max
max             6074/udp                # Microsoft Max
d-fence         8555/tcp                # SYMAX D-FENCE
d-fence         8555/udp                # SYMAX D-FENCE


用户和组管理

useradd(添加用户)

useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

创建新账户

[root@localhost ~]# useradd wanghaha
[root@localhost ~]# id wanghaha
uid=1002(wanghaha) gid=1002(wanghaha) 组=1002(wanghaha)

[root@localhost ~]# groups wanghaha
wanghaha : wanghaha

[root@localhost ~]# cat /etc/passwd | grep wanghaha
wanghaha:x:1002:1002::/home/wanghaha:/bin/bash

[root@localhost ~]# cat /etc/group | grep wanghaha
wanghaha:x:1002:

[root@localhost ~]# ls /home
wanghaha


新建用户加入指定组

[root@localhost ~]# useradd xiaoming -g root
[root@localhost ~]# id xiaoming
uid=1003(xiaoming) gid=0(root) 组=0(root)

[root@localhost ~]# groups xiaoming
xiaoming : root


指定用户家目录

[root@localhost ~]# useradd wanghaha -d /var/wanghaha
[root@localhost ~]# su wanghaha
[wanghaha@localhost root]$ cd ~
[wanghaha@localhost ~]$ pwd
/var/wanghaha
[wanghaha@localhost ~]$

userdel(删除用户)

userdel 用户删除用户,如果不提供参数则只删除用户帐号,而不删除相关文件。

删除用户

[root@localhost ~]# userdel xiaoming
[root@localhost ~]# ls /home
xiaoming
[root@localhost ~]# cat /etc/passwd | grep xiaoming
[root@localhost ~]# cat /etc/group | grep xiaoming
[root@localhost ~]#

删除用户并删除与用户相关的所有文件

[root@localhost ~]# userdel -r wanghaha
[root@localhost ~]# ls /home
[root@localhost ~]# cat /etc/passwd | grep wanghaha
[root@localhost ~]# cat /etc/group | grep wanghaha
[root@localhost ~]#

usermod(修改用户信息)

usermod 命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。

选项

-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。

将指定用户添加到指定群组中

[root@localhost ~]# id wanghaha
uid=1000(wanghaha) gid=1000(wanghaha) 组=1000(wanghaha)

[root@localhost ~]# groups wanghaha
wanghaha : wanghaha

[root@localhost ~]# usermod -G root wanghaha
[root@localhost ~]# id wanghaha
uid=1000(wanghaha) gid=1000(wanghaha) 组=1000(wanghaha),0(root)

[root@localhost ~]# groups wanghaha
wanghaha : wanghaha root


修改用户名称

[root@localhost ~]# usermod -l king wanghaha
[root@localhost ~]# id king
uid=1000(king) gid=1000(wanghaha) 组=1000(wanghaha),0(root)

[root@localhost ~]# ls /home
wanghaha
[root@localhost ~]#

groupadd(添加用户组)

新建一个组

[root@localhost ~]# groupadd yunwei
[root@localhost ~]# cat /etc/group | grep yunwei
yunwei:x:1001:

groupdel(删除用户组)

groupdel命令用于删除指定的工作组

[root@localhost ~]# groupdel yunwei
[root@localhost ~]# cat /etc/group | grep yunwei
[root@localhost ~]#

sudo(切换执行身份)

sudo 命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

使用sudo执行命令,提示用户不在sudo文件中

[wanghaha@localhost ~]$ sudo ls
[sudo] password for wanghaha:
wanghaha is not in the sudoers file.  This incident will be reported.

编辑 /etc/sudoers

root ALL=(ALL) ALL 下添加一条你的文件名例如 wanghaha

root    ALL=(ALL)       ALL
wanghaha        ALL=(ALL)       ALL

然后在切换到wanghaha用户使用sudo执行命令

[wanghaha@localhost ~]$ sudo pwd
[sudo] password for wanghaha:
/home/wanghaha

结束密码的有效期限

[wanghaha@localhost ~]$ sudo -k
[wanghaha@localhost ~]$ sudo pwd
[sudo] password for wanghaha:
/home/wanghaha

su(切换用户)

su 命令用于切换当前用户身份到其他用户身份

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。

变更帐号为root并在执行ls指令后退出变回原使用者

[wanghaha@localhost ~]$ su -c pwd root
Password:
/home/wanghaha

[root@localhost ~]# su - zhangsan -c pwd
/home/zhangsan
[root@localhost ~]# su - lisi -c pwd
/home/lisi

切换用户

[root@localhost ~]# su wanghaha
[wanghaha@localhost root]$ pwd
/root

切换用户并切换工作目录到该用户的家目录

[root@localhost ~]# su - wanghaha
上一次登录:三 6月 10 06:58:49 EDT 2020pts/1 上
[wanghaha@localhost ~]$ pwd
/home/wanghaha

改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量

[root@localhost ~]# su -l wanghaha
上一次登录:三 6月 10 07:01:25 EDT 2020pts/1 上
[wanghaha@localhost ~]$ pwd
/home/wanghaha

打包压缩

tar(打包压缩)

tar命令可以把一大堆的文件和目录全部打包成一个文件。

打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

打包文件不压缩

[wanghaha@localhost ~]$ ls -lh
total 39M
-rw-rw-r--. 1 wanghaha wanghaha 4.1M Jun 10 07:06 a.txt
-rw-rw-r--. 1 wanghaha wanghaha  35M Jun 10 07:07 b.txt

[wanghaha@localhost ~]$ tar -cvf file.tar a.txt b.txt
a.txt
b.txt

[wanghaha@localhost ~]$ ls
a.txt  b.txt  file.tar
[wanghaha@localhost ~]$ ls -lh
total 78M
-rw-rw-r--. 1 wanghaha wanghaha 4.1M Jun 10 07:06 a.txt
-rw-rw-r--. 1 wanghaha wanghaha  35M Jun 10 07:07 b.txt
-rw-rw-r--. 1 wanghaha wanghaha  39M Jun 10 07:07 file.tar

使用 gzip 压缩

[wanghaha@localhost ~]$ tar -zcvf file.tar.gz a.txt b.txt
a.txt
b.txt
[wanghaha@localhost ~]$ ls -lh
total 78M
-rw-rw-r--. 1 wanghaha wanghaha 4.1M Jun 10 07:06 a.txt
-rw-rw-r--. 1 wanghaha wanghaha  35M Jun 10 07:07 b.txt
-rw-rw-r--. 1 wanghaha wanghaha  39M Jun 10 07:07 file.tar
-rw-rw-r--. 1 wanghaha wanghaha  41K Jun 10 07:09 file.tar.gz

解压缩

[wanghaha@localhost ~]$ tar -xvf file.tar.gz -C test/
a.txt
b.txt
[wanghaha@localhost ~]$ tree
.
├── a.txt
├── b.txt
├── file.tar.gz
└── test
    ├── a.txt
    └── b.txt

1 directory, 5 files

zip(打包压缩)

需要安装yum -y install zip

压缩文件

[root@localhost ~]# zip file.zip a.txt b.txt
  adding: a.txt (deflated 100%)
  adding: b.txt (deflated 100%)
[root@localhost ~]# ls
a.txt  b.txt  file.zip
[root@localhost ~]# ls -lh
总用量 39M
-rw-rw-r--. 1 wanghaha wanghaha 4.1M 6月  10 07:06 a.txt
-rw-rw-r--. 1 wanghaha wanghaha  35M 6月  10 07:07 b.txt
-rw-r--r--. 1 root     root      39K 6月  10 07:16 file.zip

压缩目录

[root@localhost ~]# tree -h
.
└── [  32]  soft
    ├── [ 44M]  a.txt
    └── [4.9M]  b.txt

1 directory, 2 files
[root@localhost ~]# zip soft.zip -r soft/
  adding: soft/ (stored 0%)
  adding: soft/a.txt (deflated 100%)
  adding: soft/b.txt (deflated 100%)
[root@localhost ~]# ls -lh
总用量 116K
drwxr-xr-x. 2 root root   32 6月  10 07:21 soft
-rw-r--r--. 1 root root 114K 6月  10 07:22 soft.zip

unzip(解压zip包)

用于解压用zip压缩的.zip压缩包

需要安装yum -y install unzip

-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f:更新现有的文件;
-l:显示压缩文件内所包含的文件;
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t:检查压缩文件是否正确;
-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v:执行时显示详细的信息;
-z:仅显示压缩文件的备注文字;
-a:对文本文件进行必要的字符转换;
-b:不要对文本文件进行字符转换;
-C:压缩文件中的文件名称区分大小写;
-j:不处理压缩文件中原有的目录路径;
-L:将压缩文件中的全部文件名改为小写;
-M:将输出结果送到more程序处理;
-n:解压缩时不要覆盖原有的文件;
-o:不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码>:使用zip的密码选项;
-q:执行时不显示任何信息;
-s:将文件名中的空白字符转换为底线字符;
-V:保留VMS的文件版本信息;
-X:解压缩时同时回存文件原来的UID/GID;
-d<目录>:指定文件解压缩后所要存储的目录;
-x<文件>:指定不要处理.zip压缩文件中的哪些文件;
-Z:unzip-Z等于执行zipinfo指令。
[root@localhost ~]# unzip soft.zip
Archive:  soft.zip
   creating: soft/
  inflating: soft/a.txt
  inflating: soft/b.txt

磁盘管理

df(查看磁盘分区空间)

df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

[root@localhost ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 52403200 1513188 50890012    3% /
devtmpfs                 1928364       0  1928364    0% /dev
tmpfs                    1940444       0  1940444    0% /dev/shm
tmpfs                    1940444    9084  1931360    1% /run
tmpfs                    1940444       0  1940444    0% /sys/fs/cgroup
/dev/sda1                1038336  148424   889912   15% /boot
/dev/mapper/centos-home 47285700   33044 47252656    1% /home
tmpfs                     388092       0   388092    0% /run/user/0

以可读性较高的方式来显示信息

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  1.5G   49G    3% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.9M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  145M  870M   15% /boot
/dev/mapper/centos-home   46G   33M   46G    1% /home
tmpfs                    379M     0  379M    0% /run/user/0

du(查看文件目录空间)

du命令用于查看文件和目录磁盘使用的空间

-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
[root@localhost ~]# du -h soft
49M	soft
[root@localhost soft]# du -h a.txt
44M	a.txt

fdisk(查看硬盘和分区)

fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。

-b<分区大小>:指定每个分区的大小;
-l:列出指定的外围设备的分区表状况;
-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
-u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
-v:显示版本信息。

查看所有分区表的状况

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000f04a8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-home:48.4 GB, 48444211200 字节,94617600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

操作磁盘

[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):p

磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000f04a8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

命令(输入 m 获取帮助):

mount(磁盘挂载)

mount 命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom

-V:显示程序版本;
-l:显示已加载的文件系统列表;
-h:显示帮助信息并退出;
-v:冗长模式,输出指令执行的详细信息;
-n:加载没有写入文件“/etc/mtab”中的文件系统;
-r:将文件系统加载为只读模式;
-a:加载文件“/etc/fstab”中描述的所有文件系统。

权限管理

chmod(改变文件权限)

chmod 命令用来变更文件或目录的权限。


u User,即文件或目录的拥有者; g Group,即文件或目录的所属群组; o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; a All,即全部的用户,包含拥有者,所属群组以及其他用户; r 读取权限,数字代号为“4”; w 写入权限,数字代号为“2”; x 执行或切换权限,数字代号为“1”; - 不具任何权限,数字代号为“0”; s 特殊功能说明:变更文件或目录的权限。


-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

权限设置

chmod u+x,g+w hello.txt  //为文件hello.txt设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r hello.txt
chmod 764 hello.txt
chmod a+x hello.txt  //对文件hello.txt的u,g,o都设置可执行属性

chown(改变文件或目录所有者和所属组)

chown 命令改变某个文件或目录的所有者和所属的组

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。

当省略“:组”,仅改变文件所有者

[root@localhost ~]# ls -l
总用量 116
drwxr-xr-x. 2 root root     32 6月  10 07:21 soft
-rw-r--r--. 1 root root 116679 6月  10 07:22 soft.zip
[root@localhost ~]# chown wanghaha soft.zip
[root@localhost ~]# ls -l
总用量 116
drwxr-xr-x. 2 root     root     32 6月  10 07:21 soft
-rw-r--r--. 1 wanghaha root 116679 6月  10 07:22 soft.zip

修改文件的所有者和所属组

[root@localhost ~]# chown wanghaha:wanghaha soft.zip
[root@localhost ~]# ls -lh
总用量 116K
drwxr-xr-x. 2 root     root       32 6月  10 07:21 soft
-rw-r--r--. 1 wanghaha wanghaha 114K 6月  10 07:22 soft.zi

只修改文件的所属组

[root@localhost ~]# chown :root soft.zip
[root@localhost ~]# ls -lh
总用量 116K
drwxr-xr-x. 2 root     root   32 6月  10 07:21 soft
-rw-r--r--. 1 wanghaha root 114K 6月  10 07:22 soft.zip

chgrp(改变文件或目录的所属组)

chgrp命令用来改变文件或目录所属的用户组。

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
[root@localhost ~]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 6月  10 07:58 a.txt
[root@localhost ~]# chgrp wanghaha a.txt
[root@localhost ~]# ls -l
总用量 0
-rw-r--r--. 1 root wanghaha 0 6月  10 07:58 a.txt

递归修改

[root@localhost ~]# chgrp wanghaha -R hello/
[root@localhost ~]# cd hello/
[root@localhost hello]# ls -l
总用量 0
-rw-r--r--. 1 root wanghaha 0 6月  10 07:59 world