L i n u x ( U b u n t u ) Linux(Ubuntu) Linux(Ubuntu) 使用指南与常用命令

Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificial Intelligence and Automation, Huazhong University of Science and Technology


文章目录

  • L i n u x ( U b u n t u ) Linux(Ubuntu) Linux(Ubuntu) 使用指南与常用命令
    • 打开终端
    • 查看命令的帮助
    • 屏幕截图
    • 终端快捷键
    • Scientifically Go Online
    • 软件安装,文件压缩与解压
      • 安装
      • 罗列
      • 卸载
      • 压缩与解压
    • 软件使用
      • Gedit 文本编辑器
      • 启动 VSCode
      • Anaconda
      • Vi/Vim
    • 窗口切换
    • 文件树与目录结构
    • 文件属性与权限
      • chgrp / chown 更改文件属性
      • chmod 更改文件权限
    • 文件与目录管理
      • ls (列出目录 list)
      • cd (切换目录 change directory)
      • pwd (显示目前所在目录 print working directory)
      • mkdir (创建目录 make directory)
      • rmdir (删除空目录 remove directory)
      • cp (复制文件或目录 copy)
      • scp (安全复制文件或目录 secure copy )
      • rm (移除文件或目录 remove)
      • mv (移动文件与目录/文件重命名 move)
    • 文件查看
      • cat (由第一行开始显示文件内容)
      • tac (文件内容从最后一行开始显示)
      • nl (显示行号)
      • more (一页一页翻动)
      • less (一页一页翻动)
      • head (取出文件前面几行)
      • tail (取出文件后面几行)
    • 用户与用户组管理
      • 用户管理
      • 用户组管理
      • 相关重要的系统文件
      • 拥有帐户文件
      • 批量添加用户
    • 磁盘管理
      • df (检查文件系统的磁盘空间占用情况)
      • du (与df命令不同的是,du会直接到文件系统内去搜寻所有的文件数据)
      • fdisk (磁盘分区表操作工具)
      • mkfs (文件系统的格式化)
      • fsck (检查和维护不一致的文件系统)
      • mount/umount (磁盘挂载与卸载)
    • 关机与重启

Linux 专栏链接

本教程为学习笔记,且持续更新中。不商用,如需转载请联系本人。

其中的大部分截图都是本人在 Shell 小黑窗上自己尝试的结果,请参考者记得根据自己 Linux 系统的实际情况来进行修改。

打开终端

安装好 Linux 系统后,我们就可以打开终端,尝试各种命令,以及学习软件的下载安装方式了。

/home/weijingmin/ 是我的主目录,各位的系统因系统而异。

目录介绍也在本教程中。

Ctrl+Alt+T # 打开shell

查看命令的帮助

man [order] # 查看order的帮助

常用命令参考

屏幕截图

默认保存在/home/weijingmin/图片/

PrintScreen # 截全屏
Alt+PrintScreen # 截界面
Shift+PrintScreen # 自由截图

终端快捷键

Ctrl + Shift + C # 复制
Ctrl + Shift + V # 粘贴
TAB # 自动补全命令或文件名
PageUp PageDown # 查看之前输入过的上一条/下一条指令
CTRL + SHIFT + T # 新建标签页
CTRL + D # 关闭标签页
CTRL + L # 清楚屏幕
CTRL + R + 文本 # 在输入历史中搜索
CTRL + A # 移动到行首
CTRL + E # 移动到行末
CTRL + C # 终止当前任务
CTRL + Z # 把当前任务放到后台运行(相当于运行命令时后面加&)

Scientifically Go Online

这部分不过多阐述,请大家自己解决问题。我只讲述一个创建自动化脚本的思路。

我使用的软件是 QV2ray,即使用 Qt 做的 V2ray 的 GUI 界面。

cd ~/v2ray
./Qv2ray-refs.tags.v1.99.6-linux.AppImage # 打开v2ray的GUI界面

或者直接新建一个脚本文件,叫 v2ray_GUI.sh。代码为上述代码。

cd ~
chmod +x ./v2ray_GUI.sh  #使脚本具有执行权限

以后在用户主目录下( /home/weijingmin/ )直接运行该 shell 脚本即可。

./v2ray_GUI.sh

