Linux/Shell笔记

Linux 部分

一、 文件基本属性

系统目录结构

/

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    • 账号和密码都可以在/etc/passwd/etc/shadow这两个文件中找到
      • /etc/passwd只有系统管理员才可以修改,其他用户可以查看
      • /etc/shadow其他用户看不了
    • /etc/passwd
      • 每一行又通过[:]分为七个部分,它们的含义分别为:
      • 账号名称;
      • 原先用来保存密码的,现在密码都放在/etc/shadow中,所以这里显示x;
      • UID,也就是使用者ID。默认的系统管理员的UID为0,我们添加用户的时候最好使用1000以上的UID,1-1000范围的UID最好保留给系统用;
      • GID,也就是群组ID;
      • 关于账号的一些说明信息;
      • 账号的家目录,家目录就是你登陆系统后默认的那个目录;
      • 账号使用的shell。
    • /etc/shadow
      • 也是由[:]来进行分割,但是这里一共分出来九个栏目,每个栏目的解释如下:
      • 账户名称;
      • 加密后的密码,如果这一栏的第一个字符为!或者*的话,说明这是一个不能登录的账户;
      • 最近改动密码的日期(这个是从1970年1月1日算起的总的天数)。那怎么才能知道今天距1970年1月1日有多少天呢?很简单,你改下密码,然后看下这个栏目中的数字是多少就可以了;
      • 密码不可被变更的天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制;
      • 密码需要重新变更的天数:密码经常更换才能保证安全,为了提醒某些经常不更换密码的用户,可以设置一个天数,强制让用户更换密码,也就是说该用户的密码会在多少天后过期,如果为99999则没有限制;
      • 密码过期预警天数:如果在上面设置了密码需要重新变更的天数,则会在密码过期的前多少天进行提醒,提示用户其密码将在多少天后过期;
      • 密码过期的宽恕时间:如果在上面设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数;
      • 账号失效日期,过了这个日期账号就不能用了;
      • reserved
  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
    • echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
  • /selinux
     这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
  • /srv
     该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
  • /usr
     usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
  • /usr/bin:
    系统用户使用的应用程序。
  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:
    内核源代码默认的放置目录。
  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

文件基本属性

使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组

  • ubuntu@VM-4-6-ubuntu:~$ ll
  • total 188
  • drwxr-x— 10 ubuntu ubuntu 4096 Apr 28 04:53 ./
  • drwxr-xr-x 5 root root 4096 Apr 28 05:21 ../
  • drwxrwxr-x 10 ubuntu ubuntu 4096 Feb 15 09:51 AstrBot/
  • drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 1 23:56 AutoBangumi/
  • -rw——- 1 ubuntu ubuntu 8881 May 2 16:04 .bash_history
  • -rw-r–r– 1 ubuntu ubuntu 220 Jan 7 2022 .bash_logout
  • -rw-r–r– 1 ubuntu ubuntu 3771 Jan 7 2022 .bashrc
  • 0 第一个字符【文件类型】:
    • 当为 d 则是目录
    • 当为  则是文件;
    • 若是 l 则表示为链接文档(link file);
    • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
  • 1 2 3 接下来三个位置【属主权限】:
    • 以三个为一组,且均为 rwx 的三个参数的组合。
    •  r 代表可读(read)
    • w 代表可写(write)
    • x 代表可执行(execute)。
    • 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号  而已
  • 4 5 6 【属组权限】
    • 同上
  • 7 8 9 【其他用户权限】
    • 同上

常用命令:

  • chgrp:更改文件属组
    • chgrp [-R] 属组名 文件名
      • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。
  • chown (change owner) : 修改所属用户与组。
    • chown [–R] 所有者 文件名
    • chown [-R] 所有者:属组名 文件名
  • chmod (change mode) : 修改用户的权限。
    • 基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限
    • 数字改变权限:
      • 各权限分数:
        • 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)的持续变更,以及连同次目录下的所有文件都会变更
        • 以上例子中设置文件权限的命令就为chmod [-R] 770
    • 符号改变权限:
      • 可以使用 u, g, o 来代表三种身份的权限。
      • 此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x
      • eg. 如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名

