linux常用命令详解--目录和文件管理

更新时间:2023-08-14 18:31:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

目录和文件管理

1. ls、 pwd与cd命令的更多用法

2.统计目录或文件占用的磁盘空间du

3.创建目录和文件mkdir、touch、ln

4.设置命令别名alias

5.复制/删除/移动操作cp、rm、mv

1.ls、 pwd与cd命令的更多用法

1)利用 -R 选项递归显示目录内容: [root@svr5 ~]# ls -R /boot/ //递归查看/boot/目录

/boot/: //显示/boot文件夹下的内容 config-2.6.18-348.el5 initrd-2.6.32.61.img vmlinux-2.6.32.61.bz2 config-2.6.32.61 symvers-2.6.18-348.el5.gz vmlinuz-2.6.18-348.el5 grub System.map-2.6.18-348.el5 vmlinuz-2.6.32.61

initrd-2.6.18-348.el5.img System.map-2.6.32.61

/boot/grub: //显示/boot/下子目录grub/的内容 device.map grub.conf minix_stage1_5 stage2

e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5 fat_stage1_5 jfs_stage1_5 splash.xpm.gz vstafs_stage1_5

ffs_stage1_5 menu.lst stage1 xfs_stage1_5

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

2)利用 -l 选项以长格式显示对象的详细信息: [root@svr5 ~]# ls -l /boot/vmlinuz-2.6.18-348.el5 //查看内核文件 -rw-r--r-- 1 root root 2125660 2012-11-29 /boot/vmlinuz-2.6.18-348.el5

3)利用 -h 选项显示人性化(更易读)的容量单位,需要与 -l 选项一起使用: [root@svr5 ~]# ls -lh /boot/vmlinuz-2.6.18-348.el5

-rw-r--r-- 1 root root 2.1M 2012-11-29 /boot/vmlinuz-2.6.18-348.el5

4)利用 -a、-A 选项列出的内容包含隐藏的文件/目录(以.开头的)

使用 -a 时,两个特殊的文件夹 . 和 .. 也会显示出来,分别表示当前目录、父目录: [root@svr5 ~]# ls -a /root

.Desktop .gtkrc-1.2-gnome2 .redhat

...dmrc .ICEauthority .scim

anaconda-ks.cfg .eggcups install.log .tcshrc

.bash_history .gconf install.log.syslog .Trash

.bash_logout .gconfd .lesshst .viminfo

.bash_profile .gnome ls-man.txt .Xauthority

.bashrc .gnome2 .metacity .xsession-errors

.chewing .gnome2_private .nautilus

.cshrc .gstreamer-0.10 .recently-used.xbel

若改用 -A 选项,则 . 和 .. 不会显示出来,但其他的隐藏对象会列出来:

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

[root@svr5 ~]# ls -A /root

anaconda-ks.cfg .dmrc .gtkrc-1.2-gnome2 .recently-used.xbel

.bash_history .eggcups .ICEauthority .redhat

.bash_logout .gconf install.log .scim

.bash_profile .gconfd install.log.syslog .tcshrc

.bashrc .gnome .lesshst .Trash

.chewing .gnome2 ls-man.txt .viminfo

.cshrc .gnome2_private .metacity .Xauthority

Desktop .gstreamer-0.10 .nautilus .xsession-errors

5)利用 -d选项查看目录本身,而不是列出目录下的内容: [root@svr5 ~]# ls -ld / //查看根目录本身的详细信息 drwxr-xr-x 26 root root 4096 09-22 16:52 /

[root@svr5 ~]# ls -l / //不加-d时只能列出其下内容,无法看本身属性

总计 166

drwxr-xr-x 2 root root 4096 09-17 12:21 bin

drwxr-xr-x 3 root root 1024 09-26 09:53 boot

drwxr-xr-x 12 root root 4460 09-26 08:47 dev

drwxr-xr-x 100 root root 12288 09-24 16:44 etc

drwxr-xr-x 7 root root 4096 09-24 16:44 home

drwxr-xr-x 11 root root 4096 09-17 12:20 lib

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

drwxr-xr-x 8 root root 4096 09-21 00:05 lib64

drwx------ 2 root root 16384 07-10 17:12 lost+found

drwxr-xr-x 2 root root 4096 09-22 16:52 media

....

6)查看及切换工作目录

验证pwd和cd的基本用法: [root@svr5 ~]# pwd //查看当前所在的工作目录 /root