软件安装,文件压缩与解压

软件常见的默认安装位置:

usr/local/lib/
usr/lib/
opt/
安装

直接通过命令安装:

sudo apt-get install software_name

用命令下载太慢?应用程序->软件和更新,换源即可,常用的为阿里云镜像,但是不保证使用的源一定有软件源。

使用安装包安装:

在官网上下载安装包,下载太慢可以 scientifically go online。

在安装包文件的目录下,右键选择从终端打开,然后输入如下命令

sudo dpkg -i package_name.deb # 安装包 (Debian)
sudo rpm -Uvh package_name.rpm # 安装包 (RPM)
sudo bash package_name.sh # shell源代码
罗列
dpkg --list # 列出所有软件enter # 换行
space # 换页
q # 退出
卸载
sudo apt-get --purge remove 包名 # 加上--purge是把配置文件一起卸载掉
sudo apt-get remove 包名# 想保留配置文件,不加--purge即可
压缩与解压
tar cf file.tar files # 创建包含 files 的 tar 文件# file.tar
tar xf file.tar # 从 file.tar 提取文件
tar czf file.tar.gz files # 使用 Gzip 压缩创建# tar 文件
tar xzf file.tar.gz # 使用 Gzip 提取 tar 文件
tar cjf file.tar.bz2 # 使用 Bzip2 压缩创建 tar 文 件
tar xjf file.tar.bz2 # 使用 Bzip2 提取 tar 文件
gzip file # 压缩 file 并重命名为 file.gz
gzip -d file.gz # 将 file.gz 解压缩为 file

软件使用

Gedit 文本编辑器
gedit / sudo gedit
gedit file_name # 用文本编辑器打开
CTRL + N: 新建文档
CTRL + W: 关闭文档
CTRL + S: 保存
CTRL + SHIFT + S: 另存为
CTRL + S: 搜索
CTRL + H: 搜索并替换
CTRL + I: 跳到某一行
CTRL + C: 复制
CTRL + V: 粘贴
CTRL + X: 剪切
CTRL + Q: 退出
启动 VSCode

下载链接

.deb, .rpm 文件安装方式请往上翻。

code --user-data-dir # root用户启动
code # 普通启动

在 VSCode 中也能方便的使用 Linux 终端来做各种命令操作

Anaconda

安装,在官网上下载.sh 。

从终端进入下载的目录后:

sudo bash Anaconda3-2021.11-Linux-x86_64.sh # 以你自己安装包的名字为准

中途基本都 Yes 即可,无法安装的话上述命令前面加上 sudo

环境状态激活:

conda config --show | grep auto_activate_base # 显示base状态
conda config --set auto_activate_base False # 关闭base环境
conda config --set auto_activate_base True # 打开base环境

其他的conda命令和 Windows 类似。

Vi/Vim

用 Vim 打开文件,如果当前目录不存在该文件,则保存时会自动创建。

vim File_path/File_name

当用户刚刚启动 vi/vim,便进入了命令模式。

vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)

命令模式:

  • i 切换到输入模式,以编辑文本,输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及 Shift 组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

ESC,退出输入模式,切换到命令模式。

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

ESC 键可随时退出底线命令模式,进入命令模式。

命令模式中按下 :wq 储存后离开 vim。其实本质上就是,先进入底线命令模式,然后保存文件,最后退出。

例子

cd 桌面
cd Linux学习
vim Vim_test.txt

在命令模式之中,只要按下 i, o, a 等字符就可以进入输入模式了。

在输入模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。

这个时候,键盘上除了 [Esc] 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。

按下 [ESC] 按钮回到命令模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 [Esc] 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了。

OK,我们要存档了,存盘并离开的指令很简单,输入『:wq』即可保存离开。

:wq # 进入底线命令模式,然后保存文件,最后退出

其他常用按键自行搜索 Vim 教程。

窗口切换

L i n u x Linux Linux 预设提特色他供了六个命令窗口终端机 t t y 1 , t t y 2 , ⋯ , t t y 6 tty_1,tty_2,\cdots,tty_6 tty1​,tty2​,⋯,tty6​ 让我们来登录。

Ctrl+Alt+F1~F6

