Bash编程014——文件管理
Unix/Linux系统中将几乎一切都是为文件,所有操作都离不开文件,因而学习管理、操作文件是极为重要的。注:目录也是文件的一种,它记录着当前目录下的文件项,但并不实际保存文件的数据。
一般我们打开终端,所处的目录默认为当前登录用户的家目录(或者叫主目录, home directory)。对于一般的用户$HOME环境变量记录了家目录的所在,一般位于/home/username,root用户的家目录是/root。shell中也使用~符号表示家目录的所在。
14.0 查看当前目录
使用shell内置命令pwd(print working directory)可以查看当前目录。
# 示例,直接打开终端
pwd
# 输出:/home/ruo
14.1 更改目录
我们可以使用shell的内置命令cd(chang directory)来改变当前所处的目录。
命令格式:cd [dir]
dir分为相对路径和绝对路径,Linux中文件系统拥有一个根目录即/。以/开头的路径名即为绝对路径名,不以/开头的路径名即为相对路径名,一般相对路径是指相对当前的目录。另外,Linux中拥有两个特殊的符号:.和..。.代表当前目录,..代表当前目录的父目录。(根目录的父目录为自身)。
若cd后不加目录名,则默认切换到当前用户的家目录。
# 示例
cd /
pwd
# 输出: /
cd
pwd
# 输出:/home/ruo
cd /
cd ~
pwd
# 输出:/home/ruo
cd命令依赖于CDPATH变量,CDPATH定义了搜索目录的路径,cd命令会先在CDPATH定义的路径下寻找dir,若找不到,则在当前目录下寻找,若找不到,给出信息不存在目录。CDPATH中可以有多个搜索目录,以:间隔。
注:若是绝对路径则会直接切换到对应的目录。
# 示例
echo $CDPATH
# 输出为空,说明该变量未定义
CDPATH=/
cd ~
pwd
# 输出如下:
bin Desktop Downloads Music ps.txt snap Templates Videos
Codes Documents fault.c Pictures Public t Test
cd bin
pwd
# 输出为:/bin
14.2 列出当前目录下的文件
使用ls命令(来自于coreutils软件)可以查看。注:文件包括子目录。
使用格式:ls [options] [FILE]
列出FILE的信息,若未给出则默认为当前目录。
# 示例
cd ~
ls
# 输出如下
bin Desktop Downloads Music ps.txt snap Templates Videos
Codes Documents fault.c Pictures Public t Test
ls /
# 输出如下
bin etc lib mnt run sys vmlinuz
boot home lib64 opt sbin tmp vmlinuz.old
cdrom initrd.img lost+found proc snap usr
dev initrd.img.old media root srv var
注:Linux一般接受三种格式的选项参数,-A,--option,option。
常用选项介绍:
- -a --all :列出所有文件,包括以.开头的文件。
- -A --almost-all :列出所有文件,除了.和..。
- -l:使用长格式列出。
- -S:按大小排序,大的在前。
- -t:根据最后修改时间排序,新的在前。
14.3 创建文件
使用touch命令创建文件。
使用格式:touch [option] FILE
其实这个命令是用于更改文件(包括目录)的时间戳的,当文件不存在时会创建一个空白文件。若是存在的文件或目录,则会更改它的最后修改时间为当前时间。
使用stat filename可以查看文件的信息信息。
stat ~/Desktop
# 输出如下:
文件:'/home/ruo/Desktop'
大小:4096 块:8 IO 块:4096 目录
设备:802h/2050d Inode:5505264 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 1000/ ruo) Gid:( 1000/ ruo)
最近访问:2019-01-06 19:45:57.934756875 +0800
最近更改:2019-01-06 19:45:57.482761809 +0800
最近改动:2019-01-06 19:45:57.482761809 +0800
创建时间:-
# 使用touch修改
touch ~/Desktop
stat ~/Desktop
# 输出:
文件:'/home/ruo/Desktop'
大小:4096 块:8 IO 块:4096 目录
设备:802h/2050d Inode:5505264 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 1000/ ruo) Gid:( 1000/ ruo)
最近访问:2019-01-06 19:57:35.191433807 +0800
最近更改:2019-01-06 19:57:35.191433807 +0800
最近改动:2019-01-06 19:57:35.191433807 +0800
创建时间:-
14.4 创建文件夹
使用mkdir命令
mkdir ~/Test
stat ~/Test
# 输出如下:
文件:'Test'
大小:4096 块:8 IO 块:4096 目录
设备:802h/2050d Inode:6044126 硬链接:2
权限:(0775/drwxrwxr-x) Uid:( 1000/ ruo) Gid:( 1000/ ruo)
最近访问:2019-01-06 19:59:27.422286876 +0800
最近更改:2019-01-06 19:59:27.422286876 +0800
最近改动:2019-01-06 19:59:27.422286876 +0800
创建时间:-
14.5 删除文件
使用rm命令可以删除文件或目录。
使用格式:rm [option] [FILE]
# 示例
mkdir ~/Desktop/Test
cd ~/Desktop/Test
touch hello{1..10}.txt
ls
# 输出如下:
hello10.txt hello2.txt hello4.txt hello6.txt hello8.txt hello.txt
hello1.txt hello3.txt hello5.txt hello7.txt hello9.txt
rm hello10.txt
ls
# 输出如下:
hello1.txt hello3.txt hello5.txt hello7.txt hello9.txt
hello2.txt hello4.txt hello6.txt hello8.txt
删除目录需要加上-r参数:
cd ~/Desktop
rm -r Test
网友评论