[root@svr5 ~]# cd /boot/grub/ //切换到/boot/grub文件夹 [root@svr5 grub]# pwd //确认切换结果

/boot/grub

[root@svr5 grub]# cd /usr/src/ //切换到/usr/src文件夹 [root@svr5 src]# pwd //确认切换结果

/usr/src

cd命令的特殊切换目标:

[root@svr5 src]# cd - //后退到前一个工作目录 /boot/grub

[root@svr5 grub]# pwd //确认切换结果

/boot/grub

[root@svr5 grub]# cd .. //切换到上一层目录(父目

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

录)

[root@svr5 boot]# pwd //确认切换结果

/boot

[root@svr5 boot]# cd //返回宿主目录(等同于cd ~) [root@svr5 ~]# pwd //确认切换结果

/root

[root@svr5 ~]# cd ~zengye //切换到用户zengye的宿主目录

[root@svr5 zengye]# pwd //确认切换结果

/home/zengye

[root@svr5 zengye]# cd ../../ //切换到父目录的父目录 [root@svr5 /]# pwd

/

[root@svr5 /]# cd root/Desktop/ //切换到当前目录下root子目录下

//的Desktop文件夹

[root@svr5 Desktop]# pwd //确认切换结果

/root/Desktop

[root@svr5 Desktop]# cd ~ //返回宿主目录

[root@svr5 ~]#

2. 统计目录或文件所占用的空间

ls -l命令看到的目录或文件大小,只是对象本身的容量,而不是占用空间。在Linux

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

文件系统中,分配存储空间的最小单位称为“块大小”,默认一般是4KB,即使这个文件只有1个字节,也至少需要分给它一个块来存放,因此其占用的空间也就最少是4KB。

例如,文件/etc/redhat-release的大小只有54字节,但实际占用了2个块。使用ls和du命令可做对比分析(-h选项表示人性化输出): [root@svr5 ~]# ls -lh /etc/redhat-release

-rw-r--r-- 1 root root 54 2012-11-13 /etc/redhat-release

[root@svr5 ~]# du -h /etc/redhat-release

8.0K /etc/redhat-release

当du命令统计的对象是目录时,默认会分别统计目录本身和其下的子目录,如果只希望看目标文件夹总共占用的空间,可使用 -s选项,如下所示: [root@svr5 ~]# du -h /boot/ //全部统计

236K /boot/grub

41M /boot/

[root@svr5 ~]# du -sh /boot/ //只统计对象总占用空间 41M /boot/

3.创建目录和文件mkdir、touch、ln

1)使用mkdir创建新文件夹

在/opt/目录下创建一个名为mytools的文件夹:

[root@svr5 ~]# mkdir /opt/mytools

[root@svr5 ~]# ls -ldh /opt/mytools/ //确认新建目录的属性

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

drwxr-xr-x 2 root root 4.0K 09-26 10:29 /opt/mytools/

在当前目录下创建2个文件夹,名称分别为dir1、dir2: [root@svr5 ~]# mkdir dir1 dir2

[root@svr5 ~]# ls -ldh dir*

drwxr-xr-x 2 root root 4.0K 09-26 10:31 dir1

drwxr-xr-x 2 root root 4.0K 09-26 10:31 dir2

递归创建多层目录时,需要使用 -p 选项,否则会报错: [root@svr5 ~]# mkdir /opt/public/study/doc //直接建多层目录失败 mkdir: 无法创建目录 “/opt/public/study/doc”: 没有那个文件或目录

[root@svr5 ~]# mkdir -p /opt/public/study/doc //加 -p 选项后执行成功 [root@svr5 ~]# ls -R /opt/public/ //确认新建的目录结构 /opt/public/:

study

/opt/public/study:

doc

/opt/public/study/doc:

[root@svr5 ~]#

2)使用touch命令创建空文件、更新文件时间

touch操作已存在的文件时,会更新此文件的访问时间/修改时间:

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

[root@svr5 ~]# ls -lh ls-man.txt

-rw-r--r-- 1 root root 7.4K 09-25 17:58 ls-man.txt

[root@svr5 ~]# touch ls-man.txt //更新文件的时间标记 [root@svr5 ~]# ls -lh ls-man.txt

-rw-r--r-- 1 root root 7.4K 09-26 10:36 ls-man.txt

指定不存在的文件作为touch的操作对象时,实际相当于创建新文件。此操作通常用于测试,新建文件的大小为0、内容为空: [root@svr5 ~]# touch file1.txt //创建一个文件

