7月19日上课 文件管理

1、显示当前工作目录

[root@centos7 ~]#cd /bin 
[root@centos7 bin]#pwd
/bin
[root@centos7 bin]#pwd -P
/usr/bin
[root@centos7 bin]#ll /bin
lrwxrwxrwx. 1 root root 7 Jul 14 11:16 /bin -> usr/bin

如果当前工作目录是一个软连接目录,则pwd默认当前目录是软连接的目录,加上P就显示软连接源文件的目录。

2、ls 命令

  • ls命令默认数字排在字母的前面
[root@centos7 ~]#touch 9
[root@centos7 ~]#ls
9                Desktop    Downloads             Music     Public     Videos
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  Templates
  • ll显示软连接目录和普通目录的区别
[root@centos7 ~]#ll /etc|wc -l  #不加-d就会递归进入子目录
269
[root@centos7 ~]#ll /etc/|wc -l
269
[root@centos7 ~]#ll /etc -d   #-d表示只显示etc这个目录
drwxr-xr-x. 133 root root 8192 Jul 20 07:40 /etc
[root@centos7 ~]#ll /etc/ -d
drwxr-xr-x. 133 root root 8192 Jul 20 07:40 /etc/
[root@centos7 ~]#ll /bin|wc -l   #不加/表示软连接目录
1
[root@centos7 ~]#ll /bin/|wc -l  #加/表示软连接的源目录
1589
[root@centos7 ~]#ll -d /bin
lrwxrwxrwx. 1 root root 7 Jul 14 11:16 /bin -> usr/bin
[root@centos7 ~]#ll -d /bin/
dr-xr-xr-x. 2 root root 45056 Jul 18 07:58 /bin/

总结:如果ll显示一般目录加/和不加没有什么区别,但对于软连接目录,加/代表软连接的源目录,不加代表软连目录。
-d代表只显示目录,不递归进入子目录。
加上-d显示的是源文件的bin

3、文件通配符

*匹配零个或多个字符
?匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~-前一个工作目录
[0-9]匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang]匹配列表中的任何的一个字符
[^wang]匹配列表中的所有字符以外的字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

  • 大小写字母的说明
[root@centos6 app]#touch f{a..c}
[root@centos6 app]#ls
fa  fb  fc
[root@centos6 app]#touch f{A..C}
[root@centos6 app]#ls
fa  fA  fb  fB  fc  fC
[root@centos6 app]#ll f[a-c]
-rw-r--r--. 1 root root 0 Jul 20 08:09 fa
-rw-r--r--. 1 root root 0 Jul 20 08:09 fA
-rw-r--r--. 1 root root 0 Jul 20 08:09 fb
-rw-r--r--. 1 root root 0 Jul 20 08:09 fB
-rw-r--r--. 1 root root 0 Jul 20 08:09 fc
[root@centos6 app]#ll f[A-C]
-rw-r--r--. 1 root root 0 Jul 20 08:09 fA
-rw-r--r--. 1 root root 0 Jul 20 08:09 fb
-rw-r--r--. 1 root root 0 Jul 20 08:09 fB
-rw-r--r--. 1 root root 0 Jul 20 08:09 fc
-rw-r--r--. 1 root root 0 Jul 20 08:09 fC

总结:[a-c]和[A-C]代表大小写字母,并且从并且小写字母在前.

4、touch命令

  • touch创建空文件和>及>>的区别
    >创建空文件,如果文件存在,则会把文件情况,比较危险
    touch 创建空文件,如果文件存在,则会更改文件的时间戳
    >>创建空文件,如果文件存在,则不改变文件内容也不改变时间戳,是最安全的创建空文件
    touch可以创建多个空文件
  • 指定时间戳
