Linux目录和文件管理:pwd、cd、ls、alias、du(中)

简介: 目录和文件管理由于 Linux 系统免费开源,使得 Linux 发行版本有很多,利用 Linux 开发产品的团队也有很多,如果任由每个人都按照自己的想法来配置 Linux 系统文件目录,后期可能会产生诸多的管理问题。试想,如果你进入一家公司,所用 Linux 系统的文件目录结构与所学的完全不同,实在令人头疼。为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。

3.3 ls (list) 列出目录/文件的详细属性信息

生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)。生产环境中不能单独使用,需要配合通配符。

命令格式:

ls  [选项]  [文件或目录… ]

命令选项:

选项 说明
-l 以长格式显示文件和目录列表 ll=ls -l
-a 显示全部包括隐藏文件
-A 显示全部文件或隐藏文件,但不包括 . 和..
-d 只显示当前目录
-h 友好显示文件大小
-R 递归显示该目录及该目录的子目录下的所有内容
--color 显示颜色
-S 按从大到小排序
-i 显示inode号
-t 根据文件创建时间进行排序,由新到旧,新建的排在前面
-tr 根据文件创建时间进行排序,由旧到新


常用搭配:

  • ls -alh:以长格式显示目录下的全部文件,包括隐藏文件、. 和.. ,并友好显示文件大小。
  • ls -ltr:以长格式显示目录下的文件,根据文件创建时间进行排序,新建的排在后面。
  • ls 只能统计文件的大小,针对目录只统计目录本身的大小、而不统计目录里子目录或文件的总大小。
  • 目录本身的大小是根据所含目录项计算的,不是目录内文件大小的总和。

示例:

1)显示当前目录的属性信息

[root@localhost ~]# ls -dl    //查看当前目录的属性信息
dr-xr-x---. 14 root root 4096 1月  21 10:16 .
复制代码


2)显示当前目录下的所有文件(不包含隐藏文件)

[root@localhost ~]# ls     //显示当前目录下的所有文件(不包含隐藏文件) 
anaconda-ks.cfg  initial-setup-ks.cfg  xiao1  公共  模板  视频  图片  文档  下载  音乐  桌面 
复制代码


3)显示当前目录下的所有文件(包含隐藏文件)

[root@localhost ~]# ls -a     //显示当前目录下的所有文件(包含隐藏文件)
.                .bash_history  .bashrc  .cshrc     .ICEauthority         .tcshrc   公共  图片  音乐
..               .bash_logout   .cache   .dbus      initial-setup-ks.cfg  .viminfo  模板  文档  桌面
anaconda-ks.cfg  .bash_profile  .config  .esd_auth  .local                xiao1     视频  下载
复制代码


4)列出长数据串,显示出文件的属性与权限等数据信息,并友好显示文件大小

[root@localhost ~]# ls -lh
总用量 8.0K
-rw-------. 1 root root 1.8K 1月  18 17:38 anaconda-ks.cfg
-rw-r--r--. 1 root root 1.8K 1月  18 17:40 initial-setup-ks.cfg
-rw-r--r--. 1 root root    0 1月  18 11:39 xiao1
drwxr-xr-x. 2 root root    6 1月  18 17:40 公共
drwxr-xr-x. 2 root root    6 1月  18 17:40 模板
drwxr-xr-x. 2 root root    6 1月  18 17:40 视频
drwxr-xr-x. 2 root root    6 1月  18 17:40 图片
drwxr-xr-x. 2 root root    6 1月  18 17:40 文档
drwxr-xr-x. 2 root root    6 1月  18 17:40 下载
drwxr-xr-x. 2 root root    6 1月  18 17:40 音乐
drwxr-xr-x. 2 root root    6 1月  18 17:40 桌面
复制代码


3.4 通配符

去匹配文件名(包括目录)