文件树与目录结构

  • 绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。

  • 相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:

    cd ../man
    
ls / # 系统目录结构

打开 Shell 后,默认文件树的目录是用户主目录/home/weijingmin

文件树的根目录为此电脑,其文件夹划分如下:

/bin, /usr/bin是给系统用户使用的指令(除root外的普通用户),而/sbin, /usr/sbin则是给 root 使用的指令。

一些重要的文件夹,比如说 boot, etc, var 等等不要随意修改。

/bin # binary的缩写, 存放着最经常使用的命令
/boot # 启动Linux需要的文件
/dev # device, Linux外部设备
/etc # 所有的系统管理所需要的配置文件和子目录,重要,不能随意修改
/lib # 动态链接库,类似Win的DLL
/media # 把识别的设备挂载到这个目录下,虚拟机的光盘就在这里
/mnt # 用于让用户临时挂载别的文件系统
/opt # 这是给主机额外安装软件所摆放的目录,我装的Chrome, Edge就在这目录下
/proc # 这个目录是一个虚拟的目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。
/root # 系统管理员, 超级用户, super
/sbin # 系统管理员用的命令
/srv # 一些服务所需数据
/sys # 文件系统
/tmp # 临时文件
/var # 系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。/usr # 用户的很多应用程序和文件都放在这个目录下
/usr/sbin # 系统管理员使用的比较高级的管理程序和系统守护程序。
/usr/bin # 系统用户使用的应用程序
/usr/src # 内核源代码默认的放置目录/home # 用户的主目录。每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/home/weijingmin # 用户自己的目录,也是默认的终端目录
/home/weijingmin/桌面 # 桌面
/home/weijingmin/下载 # 下载

文件属性与权限

ls -l # 显示一个文件的属性以及文件所属的用户和组

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

文件类型(0)-属主权限(1-3)-属组权限(4-6)-其他用户权限(7-9) 。

例如:

drwxr-xr-x  2 weijingmin weijingmin 4096 1月  17 21:50 公共的

即:文件夹,属主权限 rwx ,属组权限 r-x ,其他用户权限 r-x 。

owner/group/others: 一个用户属于一个或多个组,文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

对于上例,属主为 weijingmin ,属组为 weijingmin 。

即属主 weijingmin 具有 rwx ,weijingmin 同组的其他用户具有 rx ,不同组的其他用户具有 rx 。

chgrp / chown 更改文件属性
chgrp [-R] 属组名文件名 # 更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名 # 更改文件属主,也可以同时更改文件属组
chmod 更改文件权限

使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4 w:2 x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,当权限为: [-rwxrwx—] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0
 chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同此目录下的所有文件都会变更

例如,要将权限变成 -rwxr-xr-- 。那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

chmod 754 file_name

还有一种改法:

由 u, g, o 来代表三种身份的权限!a 则代表 all 亦即全部的身份!

chmod u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录

例如我们需要将文件 .bashrc 的权限从 -rwxr-xr-- 设置为 -rwxrwxrwx

chmod  a+w  .bashrc # 所有的权限都加上w

例如要拿掉全部人的可执行权限:

chmode a-w .bashrc
ls -al .bashrc # 查看文件信息

文件与目录管理

打开 Shell 后,默认文件树的目录是用户主目录/home/weijingmin

ls # 当前目录结构
cd package_path # 打开目录(绝对路径)
cd ../package_name # 打开当前目录下的package_name目录(相对路径)
cd .. # 返回上一级
pwd # 显示当前目录
mkdir package_name # 当前目录创建
rmdir package_name # 删除一个空的目录
cp # 复制文件或目录
rm # 移除文件或目录
mv # 移动文件与目录/文件重命名
ls (列出目录 list)

对于/home/weijingmin

选项与参数:

  • -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
ls # 列出所有文件
ls -l # 显示一个文件的属性以及文件所属的用户和组
ls -al ~ # 家目录下的所有文件列出来(含属性与隐藏档)

