①Linux文件管理命令常用方法
Linux常见文件类型
-:files,常规文件
d: directory,目录文件
b: block device,块设备文件
c:character device,字符设备文件
l:symbolic link,符号链接文件
p: pipe,命名管道
s: socket,套接字文件
命令管理工具指南:cp、rm、mv
1. cp(copy)复制:命令格式
单源复制:cp [OPTION]… [-T] SOURCE DEST
多源复制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
常用参数
-r:递归复制目录及其子目录内的所有内容
-a:相当于-dR –preserve=all
-p:保持指定文件的原有属性
-d:等于–no-dereference –preserve=links
-f:强制覆盖
当目标文件夹下有一个和源文件夹一样的同名文件,那么在操作这个cp命令时,系统会提示,如果想跳过这个直接加上f 就可以强制覆盖!
2. rm(Remove)删除,移除:命令格式
rm [OPTION]… FILE…
常用参数
-i:interactive (默认rm是‘rm -i’的别名)
-f:force
-r: recursive
-v:显示指令的详细过程
删除目录:rm -rf / #谨慎使用该命令 ^_^ 不要手贱
例1:删除home目录下的test里的所有文件,文件夹。
rm -rf /home/test
3. mv(move)剪切,重命名:命令格式
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用参数
-i: 交互式
-f: force
例1:将test重命名为TEST
mv test TEST
例2:将/home/test目录移动到/etc目录下
mv /home/test /etc
★注意:使用mv时候,请确认目标目录位置,mv在同一个硬盘分区上操作是inode号是不变的,
mv在同一个硬盘分区上操作是inode号是不变的,无论文件多大都很快,
是因为只是修改了文件对应的指针。跨分区是执行复制操作,所以很慢。
②bash的工作特性,相关示例
bash特性之一:命令别名
alias NAME='COMMAND'
bash的特性之二:命令历史
命令语法格式:
history [-c] [-d OFFSET] [n]
history -anrw [FILENAME]
history -ps VALUE [VALUE…]
常用参数
-c: 清空命令历史;
-d offset(偏移量):删除指定命令历史,offset为history显示出来的命令数字;
-r: 从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中;
history # 显示最近的#条命令;
bash特性之三:快捷键
Ctrl+a:跳转至命令行行首;
Ctrl+e:跳转至命令行行尾;
Ctrl+u:删除行首至光标所在处之间的所有字符;
Ctrl+k:删除光标所在处至行尾的所有字符;
Ctrl+l:清屏,相当于clear;
bash的特性之四:命令补全和路径补全
1.命令查找和补全机制:
(1) 查找内部命令;
(2) 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;
(3) 给定开头的部分字符串如果能惟一标识某命令程序文件,则直接补全;不能惟一标识某命令程序文件,再击tab键一次,会给出列表;
2.路径补全:
在给定起始路径下,以对应路径下的打头字串逐一匹配起始路径下每个文件:
TAB按键;如果能惟一标识,则直接补全;否则,再一次tab,给出列表;
3.命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:花括号展开。可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
bash的特性之五:命令行展开:
1)、命令行展开;
以某些bash能够解释的符号来代替命令中的某些参数。
~:展开为用户的家目录;
例1:切换至家目录
cd ~;pwd
/root
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径;
例2:在/tmp/d目录下创建f1,f2,f3三个文件
touch /tmp/d/f{1,2,3}
bash
bash特性之六:命令的执行状态结果:
1)、bash的基础特性之状态值返回:在bash中使用一个特殊的变量$?来保存上一个命令的执行状态结果。
0表示成功,
1-255表示失败
③ 使用命令行展开功能实现习题
1.创建tmp目录下的:a_c,a_d,b_c,b_d;
mkdir {a,b}{_c,_d}
2.创建/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 -p tmp/mylinux {{bin,dev,lib64,proc,sbin,sys,tmp,boot/grup,lib/modules,var/{lock,log,run},usr/local/{bin,sbin},etc/{rc.d/init.d,sysconfig/network-scripts}}}}
3. 文件的元数据信息有哪些?分别代表什么含义?如何查看?如何修改时间戳信息?
元数据信息:文件名称、属主属组、文件访问权限、uid、gid、三个时间戳(centos7是四个)、inode号等等
访问时间access time:读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。
修改时间modify time:修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。
状态改变时间change time:是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。
查看命令:stat filename
[root@localhost mylinux]# stat bin
File: ‘bin’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 71268759 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-12-12 15:19:52.198280184 +0800 //第一次的时间
Modify: 2016-12-12 15:19:42.192280550 +0800
Change: 2016-12-12 15:19:42.192280550 +0800
Birth: –
修改时间戳信息:touch [option] filename
touch命令:
touch – change file timestamps
touch [OPTION]… FILE…
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t 指定时间:[[CC]YY]MMDDhhmm[.ss]
[root@localhost mylinux]# touch -a bin //修改文件的访问时间
[root@localhost mylinux]# stat bin
File: ‘bin’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 71268759 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-12-12 15:48:10.714218002 +0800 //时间已经更新
Modify: 2016-12-12 15:19:42.192280550 +0800
Change: 2016-12-12 15:48:10.714218002 +0800
Birth:
[root@localhost mylinux]# touch -m bin //修改文件的编辑时间
Modify: 2016-12-12 15:57:33.883197385 +0800 //时间已经更新
4. 文件别名的定义,如何在命令中引用另一个命令的执行结果。
alias命令
alias NAME='COMMAND' //只对当前shell进程有效,结束后得重新来再次定义
unalias NAME //撤销别名
例子:
[root@localhost mylinux]# alias A='cd /home' //将A定义为使用cd 进入home目录
[root@localhost mylinux]# A //此时要进入home目录无需在cd /home,直接使用A即可
[root@localhost home]# //切换到home目录下
*引用命令的执行结果:使用$()或者 “*
④EXERCISE
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一个数字(可以有其他字符)的文件或目录
ls -d /var/l*[0-9]*[[:lower:]]
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
3、显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*
4、在/tmp目录下创建以tfile开头,后跟当前日期或时间的文件,文件名形如:tfile-2016-05-27-9-32-22
touch /tmp/tfile-$(date +%F-%H-%M-%S)
5、复制/etc目录下,所有以p开头,以非数字结尾的文件或目录至/tmp/mytest1目录
cp -a /etc/p*[^0-9] /tmp/mytest1
6、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mytest2目录下
cp -a /etc/*.d /tmp/mytest2
7、复制/etc目录下,所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录下
cp -r /etc/[lmn]*.conf /tmp/mytest3
原创文章,作者:Powercat,如若转载,请注明出处:http://www.178linux.com/63616