Linux目录结构

Linux的目录结构为树状结构,最顶级的目录为根目录 /

操作文件或目录

ls #(英文全拼:list files): 列出目录及文件名
cd #(英文全拼:change directory):切换目录
pwd #(英文全拼:print work directory):显示目前的目录
mkdir #(英文全拼:make directory):创建一个新的目录
rmdir #(英文全拼:remove directory):删除一个空的目录
cp #(英文全拼:copy file): 复制文件或目录
rm #(英文全拼:remove): 删除文件或目录
mv #(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

查看目录

查看当前目录下,有哪些文件和文件夹

ls

选项与参数:

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

切换目录

cd /home #如切换到home文件夹下
cd ~ #进入自己的家目录,亦即是 /root 这个目录
cd .. # 返回上一级目录

查看当前目录位置

pwd

选项与参数:

  • -P :显示出确实的路径,而非使用连结 link 路径(即非快捷方式位置)。

创建目录

下边演示创建一个名为我的学习笔记的文件夹(也叫目录)

mkdir 我的学习笔记

选项与参数:

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

拷贝文件

此命令可以拷贝文件和目录

cp 来源档(source) 目标档(destination)

选项与参数:

  • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !

删除文件

此命令可以删除文件或目录

rm  文件或目录

选项与参数:

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

删除目录

rmdir 我的学习笔记

选项与参数:

  • -p :从该目录起,一次删除多级空目录

移动文件

此命令可以移动文件与目录,或修改名称

mv 目标

选项与参数:

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

文件内容查看

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

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

普通查看

cat、或tac命令都可以查看,前者由第一行开始显示文件内容,后者倒着显示(可以看出 tac 是 cat 倒着写)

cat 文件

选项与参数:

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

显示行号

nl 文件

选项与参数:

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

分页查看

如上的cat查看,是一次性全部显示完,如果文件过长,看起来就费劲了
使用less命令,既可分页查看,按下空格键进行翻页

less 文件

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

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

more和less的命令基本相同,但是功能少些,所以记着一个就可以。

显示前/后几行

head取出文件前面几行, tail则是取出后几行

head -3 abc.js #显示文件前3行内容
tail -3 abc.js #显示文件后3行内容

选项与参数:

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

文件链接

用到的时候再来学也行,没有使用场景可能不太好理解

linux系统下,有两种最基本的文件链接方式:硬链接和符号链接(也叫做软连接)

删除原始文件后,硬连接文件不受影响,但是软连接文件无效

软连接

软链接文件有类似于 Windows 的快捷方式,软连接本身特殊的文件(文本文件)。内部记录了包含的有另一文件的位置信息。

touch file1          #创建一个测试文件file1
ln -s file1 file2       #创建file1的一个软连接文件file2

执行ls -li 可以看出两个文件的inode 节点不相同

总用量 0
394681 -rw-r--r-- 1 root root 0 5月   2 22:06 file1
395727 lrwxrwxrwx 1 root root 5 5月   2 22:07 file2 -> file1

硬连接

硬连接指通过索引节点来进行连接,删除其中任何一个都不会影响另外一个的访问。只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。

touch file1
ln file1 file2
ls -li
#--- 打印输出如下 ---
总用量 0
394681 -rw-r--r-- 2 root root 0 5月   2 22:22 file1
394681 -rw-r--r-- 2 root root 0 5月   2 22:22 file2