在Linux系统中关于对文件和目录相关的操作命令有很多,下面简单展示一些常用的命令。
tree:以树状展开一个目录
1 2 3 4 5 6 7 8 |
$ tree /etc /etc ├── abrt │ ├── abrt-action-save-package-data.conf │ ├── abrt.conf │ ├── gpg_keys.conf │ └── plugins .... |
pwd:查看当前路径位置
1 2 |
$ pwd /root |
cd:切换目录
1 2 3 4 5 |
cd #直接使用cd回车就切回到当前用户的家目录; cd /etc #切换工作目录; cd ~USERNAME #进入到指定用户的家目录; cd - #在当前目录和前一次所在目录之间来回切换; cd .. #回到父目录; |
ls:列出当前目录的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ ls [OPTION] FILE -l #以长格式显示文件和目录的列表,包括权限、大小、最后更新时间等; -a #显示所有子文件和文件的信息,包括名称以点号"."开头的隐藏目录和文件; -A #与—a选项作用类似但有两个特殊的隐藏"."表示当前目录和".."表示父目录; -d #显示目录本身的属性,而不是显示目录中的内容; -h #以更人性化的方式显示文件的大小为K,M等; -R #以递归的方式显示指定目录及其子目录中的所有内容; -i #显示文件的索引节点号; -r #以降序的方式来排列文件,默认使用ls时是升序ABCD; --color #在字符模式中以颜色区分不同的文件,red表示压缩文件;green表示可执行程序;white表示普通文件;blue表示目录等; -ltr #以文件或目录最新修改时间的次序来显示; -lSh #按文件大小的次序来显示; -n #显示文件的UID和GID号; |
查看文件详解信息
1 2 |
$ ls -il zabbix.sh 30408750 -rwxr-xr-x 1 root root 1860 Jul 1 17:51 zabbix.sh |
逐一解释各个参数:
30408750:表示文件的索引节点号的(计算机认证用户账号是使用用户的ID号;相同,表示文件或目录的方式也是同样使用数字;因为人更容易理解字母而机器更容易理解数字也更快)。
-:表示文件类型,文件类型有:-表示普通文件 (file)、d表示目录文件(directory)、b表示块设备文件 (block)、c表示字符设备文件 (character)、l表示符号链接文件(symbolic link file)、p表示命令管道文件(pipe)、s表示套接字文件(socket)、
rwxr-xr-x:表示文件权限,一共9位,每3位一组,每一组:rwx(读,写,执行)。
1:表示文件硬链接的次数。
root:表示文件的属主(owner)。
root:表示文件的属组(group)。
1860:表示文件的大小字节(size)。
Jan 1 17:51:表示时间戳(timestamp)。
PS:每个文件有三个时间戳,分别是最近一次访问时间(access就是查看了文件),最近一次修改时间(modify就是改变了文件内容),最近一次改变时间(change就是改变了文件的元数据MATEDATE),使用stat命令可以查看,这里显示的是最近一次被修改的时间。
mkdir:创建目录
1 2 3 4 |
$ mkdir [OPTION] DIR -p #同时递归创建多个目录,如mkdir -p /lisi/zhangsan; -v #展开创建的详细过程; {} #展开执行,如mkdir /etc/{lisi,zhangsan}或mkdir /etc/{a,b}_{c,d}; |
rmdir:删除空目录
1 |
$ rmdir /dir |
mknod:创建设备文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ mknod [OPTION] NAME TYPE [MAJOR MINOR] # [OPTION] -m #设置权限模式(如chmod); # NAME(设备名称) /dev/null /dev/cdrom /dev/console /dev/zero /dev/* # TYPE(设备类型) b #创建块文件; c #创建字符文件; p #创建FIFO(命名管道); # [MAJOR MINOR] 主设备号和次设备号 |
1 |
$ mknod /dev/null c 3 1 |
mktemp:创建临时文件或目录
1 2 |
$ mktemp [OPTION] /tmp -d #创建临时目录; |
mv:更改文件名或目录名和移动文件或目录位置
1 2 3 |
$ mv [OPTION] SOURCE DEST -f #移动文件时如果目录存在可以强制覆盖; -i #交互式,提醒用户; |
touch:修改时间戳
当一个文件不存在时,使用touch a.txt就可以创建一个文件。(当一个文件存在时,此命令本来是用来更改文件的时间戳的,如touch a.txt就会把a.txt文件的访问时间和修改时间和改变时间都同步为系统时间)。
1 2 3 4 5 |
$ touch [OPTION] FILE -a #只改变访问时间为当前时间(同时文件属性元数据也改为相同时间),如touch -a a.txt; -m #只改变修改时间为前时间(同时文件属性元数据也改为相同时间),如touch -m a.txt; -t #指定修改时间,如touch -m -t 201706071143 a.txt; -c #不创建文件,如touch -c b.txt; |
rm:删除文件或目录(默认别名rm -i)
1 2 3 4 5 |
$ rm [OPTION] FILE -f #强行删除文件或目录是不进行提醒而直接强制删除; -i #交互式,删除文件或目录时提醒用户确认; -r #递归删除目录是必须使用次选项,表示递归删除整个目录数; -v #详细显示删除过程; |
cp:复制文件或目录
1 2 3 4 5 6 7 8 |
$ cp [OPTION] SOURCE DEST -f #覆盖目标同名文件或目录是不进行提醒,而直接强制复制; -i #覆盖目标同名文件或目录是提醒用户确认(交互式); -p #复制时保持源文件的权限,属主及时间标记等属性不变; -r #复制目录时必须使用此选项,表示递归复制所有文件及子文件; -d #复制链接文件时保持链接; -a #归档复制;用于复制备份; {} #展开复制,如cp /etc/{lisi,zhangsan} /tmp; |
Install:拷贝文件或设置属性
复制文件默认有x权限,<源>只能是文件,而<目标>可以是文件或目录,如果目标目录不存在就会自动创建目录。
1 2 3 |
$ install [OPTION] SOURCE DEST -d #可以创建目录,如:install -d /direct; -p #复制时保持源文件的属性; |
stat:查看文件的状态比喻名字、块、访问时间、修改时间、改变时间东八区等,如:stat file.txt
1 2 3 4 5 6 7 8 9 |
$ stat 1.txt File: '1.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 145712262 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-08-10 05:27:58.562149439 -0400 Modify: 2017-08-10 05:27:58.562149439 -0400 Change: 2017-08-10 05:27:58.562149439 -0400 Birth: - |
chattr:锁定文件
1 2 3 4 5 |
# 锁定文件,不能再更改文件; $ chattr +i file.txt # 解开文件; $ chattr -i file.txt |
ln:创建连接文件
1 2 |
# 创建硬链接,语法:ln 源文件 链接文件; $ ln one.txt two.txt |
创建硬链接时,由于指向的是文件的inode号,所以两个文件的inode号是相同(ls -i可以查看),因此删除原文件而链接文件还是可以访问。
硬链接原则:
1. 只能对文件创建不能应用与目录
2. 不能跨文件系统
3. 创建硬链接会增加文件被链接的次数
1 2 |
# 创建软连接,语法:ln -s 源文件 链接文件; $ ln -s /bin/* /mnt |
创建软连接时,其两个文件的inode号不同(ls -i可以查看)。因为软链接指向的是原文件的路径符号,因此删除原文件后而链接文件不可以再使用。但是当重新复制一个文件名字和路径为原文件时;软链接文件就链接到当前文件;因为它不是根据inode号来做的链接的。
软连接原则:
1. 可应用于目录
2. 可以跨文件系统
3. 不会增加被链接的次数
4. 其大小为指定的路径所包含字符的个数