1、Linux上的文件管理类命令,其常用的使用方法及其相关示例演示。
ls:list(查看文件)
命令格式:
ls [OPTION]... [FILE]...
选项:
-a, --all: 显示所有文件,包括隐藏文件; -l: 长格式 -h, --human-readable:单位换算 -d: 显示目录自身的相关属性;通常要与-l一起使用; -r, --reverse: 逆序显示 -R, --recursive: 递归
示例:
[root@localhost ~]# ls /home/jobs/ 123.txt Documents grep.txt ignoredups Music Pictures scripts test_dsa_1024.pub Desktop Downloads id_rsa_2048.pub index.html perl5 Public Templates Videos
cp:copy(复制文件)
命令格式:
cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... cp SRC DEST SRC是文件: 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中; 如果目录存在: 如果DEST是文件:将SRC中的内容覆盖至DEST中; 此时建议为cp命令使用-i选项; 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中; cp SRC... DEST SRC...:多个文件 DEST必须存在,且为目录,其它情形均会出错; cp SRC DEST SRC是目录: 此时使用选项:-r 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中; 如果DEST存在: 如果DEST是文件:报错 如果DEST是目录:
选项:
-i:交互式 -r, -R: 递归复制目录及内部的所有内容; -a: 归档,相当于-dR --preserv=all -d:--no-dereference --preserv=links --preserv[=ATTR_LIST] mode:权限 ownership:属主属组 timestamp:时间戳 links:链接 xattr:属性 context:内容 all:全部 -p: --preserv=mode,ownership,timestamp -v: --verbose:显示已经完成的 -f: --force:强行
示例:
[root@localhost ~]# cp -r /etc /tmp/abc [root@localhost ~]# ls /tmp/abc/ abrt dracut.conf.d kderc opt securetty adjtime drirc kdump.conf os-release security...
mv:move(移动文件)
命令格式:
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
选项:
-i: 交互式 -f: 强制 -v: 显示已经完成的
示例:
[root@localhost ~]# mv /tmp/abc /home/jobs/ [root@localhost ~]# ls /home/jobs/abc/ abrt dracut.conf.d kderc opt securetty adjtime drirc kdump.conf os-release security...
rm:remove(删除文件)
命令格式:
rm [OPTION]... FILE...
选项:
-i: 交互式 -f: 强制删除 -r: 递归
示例:
[root@localhost ~]# rm -rf /home/jobs/abc [root@localhost ~]# ls /home/jobs/ 123.txt Documents grep.txt ignoredups Music Pictures scripts test_dsa_1024.pub Desktop Downloads id_rsa_2048.pub index.html perl5 Public Templates Videos
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
bash使用特殊变量$?保存最近一条命令的执行状态结果,0表示成功,1-255表示失败
示例:
成功示例: [root@localhost ~]# ls /home/jobs/ 123.txt Documents grep.txt ignoredups Music Pictures scripts test_dsa_1024.pub Desktop Downloads id_rsa_2048.pub index.html perl5 Public Templates Videos [root@localhost ~]# echo $? 0 ----------->成功 失败示例: [root@localhost ~]# cat /abc/ss.txt cat: /abc/ss.txt: No such file or directory [root@localhost ~]# echo $? 1 ----------->失败
命令行展开:
~: 展开为用户的主目录 ~USERNAME:展开为指定用户的主目录 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径
示例:
[root@localhost ~]# mkdir /tmp/{a,b,c} -------->执行过程相当于mkdir /tmp/a;mkdir /tmp/b;mkdir /tmp/c [root@localhost ~]# tree /tmp /tmp ├── a ├── b ├── c
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
mkdir {a,b}_{c,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 ~]# mkdir -p /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}} [root@localhost tmp]# tree 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
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
查看文件元数据信息:
命令格式:
stat [OPTION]... FILE...
示例:
[root@localhost ~]# stat /tmp/pass/ File: ‘/tmp/pass/’ ---->文件路径 Size: 6 Blocks: 0 IO Block: 4096 directory ---->文件大小、块、IO块、目录 Device: fd00h/64768d Inode: 203927352 Links: 2 ---->驱动、节点、链接 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) ---->访问权限、UID、GID Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-06-22 15:13:16.331862500 +0800 ---->access time:访问时间,简写为atime,读取文件内容 Modify: 2016-06-22 15:13:16.331862500 +0800 ---->modify time:修改时间,简写为mtime,改变文件内容(数据) Change: 2016-06-22 15:13:16.331862500 +0800 ---->change time:改变时间,简写为ctime,元数据发生改变 Birth: -
修改文件时间戳信息:
命令格式:
touch [OPTION]... FILE...
选项:
-a: only atime:只修改访问时间 -m: only mtime:只修改修改时间 -t STAMP:[[CC]YY]MMDDhhmm[.ss]:使用[[CC]YY]MMDDhhmm[.ss]替换全部时间 -c: 如果文件不存,则不予创建
示例:
[root@localhost ~]# stat /tmp/pass/ File: ‘/tmp/pass/’ Size: 6 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 203927352 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-06-22 15:13:16.331862500 +0800 ---->修改访问时间之前 Modify: 2016-06-22 15:13:16.331862500 +0800 Change: 2016-06-22 15:13:16.331862500 +0800 Birth: - [root@localhost ~]# touch -a /tmp/pass/ ---->修改访问时间 [root@localhost ~]# stat /tmp/pass/ File: ‘/tmp/pass/’ Size: 6 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 203927352 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-06-22 15:28:51.060845953 +0800 ---->修改访问时间之后 Modify: 2016-06-22 15:13:16.331862500 +0800 Change: 2016-06-22 15:28:51.060845953 +0800 Birth: -
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
定义别名alias
命令格式:
alias [alias-name[=string] ...]
示例:
[root@localhost ~]# alias cdnet='cd /etc/sysconfig/network-scripts/' [root@localhost ~]# cdnet [root@localhost network-scripts]# pwd /etc/sysconfig/network-scripts
撤销别名使用unalias
引用另一个命令的执行结果:管道、变量、“
“管道”示例:
[root@localhost ~]# cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin dockerroot:x:983:978:Docker User:/var/lib/docker:/sbin/nologin
“变量”示例:
[root@localhost ~]# abc=$(cat /etc/fstab) [root@localhost ~]# echo $abc # # /etc/fstab # Created by anaconda on Fri Mar 11 22:14:07 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=73822afe-bc0 0-431b-8851-0151d8054a67 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 [root@localhost ~]# [root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Mar 11 22:14:07 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=73822afe-bc00-431b-8851-0151d8054a67 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0
““”示例:
[root@localhost ~]# echo `uname -r` 3.10.0-327.el7.x86_64
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
[root@localhost ~]# ls /var | grep "^[1].*[0-9].*[[:lower:]]" 1ss5ss [root@localhost ~]# ls /var 1ss5ss adm crash empty games kerberos local log named opt run target www account cache db ftp gopher lib lock mail nis preserve spool tmp yp
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@localhost ~]# ls /etc | grep "^[[:digit:]].*[^[:digit:]]\>" 1aa 1ab 1ac 1ad (结果显示的文件是我自己在/etc目录下创建的,只是为了验证正则表达式是否正确)
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@localhost ~]# ls /etc | grep "^[^[:alpha:]][[:alpha:]].*" 1aa 1ab 1ac 1ad (结果显示的文件是我自己在/etc目录下创建的,只是为了验证正则表达式是否正确)
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S) [root@localhost ~]# ls /tmp/ | grep tfile.* tfile-2016-06-22-16-03-58
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1/ [root@localhost ~]# ls /tmp/mytest1/ pam.d pbm2ppa.conf pcp.env pear.conf pinforc pm portreserve prelink.conf.d profile.d purple passwd pcp pcp.sh php.d pki pnm2ppa.conf postfix printcap protocols python passwd- pcp.conf pear php.ini plymouth popt.d ppp profile pulse
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2/ [root@localhost ~]# ls /tmp/mytest2 ant.d dnsmasq.d ld.so.conf.d pam.d rc3.d rwtab.d xinetd.d auto.master.d dracut.conf.d libibverbs.d php.d rc4.d sane.d yum.repos.d bash_completion.d exports.d logrotate.d popt.d rc5.d setuptool.d binfmt.d gdbinit.d lsb-release.d prelink.conf.d rc6.d statetab.d cgconfig.d grub.d modprobe.d profile.d rc.d sudoers.d chkconfig.d init.d modules-load.d rc0.d reader.conf.d sysctl.d cron.d ipsec.d my.cnf.d rc1.d request-key.d tmpfiles.d depmod.d latrace.d oddjobd.conf.d rc2.d rsyslog.d usb_modeswitch.d
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@localhost ~]# cp -r /etc/[1,m,n]*.conf /tmp/mytest3 [root@localhost ~]# ls /tmp/mytest3 man_db.conf mke2fs.conf mtools.conf named.conf nfsmount.conf nsswitch.conf ntp.conf numad.conf
原创文章,作者:Anaconda,如若转载,请注明出处:http://www.178linux.com/19423
评论列表(1条)
写的很棒,并且有案例作为辅助说明,有没有尝试过第10题以数字结尾会不会也复制过去