基础命令

发送邮件

可以使用mail命令发送和接收邮件,语法如下:

$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

每个选项的含义如下:

选项 描述
-s 邮件标题。
-c 要发送的用户,多个用户以逗号(,)分隔。
-b 需要密件发送(密送)的用户,多个用户以逗号(,)分隔。


例如,向[email protected]发送邮件:

$mail -s "Test Message" [email protected]
Hello everyone, 
this is Linux tutorial and url is http://see.xidian.edu.cn/cpp/linux/.
Cc: 

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,你可以输入任何文字,比如上面的两行。输入完邮件正文,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

也可以通过重定向操作符 < 来发送文件:

$mail -s "Report 05/06/07" [email protected] < demo.txt

通过上面的命令,就可以把demol.txt文件的内容作为邮件的内容发送给[email protected]了。

 

 

查看文件

查看当前目录下的文件和目录可以使用 ls 命令

通过 ls 命令的 -l 选项,你可以获取更多文件信息

通过 ls 命令的 -l 选项,你可以获取更多文件信息

创建文件

在Linux中,可以使用 vi 编辑器创建一个文本文件,例如:

$ vi filename

上面的命令会创建文件 filename 并打开,按下 i 键即可进入编辑模式,你可以向文件中写入内容。例如:

This is Linux file....I created it for the first time.....
I'm going to save this content in this file.

完成编辑后,可以按 esc 键退出编辑模式

:wq 保存并退出

:q退出

查看文件内容

可以使用 cat 命令来查看文件内容,下面是一个简单的例子:

$ cat filename
This is Linux file....I created it for the first time.....
I'm going to save this content in this file.
$

可以通过 cat 命令的 -b 选项来显示行号,例如:

$ cat -b filename
1   This is Linux file....I created it for the first time.....
2   I'm going to save this content in this file.
$

统计单词数目

可以使用 wc 命令来统计当前文件的行数、单词数和字符数,下面是一个简单的例子:

$ wc filename
2  19 103 filename
$

每一列的含义如下:

  • 第一列:文件的总行数
  • 第二列:单词数目
  • 第三列:文件的字节数,即文件的大小
  • 第四列:文件名


也可以一次查看多个文件的内容,例如:

$ wc filename1 filename2 filename3

复制文件

可以使用 cp 命令来复制文件。cp 命令的基本语法如下:

$ cp source_file destination_file

下面的例子将会复制 filename 文件:

$ cp filename copyfile
$

现在在当前目录中会多出一个和 filename 一模一样的 copyfile 文件。

重命名文件

重命名文件可以使用 mv 命令,语法为:

$ mv old_file new_file

下面的例子将会把 filename 文件重命名为 newfile:

$ mv filename newfile
$

现在在当前目录下,只有一个 newfile 文件。

mv 命令其实是一个移动文件的命令,不但可以更改文件的路径,也可以更改文件名。

删除文件

rm命令可以删除文件,语法为:

$ rm filename

注意:删除文件是一种危险的行为,因为文件内可能包含有用信息,建议结合 -i 选项来使用 rm 命令。

下面的例子会彻底删除一个文件:

$ rm filename
$

你也可以一次删除多个文件:$ rm filename1 filename2 filename3

主目录

登录后,你所在的位置就是你的主目录(或登录目录),接下来你主要是在这个目录下进行操作,如创建文件、删除文件等。

使用下面的命令可以随时进入主目录:
$cd ~
$
这里 ~ 就表示主目录。如果你希望进入其他用户的主目录,可以使用下面的命令:
$cd ~username
$
返回进入当前目录前所在的目录可以使用下面的命令:
$cd -
$

绝对路径和相对路径

Linux 的目录有清晰的层次结构,/ 代表根目录,所有的目录都位于 / 下面;文件在层次结构中的位置可以用路径来表示。

如果一个路径以 / 开头,就称为绝对路径;它表示当前文件与根目录的关系。举例如下:
/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3
不以 / 开头的路径称为相对路径,它表示文件与当前目录的关系。例如:
chem/notes
personal/res
获取当前所在的目录可以使用 pwd 命令:
$pwd
/user0/home/amrood

