shell script编程大全学习(1)--基本shell命令

2014/7/26 posted in  linux

基本shell命令

/etc/passwd包含了所有系统用户账户列表和每个用户的基本配置信息

shell 命令提示符

williamtekiMacBook-Pro:shelltest valentine$
这个代表了shell命令的提示符
PS1: 控制默认命令提示符的格式
PS2: 控制后续命令提示符的格式
使用echo 可以查看当前提示符的格式

williamtekiMacBook-Pro:shelltest valentine$ echo $PS1
\h:\W \u\$  
williamtekiMacBook-Pro:shelltest valentine$ echo $PS2
>

通过修改PS1 变量可以改变当前shell提示符

比较有用的转义序列有:

a ASCII 响铃字符(也可以键入 \007)
\d "Wed Sep 06" 格式的日期
\e ASCII转义字符
\h 主机名
\H 完整的主机名
\j 在此 shell 中通过按 ^Z 挂起的进程数
\l 此 shell 的终端设备名(如 "ttyp1")
\n 换行符
\r 回车符
\s shell 的名称(如 "bash")
\t 24小时制时间
\T 12小时制时间
\@ 带有 am/pm 的 12 小时制时间
\v bash 的版本(如 2.04)
\V Bash 版本(包括补丁级别)
\u 用户名
\w 当前工作目录(绝对路径)
\w 当前工作目录(basename)
\! 当前命令在历史缓冲区的位置
\$ 如果当前用户是super user,则插入字符#;否则插入字符$
\\ 反斜杠
\[ 出现在不移动光标的字符序列之前
\] 出现在非打印字符之后
\xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "\007")表示的 ASCII 字符
我们可以通过设置PS1变量使提示符成为彩色。在PS1中设置字符序列颜色的格式为:
\[\e[F;Bm\]
其中``F''为字体颜色,编号30~37;``B''为背景色,编号40~47。
可通过``\e[0m''关闭颜色输出;特别的,当B为1时,将显示加亮加粗的文字,详细请看下面的颜色表与代码表。
颜色表
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
代码 意义
-------------------------
0 OFF
1 高亮显示
4 underline
5 闪烁
7 反白显示
8 不可见

如果想要设置终端提示符的样式只要把$PS1在~/.bashrc指定即可比,比如我的设置如下:

PS1="\[\e[32m\][\u@\h \w]$\[\e[m\]"
export PS1

查看自带手册

man bash

如果想查看某条命令怎么使用,也可以使用man命令 如
man ls

文件目录

Linux将文件存储在单个目录结构中,这个目录我们称之为虚拟目录(virtual directory)

Linux PC 上安装的第一块盘为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从这里开始构建的。虚拟目录会让文件和目录出现在这些挂载点中,然后实际上他们却存在于另一个驱动器中。

常见的Linux虚拟目录名称

/          虚拟目录根目录,通常不在这个目录存储文件
/bin     二进制目录,存放许多GNU用户级的工具
/boot   启动目录,存放启动文件
/dev    设备目录,Linux在这里创建设备节点
/etc     系统配置文件目录
/home 主目录,Linux在这里创建用户目录
/lib       库目录,存放系统和应用程序的库文件
/media 媒体目录,存放可移动媒体设备挂载点的地方
/mnt     挂载目录,另一个存放可移动设备挂载点的地方
/opt      可选目录,通常用于存放可选的软件包
/root     根主目录
/sbin    系统二进制目录,存放许多GUN管理员级的工具
/tmp     临时目录,可以在该目录中创建和删除临时文件
/usr      用户安装软件的目录
/var       可变目录,用于存放经常变化的文件,比如日志文件

ls 命令后面的- 可以组合,如
ls -sail

ls -l myproc? 过滤列表,?替代单个字符
ls -l mvproc* 过滤列表,*替代多个字符

文件处理

创建文件 touch
williamtekiMacBook-Pro:shelltest valentine$ touch test touch

在Linux文件系统中,每个文件都有唯一的索引节点号
touch命令仅仅用于创建一个空文件,touch还可以用于改变已有文件的访问时间和修改时间。而不改变文件的内容

复制文件 cp

链接文件
链接是目录中指向文件真实位置的占位符,在Linux中有两种不同的文件链接:
符号链接:cp -s 即软链接 软链接创建的文件和源文件的索引节点号不相同,软链接文件只需存储源文件的信息,不需要存储源文件的数据
硬链接: cp -l 硬链接会创建一个独立的文件,其中包含了源文件的信息和位置。引用硬链接文件等同于引用源文件
使用硬链接复制的文件,和源文件的索引节点号是相同的,说明实际上它们是同一个文件。
如果用cp命令来复制一个链接到另一个源文件的文件,那么复制的是源文件的一个副本,而不是链接文件。

ln 复制硬链接
ln -s 复制软链接

重命名文件 mv

移动文件会改变文件名,但保持同样的索引节点号和时间戳。
移动一个有软链接指向它的文件会带来麻烦,软链接还将指向原来的文件,而不是mv之后的文件

删除文件 rm

删除源文件时,他的硬链接文件将不会被删除,还能继续使用。他的软链接也不会被删除,但是软链接文件指向的文件不能使用了。
所以在复制文件和删除文件的时候,需要查看一下链接文件数。

创建目录 mkdir##### 删除目录 rmdir

rm -r 递归的删除目录下面的文件,最后删除目录
rm -rf 不询问的删除目录和目录下面的所有文件

stat 显示所有被观察文件信息
file  用于查看文件类型
cat 查看文件内容
-n 会带上行号
-b 只给有文本的行加上行号
-T 不让制表符出现
cat不适合大型文件
more  命令
less  命令
tail  命令
head  命令