Linux操作系统学习——文件系统之文件与目录管理

从Linux目录结构我们知道,Linux目录是一个树状结构,从/根目录开始,不同的目录挂载在/根目录之下,通过解除挂载移除相应的文件系统。文件与目录管理主要是通过命令行来进行操作,因此我们必须了解文件系统的路径。

路径分为绝对路径和相对路径是什么,绝对路径是从/根目录开始到目标目录的完整路径,例如/usr/lib/systemd/system就是一个绝对路径;相对路径是相对于当前位置所在的路径,例如终端命令行当前所在/usr/lib/systemd目录,则system目录的相对地址就是./system,而跟systemd同一级的init目录相对路径是…/init

进入子目录
lee@lee-virtual-machine:/usr/lib/systemd$ cd ./system
lee@lee-virtual-machine:/usr/lib/systemd/system$ 

进入同级目录
lee@lee-virtual-machine:~/桌面$ cd /usr/lib/systemd
lee@lee-virtual-machine:/usr/lib/systemd$ cd ../init
lee@lee-virtual-machine:/usr/lib/init$ 

这跟我们编写html网页的绝对路径和相对路径用法是一样的。

(一)文件目录操作

  • ls:列出目录
  • cd:切换目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • touch:创建一个文件
  • cp:复制文件或目录
  • rm:移除文件或目录
  • mv:移动文件与目录、文件重命名

你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

ls

列出目录列表,List列表的缩写,是Linux最常用的命令之一。

#列出当前目录下的子目录
lee@lee-virtual-machine:/$ ls
#列出当前目录下的子目录,以列表形式
lee@lee-virtual-machine:/$ ls -l
#列出当前目录下的所有目录,以列表形式
lee@lee-virtual-machine:/$ ls -al
#列出/usr目录下的子目录
lee@lee-virtual-machine:/$ ls usr

选项与参数:

  • -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

cd

切换目录,cd是Change Directory的缩写,这是用来变换工作目录的命令。cd绝对路径或相对路径。

lee@lee-virtual-machine:/$ cd home
lee@lee-virtual-machine:/home$ cd /usr
lee@lee-virtual-machine:/usr$ 

pwd

显示当前所在目录路径,pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。

lee@lee-virtual-machine:/lib$ pwd
/lib
lee@lee-virtual-machine:/lib$ pwd -P
/usr/lib

参数:

-P:列出确切的路径,例如/lib目录是软连接到/usr/lib的目录,如果不加-P参数则打印软连接的路径,加-P则打印软连接的目标路径。

mkdir

创建目录,mkdir是make directory的缩写。

mkdir [-mp] 目录名称

示例:

#创建子目录
lee@lee-virtual-machine:~/文档$ mkdir abc

#-p逐个创建,分别创建a,子目录b,孙目录c
lee@lee-virtual-machine:~/文档$ mkdir -p a/b/c

#-m直接赋权限777,如果没加-m 777权限,则系统默认权限
lee@lee-virtual-machine:~/文档$ mkdir -m 777 new

#查看权限
drwxrwxrwx 2 lee lee 4096 125 20:50 new

选项与参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
  • -p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!

rmdir

删除空目录。rmdir只能删除空的目录,如果非空目录请使用rm命令。

rmdir [-p] 目录名称

示例:

#删除abc目录,abc为空所以不报错
lee@lee-virtual-machine:~/文档$ rmdir abc

#删除c目录
lee@lee-virtual-machine:~/文档$ rmdir a/b/c

#删除a及子目录b,使用了-p参数,因此整个路径包含的目录全部删除
lee@lee-virtual-machine:~/文档$ rmdir -p a/b

选项与参数:

  • **-p :**连同上一级『空的』目录也一起删除

touch

创建文件。

touch 文件名

示例:

touch abc.txt

cp

拷贝文件或目录。cp是copy的缩写。

cp [-adfilprsu] 来源档(source) 目标档(destination)

示例:

lee@lee-virtual-machine:~/文档$ cp new.txt new
lee@lee-virtual-machine:~/文档$ cp -i new.txt new
cp:是否覆盖'new/new.txt'? y 

选项与参数:

  • -a :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)

  • -d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

  • -f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

  • -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

  • -l :进行硬式连结(hard link)的连结档创建,而非复制文件本身;

  • -p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);

  • -r :递回持续复制,用於目录的复制行为;(常用)

  • -s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;

  • -u :若 destination 比 source 旧才升级 destination !

rm

删除文件或目录。rm是remove的缩写,用于删除文件和目录,rmdir只能删除空目录,rm可以删除任意目录和文件。

rm [-fir] 文件或目录

示例:

#删除文件
lee@lee-virtual-machine:~/文档$ rm new.txt
#删除目录,需加-r参数
lee@lee-virtual-machine:~/文档$ rm -r new

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!

mv

移动文件或目录。mv是move的缩写。

mv [-fiu] source destination

示例:

#移动abc.txt到new目录
lee@lee-virtual-machine:~/文档$ mv abc.txt new

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

(二)文件内容查看

Linux系统中使用以下命令来查看文件的内容:

  • cat:由第一行开始显示文件内容
  • tac:从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl:显示的时候,顺道输出行号!
  • more:一页一页的显示文件内容
  • less:与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head:只看头几行
  • tail:只看尾巴几行

你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

cat

由第一行开始显示文件内容。

cat [-AbEnTv]

示例:

lee@lee-virtual-machine:~/文档/new$ cat abc.txt
line1 text
line2 text
line3 text

选项与参数:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

tac

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

lee@lee-virtual-machine:~/文档/new$ tac abc.txt
line3 text
line2 text
line1 text

nl

显示行号.。

nl [-bnw] 文件

示例:

lee@lee-virtual-machine:~/文档/new$ nl abc.txt
     1	line1 text
     2	line2 text
     3	line3 text

选项与参数:

  • -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:
    -n ln :行号在萤幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

more

一页一页翻动。

more 文件

示例:

lee@lee-virtual-machine:/var/lib/apt$ more extended_states
Package: distro-info
Architecture: amd64
Auto-Installed: 1
....(中间省略)....
--更多--(0%)

在 more 这个程序的运行过程中,你有几个按键可以按的:

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

less

一页一页翻动。

less 文件

示例:

lee@lee-virtual-machine:/var/lib/apt$ less extended_states

Package: libjcat1
Architecture: amd64
....(中间省略)....
:

less运行时可以输入的命令有:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序;

head

输出前几行内容。

head [-n number] 文件

示例:

lee@lee-virtual-machine:/var/lib/apt$ head -3 extended_states
Package: distro-info
Architecture: amd64
Auto-Installed: 1

选项与参数:

  • -n :后面接数字,代表显示几行的意思

tail

取出文件后面几行

tail [-n number] 文件

示例:

lee@lee-virtual-machine:/var/lib/apt$ tail -3 extended_states
Architecture: amd64
Auto-Installed: 1

选项与参数:

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值