cd (切换目录 change directory)
cd /usr # 在此电脑切换到别的文件夹
cd ~ # 返回家目录
cd 桌面 # 从/home/weijingmin进入桌面
mkdir test # 创建test目录
cd test # 从当前目录进入test目录
cd .. # 返回上一级cd 桌面/test # 绝对路径进test
cd 桌面/Linux学习/'shell code' # 解决带空格的为cd 桌面
cd ./test # 相对路径
pwd (显示目前所在目录 print working directory)
pwd
pwd -P # 显示出确实的路径,而非使用连结 (link) 路径。
mkdir (创建目录 make directory)

选项与参数:

  • -m :配置文件的权限喔,不需要看默认权限 (umask) 的脸色。
  • -p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来

例: 创建两个文件夹

cd 桌面/test
mkdir -p test1/test2/test3 # 递归创建目录

例: 设置权限

cd .. # 退到桌面
mkdir -m 731 test1 # 设置权限:owner:rwx, group:wx, others:x
ls -l

rmdir (删除空目录 remove directory)

选项与参数:

  • -p :连同上一级『空的』目录也一起删除

例: 将刚才创建的两个文件夹杀出

rmdir test1 # 删除test1
rmdir -p test/test1/test2/test3 # 递归删除test文件夹中的所有空目录

要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。

cp (复制文件或目录 copy)

选项与参数:

-a :相当于 -pdr 的意思,pdr 请参考下列说明;(常用)

-d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

-i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-l :进行硬式连结(hard link)的连结档创建,而非复制文件本身;

-p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);

-r :递回持续复制,用于目录的复制行为;(常用)

-s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;

-u :若 destination 比 source 旧才升级 destination !

cp 来源档(source) 目标档(destination)
cp source1 source2 source3 .... directory

例:桌面/linux学习/test复制到桌面/code覆盖已经存在的test

cp -i ./Linux学习/test ./code # 第一个是源目录,第二个是目的目录
scp (安全复制文件或目录 secure copy )

scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

简易写法:

scp [可选参数] file_source file_target

参数说明:

  • -1: 强制 scp 命令使用协议 ssh1
  • -2: 强制 scp 命令使用协议 ssh2
  • -4: 强制 scp 命令只使用 IPv4 寻址
  • -6: 强制 scp 命令只使用 IPv6 寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将 -C 标志传递给 ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp 和 ssh(1) 会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以 cipher 将数据传输进行加密,这个选项将直接传递给 ssh 。
  • -F ssh_config: 指定一个替代的 ssh 配置文件,此参数直接传递给 ssh 。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh 。
  • -l limit: 限定用户所能使用的带宽,以 Kbit/s 为单位。
  • -o ssh_option: 如果习惯于使用 ssh_config(5) 中的参数传递方式,
  • -P port:注意是大写的 P, port 是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解 ssh(1) 的选项。

例: 从本地复制到远程

命令格式:

scp local_file remote_username@remote_ip:remote_folder
# 或者
scp local_file remote_username@remote_ip:remote_file
# 或者
scp local_file remote_ip:remote_folder
# 或者
scp local_file remote_ip:remote_file
  • 第 1, 2 个指定了用户名,命令执行后需要再输入密码,第 1 个仅指定了远程的目录,文件名字不变,第 2 个指定了文件名;
  • 第 3, 4 个没有指定用户名,命令执行后需要输入用户名和密码,第 3 个仅指定了远程的目录,文件名字不变,第 4 个指定了文件名;

应用实例:在使用 ssh 连接了远程服务器后,就可以用 scp 来拷贝。

scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3

复制目录命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder
# 或者
scp -r local_folder remote_ip:remote_folder
  • 第 1 个指定了用户名,命令执行后需要再输入密码;
  • 第 2 个没有指定用户名,命令执行后需要输入用户名和密码;

应用实例:

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/
scp -r /home/space/music/ www.runoob.com:/home/root/others/

上面命令将本地 music 目录复制到远程 others 目录下。

例: 从远程复制到本地

从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例

应用实例:

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
scp -r www.runoob.com:/home/root/others/ /home/space/music/

说明

1.如果远程服务器防火墙有为 scp 命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

# scp命令使用端口号4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

2.使用 scp 命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则 scp 命令是无法起作用的。

rm (移除文件或目录 remove)

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息。
  • -i :互动模式,在删除前会询问使用者是否动作。
  • -r :递归删除,最常用在目录的删除了,这是非常危险的选项。

