Skip to content

Latest commit

 

History

History
421 lines (301 loc) · 13.3 KB

File metadata and controls

421 lines (301 loc) · 13.3 KB

Linux

1 概论

1.1 如何下载 wsl

1.2 各硬件设备在 Linux 中的文件名

在 Linux 中,每个设备都被当成一个文件来对待, 举例来说,SATA 接口的硬盘文件名称是 /dev/sd[a-d],即 /dev/sda/dev/sdb

下面列出几个常见的设备与在 linux 中的文件名

设备 在 linux 中的文件名
SCS/SATA/USB 硬盘机 /dev/sd[a-p]
USB 闪存盘 /dev/sd[a-p] (同上)
Virtl/0界面 /dev/vd[a-p] 用于虚拟机内
软盘机 /dev/fd/[0-7]
打印机 /dev/lp[0-2] 25 针打印机、/dev/usb/lp[0-15] USB 打印机
鼠标 /dev/input/mouse 通用、/dev/psaux PS/2 界面、/dev/mouse 当前鼠标
CDROM/DVDR0M /dev/scd[0-1] 通用、/dev/sr[0-1] 通用,Cent0s常见、/dev/cdrom 当前
磁带机 太老不记录
IDE 硬盘机 /dev/hd[a-d] 老式系统才有

要注意的是使用云端机时,你得到的是虚拟机,为了加速,虚拟机内的磁盘使用仿真机产生,一般被命名为 /dev/vd[a-p]

2 基础指令和常用热键

2.1 指令的组成

command [-options] parameter1 parameter2
  • command:指令名,也可以替换为 可执行文件名(如批次脚本script)
  • [-options]:可选配置参数(实际不包含[])
    • -一个短横线是选项的简写
    • --两个短横线是选项的全写
  • 指令、选项、参数等中间以空格来区分,不论空几格都视为一格
  • 按下 enter 键后启动命令
  • 使用反斜杠 \ 使 enter 后指令持续到下一行
  • 使用 quit 主动退出执行的命令

2.2 基础指令

date

[mrcode@study ~]$ date
Fri Oct  4 23:41:16 CST 2019
# 格式化输出
[mrcode@study ~]$ date +%Y/%m/%d
2019/10/04
[mrcode@study ~]$ date +%H:%M
23:41

cal

需安装badmainutils

sudo apt update  # 可选:更新软件源索引,避免安装失败
sudo apt install -y bsdmainutils
# 显示当前月
[mrcode@study ~]$ cal
    October 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

# 显示整年,这里只贴出部分
[mrcode@study ~]$ 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
        April                   May                   June        
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  6             1  2  3  4                      1
 7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
[mrcode@study ~]$ cal 10 2015
    October 2015    
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

bc计算器

[mrcode@study ~]$ bc
10*52
520
10^2 #幂运算使用^
100
10/100 
0
# 在 bc 环境中,使用 scale = 数值
# 后面数值表示你需要几位小数
scale=3
10/100
.100

2.3 求助

--help

前面已经讲到指令的组成为 command [-options] parameter1 parameter2 ,在 command 后使用 -h--help 查询指令的帮助文档 。

--help 用在协助查询已用过的指令的选项和参数。

date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display date and time in the given FORMAT.
With -s, or with [MMDDhhmm[[CC]YY][.ss]], set the date and time.

Mandatory arguments to long options are mandatory for short options too.
  -d, --date=STRING          display time described by STRING, not 'now'
      --debug                annotate the parsed date,
                              and warn about questionable usage to stderr
  -f, --file=DATEFILE        like --date; once for each line of DATEFILE

man page

man 指manual操作说明,按照man command即可获得更为详细的指令说明 man page

[mrcode@study ~]$ man date
# 注意括号中的数字
DATE(1)                             User Commands                             DATE(1)

NAME   # 这个指令的完整名称,如下所示为 date 且说明简单用途为 设置与显示日期/时间
       date - print or set the system date and time

