1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
cp,mv,rm
cp:复制文件或目录
如果目标不存在:则新建目标,并保存内容到目标
如果目录存在:
如果目标是文件,就是覆盖原来内容,此时建议选择-i参数(-i交互提醒)
如果是目录:在目标下新建与源文件同名的文件,并保存原内容
如果复制多个文件,目标必须存在且一定要为目录才能成功
cp默认是不能递归复制目录的,要加-r或-R参数才可以
常用参数:
-a:-a 或 --archive 此参数的效果和同时指定"-dpR"参数相同
-i:-i或 --interactive 覆盖文件之前先询问用户
-f:-f或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-R:-R或-r或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
-v:-v或 --verbose 显示执行过程
-p:-p或 --preserve 保留源文件或目录的属性,包括所有者、所属组、权限与时间
-d:-d或--no-dereference 不追踪符号链接 --preserve=links
--preserv[=attr_list]
mode:权限
ownership:属主属组
timestamps: 时间戳
links:链接属性
xattr:扩展属性
conttxt:安全上下文
all:所有
用法:
cp file /dir1 目录下复制文件
cp file1 /file2 /dir1 把两个文件复制到目录下
cp -r dir1 /dir2 把1目录下的所有文件或目录复制到2目录
cp -f file1 /etc/file1 强行覆盖文件
其他的用法都是结合实际需求的参数来配合使用。
mv:移动或改名文件
如果源是单个文件:
如果目标不存在:创建至指定的目标,并填充内容到目标
如果目标存在:
目标是文件:则覆盖目标内容
目标是目录:移动到目录目标下
目标和源在同一路径下,则是重命名
常用参数:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件已经存在时,就会询问是否覆盖!
mv /file1 /file2 把文件1改名文件2
mv /file1 /etc/ 把文件1移动到etc下叫文件1
mv /file1 /etc/file2 把文件1移动到etc下改名叫文件2
mv /file1 -b /etc/file1 先在etc下备份file1,再覆盖file1文件。
mv /dir1 /dir2 如果目录2存在,则是把目录1移动到目录2,目录2不存在,则是把目录1改名为目录2
rm:删除文件和目录
rm 默认是删除文件或空目录,删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。
常用参数:
-f: --force 忽略不存在的文件,从不给出提示。
-i:--interactive 进行交互式删除
-r:-R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v:--verbose 详细显示进行的步骤
rm /file 询问是否删除file(默认就带-i的功能)
rm /dir 删除空目录
rm -r /dir 如果,不是空目录就有加-r
rm -rf /dir 直接删除,不提示交互
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
命令行展开:
~:展开用户的主目录
~USER:展开指定用户的主目录
{}:可承载一个一逗号分隔的列表,并将其展开为多个路径
[root@mageedu /]# cd tmp/
[root@mageedu tmp]# ls
[root@mageedu tmp]# touch /tmp/{a,b}
[root@mageedu tmp]# ls
a b
---------------------------------------------
[root@mageedu tmp]# mkdir -pv /tmp/{mage,tom,jay}/aa
mkdir: created directory `/tmp/mage‘
mkdir: created directory `/tmp/mage/aa‘
mkdir: created directory `/tmp/tom‘
mkdir: created directory `/tmp/tom/aa‘
mkdir: created directory `/tmp/jay‘
mkdir: created directory `/tmp/jay/aa‘
----------------------------------------------------------
命令的执行状态:成功和失败
bash 使用特殊变量$?保存最近一条执行命令的状态结果
echo $?
0:成功
1-255:失败
[root@mageedu tmp]# rm -rf /tmp/
[root@mageedu tmp]# echo $?
0
[root@mageedu tmp]# caat a.txt
-bash: caat: command not found
[root@mageedu tmp]# echo $?
127
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
mkdir -pv /tmp/{a,b}_{c,d}
mkdir: created directory `/tmp‘
mkdir: created directory `/tmp/a_c‘
mkdir: created directory `/tmp/a_d‘
mkdir: created directory `/tmp/b_c‘
mkdir: created directory `/tmp/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@mageedu 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/lock‘
mkdir: created directory `/tmp/mylinux/log‘
mkdir: created directory `/tmp/mylinux/run‘
----------------------------------------------------------------------------------
验证:
[root@mageedu tmp]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│?? └── grub
├── dev
├── etc
│?? ├── rc.d
│?? │?? └── init.d
│?? └── sysconfig
│?? └── network-scripts
├── lib
│?? └── modules
├── lib64
├── lock
├── log
├── proc
├── run
├── sbin
├── sys
├── tmp
├── usr
│?? └── local
│?? ├── bin
│?? └── sbin
└── var
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元
数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据
块的分布信息等等。
查看文件状态:stat命令
touch命令可修改文件时间戳信息
-a :只改访问时间
-m:只改修改时间
-t 指明时间点CCYYMMDDhhmm[.ss]
-c:如果文件不存在,则不创建
--------------------------------
创建文件:
[root@mageedu tmp]# ls
[root@mageedu tmp]# touch a
[root@mageedu tmp]# touch -c b
[root@mageedu tmp]# ls
a
--------------------------------
修改文件访问时间
[root@mageedu tmp]# stat a
File: `a‘
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050dInode: 524291 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-08-12 21:22:08.861963687 +0800
Modify: 2016-08-12 21:15:37.070959805 +0800
Change: 2016-08-12 21:22:08.861963687 +0800
-----------------------------------------------------------------
[root@mageedu tmp]# stat a
File: `a‘
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050dInode: 524291 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-08-12 21:22:08.861963687 +0800
Modify: 2016-08-12 21:15:37.070959805 +0800
Change: 2016-08-12 21:22:08.861963687 +0800
[root@mageedu tmp]# touch -a a
[root@mageedu tmp]# stat a
File: `a‘
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050dInode: 524291 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-08-12 21:23:46.121953998 +0800
Modify: 2016-08-12 21:15:37.070959805 +0800
Change: 2016-08-12 21:23:46.121953998 +0800
--------------------------------------------------------------------------
指定时间
[root@mageedu tmp]# stat a
File: `a‘
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050dInode: 524291 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-08-12 21:23:46.121953998 +0800
Modify: 2016-08-12 21:15:37.070959805 +0800
Change: 2016-08-12 21:23:46.121953998 +0800
[root@mageedu tmp]# touch -t 201607122128.06 a
[root@mageedu tmp]# stat a
File: `a‘
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050dInode: 524291 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-07-12 21:28:06.000000000 +0800
Modify: 2016-07-12 21:28:06.000000000 +0800
Change: 2016-08-12 21:26:53.277942762 +0800
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
通过alias命令实现
(1)alias 显示当前shell进程的所有的可用别名;
(2)alias name=value 定义命令别名
在命令行定义的别名,仅对当前shell进程有效,如果想永久有效,要定义在配置文件中,编辑配置文件不能立即生效,但读取后是永久,命令行是立即生效,但是只当前有效
bash的配置文件:
仅对当前用户:./bashrc
对所有用户有效:/etc/bashrc
定义别名:
[root@mageedu ~]# alias yumm=‘cd /etc/yum.repos.d/‘
[root@mageedu ~]# yumm
[root@mageedu yum.repos.d]# pwd
/etc/yum.repos.d
[root@mageedu yum.repos.d]#
命令的引用:
管道命令
command1 | command2 | command3 | ...
最后一个命令会在当前的shell进程的子进程中执行
[root@mageedu yum.repos.d]# cat /etc/passwd | head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
root@mageedu var]# ls
0aSD000 AAaa11 empty lock opt tmp
17787865aaaMMMxxCC cache games log preserve yp
1xDFAkk8DDDaa crash lib mail run
aA1 db local nis spool
[root@mageedu var]# ls -d /var/1*[0-9]*[[:lower:]]
/var/1xDFAkk8DDDaa
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@mageedu etc]# ls -d /etc/[0-9]*[^0-9]
/etc/123adc
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@mageedu etc]# ls -d /etc/[^[[:alpha:]][[:alpha:]]*
/etc/1aXXXdd
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
root@mageedu ~]# cd /tmp/
[root@mageedu tmp]# ls
[root@mageedu tmp]# touch tfile-`date +%Y-%m-%d-%H-%M-%S`
[root@mageedu tmp]# ls
tfile-2016-08-12-23-48-44
------------------------------------------------------------------
[root@mageedu tmp]# touch tfile-"$(date +%Y-%m-%d-%H-%M-%S)"
[root@mageedu tmp]# ls
tfile-2016-08-12-23-48-44 tfile-2016-08-12-23-50-33
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
root@mageedu tmp]# cp -r /etc/p*[^0-9] /tmp/mytest1
[root@mageedu tmp]# cd mytest1/
[root@mageedu mytest1]# ls
pam.d passwd- plymouth popt.d ppp printcap profile.d
passwd pki pm postfix prelink.conf.d profile protocols
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@mageedu tmp]# mkdir mytest2
[root@mageedu tmp]# cp -r /etc/*.d /tmp/mytest2/
[root@mageedu tmp]# cd mytest2
[root@mageedu mytest2]# ls
bash_completion.d ld.so.conf.d prelink.conf.d rc4.d statetab.d
chkconfig.d logrotate.d profile.d rc5.d sudoers.d
cron.d makedev.d rc0.d rc6.d sysctl.d
depmod.d modprobe.d rc1.d rc.d xinetd.d
dracut.conf.d pam.d rc2.d rsyslog.d yum.repos.d
init.d popt.d rc3.d rwtab.d
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@mageedu mytest3]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3/
[root@mageedu mytest3]# ls
ld.so.conf libuser.conf mke2fs.conf
libaudit.conf logrotate.conf nsswitch.conf
本文出自 “给自己充电” 博客,请务必保留此出处http://zengzeyang.blog.51cto.com/6129531/1837723
原文地址:http://zengzeyang.blog.51cto.com/6129531/1837723