$
查看目录中的文件可以使用 ls 命令:
$ls dirname
下面的例子将遍历 /usr/local 目录下的文件:
$ls /usr/local

X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami

创建目录

可以使用 mkdir 命令来创建目录,语法为:
$mkdir dirname
dirname 可以为绝对路径,也可以为相对路径。例如
$mkdir mydir
$
会在当前目录下创建 mydir 目录。又如
$mkdir /tmp/test-dir
$
会在 /tmp 目录下创建 test-dir 目录。mkdir 成功创建目录后不会输出任何信息。

也可以使用 mkdir 命令同时创建多个目录,例如
$mkdir docs pub
$
会在当前目录下创建 docs 和 pub 两个目录。

创建父目录

使用 mkdir 命令创建目录时,如果上级目录不存在,就会报错。下面的例子中,mkdir 会输出错误信息:
$mkdir /tmp/amrood/test
mkdir: Failed to make directory "/tmp/amrood/test";
No such file or directory
$
为 mkdir 命令增加 -p 选项,可以一级一级创建所需要的目录,即使上级目录不存在也不会报错。例如
$mkdir -p /tmp/amrood/test
$
会创建所有不存在的上级目录。

删除目录

可以使用 rmdir 命令来删除目录,例如:
$rmdir dirname
$
注意:删除目录时请确保目录为空,不会包含其他文件或目录。

也可以使用 rmdir 命令同时删除多个目录:
$rmdir dirname1 dirname2 dirname3
$
如果 dirname1、dirname2、dirname3 为空,就会被删除。rmdir 成功删除目录后不会输出任何信息。

改变所在目录

可以使用 cd 命令来改变当前所在目录,进入任何有权限的目录,语法为:
$cd dirname
dirname 为路径,可以为相对路径,也可以为绝对路径。例如
$cd /usr/local/bin
$
可以进入 /usr/local/bin 目录。可以使用相对路径从这个目录进入 /usr/home/amrood 目录:
$cd ../../home/amrood
$

重命名目录

mv (move) 命令也可以用来重命名目录,语法为:
$mv olddir newdir
下面的例子将会把 mydir 目录重命名为 yourdir 目录:
$mv mydir yourdir
$

点号(.)

一个点号(.)表示当前目录,两个点号(..)表示上级目录(父目录)。

ls 命令的 -a 选项可以查看所有文件,包括隐藏文件;-l 选项可以查看文件的所有信息,共有7列。例如:
$ls -la
drwxrwxr-x    4    teacher   class   2048  Jul 16 17.56 .
drwxr-xr-x    60   root              1536  Jul 13 14:18 ..
----------    1    teacher   class   4210  May 1 08:27 .profile
-rwxr-xr-x    1    teacher   class   1948  May 12 13:42 memo
$

查看文件权限

使用 ls -l 命令可以查看与文件权限相关的信息:
$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir
第一列就包含了文件或目录的权限。

第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):
  • 第一组字符(2-4)表示文件所有者的权限,-rwxr-xr-- 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。
  • 第二组字符(5-7)表示文件所属用户组的权限,-rwxr-xr-- 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。
  • 第三组字符(8-10)表示所有其他用户的权限,rwxr-xr-- 表示其他用户只能读取(r)文件。

文件访问模式

文件权限是Linux系统的第一道安全防线,基本的权限有读取(r)、写入(w)和执行(x):
  • 读取:用户能够读取文件信息,查看文件内容。
  • 写入:用户可以编辑文件,可以向文件写入内容,也可以删除文件内容。
  • 执行:用户可以将文件作为程序来运行。

目录访问模式

目录的访问模式和文件类似,但是稍有不同:
  • 读取:用户可以查看目录中的文件
  • 写入:用户可以在当前目录中删除文件或创建文件
  • 执行:执行权限赋予用户遍历目录的权利,例如执行 cd 和 ls 命令。