SYNOPSIS # 简介:这个指令的基本语法如下
       date [OPTION]... [+FORMAT]   # 单纯显示用法
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]  # 可以设置系统时间的方法

DESCRIPTION # 详细描述,刚刚谈到的选项与参数的用法
ENVIRONMENT # 与这个指令相关的环境参数的说明
EXAMPLES # 一些示例用法
DATE STRING  # 这里就解释了上面那个 STRING 是什么
AUTHOR # 这个指令的作者
COPYRIGHT # 受到著作权法的保护,用的就是 GPL
SEE ALSO # 这个重要,你还可以从哪里查到与 date 相关的说明文件的意思

最开始的标签 DATE(1) 中的数字具有含义:

代号 含义
1 用户在 shell 环境中可以操作的指令或可执行文件
5 配置文件或则是某些文件的格式
8 系统管理员可用的管理指令

man page 中可以使用一些快捷键,如“空格-向下翻页”“PGUP”“PGDN”“home-第一页”“end-末页”“q-退出man page”。

使用 man -f command 可以 精确 匹配命令名,使用 man -k part_of_command 可以 模糊匹配命令名。

man -f man
man (1)              - an interface to the system reference manuals

输出的字段分别为 命令名(man),手册节号((1),之前有讲其意义),功能描述。

info page

info 和 man 的用途相近,输出较好,使用 info command 查询命令的说明。

info info
Next: Stand-alone Info,  Up: (dir)

Stand-alone GNU Info
********************

This documentation describes the stand-alone Info reader which you can
use to read Info documentation.

   If you are new to the Info reader, then you can get started by typing
‘H’ for a list of basic key bindings.  You can read through the rest of
this manual by typing <SPC> and <DEL> (or <Space> and <Backspace>) to
move forwards and backwards in it.

* Menu:

* Stand-alone Info::           What is Info?
* Node Commands::              Commands for selecting a new node.


 -- The Detailed Node Listing --

Selecting Cross-references

* Parts of an Xref::           What a cross-reference is made of.
* Selecting Xrefs::            Commands for selecting menu or note items.

* 且带下划线的部分,可通过“PGUP”和“PGDN”移动到其上再按回车,进行超链接跳转。

2.4 常用热键

tab

tab 具有 命令补全、文件补齐、选项/参数补齐 的功能。

mkdir    #输入mkd后按下tab自动补齐为mkdir

git        #此处按1下或连按2下tab
git                 git-shell           git-upload-pack     
git-receive-pack    git-upload-archive

按一下tab优先尝试补全命令或文件名,按两下tab优先列出所有匹配项。但是在我的电脑中, 只能进行按一次tab ,进行了交互优化。

ctrl + c

使用 ctrl+c 中断命令,注意是中断命令的输入而非执行,比如在输入命令时发现前面输错,需要重新输入,使用ctrl+c进行中断。

j^C        #^C终止了命令的输入
        #新起输入行

ctrl + d

使用 ctrl+d 发送正常结束符。

2.5 正确关机

shutdown

该命令会通知系统内的各个程序(processes)、服务等进行关闭,shutdown 可以达成以下工作:

  • 可以自由选择关机模式:关机或重启
  • 可以设定关机时间:立刻、未来的一个时间
  • 可以自定义关机信息:在关机前,将设置的信息广播给在线的 user
  • 可以仅发出警告信息:有时候可能需要测试、或则明确告知使用者的场景下,就可以使用该功能,但是可以不关机

语法如下:

/sbin/shutdown [-krhc] [时间 [警告信息]]
  • k:不要真的关机,只发送警告信息
  • r:在将系统的服务停掉之后就重新启动(常用)
  • h:将系统的服务停掉之后,立即关机(常用)
  • c:取消已经在进行的 shutdown 指令内容
  • 时间:指定系统关机的时间,若没有时间,则默认 1 分钟后自动进行

reboot

重启

poweroff

关机

3 文件、目录、文件系统

3.1 文件属性查看

su - 与 exit

切换到 root 身份与回到原身份。

ls -al

lslist ,查看当前目录的文件。 a 将隐藏文件显示, l 显示详细信息。

ls -al
total 44
# 权限  连接 拥有者 群组 文件容量 修改日期 文档名
drwxr-x--- 6 x    x    4096 Dec 23 22:17 .
  • 权限中,第一个位置表示文件属性,如d是目录、-是文件。后面三个 rwx 一组,r 代表 read,w 代表 write, x 代表 execute(可执行)。第一组表示文件拥有者的权限;第二组表示加入此群组的账户的权限;第三组表示非本人且没有加入本群组的其他账户的权限。

  • 一个点 . 表示隐藏文件。

3.2 文件属性编辑

chgrp 改变文件所属群组

chgrp [-R] [群组] 文件或目录
  • -R:递归变更,如果是目录,则变更该目录以及目录下的所有文件

chown 改变文件拥有者

chown [-R] 账户名称 文件或目录
chown [-R] 账户名称:组名 文件或目录

使用 chown 可以同时修改拥有者和群组。

chmod 改变文件的权限

chmod 指令改变权限可以使用数字和符号。前面已经提到一组rwx代表一个身份的权限,rwx各自的代表数字如下:

  • r = 4
  • w = 2
  • x = 1

常用的权限数值如下:

  • -rw-rw-r-- 664:一般文件,可读可写无执行
  • -rwxr-x-r-x 755:shell脚本文件,拥有者可读写执行,其他的都只能刻度可执行、不可编辑
  • -rwxr------ 740:不希望该文件被其他人看到
chmod [-R] xyz 文件或目录
chmod 740 text.txt
  • xyz:就是刚刚的数值类型的权限范围,为 rwz 属性数值的相加
  • -R:递归

字母表示:

  • user:u
  • group:g
  • other:o
  • 所有:a
chmod u/g/o/a +/-/= r/w/x 文件或目录

3.3 目录操作管理

  • . 代表此层目录
  • .. 代表上一层目录
  • - 代表前一个工作目录
  • ~ 代表目前用户身份坐在的家目录
  • ~account代表 account 这个用户的家目录

cd 变换目录

# 登录 linux 后,每个账号都会在自己账号的家目录下
[mrcode@study ~]$ cd ../  # 注意看前面的符号 ~,这个表示在 家里
# 上面使用 cd ../ 进入了上一层目录,那么这里 ~ 变成了 home。实际路径是  /home/账户家
# 这里直接使用 cd 不带参数,会默认回到家目录中
[mrcode@study home]$ cd  
[mrcode@study ~]$
# 现在在家,返回前一个目录,也就是 /home 目录
[mrcode@study ~]$ cd -
/home
# 上次是从家出来的,这里再返回前一个目录,就又回到了家的目录中
[mrcode@study home]$ cd -
/home/mrcode

alt text

pwd 显示当前所在目录

  • pwd 显示连接路径
  • pwd -P 显示真实的路径

mkdir 建立新目录

mkdir [-mp] 目录名称

-m:配置文件案的权限,直接设定,不需要看预设权限(umask)的脸色
-p:将该路径上所有的目录都创建出来(当然不存在的话)

rmdir 删除空的目录

rmdir [-p] 目录名称

-p:「上层」的「空目录」也一起删除

3.4 环境路径 $PATH

当我们执行一个指令的时候,系统会按照 PATH 的设定去每个 PATH 定义的目录下搜索对应的可执行文件 (比如 ls),如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件,那么先搜索到的被执行。

  • 不同身份使用者预设的 PATH 不同,默认能够随意执行的指令也不同(如 root 与 mrcode)
  • PATH 是可以修改的
  • 使用绝对路径或相对路径直接指定某个指令文件名来执行,会比搜寻 PATH 来的正确
  • 指令应该要放置到正确的目录下,执行才比较方便
  • 当前目录「.」建议不要放到 PATH 中