Table of Contents
1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
目录管理
cd
cd # 回到当前用户的主目录cd ~USERNAME # 切换至指定用户的主目录cd - # 在上一个目录和当前目录之间来回切换
-
相关的环境变量
-
PWD: 保存了当前的目录路径
-
OLDPWD: 上一次所在目录路径
mkdir, rmdir
mkdir [OPTION]... /path/to... # 创建目录 -p: 当目录存在时不报错,且可自动创建所需的各目录; -v: 显示详细信息 -m MODE: 创建目录时直接指定权限;
rmdir [OPTION]... /path/to... # 只能删除空目录 -p: 层级删除空目录 -v: 显示详细信息
ls
显示指定路径下的文件列表
ls [OPTION]... [DIR]... -a, --all: 显示所有文件,包括隐藏文件 -l: 长格式 -h, --human-readable: 单位换算 -d: 显示目录自身的相关属性;通常要与-l一起使用; -r, --reverse: 逆序显示 -R, --recursive: 递归
-
其中 -rw-r–r– 最左侧的一位表示文件类型
tree
列出目录的层级结构
tree /path/to -d: 只显示目录 -L level: 指定显示的层级数目 -P pattern: 只显示由指定pattern匹配到的路径;
文件管理
cp
通过文件接口复制
cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... -i: 交互式 -r, -R: 递归复制目录及内部的所有内容; -a: 归档,相当于-dr --preserv=all -d: 不跟踪符号文件链接(默认会跟踪复制原文件) --preserv[=ATTR_LIST]: 保留属性 ATTR_LIST: mode,ownership,timestamp,links,xattr,context,all -p: --preserv=mode,ownership,timestamp -v: 显示详细信息verbose -f: --force
-
cp SRC DEST
-
如果DEST是文件: 将SRC中的内容覆盖到DEST中(使用-i以确认)
-
如果DEST是目录: 将SRC复制到该目录下
-
如果目标不存在: 新建DEST,并将SRC中内容填充到DEST中
-
如果目标存在:
-
cp SRC… DEST
-
DEST必须存在,且为目录
-
cp -r 目录SRC DEST
-
如果目标不存在: 新建DEST目录,复制SRC中所有文件至DEST中
-
如果DEST存在且为目录: 在DEST中创建与SRC同名的目录,复制SRC中的所有文件至该目录中
dd
比较底层的复制命令,可用于文件或磁盘的复制
dd [OPTIONS] if=/PATH/SRC of=/PATH/DEST bs=NUM: block size, 复制单元的大小 count=NUM: 复制多少个bs dd if=/dev/sda of=/dev/sdb # 复制磁盘dd if=/dev/sda of=/... bs=512 count=1 # 备份MBRdd if=/dev/zero of=/dev/sda bs=256 count=1 # 破坏MBR的bootloader
mv
移动文件或目录,也可以用于重命名
mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... -i: 交互式 -f: 强制
rm
删除文件或目录
rm [OPTION]... FILE... -i: 交互式 -f: 强制删除 -r: 递归删除目录
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
命令返回值
脚本返回值
exit [n] # 终止脚本,退出码为n(默认为0)
-
如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码
查询返回值
echo $? # 通过查询?变量可以知道上个命令的执行结果
-
通常命令成功的返回值是0
命令或路径补全和展开
-
直接补全: 用户给定的字符串只有一条惟一对应的命令或路径,则按TAB直接补全
-
补全列表: 对应的命令或路径不唯一,按两次TAB会给出列表
-
{}: 可承载一个以逗号分隔的列表,并将其展开为多个路径,可嵌套使用
-
/tmp/{a,b}_{x,y}
-
/tmp/{bin,sbin,usr/{bin,sbin}}
-
{start..end}: 可以生成一个顺序列表, 但这种方式很占内存
-
user{1..3}: 相当于
user1 user2 user3
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b
mkdir /tmp/{a_{c,d},b_c,b}
(2)、创建/tmp/mylinux目录下的:
mkdir -p 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、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
文件的元数据
-
文件权限
-
文件Inode号
-
文件数据块的分布信息
-
文件属主和属组
-
access time: 访问时间,简写为atime,读取文件内容
-
modify time: 修改时间, mtime,改变文件内容(数据)
-
change time: 改变时间, ctime,元数据发生改变(包含时间戳的改变)
stat file_name # 查看文件的原数据
修改文件时间戳
touch [OPTION]... FILE... # 改变文件时间戳或创建文件 -a: only atime # touch默认把3个时间都改为当前时间 -m: only mtime -t [[CC]YY]MMDDhhmm[.ss]: 指定时间 -c: 不自动创建空文件
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
命令别名(alias)
alias # 显示当前shell进程所有可用的命令别名alias NAME='VALUE' # 定义命令别名NAME# 如果要永久生效需要写入bash配置文件中
unalias [-a] name... -a: 撤销所有别名
-
如果要忽略别名执行原命令的话,可使用
\COMMAND
引用命令结果
-
在命令中使用
`COMMAND`
-
在命令中使用
$(COMMAND)
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls /var | grep "^l.*[0-9].*[[:lower:]]$"
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls /etc | grep "^[0-9].*[^0-9]$"
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls /etc | grep "^[^[:alpha:]][[:alpha:]].*"
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-`date +%F-%H-%M-%S`
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
mkdir /tmp/mytest1 cp -r /etc/p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
mkdir /tmp/mytest2 cp -r /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
mkdir /tmp/mytest3 cp /etc/[lmn]*.conf /tmp/mytest3
原创文章,作者:Net20_木皮,如若转载,请注明出处:http://www.178linux.com/18646
评论列表(1条)
写的很棒,案例也比较多,但是不要把课上的比较直接贴过来