Linux目录结构及文件基本操作

时间:2020-11-27 12:23:37
Linux目录结构及文件基本操作
一,Linux目录结构
1.FHS标准:
$ tree /
如果提示"command not found",就先安装:
# 因为我们的环境的原因,每次新启动实验会清除系统恢复初始状态,所以需要手动更新软件包索引,以便我们安装时能找到相应软件包的源
sudo apt-get update
sudo apt-get install tree


2:路径
如果你想进入某个具体的目录或者想获得某个目录的文件(目录本身也是文件)那就得用路径来找到了。
使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(**注意,还记得我们上一节介绍过的,以 . 开头的
文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用
户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
命令如下:
进入上一级的目录:
$ cd ..
进入你的"home"目录:
$cd ~
使用pwd获取当前路径:
$pwd


绝对路径:
关于绝对路径,简单地说就是以根"/"目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 
目录中的 local 目录中的 bin 目录。


相对路径:
相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如: usr/local/bin 
(这里假设你当前目录为根目录)。你可能注意到,我们表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因
为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);如果是当前目录的上一级目录,则
需要使用 .. ,比如你当前目录为“home”目录,根目录就应该表示为 ../../ ,表示上一级目录("home"目录)的上一级目录("/"目录)。


下面我们以你的"home"目录为起点,分别以绝对路径和相对路径的方式进入 /usr/local/bin 目录:
# 绝对路径
$ cd /usr/local/bin
# 相对路径
$ cd ../../usr/local/bin


例子:
$pwd
$cd /usr/local/bin
$pwd //获取当前位置
$cd ~
$cd ../../usr/local/bin
$pwd


二,Linux文件的基本操作
2-1.新建
新建空白文件
使用touch命令建立空白文件,首先需要cd ~切换成用户的/home/shiyanlou目录:
$ cd ~
$ touch test


2-2.新建目录
使用mkdir命令可以创建一个空目录,也可同时指定目录的权限属性:
$mkdir mydir


使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个
多级目录(这在有时候安装软件,配置安装路径时非常有用):
$ mkdir -p father/son/grandson
$ cd father/son/grandson
$ pwd


2-3.复制文件
使用cp(copy)命令复制一个文件或目录到指定目录。将之前创建的"test"文件复制到
"/home/shiyanlou/father/son/grandson"目录中:
$cp test father/son/grandson


2-4.复制目录
使用cp命令,要成功复制目录需要加上-r或者-R参数,表示递归复制。
$ cp -r father family


2-5.删除文件
使用rm命令,删除一个文件或目录:
$rm test
有时候你会遇到想要删除一些为只读的文件,直接用rm删除会出现提示,这样的话直接使用-f强制删除
$touch test
$chmod 444 test //配置为只读文件
$ll test  //查看文件属性
$rm test //这样使用会出现提示就需要输入Y
OR
$rm -f test//直接省略提示,直接删除
$ll -l//查看祝文件夹


2-6.移动文件
使用mv命令,移动文件(剪切文件).将文件"file1"移动到"Documents"目录mv 源目录文件 目的目录:
$touch file1 //新建一个文件
$ls file1
$mv file1 Documents //移动文件file1到Documents中
$cd Documents
$ls


2-7.重命名文件:
将file1重命名为myfile mv 旧的文件名 新的文件名
$ mv file1 myfile


2-8.批量重命名
要实现批量重命名,mv 命令就有点力不从心了,我们可以使用一个看起来更专业的命令rename来实现。
不过它是要用 perl 正则表达式来作为参数,关于正则表达式我们要在后面才会介绍到,这里只做演示,
你只要记得这个rename命令可以批量重命名就好了,以后再重新学习也不会有任何问题,毕竟你已经掌
握了一个更常用的mv命令。


# 现实用通配符批量创建 5 个文件
$ touch file{1..5}.txt


# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件
$ rename 's/\.txt/\.c/' *.txt


# 批量将这 5 个文件,文件名改为大写
$ rename 'y/a-z/A-Z/' *.c


2-9.查看文件
使用cat,tac和nl命令查看文件


标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),
默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向
到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出
到标准输出文件,而将错误信息送到标准错误文件中。


2-10.查看文件类型
我们通常使用file命令可以查看文件的类型:
$ file /bin/ls


作业:
你是不是觉得在我们的环境中学习感觉轻松愉快毫无压力呢,所以偶尔偷偷懒也是没有问题的。要真是这样可
不太好啊,要学会给自己点压力,稍微严格点要求自己才行。你又或许会想要是有人能监督就好了,这样你能
学得更快。好吧今天就教你怎么召唤一双眼睛出来监督你:
$ xeyes
$ nohup xeyes &