符号 效果
匹配一个字符 f?.txt
* 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10} 1到10
{a..z} a b c ...z
{A..Z} A B C .....Z
[123] 包含其中之一就显示,没有也无所谓(此处括号里只表示单个字符)
[0-9] 匹配数字范围(0123456789),表示单个数字
[a-z] 范围需要注意 (表示从aA、bB到z,不含Z),表示单个字母
[A-Z] 从A到Z(只含大写)中的任意一个字母
\ 转义符,表示原来的意思
[[:lower:]] 小写字母表示 a-z
[[:upper:]] 大写字母表示 A-Z
[^zhou] 匹配列表中的所有字符以外的字符
[[:digit:]] 任意数字,相当于0-9


示例:

1)*的使用。

[root@localhost data]# ls -a *   //不显示隐藏文件
1
[root@localhost data]# ls -a     //显示隐藏文件
.  ..  1
[root@localhost data]# ls *      //*不包括.开头的
ls: 无法访问*: 没有那个文件或目录
[root@localhost data]# ls .*    //包括了 .. 上层目录
.:
..:
aaa  boot  dev  home  lib64  misc  net  proc  run   sdb1  sys  usr
bin  data  etc  lib   media  mnt   opt  root  sbin  srv   tmp  var
复制代码


2)使用{a..z}和{A..Z},[a-z]和[A-Z]。大小写字母的区别比较。

[root@localhost data]# touch f{a..z}.log
[root@localhost data]# touch f{A..Z}.log
[root@localhost data]# ls
123456.txt  fa.log      fe.log  fj.log  fo.log  ft.log  fy.log
123.txt     f{A.Z}.log  ff.log  fk.log  fp.log  fu.log  fz.log
1.txt       fb.log      fg.log  fl.log  fq.log  fv.log  rh
2.txt       fc.log      fh.log  fm.log  fr.log  fw.log  test.txt
abc.txt     fd.log      fi.log  fn.log  fs.log  fx.log
[root@localhost data]# ls f[zhou].log    //包含z、h、o、u四个字母中的任意一个就会显示(只匹配单个字符)   
fh.log  fo.log  fu.log  fz.log
[root@localhost data# ls f[x-z].log     //显示xXyYz,不包括Z
fx.log  fX.log  fy.log  fY.log  fz.log
[root@localhost data]# ls f[a-c].log     //显示aAbBc,不包括C
fa.log  fA.log  fb.log  fB.log  fc.log   
[root@localhost data]# ls f{a..c}.log    //显示abc所有小写
fa.log  fb.log  fc.log
[root@localhost data]# ls 1[[:lower:]]*     //显示小写字母
1a1.txt  1e1.txt  1i1.txt  1m1.txt  1q1.txt  1u1.txt  1y1.txt
1b1.txt  1f1.txt  1j1.txt  1n1.txt  1r1.txt  1v1.txt  1z1.txt
[root@localhost data]# ls 1[[:upper:]]*     //显示大写字母
[root@localhost data]# ls 1[[:upper:]]*
1A1.txt  1E1.txt  1I1.txt  1M1.txt  1Q1.txt  1U1.txt  1Y1.txt
复制代码


3)使用{1..10}和[0-9],数字的匹配。

[root@localhost data]# touch f{1..9}.txt
[root@localhost data]# touch f{10..20}.txt
[root@localhost data]# ls f[0-9].txt           //[0-9]只能匹配10以下的数字
f1.txt  f2.txt  f3.txt  f4.txt  f5.txt  f6.txt  f7.txt  f8.txt  f9.txt
[root@localhost data]# ls f[0-9][0-9].txt     //两个[0-9]可以匹配双数字
f10.txt  f11.txt  f12.txt  f13.txt  f14.txt  f15.txt  f16.txt  f17.txt  f18.txt  f19.txt  f20.txt
[root@localhost data]# ls f{10..20}.txt       //{10..20}可以匹配双数字
f10.txt  f11.txt  f12.txt  f13.txt  f14.txt  f15.txt  f16.txt  f17.txt  f18.txt  f19.txt  f20.txt
[root@localhost data]# ls f??.txt        //两个?号可以匹配两个字符
f10.txt  f11.txt  f12.txt  f13.txt  f14.txt  f15.txt  f16.txt  f17.txt  f18.txt  f19.txt  f20.txt
[root@localhost data]# ls f*.txt         //*可以匹配任意字符
f10.txt  f12.txt  f14.txt  f16.txt  f18.txt  f1.txt   f2.txt  f4.txt  f6.txt  f8.txt
f11.txt  f13.txt  f15.txt  f17.txt  f19.txt  f20.txt  f3.txt  f5.txt  f7.txt  f9.txt
复制代码


