操作系统(Operating Systems, OS)实际上是一种用于计算机的软、硬件资源管理调度的系统级软件,它的主体是内核(Kernel),其主要负责进程管理、内存管理、文件管理和外设管理等功能,而它也向外界提供了内核的接口即系统调用(System Call)以便于通过OS来利用计算机资源。
此外,OS还为用户提供了一种交互式的命令行软件,即Shell,它接受命令并将其传递给OS去执行。Shell本质上是一种命令行解释器,而我们通常通过命令行终端去访问Shell程序。
Unix是上世纪60年代开发出的多用户、多任务的操作系统,而Linux是目前最为流行的类Unix系统。Linux将Bash作为默认的Shell。接下来,本文主要将根据UNIX Tutorial for Beginners对常用Shell命令做介绍。
系统目录结构Linux树状目录结构:
以下为部分目录的解释:
- /bin:该目录存放着最经常使用的命令,即可运行的Binaries (二进制文件)。
- /boot:该目录下存放的是启动Linux时使用的一些核心文件。
- /dev:该目录下存放的是Linux的外部设备。
- /etc:该目录下存放的是所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,每个用户都有一个以用户的账号命名的的目录。
- /lib:该目录下存放系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。
- /root:该目录为系统管理员(超级权限者的用户)的主目录。
- /usr:该目录存放的是用户的很多应用程序和文件。
- /usr/bin:系统用户使用的应用程序。给系统用户使用的指令。
当第一次登录时,当前的工作目录即主目录。你的主目录与你的用户名具有相同的名称,例如user123,它是你的个人文件和子目录的保存位置。
注意,在Liunx中,目录本身是一种特殊的文件。
1.1 列出文件和目录
ls (list)
$ ls
,列出当前工作目录下的文件和子目录
$ ls -a
要列出主目录中的所有文件,包括名称以点开头的文件(隐藏文件,通常包含重要的程序配置信息)
$ ls -l
,以长模式(long)列出主目录中的文件
ls -l
中各个输出字段的含义(包括文件大小-字节,修改时间)
大多数命令使用的选项形式是command -options arguments
,由一个中划线加上一个字符以及参数组成。
但是许多命令,也支持长选项,长选项由两个中划线加上一个字组成。许多命令也允许把多个短选项串在一起使用。
例如,ls
命令的选项如下
注意:dir
和ls
功能相同,但ls
会高亮目录始终会返回主目录。
1.2 创建目录
mkdir (make directory),在工作目录中创建一个子目录
$ mkdir subdir
1.3 切换目录
cd (change directory),将当前工作目录更改为目标目录(当前工作目录是你所在的目录,即你在文件系统树中的当前位置)
$ cd subdir
1.4 目录 . 和 ..
当你键入$ ls -a
时,可以发现有两个特殊目录,分别称为(.)和(..)
(.)表示当前目录,因此键入$ cd .
会留在原地
( .. ) 表示当前目录的父目录,因此键入$ cd ..
会将你带到文件系统树中的上一层目录(父级目录)。
注意:键入不带参数的即,$ cd
始终会返回主目录。
1.5 路径名 pwd(print work directory)
$ pwd
,路径名使你能够确定与整个文件系统相关的位置。
$ ls ~
,可通过波浪号~字符来引用主目录。它可用于指定从主目录开始的路径。
$ cd ~
和$ cd
都可以切换到主目录
使用命令行程序可以更轻松地完成复杂的文件操作任务。
例如,使用如下命令:$ cp -u *.html destination
可将所有HTML文件从一个目录复制到另一个目录,但只复制目标目录中不存在或比目标目录中的版本更新的文件。
通配符
使用在介绍和文件相关的命令前,有必要了解一下使这些命令如此强大的通配符。
由于shell大量使用文件名,它提供了特殊字符来帮助您快速指定文件名组。这些特殊字符称为通配符。通配符允许您根据字符模式选择文件名。
下表列出了通配符及其选择的内容:
使用通配符,可以为文件名构建非常复杂的选择标准。以下是一些模式示例及其匹配内容:
我们可以将通配符用于任何接受文件名参数的命令。
2.1 复制文件
cp(copy)
$ cp file1 file2
是在当前工作目录中复制file1,并将其称为file2的命令。
例如,将当前目录的文件复制到子目录,并重命名。
2.2 移动文件
mv(移动)
$ mv file1 file2
移动(或重命名)file1到file2
要将文件从一个地方移动到另一个地方,请使用mv
命令。
mv
命令还可以用于重命名文件,其方法是将文件移动到同一目录,但给它一个不同的名称。
2.3 删除文件和目录
rm(remove),rmdir(remove directory)
要删除文件,请使用rm
命令。
使用rm file1 file2
可以同时删除file1和file2
使用递归选项 ( -r),rm 也可用于删除目录:
rm -r dir1
, 目录dir1连同它们的所有内容一起被删除。
注意,Linux没有取消删除命令。一旦你用
rm
删除了一些东西,它就消失了。如果您不小心rm
,尤其是使用通配符*
,可能会对系统造成严重损害。
在使用rm
通配符之前,请尝试这个有用的技巧:
使用
ls
来构造命令。通过这样做,可以在删除文件之前查看通配符的效果。使用ls
测试命令后,使用向上箭头键调用命令,然后在命令中rm
。
ls
使用rmdir
命令删除一个目录(首先确保它是空的,Linux不允许您删除非空目录)。
2.4 查看文件类型
file
命令可以查看文件的数据类型。file
将检查一个文件并告诉我们它是什么类型的文件。
要使用该file
程序,我们只需键入:$ file name_of_file
该file程序可以识别大多数类型的文件,例如:
2.5 在屏幕上显示文件的内容
clear(clear screen)
clear
命令可用于清除前面命令的终端窗口
cat (concatenate)
cat
命令可用于在屏幕上显示文件的内容(cat本质上是一种重定向)
less
less
命令一次将文件的内容写入屏幕一页。
如果要查看另一页,请按空格键,如果要退出阅读,请按q。对于长文件, less
优先于cat
使用。
head
head
命令将文件的前10行写入屏幕。先清屏再输入
$ head -5 readme.txt
, 将文件的前5行写入屏幕。
tail
tail
命令将文件的最后10行写入屏幕。
2.6 搜索文件内容
使用less的简单搜索
使用less
命令,您可以在文本文件中搜索关键字(模式)。例如,要在science.txt中搜索单词science,请输入$ less science.txt
然后,仍然在less
中,键入正斜杠 [ / ],后跟要搜索的单词
less
将查找并突出显示关键字。键入 [ n ] 以搜索下一个出现的单词。
grep(不要问为什么叫grep)
$ grep 'keyword' file
, grep在文件中搜索指定的单词或模式。
grep命令区分大小写
先清屏,再输入% grep 科学 science.txt
要忽略大小写区别,请使用 -i
选项,即键入
$ grep -i 科学 science.txt
要搜索短语或模式,您必须将其括在单引号中(撇号)。例如要搜索陀螺,输入$ grep -i '陀螺' science.txt
grep
的其他一些选项是:
v
显示那些不匹配的行n
在每个匹配行之前加上行号c
只打印匹配行的总数
一次可以使用多个选项。例如,没有单词science或Science的行数是$ grep -ivc science science.txt
wc(word count)
wc
命令是一个方便的小工具。
要对readme.txt进行字数统计,请键入% wc -w readme.txt
要找出文件有多少行,请键入% wc -l readme.txt
上述介绍的几个命令接受多个文件和目录名称作为参数,因此可以使用通配符来指定它们。这里有一些例子:
- UNIX Tutorial for Beginners http://www.ee.surrey.ac.uk/Teaching/Unix/index.html
- Linux教程
https://www.runoob.com/linux/linux-system-contents.html - TLCL
http://billie66.github.io/TLCL/book/index.html
http://linuxcommand.org/lc3_lts0050.php