<2> 浏览文件系统

linux系统上通常有几种shell可以使用。所有linux发行版默认的shell都是base shell。本专栏以bash shell为例,学习其内部命令。

<一些小知识>

1. /etc/passwd 文件指定了登录用户使用的shell程序,我们可以输入以下命令按回车,来查看文件的内容。(cat命令可以打印文件的内容)。

cat /etc/passwd 

可以看到,我们登录的work用户,默认是bash shell.

<2> 浏览文件系统

2. 在登录后,我们可以看到shell的提示符($),表明shell在等待输入。

<2> 浏览文件系统

可以使用man命令,查找存储在linux系统上的手册。

<2> 浏览文件系统

回车得到结果,可以看到命令的解释说明。

<2> 浏览文件系统

<文件系统> 

windowx会将硬盘分区,在逻辑上分为几个盘符(也就是我们平时所说的C盘、D盘)。这些C、D盘在物理结构上相互独立,都是从硬盘中划分的某块区域。这些物理结构独立的C、D盘在逻辑结构上也相互独立,是一种并行的结构,因为每个盘有自己的目录结构。

而linux只有一个根目录("/"),所有文件都存储在以根目录为基础的目录结构中。

linux机子上安装的第一块硬盘称为根驱动器,根目录等都在这块硬盘上。此外,linux会设置一些“挂载点”,挂载点是一个特殊的目录,该目录仍处在根目录下,但是该目录下的所有数据都"挂载(存储)"在另一个硬盘中。各硬盘承担了不同目录的存储,因此在逻辑结构上并不是并行的

① pwd : 查看当前目录

linux登录后,会位于主目录("~" 代表主目录)中。输入pwd,回车,查看当前所处位置的绝对路径

<2> 浏览文件系统

② cd : 将shell回话切换到另一个目录

cd destination

destination为将要切换到的目录,可以使用绝对路径或相对路径。

绝对路径指目录的全名,即从根目录 "/" 开始的目录名。

<2> 浏览文件系统

相对路径指用户基于当前位置的路径。如果一直使用绝对路径太过冗长(尤其是处于多级目录下的时候),使用相对目录就会简单很多(实际的工作开发中确实也是这样)。

<2> 浏览文件系统

注:

单点符(.),表示当前目录;

双点符(..),表示当前目录的上级目录。

tips:在输入时,使用制表键(tab)进行补全是一项神级方便的操作。比如在/home路径下,输入w按制表键,会查询该路径下所有w开头的文件/目录,如果只有一个work,则按一下就能把work补充完整;如果有多个,则按两下会展示所有的符合项,然后我们可以继续输入知道可以唯一识别补全为止。对于绝对/相对路径,或者对一些命令如python等,都可以进行补全。

使用pwd和cd命令,我们已经可以在各目录间"游荡"并对自己进行定位了。ls命令则是可以让我们看到当前目录下都有什么。

③ ls : 显示当前目录下的文件和目录

<2> 浏览文件系统

 ls的输出按列对字母排序(部分文件由于隐私原因打了码,大家凑合看...)。其中蓝色代表目录,白色代表文件,这个可以在LS_COLORS中设置(如果你使用的终端支持彩色功能)。

ls命令加上一些参数,能得到更详细的显示。如上述功能,可使用-F参数(区分大小写),则会在目录后加上 "/",在可执行文件后加上 "*"。

<2> 浏览文件系统

ls命令默认只显示未隐藏文件,而linux常用隐藏文件来保存配置信息。隐藏文件的文件名通常以点号开头,使用 -a 参数,可以将隐藏文件也显示出来。

注:在主目录(~)下,ls -a 会显示出三个文件 .bash_history .bash_logout .bashrc,这三个文件是该登录用户bash shell环境是用的隐藏文件。

ls -R 可以递归显示目录下包含子目录中的所有文件。

ls -l 可以显示更详细的信息。

<2> 浏览文件系统

各列含义为:

  • 文件类型:目录(d),文件(-),字符型文件(c),块设备(b);
  • 文件权限:r(可读)w(可写)x(可执行),有三组rwx,从左往右分别是所属主、组、其他用户的权限;
  • 硬链接总数;
  • 文件属主用户名;
  • 文件属组组名;
  • 文件大小(单位字节);
  • 文件最新一次修改时间;
  • 文件/目录名。

注:可以使用多个参数,可以分开也可以连写,如 ls -a -l 或 ls -al 都可以;

ls命令支持使用文本匹配的方式,过滤显示的字样,如

<2> 浏览文件系统

 

④touch: 创建文件 & mkdir: 创建目录

<2> 浏览文件系统

mkdir -p 可以一起创建目录和子目录

⑤cp : 复制文件/目录

cp source destination

当souce和destination同是文件名时,会产生一个新的文件。当destination是目录时,会在该目录产生复制一个同名的文件。

<2> 浏览文件系统

cp -R source_dir destination_dir

加上-R参数可以让你递归复制整个目录及目录下的文件到新目录下,如果没有则会创建该目录。

注:cp命令产生的文件会直接覆盖重名文件,使用cp命令最好加上 -i 参数,询问是否覆盖。

⑥mv : 重命名文件

mv命令可以将文件或目录移动到某位置。之所以叫重命名,是因为mv操作只改变了文件/目录的位置和名字,并不会改变文件/目录的inode和修改时间。

注:最好加上 -i 参数。

⑦rm / rmdir : 删除文件/目录

rm 文件名
rm -r 目录名
rm -rf 目录名
rmdir 空目录名

rm命令可以删除文件;rmdir命令可以删除空目录,非空目录无法删除。

如果要删除非空目录,可以加上 -r 参数,使命令可以向下进入目录中递归删除;如果要忽略文件删除过程中的询问,可以使用 -f 参数。进行删除前,建议使用tree命令,查看下目录下都有那些文件,确定无误后在进行操作:

<2> 浏览文件系统

工作中最省事也最危险的就是rm -rf ,大家一定要慎用;还有一些恶搞的图片(如下图),千万别尝试,试试就逝世!

<2> 浏览文件系统

⑧ file : 识别文件类型

file命令可以识别目录、文件类型、编码、甚至链接和可执行程序的编译所面向的平台等,在处理数据时十分有用,也可以避免很多错误发生(如打开某二进制文件,导致终端卡死)。

<2> 浏览文件系统

 

⑨ cat & head & tail : 查看文件

cat file
head -5 file
tail -10 file

cat命令可以输出整个文件,cat -n 参数可以带行号显示。

cat命令若要输出一个大文件,造成的结果就是被文件的内容疯狂刷屏。解决这个问题可以使用more 或 less:

cat file | more
cat file | less

"|"代表管道,它将前一个命令的输出(standard output)传输到下一个命令(standard input),管道详细的介绍之后的章节会讲到。这里我们只需知道它将cat命令的输出作为more命令的输入进行传递。

more或less在显示整页后停止,若要看后面的内容可以回车或者空格往下翻,或者按q退出。其中less命令与more命令作用相同,只是多了一些比如往上翻的功能。

<2> 浏览文件系统

 

本篇简单介绍了linux文件系统,对文件/目录的基本操作,其中有一些自己的理解,如果有问题欢迎留言一起探讨!

上一篇:学校Linux课的笔记


下一篇:Shell中的<,<<,>,>>介绍