4)显示隐藏文件

[root@localhost data]# ls /etc/.*   //显示隐藏文件也包括..的上层目录
[root@localhost data]# ls /etc/.* -d    //如果不想看上层目录 就要加-d 只显示当前目录
/etc/.  /etc/..  /etc/.java  /etc/.pwd.lock  /etc/.updated
复制代码


3.5 alias 别名命令

临时修改(关机或退出终端会自动消失)

  • alias 命令别名 = ’命令‘
  • unalias 别名命令 删除别名
  • \加别名命令 (显示原始命令)
[root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost dev]# alias myls=ls -alh  //如果不加引号,无法识别
-bash: alias: -alh: 未找到 
[root@localhost dev]# ls
[root@localhost dev]# \ls     //就想使用原来的命令,在命令前加转义符\
[root@localhost dev]# unalias myvim    //删除别名
[root@localhost dev]# myvim
bash: myvim: 未找到命令...
复制代码


永久修改(需要修改配置文件)

  • 在/etc/.bashrc 会影响全部
  • /root/.bashrc只影响当前用户

注意:

  • 命令执行顺序:绝对路径下的命令>别名命令>内部命令>hash命令>外部命令。
  • 实际项目中需先查看其他人有没有定义别名命令。

3.6 du (disk usage) 统计目录或文件所占磁盘空间大小的命令

命令格式:

du [选项] [文件或目录… ]

选项 说明
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录(包括隐藏文件)
-h 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n 最大显示到第n层 (-d n)
--exclude 排除某些文件后,显示剩余大小


示例:

[root@localhost ~]# du --max-depth=1   //统计当前目录大小,只显示到第二级目录
3800    ./.cache
4   ./.dbus
108 ./.config
0   ./桌面
0   ./下载
0   ./模板
0   ./公共 
0   ./文档
0   ./音乐
0   ./图片
0   ./视频
312 ./.local
4272    .
复制代码


注意:

  • -a -s无法同时使用。
  • du显示的是文件占磁盘大小,不是文件的实际大小。
  • 每个磁盘分块,每块(4K)只能存一个文件,当文件不足4K时,du统计也会按4K计算。
相关文章
|
7天前
|
存储 移动开发 Linux
Linux系统之部署h5ai目录列表程序
【5月更文挑战第3天】Linux系统之部署h5ai目录列表程序
21 1
|
3天前
|
Linux Shell
Linux操作系统下查找大文件或目录的技巧
Linux操作系统下查找大文件或目录的技巧
10 2
|
3天前
|
域名解析 Unix Linux
AIX上如何正确挂载Linux 的nfs共享目录分享篇
AIX上如何正确挂载Linux 的nfs共享目录分享篇
|
5天前
|
Linux
在 Linux 中复制文件和目录
在 Linux 中复制文件和目录
|
5天前
|
Linux Shell C++
Linux 终端中的目录切换
Linux 终端中的目录切换
|
7天前
|
数据可视化 搜索推荐 Linux
|
5月前
|
Linux
Linux命令(95)之alias
Linux命令(95)之alias
35 0
|
1天前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
|
2天前
|
监控 Linux 数据处理