您的位置:首页 > 运维架构 > Shell

4,文件盒目录管理命令,shell的引用,shell历史

2014-10-22 21:57 232 查看
目录:

cd : 切换目录
cd 路径: 切换至该文件路径

cd ~[username] : 切换至该用户的家目录,

cd - : 切换至上一次所在的目录

pwd:pring working directory: 显示当前所在目录

mkdir : 创建目录
-p : 先创建父目录, 也就是 递归 创建

-v : 显示 创建 时 的 详细 信息




这里 涉及 到 一个 特性, bash关键字 的 展开, 例如

{a,b}_{c,d} 展开 之后 就是 a_c, a_d, b_c, b_d, 这个 在 创建 多个 文件 或 目录 时 很有用

rmdir : 删除空目录: 这里 注意, 要 删除 的 目录 一定 是 空 的。。,

-p : 递归 删除

-v : 显示 删除 信息。。

shell中的 引用:
"" :强引用, 引用中可以加${PAHT}之类的变量引用,
'' :弱引用, 引用中间的字符串只能是字符串
`` :命令替换, 引用中的命令会被执行。, 当然,也可使用$(命令) 这种 形式 进行 命令替换

echo : 输出 一句 话, 写 脚本的 时候 有用, 相当于 c语言 里的 printf, shell里 也有 printf



${NAME} 这个 是 引用 环境变量, 其中 {} 在 大多数情况 下 是 可以 省略 的, 但 如
${PATH}bbbb 这种 情况 就 不能 省略 了, 省略之后 就 变成
#PATHbbbb 了, 系统中 是 没有 这个 环境变量 的。
shell特性 之 命令历史:

bash会保留命令历史在缓冲区中,当shell退出时,命令历史会由缓冲区存放 到 ~/.bash_history 中
使用 ↑↓ 尖头 可以 翻看 曾经执行 过 的 命令

history 快捷方式:
!#: #为命令历史列表中的命令编号,可用于执行第#条命令

!!: 执行上一条命令

!-#: 执行倒数第#条命令

!$: 引用上一个命令的最后一个参数




执行 history 就 可以 看到 命令历史 了, 这里 太长了, 就 截取 了 最后 一部分, 先 看一下 快捷 方式 把,



这里我又执行了下909号 的 这个 命令,



这个是执行上一条语句,其实 还是 再 执行 一次 echo 语句,



这个 和 !! 没区别 的, 也是 执行 上一条 语句, 当然, 把-1 改成 别的 就 有 区别 了。。

最后说下 !$ 把,



我 最开始 是 在 / 目录 下 查看 了 一下 我 的 家目录, 然后 用 cd !$ 直接 跳转 到 我的 家目录, 这里 的 !$ 就是 上个 命令 的 参数。。
----------------------------------------------------------
history选项:

-c: 清空历史

-d#:删除指定命令历史,#为命令历史的编号

-a:追加当前命令历史到命令历史文件中去。

命令历史相关的环境变量:
HISTSIZE:命令历史中可以保存的命令的个数;
HISTFILE: 命令历史文件;
HISTFILESIZE:命令历史文件可以保存的命令的个数;
HISTCONTROL: 控制命令历史的生成;
ignoredups: 忽略记录重复的命令;连续的相同命令才为重复;
ignorespace: 不记录以空白字符开头的命令;
ignoreboth: 同时具有上面两种特性;
shell中变量赋值:




FHS:文件系统目录标准, 这个标准列出了Linux应该具有哪些目录,这里给出 根目录下 的 一些 重要 的 目录 的 作用。

/bin: 所有用户可执行的程序
/sbin: 管理员可执行的程序
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/boot: 存储系统引导文件:内核、ramfs文件、bootloader(grub);
/dev: 设备文件存放目录;
/etc: 配置文件的存放目录;
/etc/sysconfig:
/etc/init.d: 系统服务脚本
/home: 普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录;
/root: 管理员的家目录;
/lib, /lib64:库文件;
/media: 专用挂载位置,通常用来挂载便携式设备;
/mnt: 专用挂载位置,挂载额外存储设备;
/misc: 备用目录
/opt: 备用目录,但通常用来安装第三方软件;
/proc: 伪文件系统,内核参数的映射;
/sys: 伪文件系统,系统级别的用于配置外围设备秘的参数;
/srv: 为服务提供数据存放位置;
/tmp: 临时文件系统;
/usr: shared, readonly
/usr/include: 头文件
/var: 频繁发生变化的文件
/var/log
/var/lock
/var/run
/var/cache
文件:

linux文件类型:
普通文件:-, file, 这个 就 相当于 windows里 的 txt 文件
目录文件:d,directory, 这个 相当于 windows 里 的 文件夹把。
链接文件(符号链接):l,link, 这个 指的是 软连接, 相当于 快捷方式
设备文件:
字符设备:c, char, 这个 又叫做 串行设备接口, 如 键盘 什么 的。
块设备: b, block, 这个 又叫做 并行设备接口,如 硬盘
命名管道:p, pipeline, 不太理解, 学到了 再说 把。
套接字文件:s, socket, 这个 也 不太清楚。。
------------------------------------------
Linux文件时间戳:
访问时间, access time, atime
修改时间, modify time, mtime
改变时间, change time, ctime
-------------------------------------------
文件目录树:
tree 命令, 这个 命令 一般 系统 不会 自带 的, 需要 自己 安装。。
# yum install tree, 安装 tree 命令



