Linux上文件可管理类命令,其常用的使用方法和相关示例
-
目录管理类命令
目录管理类命令包含:mkdir,rmdir
mkdir
使用说明及格式
移除空目录 rmdir [OPTION]… DIRECTORY… |
常见选项及说明
-p –parents 创建时如果父目录不存在,一并创建 -v –verbose 通常和p参数结合,显示创建过程 -m –mode 创建时给定权限,如果没有则按默认走(8进制) |
使用示例
-p 创建目录,如果父目录不存在,则一并创建
[root@localhost ~]# mkdir /tmp/a/b mkdir: cannot create directory ‘/tmp/a/b’: No such file or directory [root@localhost ~]# mkdir -p /tmp/a/b [root@localhost ~]# ll /tmp/ total 0 drwxr-xr-x. 3 root root 14 Aug 19 14:43 a drwxr-xr-x. 6 root root 50 Aug 12 06:32 man drwxr-xr-x. 2 root root 21 Aug 5 18:46 test |
-v 显示创建过程,通常和p参数一起用
[root@localhost ~]# mkdir -v /tmp/b mkdir: created directory ‘/tmp/b’ [root@localhost ~]# mkdir -vp /tmp/c/d mkdir: created directory ‘/tmp/c’ mkdir: created directory ‘/tmp/c/d’ [root@localhost ~]# |
-m创建时给定权限,如果没有则按默认走
[root@localhost ~]# mkdir -m 644 /tmp/asdf [root@localhost ~]# ll -d /tmp/asdf drw-r–r–. 2 root root 6 Aug 19 14:51 /tmp/asdf [root@localhost ~]# |
rmdir
使用说明及格式
移除空目录 rmdir [OPTION]… DIRECTORY… |
常见选项及说明
-p 删除某个目录后没如果父目录为空,则一并删除之 |
使用示例
[root@localhost ~]# ll /tmp/a/b/ total 0 [root@localhost ~]# rmdir /tmp/a/b/ [root@localhost ~]# ll /tmp/a total 0 [root@localhost ~]# mkdir /tmp/a/b [root@localhost ~]# rmdir -p /tmp/a/b/ rmdir: failed to remove directory ‘/tmp’: Directory not empty #删到 tmp就没法删了,因为tmp不是空目录 |
2. 文件查看类命令
文件查看类命令包括:
cat 、tac 、head tail 、more、less
cat
使用说明及格式
连接并显示文本文件,尽量不要cat可执行文件 cat [OPTION]… [FILE]… |
常见选项及说明
-n –number 显示行数 -E –show-ends 显示行结束符,在linux文件中,每行的尾端显示$ |
使用示例
-n –number 显示行数
[root@localhost ~]# cat -n fstab 1 2 # 3 # /etc/fstab 4 # Created by anaconda on Fri Jul 29 10:33:43 2016 5 # 6 # Accessible filesystems, by reference, are maintained under '/dev/disk' 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 8 # 9 /dev/mapper/centos-root / xfs defaults 0 0 10 UUID=3c78a34b-fa45-4925-aa42-a21360786907 /boot xfs defaults 0 0 11 /dev/mapper/centos-home /home xfs defaults 0 0 12 /dev/mapper/centos-swap swap swap defaults 0 0 |
-E –show-ends 显示行结束符,在linux文件中,每行的尾端显示$
$ #$ # /etc/fstab$ # Created by anaconda on Fri Jul 29 10:33:43 2016$ #$ # Accessible filesystems, by reference, are maintained under '/dev/disk'$ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$ #$ /dev/mapper/centos-root / xfs defaults 0 0$ UUID=3c78a34b-fa45-4925-aa42-a21360786907 /boot xfs defaults 0 0$ /dev/mapper/centos-home /home xfs defaults 0 0$ /dev/mapper/centos-swap swap swap defaults 0 0$ |
tac
使用说明及格式
和cat类似,显示的内容相反。用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。 tac [OPTION]… [FILE]… |
使用示例
[root@localhost ~]# tac fstab /dev/mapper/centos-swap swap swap defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 UUID=3c78a34b-fa45-4925-aa42-a21360786907 /boot xfs defaults 0 0 /dev/mapper/centos-root / xfs defaults 0 0 # # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # Accessible filesystems, by reference, are maintained under '/dev/disk' # # Created by anaconda on Fri Jul 29 10:33:43 2016 # /etc/fstab # |
more
使用说明及格式
以全屏幕的方式按页显示文本文件的内容 |
常见选项及说明
-d 在最下栏显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”,按h显示内嵌命令帮助 -c不进行滚屏操作。每次刷新这个屏幕 。一般和“-#”和用 -#:指定每屏显示的行数 |
使用示例
-d 在最下栏显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”,按h显示内嵌命令帮助
-c不进行滚屏操作。每次刷新这个屏幕 。一般和“-#”和用
-#:指定每屏显示的行数
[root@localhost ~]# more -d -10 -c /etc/init.d/functions # -*-Shell-script-*- # # functions This file contains functions to be used by most or all # shell scripts in the /etc/init.d directory. #
TEXTDOMAIN=initscripts
# Make sure umask is sane umask 022 |
注意事项
1).more命令内置了许多参数,通过-d 后-h可以看到
Most commands optionally preceded by integer argument k. Defaults in brackets. Star (*) indicates argument becomes new default. ——————————————————————————- <space> Display next k lines of text [current screen size] z Display next k lines of text [current screen size]* <return> Display next k lines of text [1]* d or ctrl-D Scroll k lines [current scroll size, initially 11]* q or Q or <interrupt> Exit from more s Skip forward k lines of text [1] f Skip forward k screenfuls of text [1] b or ctrl-B Skip backwards k screenfuls of text [1] ' Go to place where previous search started = Display current line number /<regular expression> Search for kth occurrence of regular expression [1] n Search for kth occurrence of last r.e [1] !<cmd> or :!<cmd> Execute <cmd> in a subshell v Start up /usr/bin/vi at current line ctrl-L Redraw screen :n Go to kth next file [1] :p Go to kth previous file [1] :f Display current file name and line number . Repeat previous command |
2).more命令,翻屏至文件尾部后自动退出,和man命令不同
3.touch命令
使用说明及格式
修改文件的时间戳及创建新的空文件 |
常见选项及说明
-c, –no-create 不创建新文件 -a 只改变访问时间 -m 只改变修改时间 -t STAMP 使用指定的时间日期来代替当前时间 |
使用示例
-c 不创建新文件
[root@localhost ~]# touch /tmp/a [root@localhost ~]# ll /tmp/ 总用量 0 -rw-r–r–. 1 root root 0 8月 21 06:21 a [root@localhost ~]# touch -c /tmp/b [root@localhost ~]# ll /tmp/ 总用量 0 -rw-r–r–. 1 root root 0 8月 21 06:21 a [root@localhost ~]# |
-a 只改变访问时间
[root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:23:23.614854159 +0800 Modify: 2016-08-21 06:21:53.115858242 +0800 Change: 2016-08-21 06:23:23.614854159 +0800 [root@localhost ~]# touch -a /tmp/a [root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:24:30.257862923 +0800 Modify: 2016-08-21 06:21:53.115858242 +0800 Change: 2016-08-21 06:24:30.257862923 +0800 [root@localhost ~]# |
-m 只改变修改时间
[root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:24:30.257862923 +0800 Modify: 2016-08-21 06:21:53.115858242 +0800 Change: 2016-08-21 06:24:30.257862923 +0800 [root@localhost ~]# touch -m /tmp/a [root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:24:30.257862923 +0800 Modify: 2016-08-21 06:25:25.179863049 +0800 Change: 2016-08-21 06:25:25.179863049 +0800 [root@localhost ~]# |
-t 指定使用的时间来替代当前时间
[root@localhost ~]# touch -t 201508210624.30 /tmp/a [root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-21 06:24:30.000000000 +0800 Modify: 2015-08-21 06:24:30.000000000 +0800 Change: 2016-08-21 06:31:43.474863766 +0800 |
4.文件管理命令
文件管理类命令:cp mv rm
cp
使用说明及格式
拷贝文件和目录 单元复制:cp [OPTION]… [-T] SOURCE DEST 多源复制:cp [OPTION]… SOURCE… DIRECTORY |
常见选项及说明
-i, –interactive 交互式,在进行一些诸如覆盖之类的操作时提示是否执行 -f:强制覆盖 -R, -r, –recursive copy directories recursively 递归复制目录 -d same as –no-dereference –preserve=links 如果复制的源文件是个符号链接,快捷方式,只复制连接符号链接本身,而不复制连接内容 -a, –archive 复制目录,连接只保留本身,保留所有元属性 archive 归档 same as -dR –preserve=all |
使用示例
-i 交互提示
[root@localhost ~]# cp fstab /tmp/ [root@localhost ~]# cp fstab /tmp/ cp:是否覆盖"/tmp/fstab"? y [root@localhost ~]# |
-f 强制覆盖而不提示
[root@localhost ~]# \cp -f fstab /tmp/fstab [root@localhost ~]# |
-R, -r, –recursive copy directories recursively 递归复制目录
[root@localhost ~]# cp -r a /tmp/ [root@localhost ~]# ll /tmp/ total 4 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw-r–r–. 1 root root 541 Aug 23 00:57 fstab [root@localhost ~]# |
注意事项
cp [OPTION]… -t DIRECTORY SOURCE… 单源复制:cp [OPTION]… [-T] SOURCE DEST if DEST不存在:则事先创建此文件,并复制源文件的数据流到DEST中 if DEST存在: 1.DEST是非目录文件:则覆盖目标文件 //危险操作 2.DEST是目录文件:
多源复制:cp [OPTION]… SOURCE… DIRECTORY if DEST不存在:错误 if DEST存在: if DEST 是非目录文件 if DEST 是目录文件:分别复制每个文件至目标目录中,并保持原名 |
mv
使用说明及格式
移动或者重命名文件 mv [OPTION]… [-T] SOURCE DEST |
常见选项及说明
-i, –interactive 交互式,在进行一些诸如覆盖之类的操作时提示是否执行 -f:强制覆盖 |
使用示例
-i 交互提示
[root@localhost ~]# mv fstab /tmp/fstab mv: overwrite ‘/tmp/fstab’? |
-f 强制覆盖而不提示
[root@localhost ~]# mv -f fstab /tmp/fstab [root@localhost ~]# ll total 12 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw——-. 1 root root 1654 Aug 10 05:34 anaconda-ks.cfg -rw-r–r–. 1 root root 1664 Aug 11 21:45 CentOS-Base.repo -rw-r–r–. 1 root root 2862 Aug 10 22:01 passwd |
重命名文件
[root@localhost tmp]# ll total 4 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw-r–r–. 1 root root 541 Aug 10 22:05 fstab [root@localhost tmp]# mv fstab fstab.test [root@localhost tmp]# ll total 4 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw-r–r–. 1 root root 541 Aug 10 22:05 fstab.test [root@localhost tmp]# |
rm
使用说明及格式
清楚文件或目录 rm [OPTION]… FILE… |
常见选项及说明
-f, –force 强行移除而不提示 -r, -R, –recursive 递归移除,移除文件及目录 |
使用示例
[root@localhost ~]# ls /tmp/ asd asdf b c f man test [root@localhost ~]# rm -rf /tmp/* [root@localhost ~]# ls /tmp/ [root@localhost ~]# |
注意
所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站) 不要直接删除用root账户 删除根 |
2.bash的工作特性之命令状态返回值和命令行展开所涉及的内容及其示例
bash的基础特性:
命令状态返回结果:
bash通过状态返回值来输出结果:
成功:0
失败:1-255
命令执行完毕后其状态返回值保存于bash的特殊变量"?"中
[root@localhost ~]# ls /tmp/ > /dev/null [root@localhost ~]# echo $? 0 [root@localhost ~]# lss /tmp/ &> /dev/null [root@localhost ~]# echo $? 127 |
3.命令行展开练习:
1.创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# ls /tmp/ [root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d} mkdir: created directory ‘/tmp/a_c’ mkdir: created directory ‘/tmp/a_d’ mkdir: created directory ‘/tmp/b_c’ mkdir: created directory ‘/tmp/b_d’ [root@localhost tmp]# ls /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
[root@localhost tmp]# mkdir -pv /tmp/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: created directory ‘/tmp/mylinux’ mkdir: created directory ‘/tmp/mylinux/bin’ mkdir: created directory ‘/tmp/mylinux/boot’ mkdir: created directory ‘/tmp/mylinux/boot/grub’ mkdir: created directory ‘/tmp/mylinux/dev’ mkdir: created directory ‘/tmp/mylinux/etc’ mkdir: created directory ‘/tmp/mylinux/etc/rc.d’ mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’ mkdir: created directory ‘/tmp/mylinux/lib’ mkdir: created directory ‘/tmp/mylinux/lib/modules’ mkdir: created directory ‘/tmp/mylinux/lib64’ mkdir: created directory ‘/tmp/mylinux/proc’ mkdir: created directory ‘/tmp/mylinux/sbin’ mkdir: created directory ‘/tmp/mylinux/sys’ mkdir: created directory ‘/tmp/mylinux/tmp’ mkdir: created directory ‘/tmp/mylinux/usr’ mkdir: created directory ‘/tmp/mylinux/usr/local’ mkdir: created directory ‘/tmp/mylinux/usr/local/bin’ mkdir: created directory ‘/tmp/mylinux/usr/local/sbin’ mkdir: created directory ‘/tmp/mylinux/var’ mkdir: created directory ‘/tmp/mylinux/var/lock’ mkdir: created directory ‘/tmp/mylinux/var/log’ mkdir: created directory ‘/tmp/mylinux/var/run’ [root@localhost tmp]# tree /tmp/mylinux/ /tmp/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 24 directories, 0 files |
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息
文件的元数据信息包括文件类型,权限,属主,属组,文件大小,时间戳
通过ls -l命令和stat命令等可以查看文件的元数据,touch命令可以修改时间戳信息
[root@localhost tmp]# ls -l /tmp/ total 4 drwxr-xr-x. 2 root root 6 Aug 23 21:11 a_c drwxr-xr-x. 2 root root 6 Aug 23 21:11 a_d drwxr-xr-x. 2 root root 6 Aug 23 21:11 b_c drwxr-xr-x. 2 root root 6 Aug 23 21:11 b_d drwxr-xr-x. 14 root root 4096 Aug 23 21:16 mylinux 第一位:文件类型:- d c b .. rwx:文件属主的权限 r-x:文件属组的权限 r-x:其他用户(非属主,属组)的权限 .:表示文件有隐藏属性 2:表是文件被硬连接的次数 root:第一个 文件的属主 root:第二个 文件的属组 4096 ,6:文件的大小(单位是字节) Aug 23 21:11 :最后一次被修改的时间 [root@localhost tmp]# stat a_c File: ‘a_c’ Size: 6 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 139650784 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-08-23 21:11:43.114677871 +0800 Modify: 2016-08-23 21:11:43.114677871 +0800 Change: 2016-08-23 21:11:43.114677871 +0800 Birth: – |
touch命令可以修改文件的时间戳,见上文示例 |
5.何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
通过alias可以设置命令别名
alias
使用说明及格式
查看及设置命令别名 alias(选项)(参数) |
使用示例
[root@localhost tmp]# alias alias cls='clear' alias cp='cp -i' [root@localhost tmp]# alias dd='reboot' [root@localhost tmp]# alias alias cls='clear' alias cp='cp -i' alias dd='reboot' |
注意
linux的机制: 直接在shell中使用命令alias是直接改入内存的,设置后立即生效,但是更随shell的生命周期 如果希望长期有效,可以把命令写入配置文件 .bashrc中,但是写入文件的情况下,配置不会立即生效 可以通过 . .bashrc 或者 source .bashr来生效 |
命令引用
通过$(COMMAND)
`COMMAND`
来使用命令引用的结果
[root@localhost tmp]# echo "$(cat /etc/issue)" \S Kernel \r on an \m [root@localhost tmp]# echo `cat /etc/issue` \S Kernel \r on an \m |
6.显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录?
[root@localhost tmp]# ls /var/l*[0-9]*[a-z] /var/l1l: /var/lbb3bl: |
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录?
[root@localhost tmp]# ls /etc/[[:digit:]]*[^[:digit:]] /etc/1xb: /etc/2xxb: |
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录?
[root@localhost tmp]# ls /etc/[^[:alpha:]][[:alpha:]]* /etc/1xb: /etc/2xxb: /etc/_test: |
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22?
[root@localhost tmp]# touch tfile-`date +%Y-%m-%d-%H-%M-%S` [root@localhost tmp]# ll -rw-r–r–. 1 root root 0 Aug 23 22:13 tfile-2016-08-23-22-13-06 |
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中?
ll /tmp/mytest1 &> /dev/null || mkdir /tmp/mytest1 ; \cp -rfv /etc/p*[^0-9] /tmp/mytest1 |
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中?
ll /tmp/mytest2 &> /dev/null || mkdir /tmp/mytest2 ; \cp -rfv /etc/*.d /tmp/mytest2 |
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中?
ll /tmp/mytest3 &> /dev/null || mkdir /tmp/mytest3 ; \cp -rfv /etc/[lmn]*.conf /tmp/mytest3 |
原创文章,作者:N22-苏州-striker,如若转载,请注明出处:http://www.178linux.com/39084
评论列表(1条)
下次注意标题要通顺,代码格式可以再规范一下,可以参考一下这个同学的做法:http://www.178linux.com/41567