[root@centos6 app]#touch -t 201810201230.20 f3
[root@centos6 app]#stat f3
  File: `f3'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 13          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-10-20 12:30:20.000000000 +0800
Modify: 2018-10-20 12:30:20.000000000 +0800
Change: 2017-07-19 20:27:22.629271264 +0800

5、cp命令

  • cp在复制的时候可能会丢失一些源数据
[root@centos6 app]#cp /etc/issue /app/xxx
[root@centos6 app]#ll !*
ll /etc/issue /app/xxx
-rw-r--r--. 1 root root 55 Jul 19 20:30 /app/xxx #时间戳没有改变
-rw-r--r--. 1 root root 55 Jul 15 20:56 /etc/issue

为了避免丢失源数据,可以使用-a进行备份,-p 保留权限,所有者和时间戳, --preserv=all 保留所有源数据

  • cp复制软连接文件
[root@centos7 ~]#ll /etc/grub2.cfg
lrwxrwxrwx. 1 root root 22 Jul 14 11:20 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[root@centos7 ~]#cp /etc/grub2.cfg /app
[root@centos7 ~]#ll /app
total 24
-rw-r--r--. 1 root root 5275 Jul 18 10:49 cmd.log
-rw-r--r--. 1 root root 4215 Jul 19 20:47 grub2.cfg# 复制的是软连接指向的源文件
drwxr-xr-x. 2 root root  230 Jul 19 18:52 music
-rwxr-xr-x. 1 root root  271 Jul 19 19:13 music.sh
-rw-r--r--. 1 root root  384 Jul 18 10:49 time.log

cp复制软连接文件时复制的是软连接指向的源文件,可以用-P选项,不跟随软连接源。

  • cp复制特殊文件
[root@centos6 app]#cp -a /dev/sda1 /app
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root    0 Jul 19 18:58 f1
srwxr-xr-x. 1 root root    0 Jul 19 19:02 f2
-rw-r--r--. 1 root root    0 Oct 20  2018 f3
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1 #属性相同
-rw-r--r--. 1 root root   55 Jul 19 20:30 xxx
[root@centos6 app]#ll /dev/sda1
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 /dev/sda1 #属性相同
[root@centos6 app]#cp -a /dev/zero /app
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root    0 Jul 19 18:58 f1
srwxr-xr-x. 1 root root    0 Jul 19 19:02 f2
-rw-r--r--. 1 root root    0 Oct 20  2018 f3
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1
-rw-r--r--. 1 root root   55 Jul 19 20:30 xxx
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 zero  #属性相同
[root@centos6 app]#ll /dev/zero
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 /dev/zero   #属性相同

cp命令在复制/dev/sda1和/dev/zero 这些特殊文件时,要保留属性,否则无法使用。

  • rename批量修改文件名
[root@centos6 app]#touch f{1,2,3}.txt
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root    0 Jul 19 18:58 f1
-rw-r--r--. 1 root root    0 Jul 19 21:06 f1.txt
srwxr-xr-x. 1 root root    0 Jul 19 19:02 f2
-rw-r--r--. 1 root root    0 Jul 19 21:06 f2.txt
-rw-r--r--. 1 root root    0 Oct 20  2018 f3
-rw-r--r--. 1 root root    0 Jul 19 21:06 f3.txt
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1
-rw-r--r--. 1 root root   55 Jul 19 20:30 xxx
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 zero
[root@centos6 app]#rename '.txt' '.txt.bak' *.txt    #将所有的以.txt结尾的文件,将.txt格式改为.txt.bak格式
[root@centos6 app]#ll
total 4
prw-r--r--. 1 root root    0 Jul 19 18:58 f1
-rw-r--r--. 1 root root    0 Jul 19 21:06 f1.txt.bak
srwxr-xr-x. 1 root root    0 Jul 19 19:02 f2
-rw-r--r--. 1 root root    0 Jul 19 21:06 f2.txt.bak
-rw-r--r--. 1 root root    0 Oct 20  2018 f3
-rw-r--r--. 1 root root    0 Jul 19 21:06 f3.txt.bak
brw-rw----. 1 root disk 8, 1 Jul 19 07:33 sda1
-rw-r--r--. 1 root root   55 Jul 19 20:30 xxx
crw-rw-rw-. 1 root root 1, 5 Jul 19 07:33 zero

6、rm命令

选项 -r 递归,删除目录 ;-f 不提示,直接删除;-i 提示

  • rm命令删除一个大文件技巧
    rm删除一个大文件时,如果文件正在使用,即使删除了这个大文件,磁盘空间也无法释放,为了让磁盘空间尽快释放,可以先用> 清空这个文件,再用rm删除这个文件,就可以马上释放磁盘空间。
    -如何安全的删除一个文件,可以使用如下命令
shred: f3: pass 1/6 (random)...
shred: f3: pass 2/6 (ffffff)...
shred: f3: pass 3/6 (random)...
shred: f3: pass 4/6 (000000)...
shred: f3: pass 5/6 (random)...
shred: f3: pass 6/6 (000000)...
shred: f3: removing
shred: f3: renamed to 00
shred: 00: renamed to 0
shred: f3: removed
  • rm删除点打头的文件
[root@centos6 app]#touch .a
[root@centos6 app]#ls -a
.  ..  .a  f1  f1.txt.bak  f2  f2.txt.bak  f3.txt.bak  sda1  xxx  zero
[root@centos6 app]#rm -f *   #不能删除点打头的文件
[root@centos6 app]#ls -a
.  ..  .a  #点打头的文件还在
[root@centos6 app]#rm -f .*  #执行这条命令才能删除点打头的文件
[root@centos6 app]#ls -a
.  ..            
  • rm删除目录
[root@centos6 app]#ls
f1
[root@centos6 app]#rm -rf /app #提示要把目录也删除,但/app是个分区挂载点,无法删除,只把目录里的内容删除
rm: cannot remove `/app': Device or resource busy
[root@centos6 app]#ls
[root@centos6 app]#mkdir f1
[root@centos6 app]#ls
f1
[root@centos6 app]#rm -rf /app/* #不提示删除/app
[root@centos6 app]#ls