例: 将刚才桌面的test文件删掉

rm -i test # 删除前会询问,避免错误删除

mv (移动文件与目录/文件重命名 move)

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

例: 创建tmp文件夹,把桌面/Linux学习/test移到桌面/tmp

cd 桌面
mkdir tmp
mv ./Linux学习/tmp ./tmp

文件查看

cat # 由第一行开始显示文件内容
tac # 从最后一行开始显示,可以看出 tac 是 cat 的倒着写
nl  # 显示的时候,顺道输出行号
more # 一页一页的显示文件内容
less # 与 more 类似,但是比 more 更好的是,他可以往前翻页
head # 只看头部几行
tail # 只看尾部几行
cat (由第一行开始显示文件内容)
cat [-AbEnTv]

选项与参数:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

检看 /etc/issue 这个文件的内容:

cat /etc/issue

tac (文件内容从最后一行开始显示)

tac 与 cat 命令刚好相反,可以看出 tac 是 cat 的倒着写

tac /etc/issue

nl (显示行号)
nl 文件

选项与参数:

  • -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:
    -n ln :行号在萤幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

用 nl 列出 /etc/issue 的内容

nl /etc/issue

more (一页一页翻动)
more /etc/manpath.config
# ....(中间省略)....
--More--(18%)  # 你的光标也会在这里等待你的命令

在 more 这个程序的运行过程中,你有几个按键可以按的:

  • 空白键 (space):代表语法:向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less (一页一页翻动)

比 more 更好的是,less 可以往前翻页。

less /etc/manpath.config
# ....(中间省略)....
/etc/manpath.config # 这里可以等待你输入命令!

less 运行时可以输入的命令有:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序;
head (取出文件前面几行)
head 文件

选项与参数:

  • -n :后面接数字,代表显示几行的意思
head /etc/manpath.config

head默认的情况中,显示前面 10 行。若要显示前 20 行:

head -n 20 /etc/man.config

tail (取出文件后面几行)
tail 文件

选项与参数:

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下 [ctrl]-c 才会结束 tail 的侦测
tail -n 20 /etc/man.config

用户与用户组管理

命令详细的参数,自己查阅相关资料。

用户管理
useradd -d /usr/sam -m sam # -d和-m选项用来为登录名sam产生一个主目录
useradd -s /bin/sh -g group –G adm,root gem # 用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组
userdel sam # 删除用户sam在系统文件中的记录,同时删除用户的主目录
usermod -s /bin/ksh -d /home/z –g developer sam # 将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer# 超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令
passwd
passwd sam # 超级用户指定
passwd -d sam # 超级用户指定空口令
passed -l sam # 超级用户锁定用户
用户组管理
groupadd -g 101 group2 # 增加了一个新组group2,同时指定新组的组标识号是101
groupdel group2 # 删除
groupmod -g 102 group2 # 将组group2的组标识号修改为102
groupmod –g 10000 -n group3 group2 # 组group2的标识号改为10000,组名修改为group3newgrp root # 将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组
相关重要的系统文件

系统中的每个用户都在 /etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

cat /etc/passwd
...
weijingmin:x:1000:1000:WeiJingmin,,,:/home/weijingmin:/bin/bash
...

从上面的例子我们可以看到,/etc/passwd 中一行记录对应着一个用户,每行记录又被冒号(:)分隔为 7 个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  • "用户名"是代表用户账号的字符串。

  • “口令”一些系统中,存放着加密后的用户口令字。

  • “用户标识号”是一个整数,系统内部用它来标识用户。

  • “组标识号”字段记录的是用户所属的用户组。

  • “注释性描述”字段记录着用户的一些个人情况。

  • “主目录”,也就是用户的起始工作目录。

  • 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即 Shell。

  • 系统中有一类用户称为伪用户 psuedo users (登录 Shell 为空,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求)

    bin # 拥有可执行的用户命令文件
    sys # 拥有系统文件
    adm # 拥有帐户文件
    uucp # UUCP使用
    lp # lp或lpd子系统使用
    nobody # NFS使用
    
拥有帐户文件

除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet 等,它们也都各自为相关的进程和文件所需要。

