一、 字符界面下如何和 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
二、关于语系
Linux 系统是能够支持多国语言的。
假如系统中设置的当前语言和连接到这台电脑的终端软件中的语言设置的不一致就会产生乱码的现象。就是不能正常显示内容。
此时,我们就需要调整设置成一致的。
- 显示目前所支持的语系
[dmtsai@study ~] date
鈭? 5??29 14:24:36 CST 2015 # 纯命令行下,无法显示中文字,所以前面是乱码- 修改语系成为英文语系
[dmtsai@study ~] export LC_ALL=en_US.utf8
LANG 只与输出讯息有关,若需要更改其他不同的信息,要同步更新 LC_ALL 才行!
[dmtsai@study ~] locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
....中间省略....
LC_ALL=en_US.utf8
再次确认一下,结果出现,确实是en_US.utf8这个英文语系!
注意
LANG=enUS.utf8 是连续输入的,等号两边并没有空白字符
三、基础命令
ls 查看文件和目录属性信息
属性信息:
文档类型
文档权限
文档容量大小
目录的节点数
文档的用户和组信息
文档名称
参数:
-l 列出长数据串,包含文件的属性
-h 显示容量大小
-d 只是列出目录本身,而不是目录内的文件数据
-t 按时间排序
-r 倒序排序输出
-a 全部文件,包含隐藏的文件
-i 列出inode的位置,而非文件属性
-R 与子目录内容一起列出来
-S 按文件容量大小排序,大于 4096 字节才有效
--full-time 完整的呈现文件的修改时间 (modification time)
示例:
1.列出所有文件,包括隐藏的
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 时区的名字(如果不存在为空字符)
%% ‘%’字符
万年历
➜ ~ cal
July 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
➜ ~ cal 01 2019
January 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
➜ ~ cal 2019
2019
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
.. 略 ...
获取帮助
命令的 --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/share/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 # 系统关机