总结:分区挂载点无法删除,要想删除一个目录下的文件而不删除目录的写法为rm -rf /D/* ,如果rm-rf /D 则会连目录也删除。

7、tree命令

[root@centos6 app]#tree
.
├── f1
├── f1.txt.bak
├── f2
├── f2.txt.bak
├── f3.txt.bak
├── sda1
├── xxx
└── zero

0 directories, 8 files
[root@centos6 app]#tree -d #只显示目录
.

0 directories
[root@centos6 app]#tree -L 1#只显示/app下的一级目录
.
├── f1
├── f1.txt.bak
├── f2
├── f2.txt.bak
├── f3.txt.bak
├── sda1
├── xxx
└── zero

0 directories, 8 files

8、软连接和硬链接、inode

ln 创建硬链接 ln-s 创建软连接
  • 软连接和硬链接的区别

本质:硬链接本质上是同一个文件,只是一个文件具有两个名字,彼此之间是平等的关系,节点号相同;
软连接本质上不是同一个文件,节点号不同,相当于windows里面的快捷方式。

区别:
  1. 硬链接不允许对目录创建,软连接可以,如果要想使目录的链接数增加,可以在当前目录内创建多个子目录来实现;
  2. 硬链接不允许跨分区,软链接可以;
  3. 创建硬链接后连接数加1,软链接链接数不增长;
  4. 删除硬链接后互相不影响,删除软连接源文件后,软连接就失效了;
  5. 硬链接文件的大小和属性完全相同,软链接大小、属性和源文件不同,软链接的大小由源文件的名的字符多少决定;
  6. 软链接的相对路径不是相对于当前工作目录,而是相对于软连接的当前工作目录,硬链接相对于当前工作目录和相对于硬链接的工作目录都可以。
[root@centos6 app]#ln -s f1 f2 #创建f1文件的软连接
[root@centos6 app]#ll
total 0
-rw-r--r--. 1 root root 0 Jul 19 22:06 f1
lrwxrwxrwx. 1 root root 2 Jul 19 22:06 f2 -> f1   #f2大小为f1的字符数

inode详解见http://www.cnblogs.com/adforce/p/3522433.html

9、file命令

file 命令用来判断文件类型,主要是查看文件头部的magic number来判断。

[root@centos6 app]#file /bin/cat   #查看文件类型
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
[root@centos6 app]#vim f2
/bin/cat
/bin/ls                                          
[root@centos6 app]#file -f f2   #批量查看文件类型
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
/bin/ls:  ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

10、面试题

如果磁盘空间没有用完,但提示空间不足是什么原因?
原因为节点号用完了,一个分区有固定的节点号,可以通过下面命令查看。

[root@centos6 app]#df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda2      3203072 133896 3069176    5% /
tmpfs           125514      5  125509    1% /dev/shm
/dev/sda3      2564096     12 2564084    1% /app
/dev/sda1        64000     38   63962    1% /boot
/dev/sr0             0      0       0     - /media/CentOS_6.9_Final

/boot分区的节点号总共有64000个,如果全部用光了,也会提示空间不足。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容