系统相关

uname

  1. uname -a // 查看系统的全量信息
  2. uname -m // 查看系统架构
  3. uname -s // 查看系统名称
  4. uname -r // 查看系统的内核版本
  5. uname -v // 查看系统的内核的发布时间
  6. uname -v // 查看系统的平台
  7. uname -n // 查看系统的网络节点名称
  8. ldd --version // 查看系统的ABI版本

文件/文件夹修改

目录

目录跳转:cd

  1. cd ~
  2. cd
  3. cd /
  4. cd -

创建目录:mkdir

  1. mkdir dir1
  2. mkdir dir1 dir2
  3. mkdir -p parent/child //递归创建目录
  4. mkdir -pv parent/child //递归创建目录,并显示创建过程
  5. mkdir -m 755 dir1 // 创建目录,并设置权限

参数作用简述:

  • -p 递归创建目录
  • -v 显示目录的创建过程
  • -m 指定创建的目录的权限,默认为 755

    文件

    ls

    ls是我们使用linux中最最常用的命令,也是一个比较简单的命令。但有效的使用ls命令可以使得我们在命令行中的效率得到很大的提升。下面是我们在平时可能会用到的命令组合:

    1. ls // 列出当前目录中的文件(不包含隐藏文件)
    2. ls -alh // 以可读形式,列出当前目录中的所有文件(包含隐藏文件和当前目录表示 . 和上一级目录表示 ..)
    3. ls --sort=size // 按文件大小进行排序
    4. ls -S //按文件大小进行排序
    5. ls --size // 显示文件大小
    6. ls -d */ // 只显示当前目录下的目录
    7. ls -p | grep -v / //只显示当前目录下的文件
    8. ls -lt //按时间从现在往之前排序
    9. ls -ltr //按时间从古至今排序

    创建文件:touch

    命令 touch 除了可以创建文件之外,还可以修改文件的时间戳。

    1. touch file //创建空文件 file
    2. touch file1 file2 // 创建空文件 file1 file2
    3. touch file{01...05} //创建空文件 file01~file05,即批量创建
    4. touch -a file1 //修改文件 file1 的最后访问时间为当下
    5. touch -m file1 //修改文件 file2 的最后修改时间为当下
    6. touch -d 20201002 file1 //修改文件 file1 的最后修改时间的 20201002
    7. touch -r a.txt file1 //修改 file1 的时间戳属性和 a.txt 一致
    8. touch -t 20201002122334.00 file1 //修改 file1的时间为 20201002122334秒,格式为ISO格式

    删除文件或目录

    简单删除文件:

    1. rm file_name //删除文件
    2. rm dir_name -r //删除目录和文件
    3. rmdir dir_name //删除空目录

    组合的删除文件

    1. ls | grep 8000*.txt > list.txt // 把要删除的文件保存在list.txt文件中
    2. cat list.txt | xargs rm // 删除list.txt文件中的文件

    压缩/解压文件

    tar

    指定目录解压

    1. tar -xzf example.tar.gz -C example// 请确保example文件夹存在

    zip

    zip是一个可以和window系统一起使用的压缩格式。
    其常用的命令如下:

    1. zip -q -r dist.zip ./dist // 把当前目录下的dist目录及其内容压缩为 dist.zip
    2. zip -dv dist.zip index.html // 从压缩文件 dist.zip 中删除文件index.html

    格式化/分区

    格式化U盘为NTFS格式

    安装ntfs-3g:

    1. paru -S ntfs-3g

    格式化

    1. mkfs.ntfs -Q -L diskLabel /dev/sdXX

    命令中各参数的含义:

  • -Q 不向驱动器填充0且不检查坏扇区,以加快格式化速度

  • -L diskLabel 指定U盘名为 diskLabel
  • /dev/sdXX 指定格式化的分区

    权限

    用户和组

    用户

    查看所有用户

    1. cat /etc/passwd

    删除用户

    1. userdel user_name

    1. sudo gpasswd -a $USER docker // 把当前用户添加到docker用户组
    2. sudo gpasswd -d $USER docker // 把当前用户从docker用户组中移除

    权限介绍

    Linux的文件权限有以下设定:

  • Linux下的文件权限类型一般包括:读,写,执行。对应的字母为 r , wx

  • Linux下权限的属组有 拥有者 , 群组其它组 三种。每个文件都可以针对这三个属组,设置不同的权限(rwx)。
  • 通常情况下,一个文件只能归属于一个用户和组,如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

一个文件的所有权限详情,有两种方式:

  • 第一种是十位二进制表示法,例如: -rw-rw-rw- ,可简化为三个八进制数字形式,如 666
  • 第二种是十二位二进制表示法(暂时不表)

    十位二进制表示法

    在形如 -rw-rw-rw- 的格式中,在linux中是这样解释的

  • 第一位表示当前文件的类型:

      • 文件
    • d 文件夹
    • l 软链接
  • 再三位表示当前文件的拥有者的权限
  • 再三位表示当前文件的拥有者所有的群组的权限
  • 再三位表示其它群组的权限

示例: -rwxrw----
该示例的含义为:

  • 当前文件的文件类型为 文件
  • 当前拥有者有 rwx权限,即 读,写,执行
  • 当前拥有者所在的群组只有 rw 权限,即 读,写 ,没有执行权限
  • 其它群组的没有任何权限

