一、 字符界面下如何和 Linux 交流
如何让计算机帮你干活
在字符界面下,基本只能通过键盘和 Linux 系统交流。
所以我们要想让 Linux 帮我们干活,就需要掌握和它沟通交流的方式,这个方式就是 Shell ,具体的来说是 Bash 。后面我们会详细介绍 Bash Shell,接下来先了解一些最简单的。
下达命令
下达命令需要遵循一定的规则
[shark@loalhost ~]$ command [-options] parameter1 parameter2 ...
指令 选项 参数(1) 参数(2)
详细说明如下:
一行命令中第一个输入的部分绝对是
命令(command)
或可执行文件(通常是一个脚本文件)
command
为命令的名称,例如变换工作目录的指令为cd
等等;中刮号
[]
中是关于这个命令的选项,这个不是必须的。而当使用选项时,通常选项前会带-
符号为选项值的前缀,例如-h
;有时候会使用选项的完整全名,则选项前带有--
符号,例如--help
;parameter1
parameter2
... 为依附在选项后面的参数,或者是command
的参数;命令, 选项, 参数 等这几个中间需要以空格来区分,不论空几个空格 shell 都视为一个空格。所以空格是很重要的特殊字符!;
按下回车
[Enter]
按键后,该指令就立即执行。[Enter]
按键代表着一行指令的开始运行。指令太长的时候,可以使用反斜线 (
\
) 来进行续行输出,使指令连续到下一行。注意!反斜线后就立刻接特殊字符,才能跳脱!命令、选项、参数 这些字符都是区分大小写的,比如
cd
和CD
是不同的。也可以在一行中输入多个命令,每个命令用英文的分号
;
隔开。比如
cd /tmp; ls
值的注意的是, 当使用多个选项的情况,可以把选项值连在一起写,也可分开写。比如,下面用 ls
这个命令举例说明,ls
命令是查看路径下都有哪些文件和目录。
下面的两种写法,得到的效果是一样的。
ls -l -h
或
ls -lh
二、Bash
1 什么是 Shell
管理整个计算机硬件的其实是操作系统的核心 (kernel),这个核心是需要被保护的! 所以我们一般使用者就只能通过 shell 来跟核心沟通,以让核心达到我们所想要达到的工作。
2 Bash
Bash 【Bouren Again SHell】的简称,也是基于GNU的架构下发展出来的
是众多shell中的一个.
Linux系统中的shell保存在 /etc/shells
这个文件中
可以这样查看:
cat /etc/shells
或者
chsh -l //查看目前系统安装的shell
改变当前的 SHELL
例如:
/bin/sh
3 命令别名: alias
alias //显示目前终端的全部别名
alias ll=“ls -l” // 设置别名
unalias ll //取消别名设置
Bash shell 的内建命令 type
用途: 用来测试命令的类型
type [-tpa] name
选项和参数:
:不加任何选项,会显示name是外部命令,还是bash内置命令
-t //会将name以下面这些关键字来表示出他的意义:
file :外部命令
alias :命令别名
builtin :bash内置命令
不显示任何数据时,表示name不是任何命令
-p //后面接外部命令时,才会显示出命令的完整文件名
-a //会由PATH变量定义的路径中,将所有含name的指令都列出来,包括alias
4 历史命令:history
查看及操作:
history //列出全部历史命令记录
history 10 //显示最近10条执行过的命令
history -c //清除目前 shell 中的所有历史命令
history -w //即刻写入 .bash_history
使用执行:
!25 //执行第25条历史命令
! ser //执行最近一次以 “ser”开头的命令
!! //执行上一条命令
注意history的安全问题,历史命令的记录数量上要控制好
注意:同一帐号同时多次在线执行命令时,这样会产生多个bash,那么会以最后一个登出的命令历史记录为准
建议使用一个用户登入bash,再用[Ctrl]+z fg bg 来控制前后台来切换不同的工作
history 无法记录时间
解决方法:可以透过~/.bash_logout来进行history的记录,并加上date来增加时间参数
三、基础命令
ls 查看文件和目录属性信息
属性信息:
- 文档类型
- 文档权限
- 文档容量大小
- 目录的节点数
- 文档的用户和组信息
- 文档名称
参数:
-l 列出长数据串,包含文件的属性
-h 显示容量大小
-d 只是列出目录本身,而不是目录内的文件数据
-t 按时间排序
-r 倒序排序输出
-a 全部文件,包含隐藏的文件
-i 列出inode的位置,而非文件属性
-R 与子目录内容一起列出来
-S 按文件容量大小排序,大于 4096 字节才有效
--full-time 完整的呈现文件的修改时间 (modification time)
示例:
- 列出所有文件,包括隐藏的
ls -a
. b.txt .bash_history
.. .bash_logout .bash_profile
.bashrc
Linux 系统中以
.
为开头的文件或者目录为隐藏的文档。
- 以列表的形式展示路径中的文件和目录信息
ls -l /tmp
- 只查看目录本身的信息
ls -d /tmp
- 查看路径中的文件,并以日期时间进行排序,以过去到现在的顺序排序
ls -lrt /tmp
- 按照容量从小到大排序列
ls -lrS /tmp
- 文件分行显示
ls -1
1
是数字1
我是谁?
id
id
输出
uid=0(root) gid=0(root) groups=0(root)
我在哪儿?
pwd
(print working directory) 显示当前所在目录的路径参数:
-P 显示出实际路径,而非使用的软连接(link)路径
pwd
输出
/root
我要去哪儿?
cd
(change directory) 你想去哪里
cd ~ 到自己的家目录
cd ~shark 到 shark 用户的家目录
cd - 到上次离开的工作目录
系统时间
date
打印出当前 Linux 系统的时间
date
输出
Fri Jul 19 07:15:48 UTC 2019
上面的输出的信息是:
周五 七月 19 日 7 点 15 分 48 秒 UTC 时区 2019 年
输出更多的格式:
假如想输出 2019-07-19
, 只需要在命令后面加上具体的格式符号就可以。
date +"%Y-%m-%d"
输出
2019-07-19
格式 | 含义 |
---|---|
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%m | 月份(01 - 12) |
%d | 一个月中的第几天(01 - 31) |
%H | 一天中的第几个小时(24小时制,00 - 23) |
%M | 分钟数(00 - 59) |
%S | 秒(00 - 59) |
%F | 输出 yyyy-mm-dd 的格式 |
%T | 输出 hh:mm:ss 的格式 |
%c | 本地相应的日期和时间表示 |
%I | 大写的 i 第几个小时(24小时制) |
%j | 一年中的第几天(001 - 366) |
%U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 |
%w | 一个星期中的第几天(0 - 6,0是星期天) |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
四、 获取帮助
命令的 --help 选项
date --help
man page
man date
注意: man page 是命令的帮助文档,这个文档是在安装软件的时候一起安装到系统当中的,并且这个是不是必须安装的。
以下了解即可
man page 的内容也分成好几个部分来加以介绍该指令呢!就是上头man date那个表格内, 以NAME作为开始介绍,最后还有个SEE ALSO来作为结束。基本上,man page大致分成下面这几个部分:
代号 | 内容说明 |
---|---|
NAME | 简短的指令、数据名称说明 |
SYNOPSIS | 简短的指令下达语法(syntax)简介 |
DESCRIPTION | 较为完整的说明,这部分最好仔细看看! |
OPTIONS | 针对 SYNOPSIS 部分中,有列举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在执行的时候,可以在此程序(软件)中下达的指令 |
FILES | 这个程序或数据所使用或参考或链接到的某些文件 |
SEE ALSO | 可以参考的,跟这个指令或数据有相关的其他说明! |
EXAMPLE | 一些可以参考的范例 |
有时候除了这些外,还可能会看到Authors与Copyright等,不过也有很多时候仅有NAME与DESCRIPTION等部分。
软件的说明文档
一般软件的开发者都会在软件的安装包中包含软件的说明文档,这种说明文件一般会有比较详细的说明。
说明文档的目录是在:
/usr/shark/doc/
三种帮助方式使用规则
在终端机模式中,如果你知道某个指令,但却忘记了相关选项与参数,请先善用 --help 的功能来查询相关信息;
当有任何你不知道的指令或文件格式这种玩意儿,但是你想要了解他,请赶快使用
man
来查询!而如果你想要架设一些其他的服务,或想要利用一整组软件来达成某项功能时,请赶快到
/usr/share/doc
下面查一查有没有该服务的说明文档喔!
五、关机的正确方式
[root@study ~]# shutdown -h now
立刻关机,其中 now 相当于时间为 0 的状态
[root@study ~]# shutdown -h 20:25
系统在今天的 20:25 分会关机,若在21:25才下达此指令,则隔天才关机
[root@study ~]# shutdown -h +10
系统再过十分钟后自动关机
[root@study ~]# shutdown -r now
系统立刻重新开机
[root@study ~]# shutdown -r +30 'The system will reboot'
再过三十分钟系统会重新开机,并显示后面的讯息给所有在线上的使用者
[root@study ~]# shutdown -k now 'This system will reboot'
仅发出警告信件的参数!系统并不会关机啦!吓唬人!
执行同步硬盘数据后,重启
[root@study ~]# sync; sync; sync; reboot
了解
新增的
[root@study ~]# systemctl [指令]
指令项目包括如下:
halt 进入系统停止的模式,屏幕可能会保留一些讯息,这与你的电源管理模式有关
poweroff 进入系统关机模式,直接关机没有提供电力喔!
reboot 直接重新开机
suspend 进入休眠模式
[root@study ~]# systemctl reboot # 系统重新开机
[root@study ~]# systemctl poweroff # 系统关机