- 输入
- echo
- 输出重定向
- pwd
- 历史命令
- date
- cal
- clear
- 关机 & 重启
- 帮助命令
- 切换路径命令
- passwd
- Linux用户
- 查看用户
- 用户组
- 添加用户
- 删除用户
- 添加/删除组
- /etc/passwd & /etc/shadow
- 查看用户所属的组
- /etc/group & /etc/gshadow
- 为用户添加备注
- usermod
- gpasswd
- 切换用户
- 文件系统
- 查找文件
- cat
- touch
- grep
- 管道命令
- 统计文件信息
- 创建目录
- 删除文件/目录
- 列出文件
- 拷贝文件
- 剪切文件
- 修改文件名
- 文件结构
- 链接
- 用户和权限
- chmod
- umask
- chown
- chgrp
- 文件权限的理解
- 目录权限的理解
- 压缩 & 打包 & 解压缩
- 别名
- 定时任务
- 成组命令
- sort
- uniq
- 文件类型
- ex1:用户管理
- ex2:文件目录管理
输入
终端窗口中的命令以Enter键结束,且Shell命令区分大小写。如果命令太长,一行放不下时,在行尾输入\并按Enter键。这时Shell会返回一个大于号(>)作为提示符,表示该命令行尚未结束,允许继续输入有关信息。
echo
echo命令把命令行中的参数全部显示到标准输出(终端)中。如果参数用引号引起来,会按原样输出。否则会把各个单词按字符串输出,字符串之间用空格隔开。单引号/双引号的区别请看Shell那一部分。
输出重定向
Linux的标准输出是屏幕,把结果输出到指定的文件叫做输出重定向。
>:目标文件不存在,系统将建立该文件;文件存在,重定向将会删除该文件,并重新建立一个新文件存放结果。>>:目标文件不存在,系统将建立该文件;如果目标文件存在,新的输出结果将会追加到文件末尾。pwd
历史命令
history命令可以看到用户所有曾经输入过的命令。!!:执行上一个命令;- `!n:执行第n个命令;
!-n:执行倒数第n个命令;!xxx:执行以xxx开头的命令,如之前使用过clear,!cle会执行clear。
~/.bash_history文件中会存储你近期使用过的命令。查看此文件:cat ~/.bash_history
date
date命令在屏幕上显示或设置系统的日期和时间:date [+格式控制字符串]格式控制字符串常用单引号引起来。年:Y 月:m 日:d 小时:H 分:M 秒:S

- 有且只有超级用户能设置或修改系统时钟,语法如下:
date -s “year-month-day hour:minute:second”

系统在启动的时候是从CMOS(用来存储计算机某些参数的芯片)中加载时钟,为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,而hwclock –w强制把系统时间写入CMOS。
cal
列出日历信息。
- 单独一个cal:列出当前月的日历信息。
- cal xxxx:列出xxxx年的日历信息。
- cal yy xxxx:列出xxxx年yy月的日历信息。
- cal dd yy xxxx:列出xxxx年yy月xx日所在月的日历信息。
clear
clear命令清除屏幕上的信息,清屏后,提示符移到屏幕左上角。
关机 & 重启
shutdown -h now:立刻关机shutdown -h 15:30:15:30 关机shutdown -h +30:30 分钟后关机reboot:重启shutdown -k +2 "一会要关机,抓紧保存":向所有用户输出关机通知,但不做真正操作。+2表示通知的关机时间是现在之后的两分钟。帮助命令
如果我们忘记某些命令或其参数如何使用,需要使用帮助命令。
whatis <命令>:显示命令的简短描述。<命令> -help:显示使用方法概述和参数列表。man <命令>:为命令提供相关帮助文档,页面分成章节。-
切换路径命令
cd <位置>:切换到指定位置;cd ~:切换到用户家目录;-
passwd
修改密码。
单独的passwd:修改使用该命令的用户的密码。passwd 用户名:root用户可以使用该命令修改其他用户的密码。Linux用户
登录Linux系统时,必须通过指定的用户名和密码进行登录。不过所有的用户在Linux眼中都是一个数字,用userid(一个32位的二进制整数)来表示。可以通过id命令,查看自己的userid。userid为0的表示根用户。同时,在系统运行的每个进程、所创建的每个文件都有一个userid,这个userid代表运行这个程序的用户,或者文件的所有者。Linux系统中,用户被保存在
/etc/passwd文件中。用户又分成三类:一般用户(userid>=500)、超级用户(userid=0)和系统用户(userid<500)。
查看用户
Linux是一个多用户系统,即很多个用户同时操作一个设备中的资源,但不同的用户有不同的权限。这些用户中有一个是超级用户(root),它是权限最高的用户。root用户在终端中的输入命令以#开头,其他的用户以$开头。



who am i:列出使用该命令的用户、所用的终端名和注册到系统的时间。
用户组
由于不同的用户有不同的权限。为了给不同的用户赋予相同的权限更加方便,诞生了用户组的概念。即同一个用户组里的人员可以有相同的某些权限。Linux中的用户或文件至少属于一个用户组。
添加用户
useradd或者adduser。执行后的具体操作(不同发行版有区别):
- 分配一个新的userid,数值等于之前所有userid中数值最大的加一。
- 在/etc/passwd中添加一行。
- 为用户在/home下建立一个新的目录(用户的家目录),目录名和用户名相同。
- 在/etc/group中为用户建立一个新的个人组。
- 在/var/spool/mail中创建用户的邮件文件。
删除用户
userdel <用户>。删除用户及部分相关信息,家目录和邮件文件还会存在。
/etc/passwd & /etc/shadow
/etc/passwd有7列:用户名、密码、用户id、主要组id、备注信息、主目录、登录shell。- 各列之间使用
:分割。同时密码一般都是x(被加密了),加密后的密码在/etc/shadow中。
- 各列之间使用

/etc/shadow有9列:用户名、加密密码、最近更改密码的日期、密码不可更改的天数、密码需要重新更改的天使、密码更改期限前的警告期限、密码过期的宽限时间、帐号失效日期、保留字段。但这里显示的密码是加密的。
查看用户所属的组
groups:查看使用此命令的用户所属组;groups <用户>:查看指定用户所属组。用户可多选,使用空格隔开。/etc/group & /etc/gshadow
/etc/group:组名、组密码、组id、组中附加用户。
为用户添加备注
- 在创建的时候添加:
useradd -c <备注> 用户名。 创建后修改:
usermod -c <备注> 用户名。(会清除之前的备注信息)。usermod
改变用户某些属性的命令。
-l:改变用户的名称;-G:改变用户支持的用户组,会退出原来的附属组,配合-a不会删除之前组;
-L:不让该用户登录;-e:设定用户失效日期。日期格式:“YYYY-MM-DD”。-s:改变Shell。新创建的用户默认使用bash,此选项修改登录Shell。超级用户输入
su 用户名可以不用输入密码切换到其他用户。-
文件系统
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
文件:文件系统中存储数据的一个命名的对象。即使是空文件(不包含用户数据)也会为操作系统提供其他信息。
目录:包含文件项目的一类特殊文件。Linux中在应用层上来看目录和文件是被区分开来的。

查找文件
find <路径> -name '正则表达式':如find . -name '*.so',查找当前目录下以.so结尾的文件。cat
cat <文件>:显示文件的内容。文件可以多选,之间用空格隔开。-
touch
文件不存在:则创建一个空的新文件;
-
grep
命令的意思:global search regular expression and print out the line。
部分选项如下:
-a:将 binary 文件以 text 文件的方式搜寻数据-c:计算找到 ‘搜寻字符串’ 的次数-i:忽略大小写的不同,所以大小写视为相同-n:顺便输出行号-v:反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!--color=auto:可以将找到的关键词部分加上颜色的显示喔!举例如下:
管道命令
管道命令是用来过滤信息的,比如我们之前
grep -n root /etc/passwd之后显示带有root的行,如果想在结果中再按其他条件过滤就要使用管道命令:“|”。
统计文件信息
wc:统计指定文件的字节数(-c)、字数(-w)、行数(-l)例子:统计文件a中以b开头的行数:
cat a | grep ^b | wc -l创建目录
mkdir <文件名>。-
删除文件/目录
rm -rf <文件名>。-r表示递归删除;-f表示强制删除,不询问。列出文件
ls命令列出指定目录的内容。

-a:显示所有文件。之前显示的没有隐藏文件(以.开头)。-
拷贝文件
剪切文件
修改文件名
文件结构
Linux中所有的文件都由两部分构成。
索引结点:包含此文件的信息,如文件权限、文件主、文件大小等。
- 数据:文件的实际内容,有没有数据都可以。
链接
链接就是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
- 硬链接:硬链接是多一个文件名和inode结点关联。由于它依赖于inode,所以不能在不同的文件系统之间做硬链接。硬链接不能用于目录。用法:
ln <被链接的文件> <新的文件名>
软连接:软连接是再拓展出一份inode,这个inode指向的区域保存如何找到真正数据的信息。用法:
ln -s <被链接的文件> <新的文件名>
用户和权限
文件主:文件所有者,并赋予唯一的注册名。只有文件主或root才有权利用
chown命令改变文件的所有关系(UID)。- 用户组:通常,组中包含了有相同需求的用户。文件主或超级用户(root)可以利用
chgrp命令改变文件的GID。 - 用户存取权限:Linux系统中规定了4种不同类型的用户:文件主、同组用户、其他用户、超级用户。
3种访问文件或目录的方式:r(读)、w(写)、 x(可执行或查找)。

chmod
只有文件主或超级用户root才有权用
chmod命令改变文件或目录的存取权限。- 使用格式:
chmod [选项] MODE 文件。MODE可多选,之间用,隔开。- MODE:
<who><操作符号><权限>。- who:u——user、g——group、o——others、a——all(可叠加)。
- 操作符号:
+ 添加、- 取消、= 赋予; - 权限:r 读、w 写、x 执行。(可叠加)
- MODE:
- 举例
- 以绝对方式改变权限
- 置为1表示有相应权限,置为0表示没有相应权限。例如:
r w x r - x r - -1 1 1 1 0 1 1 0 0 - 转换成十进制是754。
chmod 754 aa和chmod u=rwx,g=rx,o=r aa一致。
- 置为1表示有相应权限,置为0表示没有相应权限。例如:
umask
官方的解释是掩码,其实就是用户创建文件或目录后它们的默认权限。不过和chomd有区别的是它把有权限设置为0,没权限设置为1,而且umask命令显示的是八进制数字。我的umask显示的是0022,转换成二进制就是000 010 010,转换成权限就是rwx r-x r-x。所以创建的目录的默认权限就是这个。但是Linux不允许新创建的文件有可执行权限,所以创建的文件的默认权限是rw- r-- r--。
chown
改变某个文件或目录的所有者。chown <用户> <文件>/<目录>
chgrp
改变文件或目录所属的用户组。chgrp <用户组> <文件>/<目录>
文件权限的理解
- 可读(r):浏览文件中的内容;
- 可写(w):修改文件中的内容;
-
目录权限的理解
可读:只能查看到目录下的子目录名和文件名;
- 可执行:可以访问目录中的文件,包括子目录;
-
压缩 & 打包 & 解压缩
tar -zcvf:打包压缩后的文件名 要打包压缩的文件(多个之间用space分开)z:调用gzip压缩命令进行压缩c:create,打包文件v:显示运行过程f:指定文件名
tar -xvf xxx.tar.gz -C 位置x:extract,解包v:显示允许过程f:指定文件名别名
我们可以使用ll代替ls -l。但是对于ls -a,系统并没有提供la命令,不过我们可以使用alias定义la。
定时任务
cron工具允许用户配置要定期运行的任务,通过配置crontab的文件可以指定要运行哪些作业以及何时运行。配置crontab文件使用命令crontab。命令由6个用空白分隔的字段组成:
| 字段 | minute | hour | day of month | month | day of week | command to run |
|---|---|---|---|---|---|---|
| 举例 | 45 | 16 | * | * | * | date>/tmp/date.txt |
| 范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | * |
corntab命令的参数:
-e:编辑crontab的内容(会打开一个文件);



-u:只有root才能执行这个选项,帮助其他用户建立/删除crontab;-l:查看crontab的工作内容:
-
成组命令
被成组命令约束的命令被认为是一条命令。
{ 命令; }:需要有空格和命令隔开,且命令后面需要“;”。不创建子进程。(命令):不强制需要有空格和命令隔开,不强制需要“;”。创建子进程完成功能。
sort
sort lines of text files,将文本文件内容加以排序,以行为单位来排序,但不改变文件原始内容。
- 默认排序规则:从第每行一个字符开始,依次按照ASCII码值进行比较。
-n:按数字的大小排序,默认情况下把数字看成字符。-
uniq
文件输出时,删除重复行或列。但如果重复的行不连续则不起作用。
文件类型
-:普通文件
- l:符号链接文件
- d:目录
- s:套接字文件(socket)
- b:块设备文件
- p:命名管道文件(pipe)
- c:字符设备文件
ex1:用户管理
在系统中添加三个用户:Blondie、Prince和Madonna
他们都希望属于次要组music

Prince要求使用/bin/csh作为登录shell
Madonna的使用期限为2020-12-1。
Blondie决定加入摔跤俱乐部wrestle组。
Prince要将他的用户名改为tafkap。
Madonna开始对风水感兴趣,加入组fengshui,并要求将她的userid改为888。
groupadd fengshuiusermod -a –G fengshui Madonna-
Prince又要改名字了,我们觉得太麻烦,干脆锁住他的帐号。
-
Blondie最近表现不好,我们决定将他踢出去。
userdel –r Blondie(想把该用户所有信息都一起删除可以使用-r)ex2:文件目录管理
Ventura同时属于次要组governor和wrestle。
Ventura撰写了自己的摔跤计划plans.txt,并将它放到目录/tmp下。
Ventura希望将他的摔跤计划和用户Hogan以及其他摔跤组的成员共享,但他不希望组外的成员访问。
用户Hogan想往用户Ventura的计划上添加内容,可以吗?怎么做?
用户Hogan对他自己的贡献很满意,他希望将这个计划公开,让所有人都能读到这个文件,可以实现吗?
不可以,只有root和文件主能修改文件访问权。