二、文件与目录管理

路径概念

  • 绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
  • 路径查询命令:
    • which
      • which只能用来查找PATH环境变量中出现的路径下的可执行文件。
    • whereis
      • whereis [选项]  [文件名称]
        • ‘-b’ : 只找binary 文件
        • ‘-m’ : 只找在说明文件manual路径下的文件
        • ‘-s’ : 只找source来源文件
        • ‘-u’ : 没有说明档的文件

文件后缀

  • 在linux系统中,文件的后缀名并没有具体意义,也就是说,你加或者不加,都无所谓
  • 加上仅仅是为了让人类容易区分,例如:
    • .sh代表它是一个shell script
    • .tar.gz 代表它是一个压缩包
    • .cnf 代表它是一个配置文件
    • test.zip 代表它是一个压缩文件

文件压缩

  • 压缩文件常用扩展名
    • *.Z      compress 程序压缩的文件;
    • *.gz     gzip 程序压缩的文件;
    • *.bz2    bzip2 程序压缩的文件;
    • *.tar     tar 程序打包的数据,并没有压缩过;
    • *.tar.gz   tar 程序打包的文件,其中并且经过 gzip 的压缩;
    • *.tar.bz2  tar 程序打包的文件,其中并且经过 bzip2 的压缩。
  • gzip
    • gzip [options] [file…]
      • file...
        • 要压缩的文件。gzip 会将指定的文件压缩,并生成一个 .gz 后缀的压缩文件,同时删除原始文件。
      • options 参数选项
        • -d:解压缩 .gz 文件。相当于使用 gunzip 命令。
        • -k:保留原始文件,不删除。
        • -r:递归压缩目录下的所有文件。
        • -v:显示详细的压缩或解压缩过程。
        • -l:显示压缩文件的详细信息,如压缩率、原始大小等。
        • -1 到 -9:指定压缩比。-1 是最快的压缩,压缩率最低;-9 是最慢的压缩,压缩率最高。默认是 -6
        • -t:测试压缩文件的完整性。
    • zcat 档名.gz
      • 查看压缩文件
    • bzip2,bzcat类似
  • zip/unzip:
    • zip [options] output.zip file1 file2 … 【用以压缩】
      • output.zip:生成的压缩文件名。
      • file1 file2 ...:要压缩的文件或目录。
      • options 参数:
        • -r:递归压缩目录及其子目录中的所有文件。
        • -e:为压缩文件设置密码保护。
        • -q:静默模式,不显示压缩过程。
        • -v:显示详细的压缩过程。
        • -x:排除某些文件或目录,不进行压缩。
        • -m:压缩后删除原始文件。
        • -0 到 -9:指定压缩级别,-0 表示存储不压缩,-9 表示最高压缩率,默认是 -6
    • unzip [options] file.zip 【用以解压】
      • options 参数
        • -d <directory>:将解压缩的文件放入指定的目录。
        • -l:列出 .zip 文件中的内容,但不解压。
        • -v:显示详细信息,包括 .zip 文件的结构和压缩率等信息。
        • -t:测试 .zip 文件的完整性,但不解压。
        • -n:解压时不覆盖已存在的文件。
        • -o:解压时覆盖已存在的文件,而不提示。
        • -x <pattern>:解压时排除指定的文件或目录。
        • -j:解压时不保留目录结构,将所有文件解压到当前目录中。
  • tar:
    • tar [options] -f archive.tar [files…]
    • -f archive.tar:指定归档文件的名称。
    • [files...]:要打包的文件和目录。
    • options 参数
      • 基本操作选项
        • -c:创建一个新的归档文件。
        • -x:解压归档文件。
        • -t:列出归档文件的内容。
        • -r:向现有归档文件中追加文件。
        • -u:仅追加比归档文件中已有文件更新的文件。
        • -d:找到归档文件中与文件系统不同步的差异。
        • -A:将一个 .tar 文件追加到另一个 .tar 文件中。
      • 文件选择和排除
        • -f <file>:指定归档文件的名称(必须放在选项列表的最后)。
        • -C <directory>:切换到指定目录进行操作。
        • --exclude=<pattern>:排除匹配指定模式的文件。
        • --exclude-from=<file>:从指定文件读取要排除的模式。
        • --exclude-caches:排除目录中的缓存文件。
        • --exclude-backups:排除以 ~ 结尾的备份文件。
        • --exclude-vcs:排除版本控制系统生成的文件(如 .git.svn 等)。
      • 压缩和解压选项
        • -z:使用 gzip 压缩归档文件。
        • -j:使用 bzip2 压缩归档文件。
        • -J:使用 xz 压缩归档文件。
        • --lzip:使用 lzip 压缩归档文件。
        • --lzma:使用 lzma 压缩归档文件。
        • --lzop:使用 lzop 压缩归档文件。
        • --zstd:使用 zstd 压缩归档文件。
        • -a:自动选择压缩方式(基于归档文件的扩展名,如 .tar.gz.tar.bz2 等)。
        • -I <command>:使用指定的压缩程序进行压缩或解压。
      • 输出和交互选项
        • -v:显示详细操作过程(verbose)。
        • --progress:显示进度条(与 -v 一起使用时)。
        • -w 或 --interactive:在每次操作前询问用户确认。
        • --checkpoint:在处理每个文件后显示一个检查点。
        • --checkpoint-action=<action>:在检查点执行指定的动作,如 echodot 等。
        • --totals:在操作结束后显示处理的总字节数。
        • --verbose:详细显示处理的信息。
        • --quiet:尽可能少的输出信息。
      • 文件和权限相关选项
        • -p:保留文件的原始权限(解压时)。
        • --same-owner:尝试将解压的文件设为原始所有者(需超级用户权限)。
        • --no-same-owner:不设置文件所有者。
        • --same-permissions:保留文件的原始权限(与 -p 相同)。
        • --no-same-permissions:不保留原始权限,使用当前用户的 umask 设置权限。
        • -m:在解压时不恢复文件的修改时间,而使用当前时间。
      • 归档管理选项
        • -k 或 --keep-old-files:解压时保留已有文件,不覆盖。
        • --overwrite:解压时强制覆盖已有文件。
        • --remove-files:归档成功后删除原始文件。
        • --delete:从归档文件中删除指定文件(仅限 gnu tar)。
        • --keep-newer-files:解压时保留比归档中较新的文件。
        • --listed-incremental=<file>:创建增量备份或从增量备份恢复。
      • 文件系统和设备选项
        • -L <N>:分割大于 N 字节的归档文件(对于磁带机)。
        • --tape-length=<number>:指定磁带长度(对于磁带机)。
        • --multi-volume:创建或恢复多卷归档文件。
        • -M:与 --multi-volume 一起使用,处理多卷归档文件。
        • --use-compress-program=<prog>:使用指定的压缩程序。
      • 其他实用选项
        • --transform=<expression>:重命名归档中的文件。
        • --strip-components=<number>:解压时剥离指定数量的路径组件。
        • --ignore-failed-read:忽略读取错误并继续操作。
        • --occurrence=<number>:在归档中选择第 number 个出现的文件。
        • -S:处理稀疏文件(仅归档实际使用的块)。
        • --no-recursion:不递归进入目录。
        • -h 或 --dereference:归档符号链接指向的文件而非链接本身。
      • 帮助和版本信息
        • --help:显示帮助信息。
        • --version:显示 tar 的版本信息。

