从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$
(一)文件目录操作
ls:列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
touch:创建一个文件
cp:复制文件或目录
rm:移除文件或目录
mv:移动文件与目录、文件重命名
可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
1、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 :长数据串列出,包含文件的属性与权限等等数据;(常用)
2、cd
切换目录,cd是Change Directory的缩写,这是用来变换工作目录的命令。cd绝对路径或相对路径。
lee@lee-virtual-machine:/$ cd home
lee@lee-virtual-machine:/home$ cd /usr
lee@lee-virtual-machine:/usr$
3、 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则打印软连接的目标路径。
4、 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 12月 5 20:50 new
选项与参数:
①、-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
②、-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!
5、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 :**连同上一级『空的』目录也一起删除
6、touch
创建文件。
touch 文件名
示例:
touch abc.txt
7、 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 !
8、 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 :递回删除啊!最常用在目录的删除了!这是非常危险的选项!
9、 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。
1、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 :列出一些看不出来的特殊字符
2、 tac
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
lee@lee-virtual-machine:~/文档/new$ tac abc.txt
line3 text
line2 text
line1 text
3、nl
显示行号.。
nl [-bnw] 文件
示例:
lee@lee-virtual-machine:~/文档/new$ nl abc.txt
1line1 text
2line2 text
3line3 text
选项与参数:
①、-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
②、-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
③、-w :行号栏位的占用的位数。
4、 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 :代表往回翻页,不过这动作只对文件有用,对管线无用。
5、 less
一页一页翻动。
less 文件
示例:
lee@lee-virtual-machine:/var/lib/apt$ less extended_states
Package: libjcat1
Architecture: amd64
....(中间省略)....
:
less运行时可以输入的命令有:
①、空白键 :向下翻动一页;
②、[pagedown]:向下翻动一页;
③、[pageup] :向上翻动一页;
④、/字串 :向下搜寻『字串』的功能;
⑤、?字串 :向上搜寻『字串』的功能;
⑥、n :重复前一个搜寻 (与 / 或 ? 有关!)
⑥、N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
⑦、q :离开 less 这个程序;
6、 head
输出前几行内容。
head [-n number] 文件
示例:
lee@lee-virtual-machine:/var/lib/apt$ head -3 extended_states
Package: distro-info
Architecture: amd64
Auto-Installed: 1
选项与参数:
①、-n :后面接数字,代表显示几行的意思
7、 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的侦测