[root@svr5 ~]# touch file2.doc file3.jpg //同时创建多个文件 [root@svr5 ~]# ls -lh file*

-rw-r--r-- 1 root root 0 09-26 10:39 file1.txt

-rw-r--r-- 1 root root 0 09-26 10:39 file2.doc

-rw-r--r-- 1 root root 0 09-26 10:39 file3.jpg

3)使用ln创建快捷方式(符号链接)

为版本文件redhat-release建一个符号链接(-s选项),确认链接文件及使用效果: [root@svr5 ~]# ln -s /etc/redhat-release /etc/version

[root@svr5 ~]# ls -lh /etc/version //查看新建链接文件的属性

lrwxrwxrwx 1 root root 19 09-26 10:45 /etc/version -> /etc/redhat-release [root@svr5 ~]# cat /etc/version //访问链接文件与访问源文件等效 Red Hat Enterprise Linux Server release 5.9 (Tikanga)

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

为命令行的网卡配置程序system-config-network-tui建一个符号链接: [root@svr5 ~]# ln -s /usr/sbin/system-config-network-tui /sbin/netconfig [root@svr5 ~]# ls -lh /sbin/netconfig

lrwxrwxrwx 1 root root 35 09-26 10:49 /sbin/netconfig -> /usr/sbin/system-config-network-tui

[root@svr5 ~]

# netconfig

....

在tty终端下只要执行netconfig就可以打开网卡配置工具,如图-6所示,不用记忆原来冗长的配置程序名称。

图-6

使用ln还可以同时为多个文件创建符号链接,这种情况下目标要求是一个文件夹,创建好的链接文件与源文件同名。例如,以下操作可以为/bin/目录下的mkdir、touch命令创建符号链接,保存到/root/dir1/文件夹下:

[root@svr5 ~]# ln -s /bin/mkdir /bin/touch /root/dir1/

[root@svr5 ~]# ls -lh /root/dir1/

总计 0

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

lrwxrwxrwx 1 root root 10 09-26 11:01 mkdir -> /bin/mkdir

lrwxrwxrwx 1 root root 10 09-26 11:01 touch -> /bin/touch

4.设置命令别名alias

1)查看及验证当前已定义的命令别名: [root@svr5 ~]# alias

alias cp='cp -i'

alias l.='ls -d .* --color=tty' //--color指定ls命令的色彩模式 alias ll='ls -l --color=tty' //执行ll相当于ls -l

alias ls='ls --color=tty'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@svr5 ~]# ll install.log //验证别名使用效果

-rw-r--r-- 1 root root 33139 07-10 17:29 install.log

[root@svr5 ~]# ls -l install.log //直接执行原始命令,效果相同 -rw-r--r-- 1 root root 33139 07-10 17:29 install.log

2)定义一个名为lh的命令别名(实际执行“ls -lh”),验证使用效果:

[root@svr5 ~]# alias lh='ls -lh --color=tty'

[root@svr5 ~]# alias

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

alias cp='cp -i'

alias l.='ls -d .* --color=tty'

alias lh='ls -lh --color=tty' //执行lh相当于ls -h

alias ll='ls -l --color=tty'

alias ls='ls --color=tty'

....

[root@svr5 ~]# lh /boot/vmlinuz-2.6.18-348.el5 //验证别名使用效果

-rw-r--r-- 1 root root 2.1M 2012-11-29 /boot/vmlinuz-2.6.18-348.el5 [root@svr5 ~]# ls -lh /boot/vmlinuz-2.6.18-348.el5

-rw-r--r-- 1 root root 2.1M 2012-11-29 /boot/vmlinuz-2.6.18-348.el5

3)取消已定义的别名:

[root@svr5 ~]# unalias lh //取消名为lh的命令别名 [root@svr5 ~]# alias lh //再查看时已经找不到lh别名了 -bash: alias: lh: not found

[root@svr5 ~]# unalias -a //取消所有已定义的命令别名 [root@svr5 ~]# alias //再查看时内容为空

注意:alias、unalias操作只在当前环境有效,注销后重登录或者开启新的bash程序即可恢复默认的别名设置。

5.复制/删除/移动操作cp、mv、rm

1)使用cp命令复制文件/目录

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

将文件ls-man.txt复制为ls-man.txt.bak: [root@svr5 ~]# cp ls-man.txt ls-man.bak

[root@svr5 ~]# ls -lh ls-man.*

-rw-r--r-- 1 root root 7.4K 09-26 10:36 ls-man.txt