处理目录常用命令

  • ls(英文全拼:list files): 列出目录及文件名
    • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
    • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
    • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
  • cd(英文全拼:change directory):切换目录
    • cd [相对路径或绝对路径]
  • pwd(英文全拼:print work directory):显示目前的目录
    • -P :显示出确实的路径,而非使用链接 (link) 路径。
  • mkdir(英文全拼:make directory):创建一个新的目录
    • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
    • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
      • mkdir -p test1/test2/test3/test4
  • rmdir(英文全拼:remove directory):删除一个空的目录
    • -p :从该目录起,一次删除多级空目录
  • cp(英文全拼:copy file): 复制文件或目录
    • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
    • -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
    • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
    • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
    • -l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;
    • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
    • -r:递归持续复制,用於目录的复制行为;(常用)
    • -s:复制成为符号链接档 (symbolic link),亦即『捷径』文件;
    • -u:若 destination 比 source 旧才升级 destination !
  • rm(英文全拼:remove): 删除文件或目录
    • rm [-fir] 文件或目录
    • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
    • -i :互动模式,在删除前会询问使用者是否动作
    • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
    • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

文件内容查看

  • cat  由第一行开始显示文件内容
    • cat [-AbEnTv]
    • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
    • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    • -E :将结尾的断行字节 $ 显示出来;
    • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
    • -T :将 [tab] 按键以 ^I 显示出来;
    • -v :列出一些看不出来的特殊字符
  • tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl   显示的时候,顺道输出行号!
    • nl [-bnw] 文件
    • -b :指定行号指定的方式,主要有两种:
      -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
      -b t :如果有空行,空的那一行不要列出行号(默认值);
    • -n :列出行号表示的方法,主要有三种:
      -n ln :行号在荧幕的最左方显示;
      -n rn :行号在自己栏位的最右方显示,且不加 0 ;
      -n rz :行号在自己栏位的最右方显示,且加 0 ;
    • -w :行号栏位的占用的位数。
  • more 一页一页的显示文件内容
    • 运行过程中,以下按键:
      • 空白键 (space):代表向下翻一页;
      • Enter         :代表向下翻『一行』;
      • /字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
      • :f            :立刻显示出档名以及目前显示的行数;
      • q             :代表立刻离开 more ,不再显示该文件内容。
      • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
    • 按键:
      • 空白键    :向下翻动一页;
      • [pagedown]:向下翻动一页;
      • [pageup]  :向上翻动一页;
      • /字串     :向下搜寻『字串』的功能;
      • ?字串     :向上搜寻『字串』的功能;
      • n         :重复前一个搜寻 (与 / 或 ? 有关!)
      • N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
      • q         :离开 less 这个程序;
  • head 只看头几行
    • -n :后面接数字,代表显示几行的意思
  • tail 只看尾巴几行
    • -n :后面接数字,代表显示几行的意思
    • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

