1,Linux 上的文件管理类命令, 其常用的使用方法及其相关示例演示.
ls: 显示目录内容
ls [OPTION]... [FILE]...
-a: 显示所有文件, 包括隐藏文件;
-A: 显示除. 和.. 之外的所有文件;
-l: --long, 长格式列表, 即显示文件的详细属性信息;
-h, --human-readable: 对文件大小单位换算; 换算后结果可能会非精确值;
-d: 查看目录自身而非其内部的文件列表;
-r: reverse, 逆序显示;
-R: recursive, 递归显示;
示例:
- # ls -l
- total 32
- lrwxrwxrwx. 1 root root 7 May 7 05:46 bin -> usr/bin
- dr-xr-xr-x. 4 root root 4096 May 7 05:54 boot
- drwxr-xr-x. 20 root root 3120 May 23 05:06 dev
- drwxr-xr-x. 75 root root 8192 May 23 14:46 etc
... 略 ...
cd: 将当前工作目录切换至指定目录
cd [/PATH/TO/SOMEDIR]
cd: 切换回家目录;
cd ~: 切换回自己的家目录
cd ~USERNAME: 切换至指定用户的家目录;
cd -: 在上一次所在目录与当前目录之间来回切换;
相关的环境变量
$PWD: 当前工作目录
$OLDPWD: 上一次的工作目录
示例:
- [root@localhost /]# cd /etc/sysconfig/
- [root@localhost sysconfig]#
cp: 复制文件或目录
源文件; 目标文件;
单源复制: cp [OPTION]... [-T] SOURCE DEST
多源复制: cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
单源复制: 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: 递归复制目录;
-d: 复制符号链接文件本身, 而非其指向的源文件;
-a:-dR --preserve=all, archive, 用于实现归档;
--preserv=
mode: 权限
ownership: 属主和属组
timestamps: 时间戳
context: 安全标签
xattr: 扩展属性
links: 符号链接
all: 上述所有属性
示例:
- [root@localhost sysconfig]# cp -r /tmp/mytest1 /tmp/null
- [root@localhost sysconfig]# ls -R /tmp/null
- /tmp/null:
- mytest1 pki
- /tmp/null/mytest1:
- pki
- /tmp/null/mytest1/pki:
- ca-trust
... 略 ...
mv: 移动文件或目录
- mv [OPTION]... [-T] SOURCE DEST
- mv [OPTION]... SOURCE... DIRECTORY
- mv [OPTION]... -t DIRECTORY SOURCE..
常用选项:
-i: 交互式;
-f:force
示例:
- [root@localhost sysconfig]# mv -f /tmp/mytest2 /tmp/null
- [root@localhost sysconfig]# ls -R /tmp/null/mytest2
- /tmp/null/mytest2:
- ld.so.conf.d
- /tmp/null/mytest2/ld.so.conf.d:
- kernel-3.10.0-229.el7.x86_64.conf
pwd: 显示工作目录
$PWD: 当前工作目录
$OLDPWD: 上一次的工作目录
示例:
- [root@localhost sysconfig]# pwd
- /etc/sysconfig
rm: 删除文件或目录
rm [OPTION]... FILE...
常用选项:
- -i:interactive
- -f:force
- -r: recursive
删除目录: rm -rf /PATH/TO/DIR
危险操作: rm -rf /*
注意: 所有不用的文件建议不要直接删除, 而是移动至某个专用目录;(模拟回收站)
示例:
rmidr: 删除空目录
rmdir [OPTION]... DIRECTORY...
-p: 删除某目录后, 如果其父目录为空, 则一并删除之;
-v: 显示过程;
chgrp: 改变文件属主和属组
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意: 仅管理员可修改文件的属主和属组;
chmod: 改变文件访问权限
- chmod [OPTION]... MODE[,MODE]... FILE...
- chmod [OPTION]... OCTAL-MODE FILE...
- chmod [OPTION]... --reference=RFILE FILE...
三类用户:
u: 属主
g: 属组
o: 其它
a: 所有
(1) chmod [OPTION]... MODE[,MODE]... FILE...
MODE 表示法:
赋权表示法: 直接操作一类用户的所有权限位 rwx;
- u=
- g=
- o=
- a=
授权表示法: 直接操作一类用户的一个权限位 r,w,x;
- u+, u-
- g+, g-
- o+, o-
- a+, a-
- (2) chmod [OPTION]... OCTAL-MODE FILE...
- (3) chmod [OPTION]... --reference=RFILE FILE...
选项:
-R, --recursive: 递归修改
注意: 用户仅能修改属主为自己的那些文件的权限;
chown: 改变文件的所有者和所属工作组
- chown [OPTION]... [OWNER][:[GROUP]] FILE...
- chown [OPTION]... --reference=RFILE FILE...
选项:
-R: 递归修改
- mkdir
- mkdir [OPTION]... DIRECTORY...
-p: 自动按需创建父目录;
-v: verbose, 显示详细过程;
-m MODE: 直接给定权限;
注意: 路径基名方为命令的作用对象; 基名之前的路径必须得存在;
- whereis
- whereis - locate the binary, source, and manual page files for a command
whereis [options] name...
-b: 仅搜索二进制程序路径;
-m: 仅搜索使用手册文件路径;
- which
- which - shows the full path of (shell) commands
- which [options] programname [...]
--skip-alias: 忽略别名
- file
- touch
- touch - change file timestamps
- touch [OPTION]... FILE...
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改 access time;
-m: 仅修改 modify time;
- -t STAMP
- [[CC]YY]MMDDhhmm[.ss]
2,bash 的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示.
bash 的基础特性: 命令的执行状态结果
命令执行的状态结果:
bash 通过状态返回值来输出此结果:
成功: 0
失败: 1-255
命令执行完成之后, 其状态返回值保存于 bash 的特殊变量 $? 中;
命令正常执行时, 有的还会有命令返回值:
根据命令及其功能不同, 结果各不相同;
引用命令的执行结果:
$(COMMAND)
或 `COMMAND`
bash 的基础特性之: 命令行展开
~: 自动展开为用户的家目录, 或指定的用户的家目录;
{}: 可承载一个以逗号分隔的路径列表, 并能够将其展开为多个路径;
例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b
3, 请使用命令行展开功能来完成以下练习:
(1), 创建 / tmp 目录下的: a_c, a_d, b_c, b_d
~]# mkdir /tmp/{a_{c,d},b_{c,d}}
(2), 创建 / 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
命令如下:
~]# mkdir -pv /tmp/mylinux/{bin,dev,lib64,proc,sbin,sys,tmp,boot/groub,etc/{rc.d/initd,sysconfig/network-scripts},lib/modules,usr/local/{bin.sbin},var/{lock,log,run}}
4, 文件的元数据信息有哪些, 分别表示什么含义, 如何查看? 如何修改文件的时间戳信息.
文件: 两类数据
元数据: metadata(文件基本信息, 大小, 创建时间, 最后一次修改时间等等)
数据: data(文件中存储的内容)
时间戳:
- access time:2015-12-10 16:12:22.776423693 +0800
- modify time:2015-12-10 16:12:22.776423693 +0800
- change time:2015-12-10 16:12:22.776423693 +0800
touch 命令:
- touch - change file timestamps
- touch [OPTION]... FILE...
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改 access time;
-m: 仅修改 modify time;
- -t STAMP
- [[CC]YY]MMDDhhmm[.ss]
5, 如何定义一个命令的别名, 如何在命令中引用另一个命令的执行结果?
type COMMAND:
内部: builtin
外部: 显示为命令文件路径;
注意: 命令可以有别名; 别名可以与原名相同, 此时原名被隐藏; 此时如果要运行原命令, 则使用 \ COMMAND;
命令别名:
获取所有可用别名的定义:
~]# alias
定义别名:
~]# alias NAME='COMMAND'
注意: 仅对当前 shell 进程有效
撤销别名:
~]# unalias NAME
6, 显示 / var 目录下所有以 l 开头, 以一个小写字母结尾, 且中间至少出现一位数字 (可以有其它字符) 的文件或目录.
~]#ls -d /var/l?[[:lower:]]
7, 显示 / etc 目录下, 以任意一个数字开头, 且以非数字结尾的文件或目录.
~]#ls -d /etc/[0-9]*[^0-9]
8, 显示 / etc 目录下, 以非字母开头, 后面跟了一个字母以及其它任意长度任意字符的文件或目录.
~]#ls -d /etc/[^a-z][a-z]*
9, 在 / tmp 目录下创建以 tfile 开头, 后跟当前日期和时间的文件, 文件名形如: tfile-2016-05-27-09-32-22.
~]# touch tfile-$(date +%Y-%m-%d-%H-%M-%S)
10, 复制 / etc 目录下所有以 p 开头, 以非数字结尾的文件或目录到 / tmp/mytest1 目录中.
- ~]# mkdir /tmp/mytest1
- ~]# cp -a /etc/p*[^0-9] /tmp/mytest1
11, 复制 / etc 目录下所有以. d 结尾的文件或目录至 / tmp/mytest2 目录中.
- ~]# mkdir /tmp/mytest2
- ~]# cp -a /etc/*.d /tmp/mytest2
12, 复制 / etc / 目录下所有以 l 或 m 或 n 开头, 以. conf 结尾的文件至 / tmp/mytest3 目录中.
- ~]# mkdir /tmp/mytest2
- ~]# cp -a /etc/[lmn]*.conf /tmp/mytest3
来源: http://www.bubuko.com/infodetail-2617992.html