Linux入门合集(入门一篇就够了!)

Linux基础教程


总目录

  1. Ubuntu18.04LTS安装与优化
  2. Linux基础
  3. Markdown
  4. Vim

1. Ubuntu18.04LTS安装与优化

目录

  1. 准备
  2. 下载光盘映像
  3. 启动盘刻录
  4. 分区准备
  5. 进入BIOS
  6. 开始安装
  7. 优化
    1. 换源
    2. 系统美化
      1. 更换主题
      2. 更换桌面环境
      3. 更换新的终端
      4. Grub主题
  8. 深度学习环境搭建

准备

  1. U盘(>4GB)
  2. 手机(系统装废了随时搜索解决问题,遇到问题先百度,自己解决最好)
  3. 良好的心态(很多人不是不会装,是害怕,遇到问题不敢解决,不敢尝试)

下载光盘映像

推荐蒲公英下载*(今年情况特殊,所以暂时不考虑)*,

或者可以去华为镜像站或清华镜像站下载,不推荐官网下载,速度极慢。

下面以华为镜像站为例:

Linux入门合集(入门一篇就够了!)_第1张图片
选择**Ubuntu18.04.4(desktop,amd64)**并下载,其他镜像站同理即可。


启动盘刻录

  1. 前往官网安装UltralSO

  2. 在Windows下使用UltralSO打开之前下载好的.iso文件:

    插入U盘->启动->写入硬盘映像->硬盘驱动器选U盘->写入方式USB-HDD->写入

    Linux入门合集(入门一篇就够了!)_第2张图片


分区准备

鉴于之前有人把win10装没了,此处应格外注意

使用系统自带磁盘管理工具、分区助手或者DiskGenius压缩一个空闲空间较多的盘,留出30G以上的空间*(可以适当大一些)*,尽量用固态硬盘,比较快,压缩出来的空闲空间先不用格式化。

系统自带的管理工具可以在此处找到:

此电脑->管理->存储->磁盘管理

Linux入门合集(入门一篇就够了!)_第3张图片

之后在所需要压缩的分区上右键,压缩卷,压缩出所需要的大小即可。注意:最好在Windows下完成分区!简便、安全!

最后的效果可参考:

Linux入门合集(入门一篇就够了!)_第4张图片

50G的分区就是我的Linux分区。


进入BIOS

先搜索一下自己电脑进入BIOS的按键,一般是F1、F2、F12、del其中一个,之后重启,连击该键位(有的同学忘记连击一直没能进到BIOS),之后关闭安全启动,将EFI USB(可能是其他名称)作为第一启动项。

Linux入门合集(入门一篇就够了!)_第5张图片

不同电脑的BIOS可能不同,具体操作会有所区别。


开始安装

选择Try Ubuntu Without Install进入图形界面开始安装进程。

Linux入门合集(入门一篇就够了!)_第6张图片

语言建议首选英语,否则安装目录将会有中文出现,cd将会较为麻烦

安装过程不建议联网,联网会从服务器上下载一些安装文件,由于服务器在国外,速度会很慢,甚至是卡死(比如说我第一次)

建议选择最小安装(有些软件实在没用)

安装类型选择其他类型即可