三、 用户与用户组管理

useradd 选项 用户名

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

userdel 选项 用户名

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

usermod 选项 用户名

  • 常用选项与useradd类似
  • -l 新用户名
    • 这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

passwd 选项 用户名

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

groupadd 选项 用户名

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

groupdel 选项 用户名

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字

groupmod 选项 用户名

newgrp 切换到其他用户组

三、 磁盘管理

  • df(英文全称:disk free):列出文件系统的整体磁盘使用量
    • df [-ahikHTm] [目录或文件名]
      • -h:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。
      • -T:显示文件系统的类型。
      • -t <文件系统类型>:只显示指定类型的文件系统。
      • -i:显示 inode 使用情况。
      • -H:该参数是 -h 的变体,但是使用 1000 字节作为基本单位而不是 1024 字节。这意味着它会以 SI(国际单位制)单位(例如 MB、GB)而不是二进制单位(例如 MiB、GiB)来显示磁盘使用情况。
      • -k:这个选项会以 KB 作为单位显示磁盘空间使用情况。
      • -a:该参数将显示所有的文件系统,包括虚拟文件系统,例如 procsysfs 等。如果没有使用该选项,默认情况下,df 命令不会显示虚拟文件系统。
  • du(英文全称:disk used):检查磁盘空间使用量
    • du [-ahskm] 文件或目录名称
      • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
      • -h :以人们较易读的容量格式 (G/M) 显示;
      • -s :仅显示指定目录或文件的总大小,而不显示其子目录的大小。
      • -S :包括子目录下的总计,与 -s 有点差别。
      • -k :以 KBytes 列出容量显示;
      • -m :以 MBytes 列出容量显示;
  • fdisk:用于磁盘分区
    • fdisk [-l] 装置名称
      • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
  • mkfs:磁盘格式化
    • mkfs [-t 文件系统格式] 装置文件名
      • -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
  • 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 全部检查修复。
  • mount/umount:磁盘挂载与卸除
    • mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
    • umount [-fn] 装置文件名或挂载点
      • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
      • -n :不升级 /etc/mtab 情况下卸除。

四、vi/vim

