1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
touch: 创建一个文件,修改一个文件时间 - 格式:touch [OPTION]... FILE... - 常用选项 -a 只更改文件最近的访问时间 -m 只更改文件最近的修改时间 -t 指定时间 格式 [[CC]YY]MMDDhhmm[.ss] # touch abc # stat abc Access: 2016-06-16 21:06:56.095545727 +0800 Modify: 2016-06-16 21:06:56.095545727 +0800 Change: 2016-06-16 21:06:56.095545727 +0800 # touch -a -t 05152320 abc # stat abc Access: 2016-05-15 23:20:00.000000000 +0800 Modify: 2016-06-16 21:06:56.095545727 +0800 Change: 2016-06-16 21:07:34.871546823 +0800 # touch -m -t 201405152320 abc # stat abc Access: 2016-05-15 23:20:00.000000000 +0800 Modify: 2014-05-15 23:20:00.000000000 +0800 Change: 2016-06-16 21:07:56.911547446 +0800 mkdir: 创建文件夹 - 格式:mkdir [OPTION]... DIRECTORY... - 常用选项 -m 指定权限 -p 多级创建 -v 显示过程 [root@c7-1 command]# mkdir -pv a/b/c mkdir: created directory ‘a’ mkdir: created directory ‘a/b’ mkdir: created directory ‘a/b/c’ 创建多级目录时 指定权限 会在最后一层目录生效 [root@c7-1 command]# mkdir -pv -m 0777 d/e/f mkdir: created directory ‘d’ mkdir: created directory ‘d/e’ mkdir: created directory ‘d/e/f’ unlink: 删除一个文件 - 格式: unlink FILE # unlink /home/huazi/.bashrc cp: 复制文件或目录 cp [OPTION]... FILE... - 常用选项 -a 相当于-dpR 保留链接,文件属性,并递归地拷贝目录。 -d 保留文件的连接数 -p 保留原文件的权限以及时间戳 -r,-R 复制目录。递归复制目录及其子目录内的所有内容 -i 交互式,覆盖文件前询问用户 -f 强制移动,需要有-i询问用户时使用 # cp -a /etc/ /tmp/test1 复制/etc目录 到/tmp/test1下 保留/etc/下所有文件的属性 mv: 移动文件 mv [OPTION]... FILE... 常用选项 -i 交互式,覆盖文件前询问用户 -f 强制移动,需要有-i询问用户时使用 # root用户默认 有cp mv rm 的命令别名带 -i 选项 # mv a.log b.log 如果 b.log 存在直接覆盖,不存在正常移动 # mv -i a.log b.log 如果 b.log 存在 会询问用户是否覆盖 n不覆盖 y覆盖 root默认mv别名带-i参数 # mv -if a.log b.log 如果 b.log 存在直接覆盖,不存在正常移动 rm: 删除文件 rm [OPTION]... FILE... - 常用选项 -i: 交互式,删除文件是询问是否删除 -f: 强制删除,需要有-i询问用户时使用 -r: 递归删除, # root用户默认 有cp mv rm 的命令别名带 -i 选项 # rm -i a.log 删除 a.log 询问当前用户是否删除 n不删除 y删除 root默认mv别名带-i参数 # rm -if a.log 删除 a.log -i询问用户,-f强制删除 则直接删除 。 # rm -rf /tmp/* 删除 /tmp 下的所有文件 文件夹 跟文件相关命令还有很多,chmod,chown,chgrp,file,stat,cat,uniq,wc,sort,tr,less,more,tail,grep,fgrep,egrep,find.....等
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
命令的状态返回值 通常可以叫我们来判断该脚本是否执行成功。 上一条脚本的的返回状态值 保存在 $? 这个变量中。 # ls / bin boot_ucloud dev home lib64 media opt root selinux swapfile tmp var boot data etc lib lost+found mnt proc sbin srv sys usr # echo $? 0 执行成功 # ls /abc ls: cannot access /abc: No such file or directory # echo $? 2 执行出错 通常来说 脚本返回状态值为0时表示脚本执行成功,非0时表示执行过程中遇到问题 返回值是程序员来定义的,你也可以写成一下代码 shell脚本 { #!/bin/bash ls / exit 1 } 当执行该脚本后 在看 $?变量里的值时 就是1,当然这是一个叫大家理解返回值的例子。 在自己写的脚本中设立返回值是个好习惯,成功大家一般都会返回0 二 命令行展开 可以为我工作提高更好的效率 ~: 展开为用户的主目录 ~USERNAME:展开为指定用户的主目录 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径 # vim ~/.bashrc 操作当前用户 家目录下的.bashrc文件 # vim ~huazi/.bashrc 操作 huazi 用户家目录下的.bashrc文件 # cd ~huazi 进入 huazi 的家目录 # mkdir -p test/{a,b,c} 创建 test 目录已经该目录下 a b c三个目录 # ls test/ a b c # touch a{1..10} 连续创建文件 # ls a1 a10 a2 a3 a4 a5 a6 a7 a8 a9 # mkdir a{1..10} 连续创建目录 # ls a1 a10 a2 a3 a4 a5 a6 a7 a8 a9
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d [root@c7-1 /]# mkdir /tmp/{a_c,a_d,b_c,b_d} [root@c7-1 /]# ls /tmp/ a_c a_d b_c b_d (2)、创建/tmp/mylinux目录下的: [root@c7-1 /]# mkdir /tmp/mylinux [root@c7-1 /]# cd /tmp/mylinux/ [root@c7-1 mylinux]# mkdir -pv bin boot/grub dev etc/{rc.d/init.d,sysconfig/network-script} lib/module lib64 proc sbin sys tmp usr/local/{bin,sbin} var/{lock,log,run} mkdir: created directory ‘bin’ mkdir: created directory ‘boot’ mkdir: created directory ‘boot/grub’ mkdir: created directory ‘dev’ mkdir: created directory ‘etc’ mkdir: created directory ‘etc/rc.d’ mkdir: created directory ‘etc/rc.d/init.d’ mkdir: created directory ‘etc/sysconfig’ mkdir: created directory ‘etc/sysconfig/network-script’ mkdir: created directory ‘lib’ mkdir: created directory ‘lib/module’ mkdir: created directory ‘lib64’ mkdir: created directory ‘proc’ mkdir: created directory ‘sbin’ mkdir: created directory ‘sys’ mkdir: created directory ‘tmp’ mkdir: created directory ‘usr’ mkdir: created directory ‘usr/local’ mkdir: created directory ‘usr/local/bin’ mkdir: created directory ‘usr/local/sbin’ mkdir: created directory ‘var’ mkdir: created directory ‘var/lock’ mkdir: created directory ‘var/log’ mkdir: created directory ‘var/run’ [root@c7-1 mylinux]# [root@c7-1 mylinux]# tree /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-script ├── lib │ └── module ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run 24 directories, 0 files [root@c7-1 mylinux]#
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
- 文件元数据包括 文件的用户id 文件的组id 文件最近的访问时间 文件最近的修改时间 文件最近的inode修改时间 文件的大小 文件的链接数 文件的权限 文件数据block的位置 stat 命令可以查看 列出文件的元数据的相关信息 # stat /etc/fstab File: `/etc/fstab' Size: 644 Blocks: 8 IO Block: 4096 regular file Device: fc01h/64513d Inode: 393244 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-04-12 16:01:55.498000866 +0800 Modify: 2016-04-12 16:01:55.498000866 +0800 Change: 2016-04-12 16:01:55.498000866 +0800 touch 命令可以修改文件的 最近访问时间和最近修改时间 - 格式:touch [OPTION]... FILE... - 常用选项 -a 只更改文件最近的访问时间 -m 只更改文件最近的修改时间 -t 指定时间 格式 [[CC]YY]MMDDhhmm[.ss]
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
如何定义一个命令别名。 alias 命令可以定义命令别名 用法: 查看别名 # alias alias h='ls -lh' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias log_nginx='cd /data/logs/nginx' 建立别名 # alias name=value 删除别名 # unalias fgrep alias mycd='cd /etc/sysconfig/network-scripts/' alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-eno16777736' 还可以写到 ~/.bashrc 中 让当前用户永久生效 如何在命令中引用另外一个命令的结果。 可以使用 $() 例 # a=$(pwd) 可以使用 `` 例 # a=`pwd` [root@c7-1 ~]# if [ $(wc -l /etc/passwd|cut -d' ' -f1) -gt 20 ]; then echo '> 20'; else echo '< 20'; fi > 20 [root@c7-1 ~]# if [ `wc -l /etc/fstab|cut -d' ' -f1` -gt 20 ]; then echo '> 20'; else echo '< 20'; fi < 20 [root@c7-1 ~]# test $( wc -l /etc/passwd |cut -d' ' -f1 ) -gt 20 && echo ' > 20 ' || echo '< 20' > 20 root@c7-1 ~]# test ` wc -l /etc/fstab |cut -d' ' -f1 ` -gt 20 && echo ' > 20 ' || echo '< 20' < 20
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls -ld /tmp/1*[0-9]*[[:lower:]]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls -ld /etc/[0-9]*[^0-9]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls -ld /etc/[^a-z][a-z]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-$(date +'%F-%H-%M-%S')
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -r /etc/p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp -r /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
cp /etc/[lmn]*.conf /tmp/mytest3
原创文章,作者:banbula,如若转载,请注明出处:http://www.178linux.com/19508
评论列表(1条)
写的很好,排版也很漂亮,加油