目录
关于超级用户root:
root用户可以做什么?
避免灾难:
格式约定:
浏览硬盘:
命令行补全和通配符:
命令行补全:
通配符:
常用基本命令:
查看目录和文件:
列出目录内容:ls命令
编辑
改变目录:cd命令
显示当前目录:pwd命令
列出目录内容:dir 和 vdir 命令:
查看文本文件:cat和more 命令
显示文件开头和结尾:head和tail命令
更好地阅读文本:less 命令
查找文件内容:grep 命令
文件在哪里:find 命令
定位文件:locate 命令
查找特定程序:whereis 命令
查看用户及版本信息:
who:
whoami:
uname:
寻求帮助:man 命令
获取命令简介:whatis 和 apropos 命令
whatis:
apropos:
小结:
关于超级用户root:
从字面意思来讲root就是“根”的意思,所有系统设置都需要用root用户来完成。所以超级用户也叫做根用户,这就相当与Windouws中的Administrator用户。
root用户可以做什么?
答案是任何事情,root用户是整个系统中拥有最高权限的用户可以对系统做任何事情。可以访问,修改,删除系统中的任何文件和目录。
另外,下面的这些受限权限一般来说只有root用户能够执行。
- 添加或删除用户
- 安装软件
- 添加或删除设备
- 启动和停止网络服务
- 某些系统调用(如对内核的申请)
- 关闭系统
避免灾难:
如上述提到的,root用户可以在系统中做任何事情,那么保证安全性就很重要。系统不会因为用户输入的命令足够愚蠢就不执行反而会乐滋滋地执行然后把自己完完整整地删除。
rm -rf // 删除根目录下的所有文件和目录
另外,一个安全可靠的root口令来保证安全也是很有必要的。
和普通用户一样,root账号可以用来直接登录系统,但由于任何一个误操作都有可能导致灾难性的后果显然是很糟糕的。
那么就应该在必要时才使用root账号,于是Linux提供了这样一个特性:用户可以使用不带参数的su命令将自己提升为root权限(当然需要口令),最后也可以用exit回到先前的用户状态。
另一个是sudo,可以让我们临时使用root身份运行一个程序并在执行完成后退回普通用户,后面还会讲。
(sudo的全称是super user do意思是超级用户去做)
格式约定:
Linux命令行界面有一个输入行用于输入命令,命令行以一个美元符“$”作为提示符表示用户可以输入命令了。
如果为普通用户标识符为“$”,如果是root身份那么标识符变为“#”。
浏览硬盘:
首先,进入根目录
cd / 进入根目录
ls 列出目录和文件
这样就可以现实根目录下的目录和文件。
同时我们也可以在根目录下输入tree详细列出目录,但是由于可能比较多会刷很久,如果先要中途停止可以按Ctrl+C来停止。
同时我们也可以通过不带参数(或者带~)的cd命令进入用户主目录
命令行补全和通配符:
命令行补全:
当输入文件名之类较长的名字时,我们可以使用命令行补全,输入前几个字符时按下Tab键可以自动将文件名补全。
例如在上面这种情况下按下Tab的效果为:
当以输入的字符开头的文件不止一个,可以按两下Tab键,Shell会以列表的形式给出所有以输入字符开头的文件。
例如在上面这种情况下按两下Tab的效果为:
通配符:
通配符是 * ? [ ]
*
(星号):
匹配零个或多个字符。
例如:
*.txt 匹配所有以 .txt 结尾的文件,如 file1.txt、document.txt。
data* 匹配所有以 data 开头的文件,如 data1、data_file。
?
(问号):
匹配单个字符。
例如:
file?.txt 匹配 file1.txt、fileA.txt,但不匹配 file10.txt。
?.log 匹配 a.log、b.log,但不匹配 abc.log。
[]
(方括号):
匹配方括号内的任意单个字符。
例如:
file[1-3].txt 匹配 file1.txt、file2.txt、file3.txt。
data[abc].csv 匹配 dataa.csv、datab.csv、datac.csv。
这些通配符在命令行中非常有用,尤其是在使用如 ls
、cp
、rm
等命令时,可以方便地选择多个文件
常用基本命令:
查看目录和文件:
列出目录内容:ls命令
ls命令是list的简化形式,选项非常的这里只介绍常用的选项。基本语法如下:
- 不带任何参数的Is 命令用于列出当前目录下的所有文件和子目录。例如:
在这个列表中,可以方便地区分目录和文件。默认情况下,目录显示为蓝色;普通文件显示为黑色;可执行文件显示为草绿色;淡蓝色则表示这个文件是一个链接文件(相当于 Windows 中的快捷方式)。
- 用户也可以使用带-F选项的ls命令:
可以看到,F选项会在每个目录后加上“/”,在可执行文件后加“*”,在链接文件后加上“@”。这个选项在某些无法显示颜色的终端上比较有用。
- 隐含文件:
以上文件就是主目录下的所有文件了吗?可以使用-a选项一探究竟。
可以看到很多头部带“.”的文件名。在Linux中,这些文件称作隐含文件,在默认情况下并不会显示。除非指定使用-a 选项显示所有文件
- 命令组合使用:
命令的选项可以组合使用,如果要指定多个选项,只需要使用一个短横线,无须给每个选项都加一个短横线。例如:
- l 选项:
这个选项可以用来查看文件的各种属性。例如:
上面共有8个信息栏,从左至右依次表示:
- 文件的权限标志(后面会详细介绍)。
- 文件的链接个数(后面会详细介绍)。
- 文件所有者的用户名。
- 该用户所在的用户组组名(所有者和用户组的概念后面写)。
- 文件的大小。
- 文件最后一次被修改时的日期。
- 文件最后一次被修改时的时间。
- 文件名。
在Is 命令后跟路径名可以查看该子目录中的内容。例如:
改变目录:cd命令
cd命令用于Linux文件直通的不同部分之间切换,输入cd命令,后面跟踪一个路径名作为参数就可以直接进入另一个子目录。其中cd后面以两个点(.)作为参数代表会到上级目录。
显示当前目录:pwd命令
pwd命令会显示当前所在位置也就是工作目录,例如:
列出目录内容:dir 和 vdir 命令:
Windows用户可能比较熟悉dir这个命令。Linux中也有dir命令,但是功能比Is命令少一些。
vdir命令相当于为1s命令加上小选项,可以默认情况下列出目永和文件的完整信息。
查看文本文件:cat和more 命令
cat命令:
cat 命令用于查看文件的内容(通常这是一个文本文件...),后跟文件名作为参数。例如
cat 命令后面可以跟多个文件名作为参数,当然也可以使用通配符。例如:
为了调试方便,常常需要显示代码行号。为此,cat 命令提供了-n 选项,可以在每一行代码前显示代码行号。
more命令:
cat命令会一次性将所有内容全部显示在屏幕上,这看起来是个“缺陷”。因为对一个长达几页其至几十页的文件而言,cat 命令显得毫无用处。为此,Linux 提供了more命令逐页地显示文件内容。
例如,以下是对一个含有一千行hello的txt文件使用more命令展示:
可以看到,more 命令会在最后显示一个百分比,表示已显示的内容占整个文件的比例,按空格键就可以向下翻动一页,按Enter键可以向下滚动一行,按Q键可以退出。
显示文件开头和结尾:head和tail命令
head 和 tail分别用于显示文件的开头和结尾。可-n 参数指定显示的行数。
注意,head 命令的默认输出包括文件名(放在==>和<==之间。tail命令的用法和head命令相同。
更好地阅读文本:less 命令
less 命令和 more 命令很相似,但less 命令的功能更强。
less 命令改进了 more 命令的很多细节,并添加了许多特性。总体来说,less 命令提供了下面这些增强功能。
- 使用方向键(键盘上的上、下、左、右键)在文本文件中前后或左右滚屏。
- 用行号或百分比作为书签来浏览文件。
- 实现复杂的检索、高亮显示等操作。
- 兼容常用的字处理程序(如Emacs 和 Vim)的键盘操作。
- 阅读到文件结束时less 命令不会退出。
- 屏幕底部的信息提示更容易控制使用,而且提供了更多的信息。
下面简单地介绍 less 命令的使用方法,以一千行hello文本为例。
可以看到,使用less 命令时会在屏幕底部显示一个冒号“ : ”等待用户输入命令。
如果想向下翻一页,可以按空格键。如果想向上翻一页,按B键。也可以用方向键向前后或者左右移动。
如果要在文件中搜索某一个字符串,可以使用正斜线“/”后面跟想要查找的内容,less 命令会把找到的第一个搜索目标高亮显示。要继续查找相同的内容,只要再次输入正斜线“”并按Enter键就可以了。
以下为输入 /666结果
使用带参数M 的less命令可以显示更多的文件信息,例加下而的输出。
可以看到,less 命令在输出信息的底部显示了这个文件的名称、当前页码、总的页网。以及表示当前位置在整个文件中的位置的百分比数值。最后按Q 键可以退出 less 命令并近回 Shell 提示符。
查找文件内容:grep 命令
有的时候用户不需要列出文件的全部内容,用户只是能我到包含某些信息的那一行内容。在这个时候使用more命令一行一行去会很麻烦,特别是当文件特别大时。
为了在文件中寻找某些信息,可以使用grep 命令(grep也可以指定多个文件索引)。
例如:
如果要查找含有空格的关键词,那么必须在关键词的两边加单引号,以便把空格包含进去
例如:
文件在哪里:find 命令
find 能够迅速在指定范围内查找到文件。find 命令的基本语法如下:
find [option] [path...] [expression]
例如,希望在/usr/bin/目录中查找zip 命令
可以看到,find 命令需要一个路径名作为查找范围,在这里是/usr/bin/。find 命令会深入这个路径的每一个子目录中去寻找,因此,如果指定“/”,就是查找整个文件系统。
-name选项指定了文件名,在这里是zip。可以使用通配符来指定文件名,如“find ~ -name *.c-print”将会列出用户主目录下所有的C程序文件。
-print 表示将结果输出到标准输出(在这里也就是屏幕)。注意,find命令会输出文件的绝对路径。
find 命令还能够指定文件的类型。在Linux 中,目录和设备都以文件的形式表现,可以使用 find 命令的-type 选项来定位特殊的文件类型。例如,在/etc/目录中查找名称为 init.d 的目录:
find命令的-type选项可供使用的参数:
参数 | 含义 |
b | 块设备文件 |
c | 字符设备文件 |
d | 目录文件 |
f | 普通文件 |
p | 命名管道 |
l | 符号链接 |
还可以通过指定时间来指导 find 命令查找文件。-atime n 命令用来查找在几天前最后一次使用的文件,-mtime n则用来查找在n天前最后一次修改的文件。但是在实际使用过程中,很少能准确确定n的大小。在这种情况下,可以用+n表示大于n,用-n 表示小于n。例如,在/usr/bin/中查找最近 100天内没有使用过的命令(也就是在 100 天或 100 天以前最后一次使用的命令)。
类似地,下面的命令用于查找在~目录中,最近一天内修改过的文件
定位文件:locate 命令
对于大批量的搜索而言find还是显慢了一些,特别是当用户完全不记得自己的文件放在哪里时,就需要使用locate 命令
locate的搜索结果几乎是一瞬间就出现了
(事实上,locate 命令并没有进入子目录进行搜索,它类似于 Google的桌面搜索,通过检索文件名数据库来确定文件的位置。locate 命令会自动建立整个文件名数据库,不需要用户插手。如果希望立刻生成该数据库文件的最新版本,那么可以使用 uplaredb 命令。运行 updatedb 命令需要有 root权限,更新整个数据库大概耗时 1min。)
查找特定程序:whereis 命令
whereis 命令主要用于查找程序文件,并提供这个文件的二进制可执行文件、源代码文件和使用手册页存放的位置。例如,查找find命令:
可以使用 -b 选项让 whereis命令只查找这个程序的二进制可执行文件。
如果whereis 命令无法找到文件,那么将返回一个空字符串。
查看用户及版本信息:
who:
who 命令可以查看当前系统中的登录用户及他们都工作在哪个控制台上。
whoami:
有时用户可能会忘记自己是以什么身份登录系统的,这种情况下使用 whoami 命令它会回答“我是谁”这个问题。
uname:
另一个常用的命令是uname,其用于显示当前系统的版本信息。
带-a选项的uname 命令会给出当前操作系统的所有有用信息。
大部分时候只需要知道内核版本信息,此时可以使用-r选项。
`
寻求帮助:man 命令
在 Linux 中获取帮助是一件非常容易的事情。Linux 几乎为每个命令和系统调用都翁写了帮助手册。使用man 命令可以方便地获取某个命令的帮助信息。(输入q 退出)
man find
man 命令在显示手册页时实际调用的是less 命令。可以通过方向键或K键(向上)、J 键(向下)上下翻动。空格键用于向下翻动一页。按 q 键退出手册页面。man 命令手册一般被分为9节,各部分的内容如下所示。
目录 | 内容 |
/usr/share/man/man1 | 普通命令和应用程序 |
/usr/share/man/man2 | 系统调用 |
/usr/share/man/man3 | 库调用,主要是libc()函数的使用文档 |
/usr/share/man/man4 | 设备驱动和网络协议 |
/usr/share/man/man5 | 文件的详细格式信息 |
/usr/share/man/man6 | 游戏 |
/usr/share/man/man7 | 文档使用说明 |
/usr/share/man/man8 | 系统管理命令 |
/usr/share/man/man9 | 内核源代码或模块的技术指标 |
获取命令简介:whatis 和 apropos 命令
whatis:
man 手册可以说是“长篇大论了”,用户只想要知道某个命令大概可以做哪些事,此时可以使用 whatis 命令。
whatis 命令可以从手册页中抽出一行简单的介绍性文字,帮助用户了解这个程序的大致用途。whatis 命令的原理同 locate 命令基本一致。
apropos:
apropos与 whatis 命令相反的,可以通过使用手册反查到某个命令。
举例来说,如果用户想要搜索一个文件而又想不起来应该使用哪个命令的时候,可以这样求助于 apropos:
可以看到,apropos 将命令简介(其实就是whatis 命令的输出信息)中包含 search的条目一并列出,用户可以从中找到自己想要的答案。
小结:
- 命令行是Linux的精华部分,所有的系统管理操作都可以在 Shell 下完成。口 有多种不同的 Shell 可供使用。目前 Linux中使用最广泛的是BASH。
- 可以使用命令行补全和通配符提高使用 Shell的效率。口 pwd命令用于显示当前的目录信息。
- cd命令用于在目录间切换,这是Linux 中使用最频繁的命令。口 Is 命令提供了大量选项供用户查看目录内容。
- dir和vdir 命令是Is命令的“袖珍”版本。
- 使用cat命令可以查看文本文件。more 命令可以分页显示一个较长的文本文件。口 使用 head和tail命令可以显示一个文件的开头和结尾。
- less 命令提供了查看文件的更高级功能。man 命令就是通过调用 less 命令显示帮助手册信息的。
- grep 命令是查找文件内容的利器,更高级的使用方法参见第20章。口 find 命令可以按需查找某个特定的文件(包括目录)。
- locate 命令通过事先建立数据库提高搜索文件的速度。
- 直接输入程序名称可以从终端运行程序。可以选择在后台执行程序,从而使当前Shell继续接受命令输入。
- whereis 命令可以查找某个特定程序所在的位置。
- 通过 who 命令可以查看当前有哪些登录用户。
- uname 命令用于显示当前系统的版本信息。
- Linux 提供了详细的帮助手册,可以通过 man 命令查看,这些手册通常被分为 9节,包含特定的主题。
- whatis 和 apropos 命令能够从 man 命令手册中提取简要的信息。