------------------------------------------
bash特性 之 命令别名:

# alias 别名='原始命令名'
当 alias 无参数 是 可以 查看 已定义 的 命令 别名



这里 还 可以 看到 ls 命令 也 是个 别名, ls='ls --color=auto', 这里 如果 想 执行 命令的 原有 意思 可以 在 命令 前面 加 ‘ \ ’, 如,



取消 命令 别名 后 ls 就 不显示 颜色 了。。
# unalias 别名, 这个 是 用于 取消 命令 别名 的
----------------------------------------------
文本文件 的 查看:

cat File : 正序查看一个文件
-n 显示行号
-E 显示行结束符
-v 显示非打印字符
-A 显示所有字符
-s 多个连续的空白行显示为一个空白行

tac File : 与cat 相反, 逆序 查看 一个 文件。。



--------------------
more: 显示 多行 文件, 用法 同 man, 不过 在 显示 完文件 最后 一行 后 会 自动退出。

less: 显示 多行 文件, 用法 同 man, 不过 貌似 man 是 用 less 来 实现 的。。。, 这个 与 more 的 区别 是 显示 完 最后一行 后 不会 退出 了,
--------------------
head: 显示 文件 的 前几行, 默认 为 显示 前10行
tail: 显示 文件 的 后几行, 默认 为 显示 后10行
-n# : 设置 所 显示 的 行数, # 为 数字,




-------------------------

echo 命令:
-e : 允许使用类似 c 语言 里面 的 转义字符

-n : 不 默认 输出 换行 符

-------------------------
关于 文件 的 命令

touch : 创建 文件, 其实 是 修改 时间戳。。, 当 这个 文件 不存在 是 会 自动 创建文件。
access time, atime,
modify time, mtime
change time, ctime
-c: 不创建空文件

-a: 仅修改访问时间
-m: 仅修改修改时间
-t STAMP: [CC]YYMMDDhhmm.s
access time, atime
modify time, mtime
change time, ctime

-c: 不创建空文件
-a: 仅修改访问时间
-m: 仅修改修改时间
-t STAMP: [CC]YYMMDDhhmm.s



在 一个 空 文件夹 里面 创建 一个 a 文件, 可以 用 stat 来 查看 这个 文件 的 信息。

stat : 显示 一个 文件 的 基本 信息。




现在 来 改变 一下 文件 的 Access 时间戳:



ok, 已经 改好 了
------------------------------------------------------------
cp: copy : 复制文件
SRC, DEST
cp SRC... DEST
-r:递归复制
-i: 人机交互
-d: 当源为链接文件时,复制链接文件本身而非指向的源文件
-a: 相当于-dr
-p: 保持原有属性
-f: 强制
假如SRC是一个文件:
如果目标是一个文件且存在:覆盖
如果目标文件不存在:创建新文件
如果目标存在,且是个目录:复制源至目标目录,并保持原名

假如SRC有多个文件:
如果目标存在,且是一个文件:复制无法进行
如果目标存在,且是一个目录:复制各文件至目标目录中,并保持原名
如果目标不存在:复制无法进行

如果SRC只有一个且是目录:-r
如果目标是一个文件且存在:失败
如果目标文件不存在:创建新目录
如果目标存在,且是个目录:复制源目录至目标目录中,且保持原名



把 /etc/passwd 复制 到 当前 文件 加 的 aaa 文件 中, 并 查看 了 一下 aaa 文件。。
复制 大概 就 这些 把, 没什么 太高端 的 东西。。
---------------------------------------------------------
mv : move : 移动文件, 用法 和 cp 差不多,

可以直接移动目录,而无须-r选项;



----------------------------------------------------------
rm : remove :删除 文件

-r : 递归 删除 文件, 加上 这个 选项 就 可以 删除 非空 目录 了,~

-i : 人机交互

-v : 删除 的 详细信息。

-f : 强制删除,不需要 人机 交互




---------------------------------------------------------------
nano : 一个 简单 的 文本 编辑器,
Ctrl+O 是 保存, Ctrl+X 是 退出

bash特性 之 globbing : 文件名 通配
通配符:

* : 表示 任意 长度 的 任意 字符

? : 表示 任意 单个 字符

[]: 指定 字符 范围 内 的 任意 单个 字符

[xyz] x 或者 y 或者 z

[a-z] a 到 z 之间 的 任意 一个 字符

[0-9] 0 到 9 之间 的 任意 一个 字符

[a-z0-9] a 到 z , 0 到 9 之间 任意 一个 字符

[^]: 匹配 到 指定 字符 范围 外 的 任意 单个 字符

[^0-9] 非 数字 字符
[[:upper:]] : 所有大写字母
[[:lower:]] : 所有小写字母
[[:alpha:]] : 大小写字母
[[:digit:]] : 数字
[[:alnum:]] : 大小写字母加数字
[[:space:]] : 空白字符
[[:punct:]] : 标点符号。

本文出自 “宁静淡泊” 博客,请务必保留此出处http://vrgfff.blog.51cto.com/6682480/1566913
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: