文件和目录列表
- ls -F 区分文件和目录,目录名称后面带了(/) ,会在可执行文件后面带上(*),类似.publish.sh的文件。
- ls -a 显示所有文件目录,包括隐藏。
- ls -R 递归选项。列出了当前目录下包含的子目录中的文件。
ls -F -R ----> ls -FR
- ls -l 显示附加信息。
显示下述信息:
- 文件类型:(d)开头表示目录,(-)开头表示文件,字符型文件(c),块设备(b)
- 文件权限:r:read w:write x:execute 可执行
- 文件的硬链接总数
- 文件属主的用户名 zhanglinyu
- 文件属组的组名 stafff
- 文件大小 以字节为单位
- 文件的上次修改时间
- 文件名或者目录名
- man ls
能看到可用来修改ls命令输出的参数。 对于其他的一些命令同样可以查看,不只是ls。 - 过滤输出列表
ls src
ls -l src //指定文件名作为过滤器
//如果不知道确切的文件名,在过滤器中使用星号和问号被称为扩展匹配,指的是通配符进行模式匹配过程。
ls -l sr*
ls -l s?
//(?)代表一个字符
//(*)代表0个或者多个字符
ls -l rout[er] //匹配出 routr/route
//中括号表示一个字符位置并给出多个可能的选择。也可以指定字符范围 [a-i]/ [!a]
处理文件
- 创建文件
touch test_one
- 文件复制
cp 源对象 目标对象
cp test_one test_two
cp -i test_one test_two // -i 如果后者已经存在会提示是否覆盖
man cp可以查看cp命令的所有可用参数
cp -R 可以用它在一条命令中递归地复制整个目录的内容
- 制表键自动补全 mac上的tab键同等功能。
- 链接文件
链接文件是Linux文件系统的一个优势,如果需要在系统上维护同一份文件的两个或者多个副本,除了保存多份单独的物理副本之外,还可以采用保存一份物理副本和多个虚拟副本的方法。
这种虚拟的副本就称为链接。链接是目录中指向真实位置的占位符。在Linux中有两种不同的文件链接:
- 符号链接
符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中的某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此内容并不相同。要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用ln命令以及-s选项来创建符号链接。
ln -s test_one s1_test_one
注意:符号链接的文件大小与源文件大小不一样。因为链接文件只是指向源文件而已。内容并不同。
另一种证明链接文件是独立文件的方法是查看inode编号。文件或者目录的inode编号是用于唯一标识的数字,这个数字由内核分配给文件系统中每一个对象。查看inode编号,可以使用ls的-i参数。
ls -i *test_one //
- 硬链接
硬件链接会创建独立的虚拟文件。其中包含了源文件的信息和位置。但它们从根本上而已是同一个文件。引用硬件链接文件等同于引用了源文件。要为一个文件创建硬件链接,原始文件必须事先存在。只不过使用ln的时候不需要加额外的参数。
ln test_one s2_test_one
可以看见 硬件链接的inode编码和源文件的一样 所以其实是通一个文件。
说明:只能对处于同一个存储媒体的文件创建硬链接。要想在不同存储媒体的文件之间的文件之间创建链接,只能使用符号链接。
- 重命名文件(移动)
在Linux中,重命名文件称为移动,mv命令可以将文件和目录移动到另外一个位置或重新命名。
mv 重命名
mv test_onea test_oneb //重命名
只影响文件名,其他都不变。
mv 可以用来移动文件:
创建test文件,将test_oneb移动下面
mv test_oneb ./test/ 移动到当前目录下的test文件中
mv test_oneb ./test/test_oneb_1 //移动并修改名称 改变的只是位置和名称
如上图 文件信息也不会改变
- 删除文件
rm -i test_one //-i参数就是一个提示操作 bash shell没有回收站或者垃圾箱,一旦删除,就无法再找回。
rm -f test_one //强制删除文件
rm -rf test //递归强制删除目录
处理目录
在Linux中,有些命令(比如cp命令)对文件和目录都有效,而有些只对目录有效。
- 创建目录 mkdir
mkdir New_dir
ls -ld New_dir // 查看目录用 -ld
目录长列表是以d开头,表示不是一个文件而是一个目录
批量创建目录需要加参数-p
mkdir -p New_dir/Sub_dir/Under_dir
ls -R New_dir //查看整个目录
- 删除目录 rmdir
mkdir one_file
rmdir one_file //如果one_file目录下面没有东西则可以直接删除成功。如果有东西则需要先将目录下面的文件删除,然后才能使用rmdir命令。
rmdir 没有 -i选项来询问是否删除目录。还有一种方式删除非空目录。使用rm,删除其中的文件,再删除目录本身。
rm -r New_dir 直接删除
rm -ri New_dir 询问删除
注意:对于rm命令而言,-r和-R参数的效果是一样的,-R参数同样可以递归删除目录中的文件。shell命令很少会就相同功能采用不同大小写的参数。
查看文件内容
- 查看文件类型
当我们在test文件里面写入 '1222ww22',执行
file test : ASCII text, with no line terminators
当我们在test文件里面写入 '我的',执行
file test : UTF-8 Unicode text, with no line terminators
- 查看整个文件,在Linux上有3个不同的命令可以完成这个任务
cat test.txt //会显示里面的内容
cat -n test.txt //会把行号也带上
cat -b test.txt//只给有文本
- more 命令
cat 命令的主要缺陷是:一旦运行,你就无法控制后面的操作。为了解决这个问题,才有了more命令。more命令会显示文本文件的内容,但会在显示每页的数据之后停下来。
简单来说就是cat会将内容一次性显示出来,而more会进行分页。
- less命令
more 命令只支持文本文件中的基本移动,如果要更多高级的功能,可以试试less命令。具体执行man less看看相关。 - 查看部分文件
tail test.txt //默认显示最后10行
tail -n 2 test.txt //使用-n修改 显示最后两行
tail -2 text.txt//同上
-f 参数是tail命令一个突出的特征,它允许你在其他进程使用该文件的时候查看文件的内容,tail命令会保持活跃状态,并不断显示添加到文件中的内容,这是实时监控系统日志的绝妙方式
- head 显示前面
head test.txt //默认显示前面10行
head -n 2 test.txt //使用-n修改 显示前面两行
head -2 text.txt//同上
文件的开头部分一般不会改的,所以不支持-f 特性。