-rw-r--r-- 1 root root 7.4K 09-26 11:17 ls-man.txt.bak

将文件/etc/redhat-release复制到当前/root/目录下,并改名为rhversion: [root@svr5 ~]# cp /etc/redhat-release /root/rhversion

[root@svr5 ~]# cat /root/rhversion //验证复制后的新文件 Red Hat Enterprise Linux Server release 5.9 (Tikanga)

同时复制多个文件到/root/dir2/下:

[root@svr5 ~]# cp /etc/redhat-release install.log* /root/dir2/

[root@svr5 ~]# ls /root/dir2/

install.log install.log.syslog redhat-release

将文件夹/boot/grub/复制到当前目录下(需加-r选项,表示递归): [root@svr5 ~]# cp /boot/grub/ ./

cp: 略过目录 “/boot/grub/” //未加 -r 选项时会略过目录 [root@svr5 ~]# cp -r /boot/grub/ ./ //加 -r 选项后成功复制 [root@svr5 ~]# ls ./grub/ //确认复制后的结果 device.map grub.conf minix_stage1_5 stage2

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5

fat_stage1_5 jfs_stage1_5 splash.xpm.gz vstafs_stage1_5

ffs_stage1_5 menu.lst stage1 xfs_stage1_5

当cp的目标位置已经有同名的对象时,由于命令别名里有设置“cp -i”,所以默认会提示用户逐个确认(y确认、n放弃)。例如,可再次执行上述复制/boot/grub到当前目录的操作,确认复制效果: [root@svr5 ~]# alias cp //别名优先于外部命令 alias cp='cp -i'

[root@svr5 ~]# cp -r /boot/grub/ ./

cp:是否覆盖“./grub/xfs_stage1_5”? y //确认覆盖

cp:是否覆盖“./grub/e2fs_stage1_5”? n //放弃,不覆盖 cp:是否覆盖“./grub/fat_stage1_5”?

//逐个确认太繁琐,按Ctrl+c终止执行 若要在cp时强行覆盖,可使用 -f 选项。为了排除命令别名影响(-i 与 -f 互斥,且 -i 优先),可通过绝对路径/bin/ls调用cp命令,否则-f选项看不到效果:

[root@svr5 ~]# cp -rf /boot/grub/ ./ //加 -f 选项后仍出现提示 cp:是否覆盖“./grub/xfs_stage1_5”?

[root@svr5 ~]# /bin/cp -rf /boot/grub/ ./ //以绝对路径调用,强制覆盖成功 [root@svr5 ~]#

2)使用mv命令移动或改名文件/目录

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

将此前复制到当前目录下的grub文件夹改名为grub-test: [root@svr5 ~]# ls -ld grub*

drwxr-xr-x 2 root root 4096 09-26 11:33 grub //原名称

[root@svr5 ~]# mv grub grub-test //执行改名操作 [root@svr5 ~]# ls -ld grub*

drwxr-xr-x 2 root root 4096 09-26 11:33 grub-test //新名称 将grub-test目录下以stage开头的文件移动到/root/dir2/目录下:

[root@svr5 ~]# mv grub-test/stage* /root/dir2/ //执行移动操作 [root@svr5 ~]# ls grub-test/stage*

ls: grub-test/stage*: 没有那个文件或目录 //查看原文件已不存在 [root@svr5 ~]# ls /root/dir2/stage*

/root/dir2/stage1 /root/dir2/stage2 //确认移动后的文件

3)使用rm命令删除文件/目录

删除刚刚移动到/root/dir2/目录下的文件stage1:

[root@svr5 ~]# rm /root/dir2/stage1

rm:是否删除 一般文件 “/root/dir2/stage1”? n //默认会提示,输入n取消 [root@svr5 ~]# rm -f /root/dir2/stage1 //加 -f 选项强制删除 [root@svr5 ~]# ls /root/dir2/stage*

/root/dir2/stage2 //确认删除结果,已没有stage1

Linux 中基本的文件和目录管理命令,包括创建目录/文件、复制删除等操作

删除当前目录下的grub-test文件夹: [root@svr5 ~]# rm -f grub-test/

rm: 无法删除 “grub-test/”: 是一个目录 //未加 -r 选项时无法删除目录 [root@svr5 ~]# rm -rf grub-test/ //加 -r 选项后删除成功 [root@svr5 ~]# ls -ld grub* //确认删除结果

ls: grub*: 没有那个文件或目录

本文来源:https://www.bwwdw.com/article/dbtj.html

Top