一、bash shell基本命令
1、cd destination
进入目录,可以是相对路径,也可以是绝对路径,如果后面没有参数,则直接跳回主目录
2、pwd
显示当前目录
3、.
表示当前目录
4、..
表示当前目录的父目录
5、ls
显示当前目录下的文件和目录,会按照列顺序按字母排序
-F
参数能区分文件和目录
-a
参数会显示当前目录下的所有文件,包含隐藏文件
-R
表示递归选项,能够递归的列出当前目录下的所有目录和文件
-l
参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息包含:
- 文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b)
- 文件的权限
- 文件的硬链接总数
- 文件属主的用户名
- 文件属组的组名
- 文件的大小(以字节为单位)
- 文件的上次修改时间,如果想查看访问时间,需要再加参数
--time=atime
- 文件名或目录名
显示的时候可以使用通配符,?
代表一个字符 *
代表零个或多个字符
ls -l fall
只显示fall文件
ls -l f?ll
ls -l f*ll
6、touch file
创建空文件或者改变文件的修改时间,如果只是想改变文件的访问时间可用-a
参数
7、cp source destination
复制文件
如果目标文件已经存在,cp命令并不会提醒,所以需要加上-i
选项,强制shell访问是否需要覆盖已有文件。
destination也可以是一个目录。
如果source是其他目录的文件,要复制到当前目录中,那destination可以使用单点符.
来简化命令
-R
递归复制整个目录的内容
8、制表键自动补全
制表键自动补全允许你在输入文件名和目录名时按一下制表键,让shell帮忙将内容补充完整。
如果输入的文件名或者目录名有多个匹配的选项,那按一下是不会自动补全的,再按一下,就会列出以你输入的为开头的匹配的文件名或目录名。
9、ln
链接文件,链接第目录中指向文件真实位置的占位符,在linux中有两种不同类型的文件链接
- 符号链接 符号链接是指一个实实在在的文件,这个文件指向另外一个文件,这两个文件彼此的内容不相同,使用
ln
命令和-s
来创建ln -s data_file sl_data_file
表示符号链接sl_data_file
链接到data_file
上的一个符号链接,链接文件和源文件是两个完全不同的文件,他们的文件大小和内容不相同 - 硬链接 硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置,但是他们从根本上而言就是同一个文件,引用硬链接文件就等同于引用源文件。直接使用
ln
命令创建硬链接
同一个文件可以拥有多个链接,但是千万别创建链接文件的链接,这会形成混乱的链接链,不仅容易断裂,还会造成各种麻烦。
10、mv
移动(moving),重命名文件或目录 或者 移动文件或目录
mv fall fzll
将fall文件重命名为fzll
mv fall Pictures/
将fall文件移动到Picture文件夹下, -i
提示是否覆盖
mv fall Pictures/pzll
将fall文件移动到Picture文件夹下并且重命名为fzll
11、rm
删除文件(removing) -i
参数提示是不是要真正的删除文件,因为bash shell中没有回收站或垃圾箱,一旦删除就无法找回。 rm -i fall
12、mkdir
rmdir
创建目录 mkdir new_dir
如果要创建多级目录,需要加入-p
参数 mkdir new_dir/sub_dir/under_dir
删除目录 rmdir
只删除空目录,如果目录下面有文件,则会报错
如果要删除整个目录文件则使用命令 rm -R new_dir
13、file
cat
file test1
查看文件类型
cat test1
查看文件内容 -n
所有行显示行号 -b
只有文本的行才显示行号
tail test1
查看文件最后几行的内容,默认最后10行,-n
可以指定最后几行 -f
是tail命令的一个突出特性,它允许你在其他进行使用该文件时查看文件的内容,tail命令会保持活动装填,并不断显示添加到文件中的内容,这是实时监测系统日志的绝妙方式。
head test1
查看文件开头那些行的内容,默人10行,也支持-n
参数。
14、gzip
gzcat
gunzip
gzip
压缩文件
gzcat
查看压缩过的文本文件内容
gunzip
解压文件
二、环境变量
1、环境变量
bash shell用一个叫做环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息。这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能轻松访问他们。
在bash shell中,环境变量分为两类
- 全局变量
- 局部变量
全局变量对于shell会话和所有生成的子shell都是可见的。系统环境变量基本上都是使用大写字母。要查看全局变量,使用env
或printenv
命令
局部环境变量只能在定义它们的进程中可见。
2、用户自定义变量
xueshanshandeMacBook-Pro:~ xueshanshan$ echo $temp
xueshanshandeMacBook-Pro:~ xueshanshan$ temp=hello
xueshanshandeMacBook-Pro:~ xueshanshan$ echo $temp
hello
如果要给变量赋值一个含有空格的字符串值,必须用单引号来界定字符串的首和尾
变量名、等号和值之间没有空格,这一点非常重要
如果出现了空格,bash shell会把它当成一个单独的命令
3、设置和删除环境变量
设置使用export
命令 export temp
删除使用unset
命令 unset temp
在涉及变量名时,什么时候该用 , 什 么 时 候 不 该 用 , 有 点 让 人 摸 不 着 头 脑 。 记 住 一 点 就 行 了 : 如 果 要 使 用 变 量 就 加 ,什么时候不该用,有点让人摸不着头脑。记住一点就行了:如果要使用变量就加 ,什么时候不该用,有点让人摸不着头脑。记住一点就行了:如果要使用变量就加,比如echo,如果要操作变量,不用$,比如赋值。