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

目录: 

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。