Bash编程014——文件管理

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值