/etc/shadow中的记录行与 /etc/passwd 中的一一对应,它由 pwconv 命令根据 /etc/passwd 中的数据自动产生

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
sudo cat /etc/shadow

用户组的所有信息都存放在/etc/group文件中

组名:口令:组标识号:组内用户列表
cat /etc/group

批量添加用户

先编辑一个文本用户文件(user.txt)

user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

然后切换到 root 身份

newusers < user.txt # 从刚创建的用户文件`user.txt`中导入数据,创建用户
pwunconv # 执行命令/usr/sbin/pwunconv,将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉,这是为了方便下一步的密码转换工作。

编辑每个用户的密码对照文件(passwd.txt)

user001:密码
user002:密码
user003:密码
user004:密码
user005:密码
user006:密码

最后终端输入

pwconv # 将密码编码为 shadow password,并将结果写入 /etc/shadow

磁盘管理

df (检查文件系统的磁盘空间占用情况)

可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

du [-ahskm] 文件或目录名称

选项与参数:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示

系统内所有的文件系统列出来

df

容量结果以易读的容量格式显示出来

df -h

系统内的所有特殊文件格式及名称都列出来

df -aT

部分结果:

将 /etc 底下的可用的磁盘容量以易读的容量格式显示

du (与df命令不同的是,du会直接到文件系统内去搜寻所有的文件数据)
du [-ahskm] 文件或目录名称

选项与参数:

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :列出总量而已,而不列出每个各别的目录占用容量;
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;

列出目前目录下的所有文件容量。直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。以下由于文件显示太多,故不放截图。

du

将文件的容量也列出来

du -a

检查根目录底下每个目录所占用的容量

