本文旨在介绍一些Linux常见概念、命令,尽量以通俗易懂的语言描述,比较适合Linux和命令行新手入门。任何技能都是孰能生巧,所以现在就打开终端操作吧~
声明:下面篇幅介绍的内容都非常基础,大家还需要自己上网学习,深入了解Linux。
一、基本概念
-
文件(file)
Linux或者基于Unix的系统,其所有资源,包括硬件资源,都是以“文件”的形式体现,比如应用程序,网卡等。所以当提到某块硬盘,某个程序,某个配置,你首先应该知道,它同样是一个文件。下面提到文件的时候,都表示这个含义,而不是狭义的文档文件。 -
用户,用户组(user, user group)
Linux、Window、macOS甚至Android,都是多用户操作系统。一个用户会有独立的私有空间,创建的文件(注意上面的概念),会有用户的标识,从而控制是否允许其他用户访问。
用户组就很好理解了,就是一组用户。 -
root用户
root用户是权限最高的用户,可以对操作系统执行任意指令,root用户也被叫做super user。 -
目录(directory)
目录可以理解为文件夹,但是,目录依然是一个文件。
家目录/主目录:在Linux上登录一个用户,一般会自动定位到一个目录,这个目录就是家目录,对于一般用户,比如abc,家目录位于/home/abc/
ps:(macOS上,用户家目录位于/Users/abc),如果是root用户,家目录位于/root/。家目录也可以用~波浪符号表示,。
目录分类大致如下:
/:根目录,顾名思义,根目录就是目录树的顶层,所有路径的根节点。
.:当前目录,anyway,就是当前目录。
…:上级目录。 -
权限(permission)
权限问题可能是新手会遇到的最多,也最懵逼的问题,Linux通过用户来划分文件的访问权限。一个文件,会通过一组标记位来表示该文件的可访问状态。
访问操作包含:读取,写入,执行。
查看权限信息的命令:ls -l(命令在第二部分会完整介绍)
如果你搜索过权限问题,那么对这组标记不会陌生:drwxrwxrwx。
上面列出的是全部标记为真的情况,事实上很可能是这样的-rw-r–r--。
一共10位标记位,第一位含义是是否按目录访问;后面9位分为三组,每组3个标记位,分别表示是否可以读取、写入、执行,每一组的权限都是针对某个用户或用户组而言。
第一组针对文件的所有者用户(一般是创建者)。(所有者权限)
第二组针对文件的所有者用户所在的同组其他用户。(组权限)
第三组针对不同组的其他用户。(其他用户权限)
举个栗子:
A用户创建了一个txt文件,该文件权限为-rw-r–r--,那么A可以读,写,但是不能执行(这里不能执行时因为该文件本身不可执行,并不是因为A没有权限);而其他同组用户和不同组用户都只能读取内容,但是不能修改(写)。
权限表示方法:
权限在很多时候会通过三个十进制数字表示(r-4(100),w-2(010),x-1(001)),比如777,每个数字表示上面所说的一组权限。每一组权限可以用3位二进制表示,所以每一组权限可以转换成1个十进制的0-7。比如-rw-r–r--表示成644。
- 命令行,终端(command line, terminal)
首先要明确一个概念:命令行和图形界面一样,都是一种交互界面,交互界面的功能,就是接收用户输入,反馈执行状态并输入接口。
所以不要看着命令行觉得可怕,相比于设计的不好的图形界面,命令行反而会反馈更多信息。如果没有特别的需求(比如需要在Linux上使用IDE),强烈建议只使用命令行界面。
命令行的交互方式简单:输入指令,观察结果。事实上图形界面的工作原理,都是通过把鼠标的点击操作,映射成一条或多条指令完成的,只不过反馈方式不同而已。
二、常用命令行命令
在列举常用命令之前,需要先明确一个概念,这里说的“命令”,同样也是一个应用程序,既然是应用程序,那么同样也是一个文件,既然是文件,那么也会出现无权限访问的情况。所以,执行命令,就是运行一个应用程序。
$: man
描述:显示某个命令的说明,man即manual(手册)的缩写。所以当你有个指令不知道有什么参数可用,不知道参数什么意思,可以用man指令查看说明,还可以锻炼下英语。
用法:man [指令]
举例:man grep 查看grep的用法
$: cd
描述:进入某个目录。也许是用的最多的命令之一了,既然所有资源都是文件,那么做的最多的工作就是找到这些文件,并在目录间跳来跳去。
用法:cd [路径]
举例:
cd ~ 进入家目录
cd / 进入根目录
cd ./a/b/c 进入当前目录下的a/b/c目录
cd - (减号)后退到刚才在的目录(不是上级目录)。比如在~目录执行cd /etc会进入/etc目录。再执行cd -会会退到~,而执行cd …会进入/目录。注意两者的区别。
cd … 后退到上一级目录。(向上)
$: ls
描述:列出某目录(默认当然目录)下的文件。
用法:
ls
ls [路径]
ls -l 列出文件,并包含详细信息。
ls -a 列出所有文件(包含隐藏文件:文件名以.开头)
举例:
ls
ls /
ls -al 列出所有文件,并打印详细信息。
$: clear
描述:清屏。其实是终端屏幕内容向上滚动,隐藏历史输出内容。
用法:clear
举例:clear
$: sudo
描述:使用root用户身份执行,当执行某操作时,比如安装软件,当前用户权限不足,就需要使用sudo。使用sudo时需要输入当前账户的密码,能执行sudo的前提,是当前用户在sudoer列表内。
用法:sudo [其他指令]
举例:sudo yum install vim 系统范围内,使用yum安装vim。
$: su
描述:切换用户。
用法:
su [用户名]
su 切换到root用户,切换到root用户需要输入root用户密码。
举例:
su abc
su 等同于 su root
$: mkdir
描述:创建目录
用法:
mkdir [目录名]
mkdir -p [目录树] 如果目录树上有目录不存在,将自动创建
举例:
mkdir ~/a 在家目录下创建a目录
mkdir -p ~/b/c 在家目录下的b目录下创建c目录,如果b不存在,将创建b,再创建c。
$: mv
描述:移动文件
用法:mv [文件] [目标目录]
举例:mv a.txt ~/a/ 移动当前目录下的a.txt文件到~/a/目录下。
$: cp
描述:拷贝文件
用法:
cp [文件] [目标目录]
cp -r [目录] [目标目录]
举例:
cp a.txt ~/a/
cp -r ~/a ~/b
$: cat
**描述:**打印文件内容。如果只想查看文件内容,可以使用cat,而不是vim。
用法:cat [文件]
举例:cat ~/a.txt
$: chmod
描述:修改文件权限。
用法:
chmod [权限值] [文件] 直接设置权限值
chmod [对象][操作][权限] [文件] 单独操作某个权限。对象、操作、权限分别用符号替换,就能进行精细操作。
对象:a全部,u所有者权限,g组权限,o其他权限。(见上文权限部分)
操作:+增加权限,-减少权限。
权限:r读,w写,x执行
chmod -R [其他操作] 递归应用到目录及目录内容
举例:
chmod 740 a.txt 将a.txt的权限设置为740表示的权限:?rwxr-----。
chmod a+x a.txt 将a.txt的三组权限,增加可执行标记位。
chmod og+w a.txt 将a.txt的写权限,赋予同组用户以及其他用户。
这里只列出权限操作的部分方法,权限除了读,写,执行,还可能有其他限制,这里不做讨论。
$: chown
描述:修改文件所有者
用法:
chown [用户].[组] [文件]
chown -R [用户].[组] [目录]
举例:chown -R nginx.nginx projects 当projects目录的所有者,修改为nginx组的nginx用户。
$: history
描述:命令行操作历史记录。查看刚刚输入过的指令。
用法:
history
! [序号] 使用感叹号加history输出结果前面的序号,可以快速重新输入该条指令。
举例:history
除了以上介绍的之外,还有一些指令,比如grep,tail,source,touch,alias等,以及操作符|,>,>>等也较为常用,出于篇幅考虑留给大家自己Google或者用到的时候去查吧。总之命令行没什么可怕的,即便是图形界面,你也会遇到不明白什么意思的选项,也会遇到不知道怎么解决的报错,遇到问题去Google就好,肯定能解决,而且每解决一个问题,就学到一点知识。