1、man命令
语句:$ man 命令关键词
功能:查看命令的注释说明
ps:q退出
2、cd 命令
$ cd destination
功能:切换目录
cd 单点符(.),表示当前目录;
cd 双点符(…),表示当前目录的父目录。
3、ls命令
功能:显示列表
$ls 【参数】 文件路径
其中参数说明: -F: 区分文件和文件夹
-a 显示隐藏的文档
-R 作递归选项。它列出了当前目录下包含的子目录中的文件
ps::ls –F –R 可以进行合并:ls –FR
-l:产生长列表格式的输出,包含了目录中每个文件的更多相关信息
比如:drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Desktop
查看文件权限
ls -l 文件名
ls -l /etc/sudoers
信息解释:
文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b);
文件的权限;
文件的硬链接总数;
文件属主的用户名;
文件属组的组名;
文件的大小(以字节为单位);
文件的上次修改时间;
文件名或目录名。
-h :相当于-l,只是文件的大小是展示为方便查看的样子。
-d 只是显示文件夹名称
$ ls -d *
例如:$ ls -Fd *Scripts
Scripts/
其中Scripts为文件夹
ls l 参数 : 用来查找文件
其中参数:1、具体的名称
2、通配符 : * :任意个字符 ?:单个字符
中括号[] :指定内容 ,比如[a,i] 含有a或者i,字母范围[a-i]
! 将不需要的内容排除在外
$ ls -l my_scr[ai]pt
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$ ls -l f[a-i]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fall
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
$ ls -l f[!a]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
-rw-rw-r-- 1 christine christine 0 May 21 13:44 full
4、文件处理相关命令
$ touch 文件夹名称 :创建空文件夹
$cp 复制文件
cp source destination
cp 源文件 目标对象
其中参数:
-i :如果目标文件已经存在,cp命令可能并不会提醒这一点。最好是加上-i选项,强制shell询问是否需要覆盖已有文件。
例如:$ cp -i test_one test_two
cp: overwrite ‘test_two’? n
n:不复制 y:复制
$ cp -i test_one /home/christine/Documents/
$ ls -l /home/christine/Documents
total 0
-rw-rw-r-- 1 christine christine 0 May 21 15:25 test_one
新文件现就在目录Documents中了,和源文件同名。
说明 之前的例子在目标目录名尾部加上了一个正斜线(/),这表明Documents是目录而非文件。
这有助于明确目的,而且在复制单个文件时非常重要。如果没有使用正斜线,子目录/home/christine/Documents又不存在,就会有麻烦。在这种情况下,试图将一个文件复制到Documents子目录反而会创建一个名为Documents的文件,连错误消息都不会显示!
. 单点符表示当前工作目录。如果需要将一个带有很长的源对象名的文件复制到当前工作目录中时,单点符能够简化该任务。
$ cp -i /etc/NetworkManager/NetworkManager.conf .
$ ls -l NetworkManager.conf
-rw-r–r-- 1 christine christine 76 May 21 15:55 NetworkManager.conf
-R : 递归地复制整个目录的内容
重命名文件
mv命令
功能:1、重命名文件,只是更文件名称,不更改位置
mv 原文件名 新文件名
$ mv fall fzll
2、移动文件的位置
$ ls -li /home/christine/fzll
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44
/home/christine/fzll
$ ls -li /home/christine/Pictures/
total 0
$ mv fzll Pictures/
$ ls -li /home/christine/Pictures/
total 0
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fzll
$ ls -li /home/christine/fzll
ls: cannot access /home/christine/fzll: No such file or directory
mv命令把文件fzll从/home/christine移动到了/home/christine/Pirctures
3、用mv命令移动文件位置并修改文件名称
$ ls -li Pictures/fzll
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44
Pictures/fzll
$ mv /home/christine/Pictures/fzll /home/christine/fall
$ ls -li /home/christine/fall
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44
/home/christine/fall
$ ls -li /home/christine/Pictures/fzll
ls: cannot access /home/christine/Pictures/fzll:
No such file or directory
将文件fzll从子目录Pictures中移动到了主目录/home/christine,并将名字
改为fall。
删除文件
rm命令
$ rm -i fall
rm: remove regular empty file ‘fall’? y
$ ls -l fall
ls: cannot access fall: No such file or directory
注意,-i命令参数提示你是不是要真的删除该文件。bash shell中没有回收站或垃圾箱,文件
一旦删除,就无法再找回。因此,在使用rm命令时,要养成总是加入-i参数的好习惯。
5、处理目录
mkdir命令 :创建目录很简单
$ mkdir New_Dir
$ ls -ld New_Dir
drwxrwxr-x 2 christine christine 4096 May 22 09:48 New_Dir
系统创建了一个名为New_Dir的新目录。注意,新目录长列表是以d开头的。这表示New_Dir并不是文件,而是一个目录。
要想同时创建多个目录和子目录,需要加入-p参数:
$ mkdir -p New_Dir/Sub_Dir/Under_Dir
$ ls -R New_Dir
New_Dir:
Sub_Dir
New_Dir/Sub_Dir:
Under_Dir
New_Dir/Sub_Dir/Under_Dir:
mkdir命令的-p参数可以根据需要创建缺失的父目录。父目录是包含目录树中下一级目录的目录。
-R:递归,显示文件夹的子文件
删除文件夹/目录
删除目录的基本命令是rmdir。
$ touch New_Dir/my_file
$ ls -li New_Dir/
total 0
294561 -rw-rw-r-- 1 christine christine 0 May 22 09:52 my_file
$
$ rmdir New_Dir
rmdir: failed to remove ‘New_Dir’: Directory not empty
$
默认情况下,rmdir命令只删除空目录。因为我们在New_Dir目录下创建了一个文件my_file,所以rmdir命令拒绝删除目录。
要解决这一问题,得先把目录中的文件删掉,然后才能在空目录上使用rmdir命令。
$ rm -i New_Dir/my_file
rm: remove regular empty file ‘New_Dir/my_file’? y
$ rmdir New_Dir
$ ls -ld New_Dir
ls: cannot access New_Dir: No such file or directory
rmdir并没有-i选项来询问是否要删除目录。这也是为什么说rmdir只能删除空目录还是有好处的原因。
也可以在整个非空目录上使用rm命令。使用-r选项使得命令可以向下进入目录,删除其中的文件,然后再删除目录本身。
$ ls -l My_Dir
total 0
-rw-rw-r-- 1 christine christine 0 May 22 10:02 another_file
$ rm -ri My_Dir
rm: descend into directory ‘My_Dir’? y
rm: remove regular empty file ‘My_Dir/another_file’? y
rm: remove directory ‘My_Dir’? y
$ ls -l My_Dir
ls: cannot access My_Dir: No such file or directory
对rm命令而言,-r参数和-R参数的效果是一样的。-R参数同样可以递归地删除目录中的文件。shell命令很少会就相同的功能采用不同大小写的参数。
一口气删除目录及其所有内容的终极大法就是使用带有-r参数和-f参数的rm命令。
$ tree Small_Dir
Small_Dir
├─ a_file
├─ b_file
├─ c_file
├─ Teeny_Dir
│ └─ e_file
└─ Tiny_Dir
└─ d_file
2 directories, 5 files
$ rm -rf Small_Dir
$ tree Small_Dir
Small_Dir [error opening dir]
0 directories, 0 files
rm -rf命令既没有警告信息,也没有声音提示。这肯定是一个危险的工具,尤其是在拥有超级用户权限的时候。务必谨慎使用,请再三检查你所要进行的操作是否符合预期。
su 命令: 切换用户
su - :切换到root用户,需要root密码
su 用户名:切换到指定的用户
whoami:查看当前用户
yum: 查看安装的包
yum list installed :查看已经安装的包
yum install package_name :安装包
$ su -
Password:
yum install xterm
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
-
base: mirrors.bluehost.com
-
extras: mirror.5ninesolutions.com
-
updates: mirror.san.fastserv.com
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package xterm.i686 0:253-1.el6 will be installed
–> Finished Dependency Resolution
Dependencies Resolved
[…]
Installed:
xterm.i686 0:253-1.el6
Complete!
说明 在上面的例子中,我们在运行yum命令之前使用了su-命令。这个命令允许你切换到root
用户。在Linux系统上,#表明你是以root用户身份登录的。应该只有在运行管理性的任务
时才临时切换到root用户(比如安装和更新软件)。也可以使用sudo命令。
查看文件类型
$ file my_file
my_file: ASCII text
上面例子中的文件是一个text(文本)文件。file命令不仅能确定文件中包含的文本信息,还能确定该文本文件的字符编码,ASCII。
$ file New_Dir
New_Dir: directory
可以使用file命令作为另一种区分目录的方法
符号链接的文件
$ file sl_data_file
sl_data_file: symbolic link to ‘data_file’
注意,file命令甚至能够告诉你它链接到了哪个文件上
file命令对脚本文件的返回结果。
尽管这个文件是ASCII text,但因为它是一个脚本文件,所以可以在系统上执行(运行):
$ file my_script
my_script: Bourne-Again shell script, ASCII text executable
查看文件内容
1、cat命令
-n:所有输出行加行标
-b:非空输出加行标
-T:用^I字符组合去替换文中的所有制表符
$ cat -n test1
1 hello
2
3 This is a test file.
4
5
6 That we’ll use to test the cat command.
2、more
3、less
4、tail file_name
默认显示文件后10行。可以通过-n制定行数。$ tail -n 2 file_name 显示后2行。
-f参数是tail命令的一个突出特性。它允许你在其他进程使用该文件时查看文件的内容。
tail命令会保持活动状态,并不断显示添加到文件中的内容。这是实时监测系统日志的绝妙
方式。
5、head 显示文件前几行,类似tail,只是不支持-f。
6、
bash启动新建shell
$ ps -f
UID PID PPID C STIME TTY TIME CMD
501 1841 1840 0 11:50 pts/0 00:00:00 -bash
501 2532 1841 1 14:22 pts/0 00:00:00 ps -f
$ bash
$ bash
$ bash
$ ps --forest
PID TTY TIME CMD
1841 pts/0 00:00:00 bash
2533 pts/0 00:00:00 _ bash
2546 pts/0 00:00:00 _ bash
2562 pts/0 00:00:00 _ bash
2576 pts/0 00:00:00 _ ps
在上面的例子中,bash命令被输入了三次,这实际上创建了三个子shell。
ps -forest命令展示了这些子shell间的嵌套结构
Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下。这项工作称为挂载 (mounting)。
df 查看磁盘使用情况
df -h
展示成易读形式
grep命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。 grep的输出就是包
含了匹配模式的行。
下面两个简单的例子演示了使用grep命令来对4.3.1节中用到的文件file1进行搜索。
$ grep three file1
three
$ grep t file1
two
three
$
第一个例子在文件file1中搜索能匹配模式three的文本。 grep命令输出了匹配了该模式的
行。第二个例子在文件file1中搜索能匹配模式t的文本。这个例子里, file1中有两行匹配了
指定的模式,两行都输出了。
由于grep命令非常流行,它经历了大量的更新。有很多功能被加进了grep命令。如果查看
一下它的手册页面,你会发现它是多么的无所不能。82 第 4 章 更多的 bash shell 命令
如果要进行反向搜索(输出不匹配该模式的行),可加-v参数。
$ grep -v t file1
one
four
five
$
如果要显示匹配模式的行所在的行号,可加-n参数。
$ grep -n t file1
2:two
3:three
$
如果只要知道有多少行含有匹配的模式,可用-c参数。
$ grep -c t file1
2
$
如果要指定多个匹配模式,可用-e参数来指定每个模式。
$ grep -e t -e f file1
two
three
four
five
$
这个例子输出了含有字符t或字符f的所有行。
默认情况下, grep命令用基本的Unix风格正则表达式来匹配模式。 Unix风格正则表达式采
用特殊字符来定义怎样查找匹配的模式。
要想进一步了解正则表达式的细节,可以参考第20章的内容。
以下是在grep搜索中使用正则表达式的简单例子。
$ grep [tf] file1
two
three
four
five
$
正则表达式中的方括号表明grep应该搜索包含t或者f字符的匹配。如果不用正则表达式,
grep就会搜索匹配字符串tf的文本。
egrep命令是grep的一个衍生,支持POSIX扩展正则表达式。 POSIX扩展正则表达式含有更
多的可以用来指定匹配模式的字符(参见第20章)。 fgrep则是另外一个版本,支持将匹配模式
指定为用换行符分隔的一列固定长度的字符串。这样就可以把这列字符串放到一个文件中,然后
在fgrep命令中用其在一个大型文件中搜索字符串了
—压缩文件
gzip:用来压缩文件。
gzcat:用来查看压缩过的文本文件的内容。
gunzip:用来解压文件。
这些工具基本上跟bzip2工具的用法一样。
$ gzip myprog
$ ls -l my*
-rwxrwxr-x 1 rich rich 2197 2007-09-13 11:29 myprog.gz
$
gzip命令会压缩你在命令行指定的文件。也可以在命令行指定多个文件名甚至用通配符来
一次性批量压缩文件。
$ gzip my*
$ ls -l my*
-rwxr–r-- 1 rich rich 103 Sep 6 13:43 myprog.c.gz
-rwxr-xr-x 1 rich rich 5178 Sep 6 13:43 myprog.gz
-rwxr–r-- 1 rich rich 59 Sep 6 13:46 myscript.gz
-rwxr–r-- 1 rich rich 60 Sep 6 13:44 myscript2.gz
----归档数据
虽然zip命令能够很好地将数据压缩和归档进单个文件,但它不是Unix和Linux中的标准归档
工具。目前, Unix和Linux上最广泛使用的归档工具是tar命令。
tar命令最开始是用来将文件写到磁带设备上归档的,然而它也能把输出写到文件里,这种
用法在Linux上已经普遍用来归档数据了。
下面是tar命令的格式:
tar function [options] object1 object2 …
function参数定义了tar命令应该做什么,如表4-8所示。
表4-8 tar命令的功能
功 能 长 名 称 描 述
-A --concatenate 将一个已有tar归档文件追加到另一个已有tar归档文件
-c --create 创建一个新的tar归档文件
-d --diff 检查归档文件和文件系统的不同之处
–delete 从已有tar归档文件中删除
-r --append 追加文件到已有tar归档文件末尾
-t --list 列出已有tar归档文件的内容
-u --update 将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
-x --extract 从已有tar归档文件中提取文件
每个功能可用选项来针对tar归档文件定义一个特定行为。表4-9列出了这些选项中能和tar
命令一起使用的常见选项。
表4-9 tar命令选项
选 项 描 述
-C dir 切换到指定目录
-f file 输出结果到文件或设备file
-j 将输出重定向给bzip2命令来压缩内容
-p 保留所有文件权限
-v 在处理文件时显示文件
-z 将输出重定向给gzip命令来压缩内容
这些选项经常合并到一起使用。首先,你可以用下列命令来创建一个归档文件:
tar -cvf test.tar test/ test2/
上面的命令创建了名为test.tar的归档文件,含有test和test2目录内容。接着,用下列命令:
tar -tf test.tar
列出tar文件test.tar的内容(但并不提取文件)。最后,用命令:
tar -xvf test.tar4.4 小结 85
1
2
3
4
5
8
10
14
9
6
7
12
11
13
通过这一命令从tar文件test.tar中提取内容。如果tar文件是从一个目录结构创建的,那整个目
录结构都会在当前目录下重新创建。
如你所见, tar命令是给整个目录结构创建归档文件的简便方法。这是Linux中分发开源程序
源码文件所采用的普遍方法。
窍门 下载了开源软件之后,你会经常看到文件名以.tgz结尾。这些是gzip压缩过的tar文件可以
用命令tar -zxvf filename.tgz来解压
grep命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。 grep的输出就是包
含了匹配模式的行。
下面两个简单的例子演示了使用grep命令来对4.3.1节中用到的文件file1进行搜索。
$ grep three file1
three
$ grep t file1
two
three
$
第一个例子在文件file1中搜索能匹配模式three的文本。 grep命令输出了匹配了该模式的
行。第二个例子在文件file1中搜索能匹配模式t的文本。这个例子里, file1中有两行匹配了
指定的模式,两行都输出了。
由于grep命令非常流行,它经历了大量的更新。有很多功能被加进了grep命令。如果查看
一下它的手册页面,你会发现它是多么的无所不能。82 第 4 章 更多的 bash shell 命令
如果要进行反向搜索(输出不匹配该模式的行),可加-v参数。
$ grep -v t file1
one
four
five
$
如果要显示匹配模式的行所在的行号,可加-n参数。
$ grep -n t file1
2:two
3:three
$
如果只要知道有多少行含有匹配的模式,可用-c参数。
$ grep -c t file1
2
$
如果要指定多个匹配模式,可用-e参数来指定每个模式。
$ grep -e t -e f file1
two
three
four
five
$
这个例子输出了含有字符t或字符f的所有行。
默认情况下, grep命令用基本的Unix风格正则表达式来匹配模式。 Unix风格正则表达式采
用特殊字符来定义怎样查找匹配的模式。
要想进一步了解正则表达式的细节,可以参考第20章的内容。
以下是在grep搜索中使用正则表达式的简单例子。
$ grep [tf] file1
two
three
four
five
$
正则表达式中的方括号表明grep应该搜索包含t或者f字符的匹配。如果不用正则表达式,
grep就会搜索匹配字符串tf的文本。
egrep命令是grep的一个衍生,支持POSIX扩展正则表达式。 POSIX扩展正则表达式含有更
多的可以用来指定匹配模式的字符(参见第20章)。 fgrep则是另外一个版本,支持将匹配模式
指定为用换行符分隔的一列固定长度的字符串。这样就可以把这列字符串放到一个文件中,然后
在fgrep命令中用其在一个大型文件中搜索字符串了