du -sm /*

通配符 * 来代表每个目录。

与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

fdisk (磁盘分区表操作工具)
fdisk [-l] 装置名称

选项与参数:

  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

列出所有分区信息

fdisk -l

部分截图如下:如下

找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息

df / # 重点在找出磁盘文件名而已
sudo fdisk /dev/sda # 不要加上数字

输入 m 后,就会看到底下这些命令介绍

离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。

想要不储存离开吗?按下 q 。不要随便按 w !

使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。

mkfs (文件系统的格式化)

磁盘分割完毕后自然就是要进行文件系统的格式化

mkfs [-t 文件系统格式] 装置文件名

选项与参数:

  • -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

查看 mkfs 支持的文件格式

mkfs[tab][tab]

按下两个[tab],会发现 mkfs 支持的文件格式如上所示。

将分区 /dev/sda5(可指定你自己的分区) 格式化为 ext3 文件系统:

mkfs -t ext3 /dev/sda5

这样就创建起来我们所需要的 Ext3 文件系统了!简单明了

fsck (检查和维护不一致的文件系统)

若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

fsck [-t 文件系统] [-ACay] 装置名称

选项与参数:

  • -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
  • -s : 依序一个一个地执行 fsck 的指令来检查
  • -A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
  • -C : 显示完整的检查进度
  • -d : 打印出 e2fsck 的 debug 结果
  • -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
  • -R : 同时有 -A 条件时,省略 / 不检查
  • -V : 详细显示模式
  • -a : 如果检查有错则自动修复
  • -r : 如果检查有错则由使用者回答是否修复
  • -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。

查看系统有多少文件系统支持的 fsck 命令:

fsck[tab][tab]

强制检测 /dev/sda5 分区:

fsck -C -f -t ext3 /dev/sda5

如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。

mount/umount (磁盘挂载与卸载)

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

用默认的方式,将刚刚创建的 /dev/sda5 挂载到 /mnt/sda5 上面!

mkdir /mnt/sda5
mount /dev/sda5  /mnt/sda5
df

卸载:

umount [-fn] 装置文件名或挂载点

选项与参数:

  • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
  • -n :不升级 /etc/mtab 情况下卸除。

卸载/dev/sda5

umount /dev/sda5

关机与重启

在 l i n u x linux linux 领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

# 将数据由内存同步到硬盘中
sync #关机
shutdown -h now # 立马关机
halt
poweroff
init 0
shutdown -h + time # time==+10, 十分钟后关机; time==20:25 指定时间; time==10, 会在屏幕上显示关机的时间# 重启
shutdown -r now # 现在重启。若now替换为+10, 十分钟后重启
reboot
init 6

Linux(Ubuntu) 使用指南和常用命令相关推荐

  1. Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

    Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...

  2. Linux/Ubuntu: 使用 trash-cli 防止 rm 命令误删除重要文件

    曾几何时,一条 rm -rf /useless /* 命令干掉了我们需要的文件,也干掉的整个系统, 这是是不是与哭无泪啊. 像这种使用 rm 命令误删除文件的情况,我们会注意,但是我们不能保证百分百的 ...

  3. linux命令grep和find怎么用,Linux下find和grep常用命令及区别介绍

    在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区别的. 区别: (1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空 ...

  4. Linux K8S(Kubernetes)常用命令

    Linux K8S(Kubernetes)常用命令集 一.K8S简介 二.常用命令 2.1 想查看kubectl命令的方法 2.2 常用的命令类 2.3 K8S常用命令 一.K8S简介 Kuberne ...

  5. 查看Linux当前操作系统版本信息常用命令

    查看Linux当前操作系统版本信息常用命令 Linux查看当前操作系统版本信息 Linux查看版本当前操作系统内核信息 linux查看版本当前操作系统发行信息 Linux查看cpu相关信息,包括型号. ...

  6. 【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ

    实现自己既定的目标,必须能耐得住寂寞单干 本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangpan.y ...

  7. Windows 和 Linux 查看和关闭端口常用命令

    title: Windows 和 Linux 查看和关闭端口常用命令 date: 2022-03-11 09:35:48 tags: Linux Windows categories: 开发实践 co ...

  8. NO9 Linux快捷键整理及最常用命令

    Linux快捷键整理及最常用命令 常用快捷键: Ctrl + u            删除光标之前到行首的字符 Ctrl + k            删除光标之前到行尾的字符 Ctrl + c   ...

  9. linux查看rabbitmq运行状态,RabbitMQ常用命令

    RabbitMQ常用命令 rabbitmqctl命令 http://www.rabbitmq.com/man/rabbitmqctl.1.man.html# 1). 服务器启动与关闭 启动: rabb ...

最新文章

  1. Delphi中的消息截获
  2. 统计分析与spss的应用第五版数据_#统计分析与SPSS应用# 4.1.3 SPSS频数分析的扩展功能...
  3. mysql多重主键错误,老师,jd_spider中数据插入Mysql时一直显示主键错误,求助~
  4. 睡眠经济的尽头,会是智能床垫吗?
  5. Quartus II14.1安装教程
  6. 感觉灵感被掏空?你需要这 9 篇论文来补一补 | PaperDaily #05
  7. python去除数组缺失值_动态数组的应用,VBA中如何利用动态数组去除重复值的第二讲...
  8. redmine更换主题
  9. java接收rowtype类型_Java PhysType.getJavaRowType方法代码示例
  10. 小知识-美元石油体系
  11. 哔哩哔哩校招末班车,offer爆率超高,来不及解释了,快上车!
  12. swift 动画合集
  13. 乘法口诀表java加表格_Java 面试 - 打印九九乘法口诀表
  14. Axure总结和感想
  15. 动态修改Log4J和Logback的日志级别
  16. tft液晶屏接口概述及信号类型
  17. rocketmq源码③-Producer的启动、发送消息、路由broker
  18. ios安卓模拟器_iOS模拟器来了?苹果大一统时代会对游戏行业造成哪些冲击?
  19. Java学习之编程入门
  20. 基于python+django框架+Mysql数据库的在线电子书阅读系统设计与实现

热门文章

  1. [80后婚姻]我们这一代:女爱热暴力 男用冷暴力
  2. gdi+设置图像的透明度
  3. qt+msvc+webenginewidgets在全屏状态下,右键菜单失效
  4. matlab 相位解包裹,3D轮廓测量中相位解包裹应用
  5. 上海亚商投顾:创业板指低开高走ChatGPT概念股再爆发
  6. 【食品图像识别】Large Scale Visual Food Recognition
  7. IH8SN0W公布6.1.3-6.1.5完美越狱源代码
  8. Pay Per Call广告与无线营销的天然结合
  9. 秋日公园--公园一角--2
  10. 人要学会勇敢坚强和接纳