修改拥有者

  1. chown user dir
  2. chown user:group dir
  3. chown user file
  4. chown user:group file
  5. chown -R user dir
  6. chown -R user:group dir

关机:

  1. half 立刻关机
  2. poweroff 立刻关机
  3. shutdown -h now 立刻关机(root)
  4. shutdown -h 10 10分钟后,关机
  5. shutdown -c 取消关机

查看端口占用

  1. lsof -i:端口

在一些系统中,可能会出现 command not found: lsof的错误。我们就需要安装lsof模块了。

  1. yay -S lsof

也可以使用netstat命令:

  1. netstat -tunlp | grep 端口号
  • -t (tcp) 仅显示tcp相关选项
  • -u (udp) 仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转为数字
  • -l 仅列出在Listen的服务状态
  • -p 显示建立相关链接的程序名

    zsh使用

    别名

    1. alias la = 'ls -alh'

    查看别名

    1. alias

    防火墙设置

    查看

    可以使用 firewall-cmd --list-all命令来查看当前防火墙的所有请罪。

    端口设置

    1. firewall-cmd --zone=public --add-port=80/tcp --permanent #开放80端口
    2. firewall-cmd --zone=public --remove-port=80/tcp --permanent #关闭80端口
    3. firewall-cmd --zone=public --list-ports #查看所有开放端口

    重新加载

    1. firewall-cmd --reload

    空间

    查看磁盘空间 df

    df命令用于查看磁盘空间,通常可以配合-h来使用

    1. df -h//以可读性展示磁盘占用

    查看目录大小

    当我们想要查看当前目录占用的磁盘大小的时候,du命令会帮我们实现。

    1. du -h --max-depth=0 //查看当前目录占用大小
    2. du -h --max-depth=1 //查看当前目录以及目录下的一级目录占用的空间大小
    3. du -hs * | sort -hr //查看当前子目录的大小,并按大小从大到小排序
    4. du -sh * .[^.]* | sort -hr // 查看当前子目录的大小,并按大小排序(包含隐藏文件)
    5. du -hs * | sort -hr | head // 查看当前子目录中文件最大的前10个
    6. du -hs * | sort -hr | tail // 查看当前子目录中文件最小的10个

    sed

    sed是一个流编辑器,用于过滤和转换输出的文本。这意味着我们不需要对原文进化论修改,只需要对输出进行修改。如果需要,我们可以把修改后的内容保存到一个新的文件中。sed提供了很多有用的选项用于过滤和编辑数据。
    sed的语法格式如下:

    1. sed [OPTION] 'PATTERN' filename

    格式中的OPTION,即常用选项一般有:

  • -n取消默认输出

  • p 打印指定的数据
  • d删除指定行
  • q退出sed脚本

格式中的 PATTERN指的是正则表达式。

示例和解释:

  • sed -n '3,7 p' data 只输出 data文件中的3~7行。其中,-n表示取消默认输出,p表示打印指定数据
  • sed -n '/linux/ p' data只输出含有字符串linux的行。
  • sed -n '/linux/I p' data 输出含有字符串linux的行(不区分大小写)
  • sed -n 's/linux/linus p' datalinux替换为linus并输出
  • sed -n 's/\t/\n/gp' 1234.txt把1234.txt中的\t替换为回行符

    sort

    sort是命令是最有用的工具之一。它会对文件的数据进行排序。可以根据字符或数字进行升序或降序排列。它也可以用来对文件中的行进行排序和随机化。
    使用sort很简单。其格式为:

    1. sort [OPTION] filename

    默认的是按照字母顺序对数据进行排序。需要注意的是sort命令仅仅是对数据进行排序展示。它并不会修改文件。
    使用sort命令的些常用选项有:

  • -r对文件中的行按倒序进行排序

  • -R将文件中的行打乱为随机顺序
  • -o将输出保存到另一个文件中
  • -k按照特定列进行排序
  • -t使用指定的分隔符,而不使用空格
  • -n根据数值对数据进行排序

    示例

  • sort data对data文件中的数据根据字符排序

  • sort -R data把data文件打乱为随机顺序
  • sort -n -k2 -t ',' -o sorted.txt data 按数值对 data 文件的第二列进行排序(列的分隔符为,)并输出到文件sorted.txt中。

    scp

    scp命令可以通过命令行的方式,在两个linux系统之间传递文件。使用如下:
    1. scp ~/example.txt example@192.168.1.101:~ # 把家目录下的example.txt文件上传到192.168.1.101的家目录中
    2. scp example@192.168.1.101:/example.txt ~ #把192.168.1.101家目录中的example.txt文件下载到本机的家目录中

    查看JSON文件

    在Linux的命令行中有效的要有效的查看JSON文件,可以使用jq这个开源工具。这里来介绍一下,jq的安装和使用。

    安装

    本例中的安装基于archlinux的paru安装器。
    1. paru -S --needed jq

    使用

    jq最简单的使用就是把可读性不强的JSON以可读性显示出来。
    1. cat example.json | jq '.'
    使用jq读取部分字段:
    1. cat example.json | jq '.name'