基本的bash shell
一、linux文件系统
linux文件系统结构是从Unix文件结构演进过来的。在linux文件系统中,通用的目录名用于表示一些常见的功能。如下表列出一些较为常见的Linux顶层虚拟目录名及其内容。
/ |
虚拟目录的根目录。 |
/bin |
二进制目录,存放许多用户级的GNU工具 |
/boot |
启动目录,存放很多启动文件 |
/dev |
设备目录 |
/etc |
系统配置文件目录 |
/home |
主目录,Linux在这里创建用户目录 |
/lib |
库目录,存放系统和应用程序的库文件 |
/media |
媒体目录,可移动媒体设备的常用挂载点 |
/mnt |
挂载目录,另一个可移动媒体设备的常用挂载点 |
/opt |
可选目录,常用于存放第三方软件包和数据文件 |
/proc |
进程目录,存放现有硬件及当前进程的相关信息 |
/root |
root用户的主目录 |
/sbin |
系统二进制目录,存放许多GNU管理员级工具 |
/run |
运行目录,存放系统运作时的运行时数据 |
/srv |
服务目录,存放本地服务的相关文件 |
/sys |
系统目录,存放系统硬件信息的相关文件 |
/tmp |
临时目录,可以在该目录中创建和删除临时工作文件 |
/usr |
用户二进制目录,大量用户级的GNU工具和数据文件都存放到这里 |
/var |
可变目录,用于存放经常变化的文件,比如日志文件 |
二、遍历目录
常用指令:$cd ----切换目录
$cd destination
$pwd------显示当前目录
1、 绝对路径
绝对路径定义了在虚拟目录结构中该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。
2、 相对路径
相对文件路径允许用户指定一个基于当前位置的目标文件路径。
有两个特殊字符可用于相对文件路径当中:
l 单点符(.),表示当前目录;
l 双点符(..),表示当前目录的父目录;
三、文件和目录列表
1、基本列表功能
(1)、$ls
(2)、$ls –F, F参数的ls命令轻松区分文件和目录
[root@localhost ~]# ls -F
anaconda-ks.cfg install.log install.log.syslog netperf-netperf-2.5.0/ netperf-netperf-2.5.0.tar.gz 公共的/ 模板/ 视频/ 图片/ 文档/ 下载/ 音乐/ 桌面/
(3)、$ls –a,把隐藏文件和普通文件及目录一起显示出来
(4)、$ls –R,递归选项,它列出了当前目录下包含的子目录中的文件。
[root@localhost doc]# ls -F -R
.:
examples/ Makefile.am netperf.html netperf.man netperf.pdf netperf.texi netperf.xml omni_output_list.txt
Makefile Makefile.in netperf.info netperf_old.ps netperf.ps netperf.txt netserver.man texinfo.tex
./examples:
arr_script* Makefile.am netperf_interim_to_rrd.sh* runemomniagg2.sh sctp_stream_script tcp_range_script* tcp_stream_script* udp_stream_script
Makefile Makefile.in packet_byte_script* runemomni.sh snapshot_script* tcp_rr_script* udp_rr_script*
2、显示长列表
(1)、ls –l
[root@localhost doc]# ls -l
drwxrwxr-x. 2 root root 4096 9月 11 16:54 examples
输出结果中,每一行都包含了关于文件的以下信息:
- 文件类型,比如目录(d)、文件(-)、字符型文件(c)、或块设备(b);
- 文件权限;
- 文件的硬链接总数;
- 文件属主的用户名;
- 文件数组的组名;
- 文件的大小(以字节为单位);
- 文件的上次修改时间;
- 文件名或目录名。
3、过滤输出列表
$ls –l Makefile
[root@localhost doc]# ls -l Makef*
-rw-r--r--. 1 root root 30370 9月 11 16:54 Makefile
-rw-rw-r--. 1 root root 953 7月 20 2011 Makefile.am
-rw-rw-r--. 1 root root 30180 7月 20 2011 Makefile.in
- 问号(?)代表一个字符;
- 星号(*)代表零个或多个字符。
四、处理文件
1、创建文件
$touch test_one
[root@localhost a5000]# touch test_one
[root@localhost a5000]# ls -l test_one
-rw-r--r--. 1 root root 0 9月 18 17:19 test_one
2、复制文件
(1)、$cp test_one test_two。
[root@localhost a5000]# cp test_one test_two
[root@localhost a5000]# ls -l test*
-rw-r--r--. 1 root root 0 9月 18 17:19 test_one
-rw-r--r--. 1 root root 0 9月 18 17:22 test_two
(2)、$-i,强制shell询问是否需要覆盖已有文件。
[root@localhost a5000]# cp -i test_one test_two
cp:是否覆盖"test_two"?
(3)、$-R,递归的复制整个目录的内容。
[root@localhost test]# ls
test1
[root@localhost a5000]# cp -R test/ test1
[root@localhost test1]# ls
test1
五、链接文件
链接文件是Linux文件系统的一个优势,如果需要在系统上维护同一文件的两份或多份副本,除了保存单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占符位。在Linux中有两种类型的文件链接:
- 符号链接
- 硬链接
(1)、符号链接
符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件,这两个通过符号链接在一起的文件,彼此的内容并不相同,
$ln –s
要为一个文件创建符号链接,原始文件必须事先存在。
[root@localhost test]# ln -s test1 test
[root@localhost test]# ls -l
lrwxrwxrwx. 1 root root 5 9月 19 09:02 test -> test1
-rw-r--r--. 1 root root 0 9月 18 17:27 test1
显示在长列表中符号文件后的->符号表明该文件是连接到test1上的一个符号链接。
(2)、硬链接
硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件,等同于引用源文件
$ln
[root@localhost test]# ln test1 test2
[root@localhost test]# ls -il
17634 -rw-r--r--. 2 root root 31 9月 19 09:26 test1
17634 -rw-r--r--. 2 root root 31 9月 19 09:26 test2
六、重命名文件
(1)、文件和目录移动到另一个位置或重新命名
&mv
[root@localhost a5000]# mv ./test/test ./Test1/yanzheng
[root@localhost Test1]# ll -s
0 -rw-r--r--. 1 root root 0 9月 18 17:27 test1
lrwxrwxrwx. 1 root root 5 9月 19 09:02 yanzheng -> test1
(2)、使用mv命令移动整个目录及其内容
root@localhost a5000]# mv test ./Test1/
root@localhost Test1]# ls -il
7628 drwxr-xr-x. 2 root root 4096 9月 19 09:36 test
7631 -rw-r--r--. 1 root root 0 9月 18 17:27 test1
7632 lrwxrwxrwx. 1 root root 5 9月 19 09:02 yanzheng -> test1
七、删除文件
$rm
参数:
- i:提示你是不是真的要删除该文件;
- f:强制删除;
八、创建目录
1) $mkdir
root@localhost a5000]# mkdir yy
root@localhost a5000]# ls -il
17629 drwxr-xr-x. 2 root root 4096 9月 19 10:02 yy
2) 如果想同时创建多个目录和子目录,需要加入-p参数
[root@localhost a5000]# mkdir -p ./yy/yy1/yy2
[root@localhost a5000]# cd yy
[root@localhost yy]# ls
yy1
[root@localhost yy]# cd yy1
[root@localhost yy1]# ls
yy2
九、删除目录
&rmdir
参数:
- r 选项使得命令可以向下进入目录,删除其中的文件,然后再删除目录本;
- f 强制删除,不提示(-rf没有警告信息,也没有提示)。
十、查看文件
10.1、查看文件类型
&file
[root@localhost Test1]# file test
test: directory
10.2、查看整个文件
(1)、cat
cat命令是显示文本文件中所有数据的得力工具。
-
-
- n 参数会给所有的行加上行号。
- b 给文本加上行号。
-
(2)、more
more是分页工具,可以一页一页的显示文件内容。
-
-
- 空格键:向下翻一页;
- Enter:向下滚动一行;
- q :退出;
- b :往下翻页。
-
(3)、less
一页一页翻动。
- l空格键:向下翻一页;
- [PgUp]:向上翻动一页;
- [PgDn]:向下翻动一页;
- /字符串:向下查询“字符串”的功能;
- ?字符串:向上查询“字符串”的功能;
- n :重复前一个查询;
- N :反复重复前一个查询;
- q :离开less程序。
(4)、tail
tail命令回显示文件最后几行的内容(文件的“尾部”)。
- n 修改所显示的行数。
- f 表示持续监测后面所接的文件名。
(5)、head
head命令,顾名思义,会显示文件开头那些行的内容。
-
-
- n 修改所显示的行数。
-