1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
文件管理命令
文件管理有哪些命令:ls, cd, pwd, mkdir, rmdir, cp, rm, mv, touch, cat, more, less, head, tail等,下面我们就来详细的说一下(只说常用的,不是命令全部)
(1). ls 命令
123456789101112-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来 (常用)
-A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录
-d :仅列出目录本身,而不是列出目录内的文件数据 (常用)
-f :直接列出结果,而不进行排序 (
ls
默认会以档名排序!)
-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来 (常用)
-i :列出 inode 号码,inode 的意义下一章将会介绍 (常用)
-l :长数据串列出,包含文件的属性与权限等等数据 (常用)
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在用户管理提到!)
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来 (常说的递归)
-S :以文件容量大小排序,而不是用档名排序
-t :依时间排序,而不是用档名
(2) cd 命令
12345678910111213141516cd
[相对路径或绝对路径]
# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号罗!
[root@www ~]
# cd ~test
# 代表去到 vbird 这个使用者的家目录,亦即 /home/test
[root@www vbird]
# cd ~
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www ~]
# cd
# 没有加上任何路径,也还是代表回到自己家目录的意思喔
[root@www ~]
# cd ..
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思
[root@www /]
# cd -
# 表示回到刚刚的那个目录,也就是 /root 罗~
[root@www ~]
# cd /var/spool/mail
# 这个就是绝对路径的写法!直接指定要去的完整路径名称
[root@www mail]
# cd ../mqueue
# 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/mqueue 就这样写
(3). pwd 命令
1234567pwd
[-P] 选项与参数:
-P :显示出确实的路径,而非使用链接 (link) 路径。
例:
pwd
cd
/var/mail
pwd
–P
/var/spool/mail
pwd
与
pwd
–P 显示的路径不同,大家清楚了吧!
(4). mkdir 命令
123456mkdir
[-mp] 目录名称 选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (
umask
)
-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!
例:
mkdir
-p test1
/test2/test3/test4
(一起创建)
mkdir
-m 744 test2
(5). rmdir 命令
1234rmdir
[-p] 目录名称 选项与参数:
-p :连同上一级“空的”目录也一起删除
例:
rmdir
-p test1
/test2/test3/test4
(全部删除)
(6). rm 命令
12345rm
[-fir] 文件或目录 选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除啊!最常用在目录的删除了(这是非常危险的选项)
我们一般常组合使用,
rm
–rf (删除全部文件或目录,大家得小心使用,因为删除了就无法恢复了)
(7). mv 命令
12345mv
[-fiu]
source
destination 选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
-u :若目标文件已经存在,且
source
比较新,才会升级 (update)
我们一般还可以用
mv
命令进行重命名(例:
mv
test
test
.bak )
(8). touch 命令
123456789101112131415touch
[-acdmt] 文件 选项与参数:
-a :仅修订 access
time
-c :仅修改文件的时间,若该文件不存在则不创建新文件
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --
date
=
"日期或时间"
-m :仅修改 mtime
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
补充:
我们在
ls
这个命令的介绍时(
ls
–l),有提到每个文件在linux底下都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢?我在这里补充一下
modification
time
(mtime):
当该文件的“内容数据”变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔
status
time
(ctime):
当该文件的“状态 (status)”改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。
access
time
(atime):
当“该文件的内容被取用”时,就会升级这个读取时间 (access)。举例来说,我们使用
cat
去读取
/etc/man
.config , 就会升级该文件的 atime 了
大家懂了吧!
(9). cat 命令
1234567cat
[-AbEnTv] 选项与参数:
-A :相当于-vET 的整合选项,可列出一些特殊字符而不是空白而已
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号
-E :将结尾的断行字节 $ 显示出来
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同 (常用)
-T :将 [tab] 按键以 ^I 显示出来
-
v
:列出一些看不出来的特殊字符
(10). more 命令
12345678more
(一页一页翻动查看)
常用的快捷键:
空白键 (space):代表向下翻一行
Enter :代表向下翻一行
/字串 :代表在这个显示的内容当中,向下搜寻字串这个关键字
:f :立刻显示出档名以及目前显示的行数
q :代表立刻离开
more
,不再显示该文件内容
b 或 Ctrl+b :代表往回翻页,不过这动作只对文件有用
(11). less 命令
1234567891011less
(一页一页翻动)
less
与
more
区别: 在
more
的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了
less
时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件
常用的快捷键:
空白键 :向下翻动一页
[pagedown]:向下翻动一页
[pageup] :向上翻动一页
/字串 :向下搜寻字串的功能
?字串 :向上搜寻字串的功能
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开
less
这个程序
(12). head 命令 (取出前面几行)
123
head
[-n number] 文件 选项与参数:
-n :后面接数字,代表显示几行的意思
(默认是前10行)
(13). tail 命令 (取出后面几行)
1234
tail
[-n number] 文件 选项与参数:
-n :后面接数字,代表显示几行的意思 (默认后10行)
-f :表示持续查看后面所接的文件,要等到按下Ctrl+c才会结束
tail
的查看
(
tail
–f 非常有用,当我们看某些经常更新的日志时,例:
tail
-f
/var/log/maillog
)
(14). file 命令 (查看文件类型)
1234
例:
file
~/.bashrc --------ASCII 的纯文字档
file
/usr/bin/passwd
------------可执行文件
file
/var/lib/mlocate/mlocate
.db --------------- data 文件
总结 :
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
1. 命令执行状态返回值
作为演示,我们键入一条命令 source /etc/profile,回车。
键入的命令到底有没有执行成功呢?我们输入 echo $? 来查看该命令执行状态的返回值。返回值为 0,表示成功执行。
2016-09-24_14-09-51.jpg
我们再键入一条命令:source /etc,回车,然后再用 echo $? 查看。返回值为 1,表示该命令出错。
2016-09-24_14-10-37.jpg
我们最后键入 mann ls,回车,然后用 echo $? 查看。返回值为 127,不为 0,同样表示该命令出错。
2016-09-24_14-11-21.jpg
2.命令行命令展开:
~:展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp{a,b} – /tmp/a. /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
(2)、创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
(1):[root@localhost tmp]# mkdir {a,b}_{c,d}
(2)[root@localhost tmp]# mkdir -p mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
元数据定义: 数据(Metadata),又称中介数据、中继数据,为描述 数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。 可用命令stat查看文件的元数据 stat: 功能说明:显示inode内容。 语 法:stat FILE
-bash-4.1# stat a.c File: a.cSize: 41 Blocks: 8 IO Block: 4096 regular fileDevice: fh/15d Inode: 1808648 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-09 23:38:06.000000000Modify: 2016-11-09 23:38:05.000000000Change: 2016-11-09 23:38:05.000000000
修改文件时间戳信息 命令:touch touch命令一般用来修改文件的时间,或者新建一个不存在的文件. 语法如下: touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名) 参数说明: -a 修改文件 file 的存取时间. -c 不创建文件 file. -m 修改文件 file 的修改时间 -r ref_file 将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值. -t time 使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值. 例子: touch a.txt 更新a.txt的存取和修改时间
-bash-4.1# touch a.txt-bash-4.1# stat a.txt File: a.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/15d Inode: 1847885 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:08:44.000000000Modify: 2016-11-10 00:08:44.000000000Change: 2016-11-10 00:08:44.000000000
touch -c a.txt 不创建文件
-bash-4.1# touch -c b.txt-bash-4.1# lsa.c a.txt
touch -r b.txt a.txt 更新a.txt的时间戳和b.txt相同
-bash-4.1# stat b.txt File: b.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1849094 Links: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:13:02.00000000Modify: 2016-11-10 00:13:02.00000000Change: 2016-11-10 00:13:02.000000000-bash-4.1# stat a.txt File: a.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1847885 Links: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:10:29.00000000Modify: 2016-11-10 00:10:29.00000000Change: 2016-11-10 00:10:29.000000000-bash-4.1# touch -r b.txt a.txt -bash-4.1# stat b.txt File: b.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1849094 Links: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:13:02.00000000Modify: 2016-11-10 00:13:02.00000000Change: 2016-11-10 00:13:02.000000000
touch -t 162011011134.03 b.txt 设定文件的时间
-bash-4.1# touch -t 201611011134.03 b.txt -bash-4.1# stat b.txt File: b.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1849094
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
1.命令别名:alias
alias:显示当前shell进程所有可用的命令别名 alias NAME="VALUE":命名别名 注意:在命令行中定义的别名,仅对当前shell进程有效,如果想永久有效,要定义配置文件 仅对当前用户:~/.bashrc 对所有有效:/etc/bashrc
2016-09-24_14-53-29.jpg
2.使用管道符可以饮用另一个命令的执行结果
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
原创文章,作者:a279854458,如若转载,请注明出处:http://www.178linux.com/67067
评论列表(1条)
写的很好,有没有感觉把图片放上很丑,注意一下排版的问题,总结的也很到位,加油