三个模式

  • 命令模式(Command Mode)
  • 输入模式(Insert Mode)
  • 命令行模式(Command-Line Mode)

命令模式

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

  • i — 切换到输入模式,在光标当前位置开始输入文本。
  • x — 删除当前光标所在处的字符。
  • : — 切换到底线命令模式,以在最底一行输入命令。
  • a — 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O — 在当前行的上方插入一个新行,并进入插入模式。
  • dd — 剪切当前行。
  • yy — 复制当前行。
  • p(小写) — 粘贴剪贴板内容到光标下方。
  • P(大写)– 粘贴剪贴板内容到光标上方。
  • u — 撤销上一次操作。
  • Ctrl + r — 重做上一次撤销的操作。
  • :w — 保存文件。
  • :q — 退出 Vim 编辑器。
  • :q! — 强制退出Vim 编辑器,不保存修改。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。

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

输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

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

底线命令模式

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

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

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

  • :w 保存文件。
  • :q 退出 Vim 编辑器。
  • :wq 保存文件并退出 Vim 编辑器。
  • :q! 强制退出Vim编辑器,不保存修改。

按 ESC 键可随时退出底线命令模式。

五、Linux终端快捷键

  • 命令行快捷键:
    • 常用:
      • Ctrl L :清屏
      • Ctrl M :等效于回车
      • Ctrl C : 中断正在当前正在执行的程序
    • 历史命令:
      • Ctrl P : 上一条命令,可以一直按表示一直往前翻
      • Ctrl N : 下一条命令
      • Ctrl R,再按历史命令中出现过的字符串:按字符串寻找历史命令(重度推荐)
    • 命令行编辑:
      • Tab : 自动补齐(重度推荐)
      • Ctrl A : 移动光标到命令行首
      • Ctrl E : 移动光标到命令行尾
      • Ctrl B : 光标后退
      • Ctrl F : 光标前进
      • Alt F : 光标前进一个单词
      • Alt B : 光标后退一格单词
      • Ctrl ] : 从当前光标往后搜索字符串,用于快速移动到该字符串
      • Ctrl Alt ] : 从当前光标往前搜索字符串,用于快速移动到该字符串
      • Ctrl H : 删除光标的前一个字符
      • Ctrl D : 删除当前光标所在字符
      • Ctrl K :删除光标之后所有字符
      • Ctrl U : 删除光标之前所有字符
      • Ctrl W : 删除光标前的单词(Word, 不包含空格的字符串)
      • Ctrl \ : 删除光标前的所有空白字符
      • Ctrl Y : 粘贴Ctrl WCtrl K删除的内容
      • Alt . : 粘贴上一条命令的最后一个参数(很有用)
      • Alt [0-9] Alt . 粘贴上一条命令的第[0-9]个参数
      • Alt [0-9] Alt . Alt. 粘贴上上一条命令的第[0-9]个参数
      • Ctrl X Ctrl E : 调出系统默认编辑器编辑当前输入的命令,退出编辑器时,命令执行
    • 其他:
      • Ctrl Z : 把当前进程放到后台(之后可用”fg”命令回到前台)
      • Shift Insert : 粘贴(相当于Windows的Ctrl V
        • Ctrl + Shift + c:复制
        • Ctrl + Shift + v:粘贴
        • 在命令行窗口选中即复制
        • 在命令行窗口中右键即粘贴,可用Shift Insert代替
      • Ctrl PageUp : 屏幕输出向上翻页
      • Ctrl PageDown : 屏幕输出向下翻页
      • Ctrl + Alt + F1 ~ F6:切换终端界面。
      • Ctrl + Alt + F7 :切换回图形界面。
      • F11:全屏界面切换

六、 apt命令

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

  • *yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

常用命令

  • 列出所有可更新的软件清单命令:sudo apt update
  • 升级软件包:sudo apt upgrade列出可更新的软件包及版本信息:apt list –upgradable升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
  • 安装指定的软件命令:sudo apt install <package_name>安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
  • 更新指定的软件命令:sudo apt update <package_name>
  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
  • 删除软件包命令:sudo apt remove <package_name>
  • 清理不再使用的依赖和库文件: sudo apt autoremove
  • 移除软件包及配置文件: sudo apt purge <package_name>
  • 查找软件包命令: sudo apt search <keyword>
  • 列出所有已安装的包:apt list –installed
  • 列出所有已安装的包的版本信息:apt list –all-versions

七、信息查询

进程查询

  • top
    • top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
      • -d <秒数>:指定 top 命令的刷新时间间隔,单位为秒。
      • -n <次数>:指定 top 命令运行的次数后自动退出。
      • -p <进程ID>:仅显示指定进程ID的信息。
      • -u <用户名>:仅显示指定用户名的进程信息。
      • -H:在进程信息中显示线程详细信息。
      • -i:不显示闲置(idle)或无用的进程。
      • -b:以批处理(batch)模式运行,直接将结果输出到文件。
      • -c:显示完整的命令行而不截断。
      • -S:累计显示进程的 CPU 使用时间。
    • 显示信息
      • 总体系统信息:
        • uptime:系统的运行时间和平均负载。
        • tasks:当前运行的进程和线程数目。
        • CPU:总体 CPU 使用率和各个核心的使用情况。
        • 内存(Memory):总体内存使用情况、可用内存和缓存。
      • 进程信息:
        • PID:进程的标识符。
        • USER:运行进程的用户名。
        • PR(优先级):进程的优先级。
        • NI(Nice值):进程的优先级调整值。
        • VIRT(虚拟内存):进程使用的虚拟内存大小。
        • RES(常驻内存):进程实际使用的物理内存大小。
        • SHR(共享内存):进程共享的内存大小。
        • %CPU:进程占用 CPU 的使用率。
        • %MEM:进程占用内存的使用率。
        • TIME+:进程的累计 CPU 时间。
      • 功能和交互操作:
        • 按键命令:在 top 运行时可以使用一些按键命令进行操作,如按下 “k” 可以终止一个进程,按下 “h” 可以显示帮助信息等。
        • 排序:可以按照 CPU 使用率、内存使用率、进程 ID 等对进程进行排序。
        • 刷新频率:可以设置 top 的刷新频率,以便动态查看系统信息。
  • free:显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
    • free [-bkmotV][-s <间隔秒数>]
      • -b  以Byte为单位显示内存使用情况。
      • -k  以KB为单位显示内存使用情况。
      • -m  以MB为单位显示内存使用情况。
      • -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
      • -o  不显示缓冲区调节列。
      • -s<间隔秒数>  持续观察内存使用状况。
      • -t  显示内存总和列。
      • -V  显示版本信息。
  • w:显示目前登入系统的用户信息
    • w [-fhlsuV][用户名称]
      • -f  开启或关闭显示用户从何处登入系统。
      • -h  不显示各栏位的标题信息列。
      • -l  使用详细格式列表,此为预设值。
      • -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
      • -u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。
      • -V  显示版本信息。
    • su [-fmp] [-c command] [-s shell] [–help] [–version] [-] [USER [ARG]]:用以切换用户
      • -f 或 –fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
      • -m -p 或 –preserve-environment 执行 su 时不改变环境变数
      • -c command 或 –command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
      • -s shell 或 –shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
      • –help 显示说明文件
      • –version 显示版本资讯
      • – -l 或 –login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
      • USER 欲变更的使用者帐号
      • ARG 传入新的 shell 参数

网络、ip查询与网络接口配置

  • ifconfig:
    • ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
    • add<地址> 设置网络设备IPv6的IP地址。
    • del<地址> 删除网络设备IPv6的IP地址。
    • down 关闭指定的网络设备。
    • <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
    • io_addr<I/O地址> 设置网络设备的I/O地址。
    • irq<IRQ地址> 设置网络设备的IRQ。
    • media<网络媒介类型> 设置网络设备的媒介类型。
    • mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
    • metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
    • mtu<字节> 设置网络设备的MTU。
    • netmask<子网掩码> 设置网络设备的子网掩码。
    • tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
    • up 启动指定的网络设备。
    • -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
    • -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
    • -promisc 关闭或启动指定网络设备的promiscuous模式。
    • [IP地址] 指定网络设备的IP地址。
    • [网络设备] 指定网络设备的名称。

八、 其他常用命令

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