1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
常用的命令:ls, cd, pwd, mkdir, cp, rm, mv, touch, cat, more, less, head, tail, du, wc
ls: -A :列出当前目录全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录 -d :仅列出目录本身,而不是列出目录内的文件数据 -h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来 -i :列出 inode 号码,inode 的意义下一章将会介绍 -l :长数据串列出,包含文件的属性与权限等等数据 -R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来 cd: 例子 [root@localhost ~]# cd /home/ #切换到home目录 [root@localhost home]# cd - #返回切换到home前的目录 /root [root@localhost ~]# cd ../ #切换到上一级目录 [root@localhost /]# cd ~ #切换当前用户的home目录 pwd: pwd 显示当前目录 -L:显示当前目录 -P:显示当前目录的实际物理地址 例子 [root@bogon bxx]# pwd /opt/bxx [root@bogon bxx]# pwd -P /home/bss #pwd -P显示的是真实的物理地址,而不是软连接创建的 mkdir: -m:设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p:需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理 -v:每次创建新目录都显示信息 例子 [root@localhost ~]# mkdir rice #创建目录 [root@localhost ~]# mkdir -m a=rw rice #创建指定属性的目录 [root@localhost ~]# mkdir -p 111/rice/backup #这里我个人是将其理解为,递归创建目录
rm: rm [-fir] 文件或目录 选项与参数: -f:就是 force 的意思,忽略不存在的文件,不会出现警告信息 -i:互动模式,在删除前会询问使用者是否动作 -r:递回删除啊!最常用在目录的删除了(这是非常危险的选项) 例子 [root@localhost ~]# rm rice.php #删除文件需要确认 [root@localhost ~]# rm -f rice.php #强制删除文件不确认 [root@localhost ~]# rm -rfv ./rice #强制删除当前的test目录,并显示删除的详细过程 mv: mv [-fiu] source destination 选项与参数: -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖 -u :若目标文件已经存在,且 source 比较新,才会升级 (update) 注:mv还有一种用法就是重命名,日常用的也是最多的 例子 [root@linux ~]# mv abc abc.php #将abc移动成abc.php [tank@localhost ~]$ mv /home/rice.txt /database #将rice.txt移动到database目录下 touch: -a :仅修订 access time -c :仅修改文件的时间,若该文件不存在则不创建新文件 -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间" -m :仅修改 mtime -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm] 例子 [root@linux ~]# touch test.php #将test.php的档案时间改为,当前时间,文件不存在建之 [root@linux ~]# touch -c -t 05071803 test.php #将档案时间改为,5月7日18点3分 [root@linux ~]# touch -r abc.php test.php #将test.php档案改成根abc.php一样 [root@linux ~]# touch -d "2 days ago" test.php #将test.php日期修改为2天以前
cat: cat [-AbEnTv] 选项与参数: -A :相当于-vET 的整合选项,可列出一些特殊字符而不是空白而已 -b :列出行号,仅针对非空白行做行号显示,空白行不标行号 -E :将结尾的断行字节 $ 显示出来 -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同 (常用) -T :将 [tab] 按键以 ^I 显示出来 -v :列出一些看不出来的特殊字符 more: more (一页一页翻动查看) 常用的快捷键: 空白键 (space):代表向下翻一行 Enter :代表向下翻一行 /字串 :代表在这个显示的内容当中,向下搜寻字串这个关键字 :f :立刻显示出档名以及目前显示的行数 q :代表退出 b 或 Ctrl+b :代表往回翻页,不过这动作只对文件有用
less: less (一页一页翻动) less与more区别: 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件 常用的快捷键: 空白键 :向下翻动一页 [pagedown]:向下翻动一页 [pageup] :向上翻动一页 /字串 :向下搜寻字串的功能 ?字串 :向上搜寻字串的功能 n :重复前一个搜寻 (与 / 或 ? 有关!) N :反向的重复前一个搜寻 (与 / 或 ? 有关!) q :离开 less 这个程序 head: head [-n number] 文件 选项与参数: -n :后面接数字,代表显示几行的意思 (默认是前10行) tail: tail [-n number] 文件 选项与参数: -n :后面接数字,代表显示几行的意思 (默认后10行) -f :表示持续查看后面所接的文件,要等到按下Ctrl+c才会结束tail的查看 (tail –f 非常有用,当我们看某些经常更新的日志时,例: tail -f /var/log/maillog)
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
bshell中的特性: 命令补全 命令历史 查看命令历史:history -c:清空命令历史 -d: 删除指定位置的命令 -w:保存命令历史至历史文件中 命令别名 alias CMDALIAS='COMMAND [options] [arguments]' 在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程; 命令行编辑 Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u: 删除光标至命令行首的内容 Ctrl+k: 删除光标至命令行尾的内容
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
mkdir -p /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
mkdir -p /mylinux/{bin,boot,dev,etc,lib,lib64,proc,sbin,sys,tmp,usr,var,lock,log,run} mkdir -p /mylinux/boot/grub mkdir -p /mylinux/etc/{rc.d,sysconfig} mkdir -p /mylinux/etc/rc.d/init.d/ mkdir -p /mylinux/etc/rc.d/sysconfig/network-scripts mkdir -p /mylinux/lib/modules mkdir -p /mylinux/usr/local/{bin,sbin}
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
答:
Access:最后访问时间 Modify:最后修改时间 Change:状态更改时间(由系统维护,无法随意修改) touch -a :仅更新Access time(同时更新Change为current time) touch -m:仅更新Modify time(同时更新Change为current time) touch -c:不创建新文件 touch -t:使用指定的时间更新时间戳 例:touch -t [[CC]YY]MMDDhhmm[.ss] filename
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
(1)[root@Blackghost ~] alias dir='ls -ar' #设置别名可以是命令带参数 (2)可以定义环境变量,或者将其写成一个shell的脚本,去调用。
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
find /var/ -maxdepth 1 -name "l*[0-9]*[a-z]"
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
find /etc/ -maxdepth 1 -name "[0-9]*[!0-9]"
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
find /etc/ -maxdepth 1 -name "[0-9]*[a-z-A-Z]*"
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
touch tfile-`date +"%Y-%m-%d-%H-%M-%S"`
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
ls /etc/ | grep "^p[^0-9]*$" | xargs -i cp -r {} /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
find /etc -maxdepth 1 -name "*.d" | xargs cp -r /tmp/mytest2/
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
find /etc/ -type f -name "[lmn]*conf" |xargs cp -rf /tmp/mytest3/