第二周作业
1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示
目录管理管理类命令
mkdir
make directories
mkdir [OPTION]... DIRECTORY... 注意:路径基名作为命令的作用对象时,基名之前的路径必须要存在; -p:自动按需创建父目录; -v:--verbose,显示详细过程; -m MODE:直接给定权限; [root@localhost ~]# mkdir -pv /tmp/mylinux/etc/sysconfig/network-scripts mkdir: created directory ‘/tmp/mylinux’ mkdir: created directory ‘/tmp/mylinux/etc’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’
rmdir
remove empty directories
rmdir [OPTION]... DIRECTORY... -p:删除目录后,如果其父目录为空,则一并删除; -v:显示详细过程; [root@localhost ~]# rmdir -pv /tmp/mylinux/etc/sysconfig/network-scripts/ rmdir: removing directory, ‘/tmp/mylinux/etc/sysconfig/network-scripts/’ rmdir: removing directory, ‘/tmp/mylinux/etc/sysconfig’ rmdir: removing directory, ‘/tmp/mylinux/etc’ rmdir: removing directory, ‘/tmp/mylinux’ rmdir: removing directory, ‘/tmp’ rmdir: failed to remove directory ‘/tmp’: Directory not empty
文件管理类命令
cp
copy files and directories
单源复制: cp [OPTION]... [-T] SOURCE DEST 如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中; 如果DEST存在: 如果DEST是非目录文件,则覆盖目标文件; 如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流; 多源复制: cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 如果DEST不存在,则发生错误; 如果DEST存在: 如果DEST是非目录文件,则发生错误; 如果DEST是目录文件,则分别复制每个文件至目标目录中,并保持原名; -i:交互式复制,即在覆盖之前提醒用户确认; -f:强制覆盖目标文件; -r/R:递归复制(recursive); -d:复制符号链接本身,而非其指向的源文件; --preserve[=ATTR_LIST] mode:权限; ownership:属主和属组; timestamps:时间戳; context:安全标签; links:符号链接; xattr:扩展属性; all:上述所有属性; -a:-dR --preserve=all,用于实现归档(archieve); [root@localhost ~]# cp /etc/hosts /tmp/host [root@localhost ~]# cp -r /var/log/ /tmp/
mv
move (rename) files
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... -i:交互式(interactive); -f:强制移动(force); [root@localhost ~]# mv /tmp/host /tmp/hosts
rm
remove files or directories
rm [OPTION]... FILE... -i:交互式; -f:强制删除; -r:递归删除(删除目录:rm -rf /PATH/TO/DIR); 注意:危险操作:rm -rf /*; 所有不用的文件建议不要直接删除,而是先移动至某个专用目录(模拟回收站); [root@localhost ~]# rm -rf /tmp/log/
文件查看类命令
ls
list directory contents
ls [OPTION]... [FILE]... -a:显示所有文件,包括隐藏文件; -A:显示除.和..之外的所有文件; -l:--long,长格式列表,显示文件的详细属性; -h:--human-readable,显示文件大小换算后的值; -d:查看目录本身而非其内部的文件列表; -r:逆序显示(reverse); -R:递归显示(recursive); [root@localhost ~]# ls -l /etc/issue -rw-r--r--. 1 root root 23 Dec 9 2015 /etc/issue 注意:文件属性信息详解: -:文件类型 -:常规文件,即f; d:directory,目录文件; b:block device,块设备文件,支持以“block”为单位进行随机访问; c:character device,字符设备文件,支持以“character”为单位进行线性访问; major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序; minor number:次设备号,用于标识同一类型中的不同设备; l:symbolic link,符号链接文件; p:pipe,命名管道; s:socket,套接字文件; rw-r--r--:文件权限 rw-:文件属主的权限; r--:文件属组的权限; r--:其他用户(非属主、属组)的权限;1:使用数字表示文件被硬链接的次数; root:文件的属主; root:文件的属组; 23:数字表示文件的大小,单位是字节; Dec 9 2015:文件最近一次被修改的时间; /etc/issue:文件名;
file
determine file type
file FILE [root@localhost ~]# file /etc/issue /etc/issue: ASCII text [root@localhost ~]# file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped [root@localhost ~]# file /var/log/wtmp /var/log/wtmp: data 注意:file命令将文件分为以下三类: 文本文件(ASCII):包含可打印字符的文件; 可执行文件(binary):可以在系统运行的文件; 数据文件(data):包含不可打印的二进制字符的文件,但也不可以在系统运行;
cat
concatenate files and print on the standard output
连接并显示文件
cat [OPTION]... [FILE]... -n:显示行号; -E:显示行结束符; [root@localhost ~]# cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt ...(此处省略) [root@localhost ~]# cat /etc/issue /etc/fstab \S Kernel \r on an \m # # /etc/fstab # Created by anaconda on Sun Aug 21 23:55:20 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 # UUID=3a80cc61-a45f-433f-992e-21e32ae89bcb / xfs defaults 0 0 UUID=4e2eb638-558e-4c6c-ae13-b0820a99acfe /boot xfs defaults 0 0 UUID=f6900d6b-f21f-4a13-953d-4d969aa0b845 /home xfs defaults 0 0 UUID=57d73846-3f09-4d1f-bfa4-57bace5fedc0 swap swap defaults 0 0
tac
concatenate and print files in reverse
是tac的反向显示;
tac [OPTION]... [FILE]... [root@localhost ~]# tac /etc/issue Kernel \r on an \m \S
head
output the first part of files
查看文件的前n行,默认为前10行;
head [OPTION]... [FILE]... -#:查看前#行; [root@localhost ~]# head -5 /etc/passwd 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
tail
output the last part of files
tail [OPTION]... [FILE]... -#:查看后#行; -f:查看文件尾部内容后不退出,跟踪显示新增的行(Ctrl+c退出); [root@localhost ~]# tail -f /var/log/messages ...(此处省略) Aug 30 06:01:02 localhost systemd: Starting Session 3 of user root. Aug 30 07:01:01 localhost systemd: Started Session 4 of user root. Aug 30 07:01:01 localhost systemd: Starting Session 4 of user root. (光标停在此处)
more
file perusal filter for crt viewing
文件分屏查看,翻屏至文件尾部后自动退出;
more file
less
opposite of more
more file [root@localhost ~]# less /etc/rc.d/init.d/functions 注意:其具体的上下翻页、查询、退出等操作同使用man命令查看手册的操作;
2.bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其演示
命令执行状态返回值
bash通过状态返回值来输出此结果:
-
成功:0
-
失败:1-255
注意:命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
命令正常执行时,有的还会有命令返回值,根据命令及其功能的不同,其结果各不相同;
命令行展开
-
~:自动展开为用户家目录,或指定的用户家目录;
-
{ }:可承载一个以逗号分割的路径列表,并能够将其展开为多个路径;
3.请使用命令行展开功能来完成以下练习
1).创建/tmp目录下的:a_c,a_d,b_c,b_d
[root@localhost ~]# mkdir -v /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’
2).创建/tmp/mylinux目录如下
[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 ~]# 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.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间信息
Linux系统的文件由3个部分组成:
-
数据(data):指普通文件中的实际数据;
-
元数据(metadata):指用来描述一个文件特征的系统数据,保存在inode中;
-
目录项(directory entry):保存文件名;
文件的元数据信息及其含义如下:
Size:文件大小;
Blocks/IO Block:单位块大小/块的数量,二者乘积即为文件大小;
Device:设备号;
Access:文件类型与访问权限;
Uid:文件所有者及其ID;
Gid:文件所属组及其ID;
Links:文件硬链接次数,即文件名指向inode节点的数量;
atime:access time,文件被访问的时间;
mtime:modify time,文件被修改的时间;
ctime:change time,文件被改变的时间,即inode节点信息被改变的时间;
Birth:文件被创建的时间;
查看文件元数据信息一般使用stat命令,而修改文件的时间信息一般用touch命令;
stat
display file or file system status
stat FILE [root@localhost ~]# stat /etc/issue File: ‘/etc/issue’ Size: 23 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 33595545 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:etc_t:s0 Access: 2016-08-28 04:20:26.763999574 +0800 Modify: 2015-12-09 17:59:15.000000000 +0800 Change: 2016-08-21 23:55:30.405994623 +0800 Birth: -
touch
change file timestamps
touch [OPTION]... FILE... -c:指定的文件路径不存在时不予创建; -a:仅修改access time; -m:仅修改modify time; -t STAMP:使用[[CC]YY]MMDDhhmm[.ss]格式; [root@localhost ~]# touch /tmp/hello.txt
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果
命令别名的定义与取消分别使用alias和unalias命令;
alias
Define or display aliases
[root@localhost ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@localhost ~]# alias cls='clear' 注意:使用alias命令定义的别名仅对当前shell进程有效;
unalias
Remove each NAME from the list of defined aliases
[root@localhost ~]# unalias cls
引用命令的执行结果有以下两种形式:
-
$(COMMAND)
-
`COMMAND`
[root@localhost ~]# echo $(pwd)/root [root@localhost ~]# echo `pwd`/root
6.显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录
[root@localhost ~]# ls -d /var/l*[0-9]*[[:lower:]]
7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]
8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
[root@localhost ~]# ls -d /etc/[^a-z][a-z]*
9.在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:/tfile-2016-05-27-09-32-22
[root@localhost ~]# touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
[root@localhost ~]# mkdir /tmp/mytest1 [root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1/
11.复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
[root@localhost ~]# mkdir /tmp/mytest2 [root@localhost ~]# cp -r /etc/*.d /tmp/mytest2
12.复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
[root@localhost ~]# mkdir /tmp/mytest3 [root@localhost ~]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3
原创文章,作者:baron,如若转载,请注明出处:http://www.178linux.com/43325