改变权限

可以使用 chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。

 

使用数字表示权限

除了符号,也可以使用八进制数字来指定具体权限,如下表所示:

数字 说明 权限
0 没有任何权限 ---
1 执行权限 --x
2 写入权限 -w-
3 执行权限和写入权限:1 (执行) + 2 (写入) = 3 -wx
4 读取权限 r--
5 读取和执行权限:4 (读取) + 1 (执行) = 5 r-x
6 读取和写入权限:4 (读取) + 2 (写入) = 6 rw-
7 所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 rwx


下面的例子,首先使用 ls -1 命令查看 testfile 文件的权限,然后使用 chmod 命令更改权限:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile
$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

更改所有者和用户组

在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。

有两个命令可以改变文件的所有者或群组:

  • chown:chown 命令是"change owner"的缩写,用来改变文件的所有者。
  • chgrp:chgrp 命令是"change group"的缩写,用来改变文件所在的群组。


chown 命令用来更改文件所有者,其语法如下:

$ chown user filelist

user 可以是用户名或用户ID,例如

$ chown amrood testfile
$

将 testfile 文件的所有者改为 amrood。

注意:超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。

chgrp 命令用来改变文件所属群组,其语法为:

$ chgrp group filelist

group可以是群组名或群组ID,例如

$ chgrp special testfile
$

将文件 testfile 的群组改为 special。

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

能够接受数据,过滤(处理或筛选)后再输出的工具,称为过滤器。

grep命令

grep 是一个强大的文本搜索工具,可以使用正则表达式,并返回匹配的行,语法为:
$grep pattern file(s)
“grep”源于 ed(Linux的一个行文本编辑器)的 g/re/p 命令,g/re/p 是“globally search for a regular expression and print all lines containing it”的缩写,意思是使用正则表达式进行全局检索,并把匹配的行打印出来。

grep 可以看做是一个过滤器,如果没有为 grep 指定要检索的文件,那么它会从标准输入设备(一般是键盘)读取;其他过滤器也是如此。

grep 命令最简单的使用就是检索包含固定字符的文本。

例如,在管道中使用 grep 命令,只允许包含指定字符的行输出到显示器:
$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$
grep 命令有很多选项:
选项 说明
-v 反转查询,输出不匹配的行。例如,grep -v "test" demo.txt 将输出不包含"test"的行。
-n 输出匹配的行以及行号。
-l 输出匹配的行所在的文件名。
-c 输出匹配的总行数。
-i 不区分大小写进行匹配。
下面我们使用正则表达式来匹配这样的行:包含字符“carol”,然后包含任意数目(含零个)的其他字符,最后还要包含“Aug”。

使用 -i 选项进行不区分大小写的匹配:
$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

sort命令

sort 命令在 Linux 中非常有用,它将文件中的各行按字母或数进行排序。sort命令既可以从特定的文件,也可以从stdin获取输入

通过下面的选项可以控制排序规则:

选项 描述
-n 按照数字大小排序,例如,10会排在2后面;-n 选项会忽略空格或 tab缩进。
-r 降序排序。sort 默认是升序排序。
-f 不区分大小写。
+x 对第x列(从0开始)进行排序。


下面的例子通过管道将 ls、grep 和 sort 命令连起来使用,过滤包含“Aug”的行,并按照文件大小排序:

$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$

上面的命令,对当前目录中八月份修改的文件按照大小排序;+4n 表示对第5列按照数字大小排序。

pg和more命令

如果文件内容过多,全部显示会很乱,可以使用 pg 和 more 命令分页显示,每次只显示一屏。

例如,通过管道,使用more命令显示目录中的文件:

$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
.
.
.
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)

如上,一次只显示一屏文本,显示满后,停下来,并提示已显示全部内容的百分比,按空格键(space)可以查看下一屏,按 b 键可以查看上一屏。

 

 

http://c.biancheng.net/cpp/html/2735.html

 
 

猜你喜欢

转载自eileenlml.iteye.com/blog/2377175
今日推荐