在分区界面,选中你之前压缩的空间,挂载**/**,(此处无需参考网上的分盘方法,过于繁杂容易导致小白昏头,实乃误人子弟),如果内存较小,可以考虑分配一些空间作为swap交换分区(类似Windows下的虚拟内存)。

接着一路确定就OK啦!

Linux入门合集(入门一篇就够了!)_第7张图片

之后一定记得拔除U盘!!!完成,撒花!

Linux入门合集(入门一篇就够了!)_第8张图片


优化

换源

对于Ubuntu系统, 不同的版本的源都不一样,每一个版本都有自己专属的源。 而对于 Ubuntu 的同一个发行版本,它的源又分布在全球范围内的服务器上。Ubuntu 默认使用的官方源的服务器在欧洲,从国内访问速度很慢。国内的阿里、网易以及一些重点高校也都有 Ubuntu 的源,所以在装完 Ubuntu 系统后最好把官方源更换为国内的源。

国内源很多,在这里我们选择阿里云与清华大学的 Ubuntu 源。

# 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse


# 清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

Ubuntu 的源存放在在 /etc/apt/ 目录下的 sources.list 文件中,修改前我们先备份,在终端中执行以下命令:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup

然后执行下面的命令打开 sources.list 文件,清空里面的内容,把上面阿里云与清华大学的 Ubuntu 源复制进去,保存后退出。(一般默认没有安装vim而是安装了gedit)

sudo gedit /etc/apt/sources.list

接着在终端上执行以下命令更新软件列表,检测出可以更新的软件:

sudo apt-get update

最后在终端上执行以下命令进行软件更新:

sudo apt-get upgrade

系统美化

很多人都觉得Ubuntu的基佬紫太丑,这里就带大家美化一下,整点花里胡哨的吧!

更换主题

GNOME 3 桌面的设计目的是简单、易于访问和可靠。GNOME 的受欢迎程度证明达成了这些目标。参阅:11 个使用 GNOME 3 桌面环境的理由

很多人认为 macOS 风格比较精致美观,所以这里就美化成 Mac 风格:

Linux入门合集(入门一篇就够了!)_第9张图片

首先安装工具和字体:

# Install Tools
sudo dnf -y install gnome-tweaks chrome-gnome-shell 

# Install Fonts
sudo dnf -y install *wqy* 

之后安装GNOME Shell扩展:

安装配置 Dash to Dock :

  • 放置于底部(Bottom)
  • 关闭智能隐藏 (笔记本用户可打开)
  • 勾选固定图标大小
  • 窗口指示器风格选Dots,点击左边的设置按钮打开使用主颜色
  • 设置自定义透明度Dynamic

更多配置参阅:Dash to Dock 安装配置(图文教程)。

安装 User Themes。

安装配置 Blyr :

Linux入门合集(入门一篇就够了!)_第10张图片
安装 Remove Dropdown Arrows

安装 Activities Configurator:

  • 设置移走活动概览图标(Remove Activities Button);
  • 设置隐藏 GNOME Shell 上应用菜单的图标(Hide Application Menu Butto Icon)。

更多扩展可参看:让你爱不释手的 GNOME Shell Extensions

接下来就可以开始安装主题了!

下载主题 McHigh Sierra(当前版本:Sierra-light.tar.xz )

下载图标 XONE ICONS PACK (当前版本:XONE_REBORN.tar.xz v10.2)

下载光标 MacOS MOD(当前版本:El_Capitan_CursorsMOD_1.1.0.zip)

假设你用一个叫 doubi 的用户操作,使用文件管理器进入 /home/doubi/ 下,按 CTRL+H 显示隐藏文件,如果没有 .themes 和 .icons 文件夹则可以手动新建。

当然你可以三七二十一,直接用下面的命令创建文件夹(只会创建不存在的目录):

mkdir /home/$USER/.themes
mkdir /home/$USER/.icons
# $USER 是环境变量,此处 $USER = doubi

解压三个文件后:
主题文件夹 放到 .themes 文件夹下;
图标 / 光标文件夹 放到 .icons 文件夹下;

主题文件夹大概长这样:

Sierra-light
├── gnome-shell
├── gtk-2.0
├── gtk-3.0
└── index.theme

XONE ICONS PACK 这个图标包需要安装 Numix Circle。

最后打开tweaks,按照喜好配置 gnome-tweaks即可。

更换桌面环境

ubuntu的桌面环境是Gnome,其他桌面环境还有KDE Plasma、mate、xfce等

可以尝试一下其他的

https://blog.csdn.net/oouxx/article/details/81053636

Linux入门合集(入门一篇就够了!)_第11张图片

更换新的终端

个人推荐zsh搭配oh-my-zsh使用,体验极好。

Linux入门合集(入门一篇就够了!)_第12张图片

安装和修改主题也很方便(个人比较喜欢ys):

# install zsh
sudo apt install zsh
# set zsh as default
chsh -s /bin/zsh
# use wget to install
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
# change theme
vim ~/.zshrc

之后将ZSH_THEME后面修改成ys(或你想要的主题)即可。

然后更新配置:

source ~/.zshrc

搞定!


Grub主题

Linux入门合集(入门一篇就够了!)_第13张图片

到这个网站上去下载自己喜欢的主题包,之后:

sudo mkdir /boot/grub/themes
sudo tar -xf 主题包的名字
sudo cp 主题包的名字 /boot/grub/themes/
sudo gedit /etc/grub.d/00_header

在其中添加:

GRUB_THEME="/boot/grub/themes/主题包名/theme.txt"
GRUB_GFXMODE="1920x1080x32"

最后更新配置:

sudo update-grub

OK啦!


深度学习环境搭建

以本人的电脑显卡配置GTX1660Ti为例,讲解基于anaconda+CUDA+cuDNN+TensorFlow+keras的深度学习环境搭建。

前往官网下载Anaconda,进入安装包所在目录执行:

chmod a+x Anaconda3-5.0.1-Linux-x86_64.sh
./Anaconda3-5.0.1-Linux-x86_64.sh
#具体文件名视版本可能不同

然后一路确定,yes即可。

安装完成后,添加路径:

source ~/.zshrc

到英伟达官网下载驱动,卸载原有的驱动:

$sudo apt-get remove --purge nvidia*

然后安装即可。(可能需要卸载nouveau,在此不再赘述)

最后重启一下,再输入nvidia-smi查看效果。

CUDA和cuDNN安装较为简单,无脑下载安装就好,只需要注意下载到显卡驱动对应的版本就好。

最后:

conda install tensorflow
conda install tensorflow-gpu
conda install keras

完成安装!


Linux基础

目录

  1. 常用命令
  2. 软硬连接问题
  3. 虚拟终端
  4. 安全重启
  5. 用户与权限
  6. 简单的shell
  7. ssh
  8. scp
  9. 根目录结构
  10. 文件权限
  11. 输入输出
  12. procfs

常用命令

在此只列出了常用命令,具体参数未列出。

ls  列出文件
cd [path]  切换工作目录
pwd  以绝对路径方式显示当前用户工作路径
man [command]   查看Linux中的指令帮助、配置文件帮助和编程帮助等信息
apropos [whatever]   在一些特定的包含系统命令的简短描述的数据库文件里查找关键字
echo [string]   打印一行文本,参数“-e”可激活转义字符
cat [file]   连接文件并打印到标准输出设备上
less [file]    允许用户向前或向后浏览文字档案的内容
more [file]  基本与less相同
mv [file1] [file2]    用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
cp [file1] [file2]  用来将一个或多个源文件或者目录复制到指定的目的文件或目录
rm [file]    可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉
ps    用于报告当前系统的进程状态
top    实时查看系统的整体运行情况
kill    杀死一个进程
ifconfig    查看或设置网络设备
ping    查看网络上的主机是否工作
netstat   显示网络连接、路由表和网络接口信息
nc(netcat)    建立 TCP 和 UDP 连接并监听
su    切换当前用户身份到其他用户身份
touch [file]    创建新的空文件
mkdir [dir]    创建目录
chmod   变更文件或目录的权限
chown   变更某个文件或目录的所有者和所属组
file  辨识文件类型
cmp 比较文件差异
diff 逐行比较文件差异
grep 查找字符串
exit   退出 shell
管道命令符 "|"    将一个命令的标准输出作为另一个命令的标准输入

还有很多命令就不一一列出了,如有需要百度即可。

下面比较一下which、whereis和find的区别:

  • which用于查找可执行文件的目录,我们平时执行的命令实际上是一个可执行文件,如ls命令实际上是/usr/bin/目录下的一个可执行文件。它实际上是通过 PATH环境变量来查找的。

  • whereis用于查询某个文件的位置。它是通过查询数据库来查找的。在linux系统中所有文件都会被记录在一个数据库文件中,方便用户快速查找,而不需要每次遍历整个硬盘。可执行文件也是一个文件,因此也可以使用whereis来查找可执行文件。如whereis ls。以下是whereis命令的几个参数:

    参数:

    -b 只查找二进制文件

    -m 只找说明文件manual路径下的文件

    -s 只找source源文件

    -u 找没有说明文档的文件

  • find是通过遍历整个硬盘来查找文件,速度慢,且消耗硬盘资源,但是查找很彻底。

    语法:

    find 目录 -name 文件名 ,如find / -name profile 在根目录下查找文件名为profile的文件

    支持模糊查找如 find / -name ‘profile

软硬连接问题

在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。

  1. 硬链接

硬链接是指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index或者Inode),它是文件或者目录在一个文件系统中的唯一标识,文件的实际数据放置在数据区域(data block)。

Linux入门合集(入门一篇就够了!)_第14张图片

在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据。不过硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。之所以文件建立了硬链接就会防止数据误删,是因为文件系统的原理是,只要文件的索引节点还有一个以上的链接(仅删除了该文件的指向),只删除其中一个链接并不影响索引节点本身和其他的链接(数据的实体并未删除),只有当最后一个链接被删除后,此时如果有新数据要存储到磁盘上,被删除的文件的数据块及目录的链接才会被释放,空间被新数据暂用覆盖。

  1. 软连接

软链接(也叫符号链接),类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建。

不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

虚拟终端

在linux中,用alt+f1~f6可以切换六个虚拟终端。

关于终端、虚拟终端、shell、控制台、tty的区别,可参考这篇文章。

安全重启

卑微笔者在一次不适当的重启之后,彻底搞坏了自己的Ubuntu*(系统内核文件受损)*,被吞掉了所有文件,呜呜呜呜……

为了让惨案不再重演,我学会了安全重启——reisub!!!

按住alt和SysRq键的同时,再输入reisub,输入完b之后,系统自动重启。SysRq(system request键和PrtSc键一般是在一个键位上的)

指令说明
按住art和SysRq键时,输入的一切都会直接交给Linux内核来处理。
reisub中的每一个字母都是一个独立操作,他们分别表示:
Alt+SysRq+R 把键盘从X手中夺过来!
Alt+SysRq+E 终结所有进程!!
Alt+SysRq+I 强制关闭所有进程!!!
Alt+SysRq+S 同步所有挂载的文件系统!!!!
Alt+SysRq+U 重新挂载所有的文件系统为只读!!!!!
Alt+SysRq+B 重启!!!!!!

(黑魔法吧,有没有)

用户与权限

/etc/passwd 文件,getent命令,compgen命令

Linux 系统中用户信息存放在/etc/passwd文件中。

这是一个包含每个用户基本信息的文本文件。当我们在系统中创建一个用户,新用户的详细信息就会被添加到这个文件中。

/etc/passwd 文件将每个用户的基本信息记录为文件中的一行,一行中包含 7 个字段。

/etc/passwd 文件的一行代表一个单独的用户。该文件将用户的信息分为 3 个部分。

* 第 1 部分:`root` 用户信息
* 第 2 部分:系统定义的账号信息
* 第 3 部分:真实用户的账户信息

第一部分是 root 账户,这代表管理员账户,对系统的每个方面都有完全的权力。

第二部分是系统定义的群组和账户,这些群组和账号是正确安装和更新系统软件所必需的。

第三部分在最后,代表一个使用系统的真实用户。

在创建新用户时,将修改以下 4 个文件。

* `/etc/passwd`: 用户账户的详细信息在此文件中更新。
* `/etc/shadow`: 用户账户密码在此文件中更新。
* `/etc/group`: 新用户群组的详细信息在此文件中更新。
* `/etc/gshadow`: 新用户群组密码在此文件中更新。

查看Linux中所有用户有三种方式:

1. 使用/etc/passwd文件

使用任何一个像catmoreless 等文件操作命令来打印 Linux 系统上创建的用户列表。

/etc/passwd是一个文本文件,其中包含了登录 Linux 系统所必需的每个用户的信息。它保存用户的有用信息,如用户名、密码、用户 ID、群组 ID、用户 ID 信息、用户的家目录和 Shell 。

/etc/passwd文件将每个用户的详细信息写为一行,其中包含七个字段,每个字段之间用冒号 : 分隔:​

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
2gadmin:x:500:10::/home/viadmin:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
mysql:x:497:502::/home/mysql:/bin/bash
zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
2daygeek:x:503:504::/home/2daygeek:/bin/bash
named:x:25:25:Named:/var/named:/sbin/nologin
mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

7个字段的详细信息如下:

**用户名 (magesh): 已创建用户的用户名,字符长度 1 个到 12 个字符。
**密码(x):代表加密密码保存在 `/etc/shadow 文件中。
**用户 ID(506):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。
**群组 ID (507):代表群组的 ID 号,每个群组都要有一个唯一的 GID ,保存在 /etc/group文件中。
**用户信息(2g Admin - Magesh M):代表描述字段,可以用来描述用户的信息(LCTT 译注:此处原文疑有误)。
**家目录(/home/mageshm):代表用户的家目录。
**Shell(/bin/bash):代表用户使用的 shell 类型。

你可以使用 awk 或 cut 命令仅打印出 Linux 系统中所有用户的用户名列表,显示的结果是相同的。

# awk -F':' '{ print $1}' /etc/passwd
or
# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
ftp
postfix
sshd
tcpdump
2gadmin
apache
zabbix
mysql
zend
rpc
2daygeek
named
mageshm

2. 使用getent命令

getent命令显示Name Service Switch 库支持的数据库中的条目。这些库的配置文件为/etc/nsswitch.conf

getent命令显示类似于/etc/passwd 文件的用户详细信息,它将每个用户详细信息显示为包含七个字段的单行。

# getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
2gadmin:x:500:10::/home/viadmin:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
mysql:x:497:502::/home/mysql:/bin/bash
zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
2daygeek:x:503:504::/home/2daygeek:/bin/bash
named:x:25:25:Named:/var/named:/sbin/nologin
mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

3. 使用compgen命令
compgen 是 bash 的内置命令,它将显示所有可用的命令,别名和函数。

# compgen -u
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
ftp
postfix
sshd
tcpdump
2gadmin
apache
zabbix
mysql
zend
rpc
2daygeek
named
mageshm

下面来说一下用户的创建删除
创建用户可以使用useradd命令

useradd 选项 用户名

参数说明:

  • 选项:

    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名:

    指定新账号的登录名。

给新建用户赋予sudo权限(需在sudo用户下操作,可用su切换用户):

sudo vim /etc/sudoers

把root那行复制后粘贴并将新行中的root改成新建用户的用户名,新用户就有了sudo权限,需要sudo密码则为ALL,不需要则NOPASSWD:ALL。

root      ALL=(ALL)       NOPASSWD:ALL
[用户名]    ALL=(ALL:ALL)   ALL

用户口令管理

passwd 选项 用户名

可使用的选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

如果默认用户名,则修改当前用户的口令。

删除账户

userdel 选项 用户名

常用选项-r,它的作用是把用户的主目录一起删除。


简单的shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。(由于篇幅限制,此处shell不做过深入的介绍,只介绍helloworld入门)

打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。

#!/bin/bash
echo "Hello World !"

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。echo 命令用于向窗口输出文本。

运行结果

使用变量:

var=value   给变量var赋值value
$var, ${var}    取变量的值
`cmd`, $(cmd)    代换标准输出
'string'    非替换字符串
"string"    可替换字符串

SSH

安全外壳协议,为 Secure Shell 的缩写,可用于远程登录。

口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址

同时也可以使用公钥登录,在此不再赘述。


SCP

可用于本机或两台计算机之间的文件传输,例如:

scp [email protected]:/home/root/others/music /home/space/music/1.mp3 
# scp 用户名@ip:目录 用户名@ip:目录

根目录结构

$ ls -al /
drwxr-xr-x 17 root root 4096 Jun 28 20:17 .
drwxr-xr-x 17 root root 4096 Jun 28 20:17 ..
lrwxrwxrwx 1 root root 7 Jun 21 22:44 bin -> usr/bin
drwxr-xr-x 4 root root 4096 Aug 10 22:50 boot
drwxr-xr-x 20 root root 3140 Aug 11 11:43 dev
drwxr-xr-x 101 root root 4096 Aug 14 13:54 etc
drwxr-xr-x 3 root root 4096 Apr 8 19:59 home
lrwxrwxrwx 1 root root 7 Jun 21 22:44 lib -> usr/lib
lrwxrwxrwx 1 root root 7 Jun 21 22:44 lib64 -> usr/lib
drwx------ 2 root root 16384 Apr 8 19:55 lost+found
drwxr-xr-x 2 root root 4096 Oct 1 2015 mnt
drwxr-xr-x 15 root root 4096 Jul 15 20:10 opt
dr-xr-xr-x 267 root root 0 Aug 3 09:41 proc
drwxr-x--- 9 root root 4096 Jul 22 22:59 root
drwxr-xr-x 26 root root 660 Aug 14 21:08 run
lrwxrwxrwx 1 root root 7 Jun 21 22:44 sbin -> usr/bin
drwxr-xr-x 4 root root 4096 May 28 22:07 srv
dr-xr-xr-x 13 root root 0 Aug 3 09:41 sys
drwxrwxrwt 36 root root 1060 Aug 14 21:27 tmp
drwxr-xr-x 11 root root 4096 Aug 14 13:54 usr
drwxr-xr-x 12 root root 4096 Jun 28 20:17 var

/bin 、 /sbin :链接到 /usr/bin ,存放 Linux 一些核心的二进制文件,其包含的命令可在 shell 上运行。
/boot :操作系统启动时要用到的程序。
/dev :包含了所有 Linux 系统中使用的外部设备。需要注意的是这里并不是
存放外部设备的驱动程序,而是一个访问这些设备的端口。
/etc :存放系统管理时要用到的各种配置文件和子目录。
/etc/rc.d :存放 Linux 启动和关闭时要用到的脚本。
/home :普通用户的主目录。
/lib 、 /lib64 :链接到 /usr/lib ,存放系统及软件需要的动态链接共享库。

/mnt :这个目录让用户可以临时挂载其他的文件系统。
/proc :虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/root :系统管理员的主目录。
/srv :存放一些服务启动之后需要提取的数据。
/sys :该目录下安装了一个文件系统 sysfs。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建时,对应的文件和目录也在内核对象子系统中被创建。
/tmp :公用的临时文件存放目录。
/usr :应用程序和文件几乎都在这个目录下。
/usr/src :内核源代码的存放目录。
/var :存放了很多服务的日志信息。


文件权限

Linux入门合集(入门一篇就够了!)_第15张图片


输入输出

Linux一切皆文件!

  • 使用命令的输出作为可执行文件的输入参数
    • $ ./vulnerable "your_command_here"
    • $ ./vulnerable $(your_command_here)
  • 使用命令作为输入
    • $ your_command_here | ./vulnerable
  • 将命令行输出写入文件
    • $ your_command_here > filename
  • 使用文件作为输入
    • $ ./vulnerable < filename

procfs

procfs 文件系统是 Linux 内核提供的虚拟文件系统,为访问系统内核数据的操作提供接口。之所以说是虚拟文件系统,是因为它不占用存储空间,而只是占用了内存。用户可以通过 procfs 查看有关系统硬件及当前正在运行进程的信息,甚至可以通过修改其中的某些内容来改变内核的运行状态。(具体不在此赘述。)


Linux部分大致就讲这些吧,这些东西得要实践才能更好地理解消化,忘记了就多多百度就好啦。


Markdown

基础的就不讲了也没啥意思(这篇文章中使用了大部分较为常用的Markdown语法),详细可以参见教程,说几个不常用的小技巧吧。

  1. 输入表情

    比如我想要表达开心即smile的表情,那么我只需要使用双冒号中间加入英文单词就可以啦,例如::smile::smile::smile:
    emoij

  2. 制作文本内的超链接

    [超链接](#tag)
    连接到
    

    Markdown目前支持部分HTML元素。

  3. 输入数学公式

    当你需要在编辑器中插入数学公式时,可以使用两个美元符 $$ 包裹 TeX 或 LaTeX 格式的数学公式来实现。提交后,问答和文章页会根据需要加载 Mathjax 对数学公式进行渲染。如:

    $$
    \mathbf{V}_1 \times \mathbf{V}_2 =  \begin{vmatrix} 
    \mathbf{i} & \mathbf{j} & \mathbf{k} \\
    \frac{\partial X}{\partial u} &  \frac{\partial Y}{\partial u} & 0 \\
    \frac{\partial X}{\partial v} &  \frac{\partial Y}{\partial v} & 0 \\
    \end{vmatrix}
    ${$tep1}{\style{visibility:hidden}{(x+1)(x+1)}}
    $$
    

    渲染出来就是:
    KaTeX parse error: Can't use function '$' in math mode at position 249: … \end{vmatrix} $̲{$tep1}{\style{…


Vim

在说vim之前,先说下什么是vi。vi是visual interface的简称,是Linux中最经典的文本编辑器。vi的核心设计思想是:让程序员的手始终保持在键盘的核心区域就能够完成所有的编辑操作。而Vim又是从 vi 发展出来的一个文本编辑器,即vi improved,它在代码补全、编译及错误跳转等方便编程的功能上特别丰富,在程序员中被广泛使用。

在装有vim的终端命令行,直接敲vimtutor命令,即可进入vim的官方交互式教程,根据提示全篇手敲一遍大约需要25-30分钟的时间。

vim

vim主要有三种命令方式:命令模式(Command mode)、插入模式(Insert mode)、末行模式(Last line mode),除此之外,还有可视模式(Visual)、替换模式(Replace)等。

篇幅原因其他不在此赘述,可参见教程。


学海无涯,暂且先写到这里,还有很多很多知识是笔者所不知道的,笔者也会继续努力汲取知识!谨以此共勉!

若有内容侵权,请联系作者删除!

你可能感兴趣的:(Linux入门合集(入门一篇就够了!))