linux命令2

set命令

显示、设置或取消设置shell属性和位置参数的值。

  • 显示shell变量的名称和值:
    set

  • 标记为导出而修改或创建的变量:
    set -a

  • 立即通知工作终止:
    set -b

  • 设置各种选项,如启用“vi”样式行编辑:
    set -o vi

iptables

允许配置由Linux内核防火墙提供的表、链和规则的程序。

  • 查看所有表的链、规则和包/字节计数器:
    sudo iptables -vnL

  • 设置链策略规则:
    sudo iptables -P chain rule

  • 为IP的链策略添加规则:
    sudo iptables -A chain -s ip -j rule

  • 在考虑协议和端口的IP链策略中附加规则:
    sudo iptables -A chain -s ip -p protocol --dport port -j rule

  • 删除链式法则:
    sudo iptables -D chain rule_line_number

  • 将给定表的iptables配置保存到文件中:
    sudo iptables-save -t tablename > path/to/iptables_file

  • 从文件中恢复iptables配置:
    sudo iptables-restore < path/to/iptables_file

sysctl
访问内核状态信息.

  • 显示所有可用的变量及其值:
    sysctl -a

  • 显示Apple模型标识符:
    sysctl -n hw.model

  • 显示CPU模型;
    sysctl -n machdep.cpu.brand_string

  • 显示可用的CPU特性(MMX、SSE、SSE2、SSE3、AES等):
    sysctl -n machdep.cpu.feature

  • 设置一个可变的内核状态变量:
    sysctl -w section.tunable=value

swapoff

禁用设备或文件的交换.

  • 禁用给定的交换分区:
    swapoff /dev/sdb7

  • 禁用给定的交换文件:
    swapoff path/to/file

  • 禁用所有交换区域:
    swapoff -a

  • 通过设备或文件的标签禁用交换:
    swapoff -L swap1

unset

删除shell变量或函数

  • -删除变量foo和bar:
    unset foo bar

  • 删除函数my_func:
    unset -f my_func

where

类似命令 which whereis whatis
报告一个命令的所有已知实例。
它可以是PATH环境变量中的可执行文件、别名或shell内建文件。

  • 查找命令的所有实例:
    where command

nvm

node . js版本管理。
在NodeJS版本之间切换:系统,节点,0.10,0.12,4.2等等.

  • 安装指定版本的NodeJS:
    nvm install node_version

  • 在当前shell中使用指定版本的NodeJS:
    nvm use node_version

  • 设置默认的NodeJS版本:
    nvm alias default node_version

  • 列出所有可用的NodeJS版本并打印默认版本:
    nvm list

  • 运行特定版本的NodeJS REPL:
    nvm run node_version --version

  • 在特定版本的NodeJS中运行app:
    nvm exec node_version node app.js

nrm

NPM注册中心管理。
有助于在不同的npm注册中心之间轻松切换。

  • 列出所有注册:
    nrm ls
npm -------- https://registry.npmjs.org/
  yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
* taobao ----- https://registry.npm.taobao.org/ (*号表示当前npm使用的地址)
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/
  • 更改为特定的注册表:
    nrm use registry
    nrm use taobao 和 nrm use npm 来互相切换

  • 显示所有注册表的响应时间:
    nrm test

  • 添加自定义注册中心:
    nrm add registry url

  • 删除一个注册表:
    nrm del registry

webpack

将web项目的js文件和其他资产打包到一个输出文件中。

  • 从入口点文件创建单个输出文件:
    webpack app.js bundle.js

  • 从js文件中加载css文件(这将css加载器用于.css文件):
    webpack app.js bundle.js --module-bind 'css=css'

  • 传递一个配置文件。输入脚本和输出文件名),显示编译进度:
    webpack --config webpack.config.js --progress

  • 对项目文件的更改自动重新编译:
    webpack --watch app.js bundle.js
    http

HTTP客户端,一个用户友好的cUrll替代品。

  • 将URL下载到文件:
    http -d example.org

  • 发送表单编码的数据:
    http -f example.org name='bob' profile_picture@'bob.png'

  • 发送JSON对象:
    http example.org name='bob'

  • 指定HTTP方法:
    http HEAD example.org

  • 包含额外的标题:
    http example.org X-MyHeader:123

  • 为服务器身份验证传递用户名和密码:
    http -a username:password example.org

  • 通过stdin指定原始请求体:
    cat data.txt | http PUT example.org

curl
从服务器或向服务器传输数据。
支持大多数协议,包括HTTP、FTP和POP3.

  • 将URL的内容下载到文件中:
    curl http://example.com -o filename

  • 下载一个文件,将输出保存在URL指示的文件名下:
    curl -O http://example.com/filename

  • 下载一个文件,遵循定位重定向,并自动继续(恢复)以前的文件传输:
    curl -O -L -C - http://example.com/filename

  • 发送表单编码的数据(类型为“application/x-www-form-urlencoded”的POST请求):
    curl -d 'name=bob' http://example.com/form

  • 使用自定义HTTP方法发送带有额外标头的请求:
    curl -H 'X-My-Header: 123' -X PUT http://example.com

  • 以JSON格式发送数据,指定适当的内容类型头:
    curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234

  • 为服务器身份验证传递用户名和密码:
    curl -u myusername:mypassword http://example.com

  • 通过客户端证书和资源密钥,跳过证书验证:
    curl --cert client.pem --key key.pem --insecure https://example.com

wget

从网上下载文件。
支持HTTP、HTTPS和FTP.

  • 将URL的内容下载到一个文件中(在本例中名为“foo”):
    wget https://example.com/foo

  • 将URL的内容下载到文件中(在本例中名为“bar”):
    wget -O bar https://example.com/foo

  • 下载单个web页面及其所有资源(脚本、样式表、图像等):
    wget --page-requisites --convert-links https://example.com/somepage.html

  • 下载一个完整的网站,每个请求之间间隔3秒:
    wget --mirror --page-requisites --convert-links --wait=3 https://example.com

  • 下载目录及其子目录中列出的所有文件(不下载嵌入的页面元素):
    wget --mirror --no-parent https://example.com/somepath/

  • 通过认证的FTP下载URL的内容:
    wget --ftp-user=username --ftp-password=password ftp://example.com

  • 继续未完成的下载:
    wget -c https://example.com

  • 启用静音模式来抑制输出:
    wget -q https://example.com

babel npm 全局安装 babel-cli

一个将代码从JavaScript ES6/ES7语法转换为ES5语法的编译器

  • 将指定的输入文件和输出转换为标准输出:
    babel path/to/file

  • 将指定的输入文件和输出转换为特定的文件:
    babel path/to/input_file --out-file path/to/output_file

  • 每次更改输入文件时,都要转换它:
    babel path/to/input_file --watch

  • 转换整个文件目录:
    babel path/to/input_directory

  • 忽略目录中指定的逗号分隔的文件:
    babel path/to/input_directory --ignore ignored_files

  • 转换和输出为缩小的JavaScript:
    babel path/to/input_file --minified

  • 为输出格式选择一组预置:
    babel path/to/input_file --presets presets

  • 输出所有可用选项:
    babel --help

diff命令
比较文件和目录.

  • 比较文件:
    diff file1 file2

  • 比较文件,忽略空白:
    diff -w file1 file2

  • 比较文件,并排显示差异:
    diff -y file1 file2

  • 比较文件,以统一格式显示差异(如“git diff”所使用的格式):
    diff -u file1 file2

  • 递归地比较目录:
    diff -r directory1 directory2

  • 比较目录,只显示不同文件的名称:
    diff -rq directory1 directory2

patch 命令

用差异文件修补一个或多个文件。
注意,diff文件包含目标文件名和更改列表。

  • 应用一个补丁:
    patch < patch_file.diff

  • 对当前目录应用补丁:
    patch -p1 < patch_file.diff

  • 应用补丁的反面:
    patch -R < patch_file.diff

  • 对指定文件应用补丁:
    patch -p1 file patch_file.diff

fdupes

在给定的目录集中查找重复的文件。

  • 搜索单个目录:
    fdupes directory

  • 搜索多个目录:
    fdupes directory1 directory2

  • 递归搜索所有目录:
    fdupes -r directory

  • 搜索多个目录,递归地搜索一个:
    fdupes directory1 -R directory2

xargs命令
使用来自另一个命令、文件等的管道参数执行命令。
输入被视为一个单独的文本块,并被分割成空格、制表符、换行符和文件结束符上的单独参数。

  • 主要使用模式:
    arguments_source | xargs command

  • Delete all files with a .backup extension. -print0 on find uses a null character to split the files, and -0 changes the delimiter to the null character (useful if there's whitespace in filenames):
    find . -name '*.backup' -print0 | xargs -0 rm -v

  • 对每个输入行执行一次命令,用输入行替换任何占位符(这里标记为“_”):
    arguments_source | xargs -I _ command _ optional_extra_arguments

  • 假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:
    cat url-list.txt | xargs wget -c

NPM注册管理人
有助于在不同的npm注册中心之间轻松切换。

  • 列出所有注册:
    nrm ls

  • 更改为特定的注册表:
    nrm use registry

  • 显示所有注册表的响应时间:
    nrm test

  • 添加自定义注册中心:
    nrm add registry url

  • 删除注册表:
    nrm del registry

npx

npx使用介绍

从“npm”包执行二进制文件。

  • 从给定的npm模块执行二进制代码:
    npx module_name

  • 如果一个包有多个二进制文件,请指定包名和二进制文件:
    npx -p package_name module_name

  • 查看帮助内容:
    npx --help

locate命令
快速找到文件名。

  • 在数据库中查找模式。注:数据库定期重新计算(通常每周或每天):
    locate pattern

  • 根据文件名查找文件(不包含通配符的模式被解释为“pattern”):
    locate */filename

  • 再计算数据库。如果你想找到最近添加的文件,你需要这样做:
    sudo /usr/libexec/locate.updatedb

ripgrep 使用命令rg

一个快速的命令行搜索工具.

  • 递归地在当前目录中搜索regex模式:
    rg pattern

  • 搜索包括所有。gitignored和隐藏文件的模式:
    rg -uu pattern

  • 仅在特定文件类型(如html、css等)中搜索模式:
    rg -t filetype pattern

  • 仅在目录的子集中搜索模式:
    rg pattern set_of_subdirs

  • 在匹配glob的文件中搜索模式(例如,' README.* '):
    rg pattern -g glob

  • 只列出匹配的文件——当管道连接到其他命令时非常有用:
    rg --files-with-matches pattern

fdfind命令更快

一个简单,快速和用户友好的选择找到。

  • 查找当前目录下与模式匹配的文件:
    fd pattern

  • 查找以foo开头的文件:
    fd '^foo'

  • 查找具有特定扩展名的文件:
    fd --extension .ext pattern

  • 查找特定目录下的文件:
    fd pattern path/to/dir

  • 包括忽略和隐藏的文件在搜索:
    fd --hidden --no-ignore pattern

paste命令

合并文件行.

  • 将所有的行连接成一行,使用TAB作为分隔符:
    paste -s file

  • 使用指定的分隔符将所有行连接成一行:
    paste -s -d delimiter file

  • 并排合并两个文件,每个文件在其列中,使用TAB作为分隔符:
    paste file1 file2

  • 使用指定的分隔符并排合并列中的两个文件:
    paste -d delimiter file1 file2

  • 合并两个文件,交替添加行:
    paste -d '\n' file1 file2

tee
从标准输入读取,然后写入标准输出和文件(或命令)。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

  • 将标准输入复制到每个文件,也复制到标准输出:
    echo "example" | tee FILE

  • 附加到给定的文件,不要覆盖:
    echo "example" | tee -a FILE

  • 将标准输入打印到终端,并将其输入到另一个程序中进行进一步处理:
    echo "example" | tee /dev/tty | xargs printf "[%s]"

  • 创建一个名为“example”的文件夹,计算“example”中的字符数,并将“example”写入终端:
    echo "example" | tee >(xargs mkdir) >(wc -c)

tree命令
以树的形式显示当前目录的内容。

  • 显示文件和目录到深度的“num”级别(其中1表示当前目录):
    tree -L num

  • 只显示目录:
    tree -d

  • 也显示隐藏文件:
    tree -a

  • 打印没有缩进的树,显示完整的路径(使用' -N '来避免转义空格和特殊字符):
    tree -i -f

  • 以人类可读的格式打印它旁边每个节点的大小,并在文件夹中显示它们的累积大小(如' du '命令所示):
    tree -s -h --du

  • 使用通配符(glob)模式在树层次结构中查找文件,并删除不包含匹配文件的目录:
    tree -P '*.txt' --prune

  • 在树层次结构中查找目录,删除非所需目录的祖先目录:
    tree -P directory_name --matchdirs --prune

ss命令

用于研究套接字的实用程序。

  • 显示所有TCP/UDP/RAW/UNIX套接字:
    ss -a -t|-u|-w|-x

  • 过滤TCP套接字的状态,只/排除:
    ss state/exclude bucket/big/connected/synchronized/...

  • 显示所有连接到本地HTTPS端口的TCP套接字(443):
    ss -t src :443

  • 显示所有TCP套接字以及连接到远程ssh端口的进程:
    ss -pt dst :ssh

  • 显示所有UDP套接字连接在特定的源和目标端口:
    ss -u 'sport == :source_port and dport == :destination_port'

  • 显示在子网192.168.0.0/16上本地连接的所有TCP IPv4套接字:
    ss -4t src 192.168/16

swapon

启用设备或文件交换.

  • 获得交换信息:
    swapon -s

  • 启用给定的交换分区:
    swapon /dev/sdb7

  • 启用给定的交换文件:
    swapon path/to/file

  • 启用所有交换区域:
    swapon -a

  • 通过设备或文件的标签启用交换:
    swapon -L swap1

mkswap命令 用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。

在设备或文件中设置Linux交换区域.

  • 将给定的分区设置为交换区:
    sudo mkswap /dev/sdb7

  • 使用给定的文件作为交换区域:
    sudo mkswap path/to/file

  • 在创建交换区域之前,检查分区是否有坏的块:
    sudo mkswap -c /dev/sdb7

  • 为文件指定一个标签(允许swapon使用标签):
    `sudo mkswap -L swap1 path/to/file

dd 命令

if=文件名:输入文件名
of=文件名:输出文件名
bs=字节大小
count=个数

转换和复制文件.

  • 从一个isohybrid文件(比如archlinux-xxx.iso)中创建一个可引导的usb驱动器,并显示进程:
    dd if=file.iso of=/dev/usb_drive status=progress

  • 克隆一个驱动器到另一个驱动器与4MB块,忽略错误,并显示进展:
    dd if=/dev/source_drive of=/dev/dest_drive bs=4M conv=noerror status=progress

  • 使用内核随机驱动程序生成一个100个随机字节的文件:
    dd if=/dev/urandom of=random_file bs=100 count=1

  • 测试磁盘的写性能::
    dd if=/dev/zero of=/swapfile bs=1M count=1024

  • 检查正在进行的dd操作的进度(从另一个shell运行此命令):
    kill -USR1 $(pgrep ^dd)

groupdel
从系统中删除现有的用户组.

  • 删除现有组:
    groupdel group_name

userdel
删除一个用户。

  • 删除用户及其主目录:
    userdel -r name

lsmod
显示linux内核模块的状态。
请参见modprobe,它加载内核模块。

  • 列出所有当前加载的内核模块:
    lsmod

seq 命令

输出一串数字到标准输出。

  • 从1到10的序列:
    seq 10

  • 每3个数字从5到20:
    seq 5 3 20

  • 用空格而不是换行分隔输出:
    seq -s " " 5 3 20

file命令
确定文件类型.
***如果是纯字符文本则是 ASCII Text 含有中文的话则就是 unicode Text

  • 描述指定文件的类型。适用于没有文件扩展名的文件:
    file filename

  • 查看压缩文件的内部,并确定其中的文件类型:
    file -z foo.zip

-允许文件处理特殊文件或设备文件:
file -s filename

  • 不要在第一个文件类型匹配时停止;一直读到文件末尾:
    file -k filename

  • 确定文件的mime编码类型:
    file -I filename

whereis命令

  • 定位命令的二进制、源代码和手动页文件。

whatis命令

显示手册页中的一行描述。.

  • 显示来自手册页的描述:
    whatis command

  • 不要在一行的末尾删去描述:
    whatis --long command

  • 显示与一个glob匹配的所有命令的描述:
    whatis --wildcard net*

  • 使用正则表达式搜索手册页描述:
    whatis --regex 'wish[0-9]\.[0-9]'

查看文件的权限

方式1: stat file
方式2:la -alh (a 显示隐藏文件 l每行列出一个文件 h使用人类可读单元(KB、MB、GB)显示大小的长格式列表)
显示内容
drwx------ 2 root root 4.0K 4月 8 13:28 .ssh

r [r]ead 读 w ([w]rite) 写权限 x (e[x]ecute)可执行权限

用户管理

使用who命令,可以查看目前已登陆的用户。要查看系统上的用户,以 root 执行 passwd -Sa 输出的数据格式可以参考 passwd(1)。

使用useradd命令添加用户:

  • useradd -m -g "初始组" -G "附加组" -s "登陆shell" "用户"
  • -m:创建用户主目录/home/[用户名];在自己的主目录内,即使不是root用户也可以读写文件、安装程序等等。(当登录 当前的用户的时候。目录名就是用户名 只有在自己的主目录才有操作权限)
  • -g:设置用户初始组的名称或数字ID;该组必须是存在的;如果没有设置该选项,useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认(USERGROUPS_ENAB yes) 会用和用户名相同的名字创建群组,GID 等于 UID.
  • -G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。
  • -s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装,默认是 Bash

**警告: **为了登录,登录 shell 必须位于 /etc/shells 中, 否则 PAMpam_shell 模块会阻止登录请求。不要使用 /usr/bin/bash 替代 /bin/bash, 除非这个路径已经在 /etc/shells中正确配置.

  • 有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。将shell设置成 /usr/bin/nologin 就可以禁止用户登录。(nologin(8)).

用户信息存储

本地用户信息储存在`/etc/passwd`文件中。要查看系统上所有用户账户:

cat /etc/passwd

一行代表一个用户,格式如下,每行分七个部分,用英文冒号“:”分开:

account:password:UID:GID:GECOS:directory(用户主目录 保存在环境变量$HOME):shell(环境变量$SHELL中)

此处:

*   `account`:用户名,不能为空,而且要符合标准的*NIX命名规则。
*   `password`:加密的密码,可以使用一个小写的"x"(不带括号)表示密码保存在`/etc/shadow`文件里。
*   `UID``GID`:每个用户和组有一个对应的UID和GID(用户ID和组ID)。Arch里面,第一个非root用户的默认UID是1000,后续创建的用户UID也应大于1000,特定用户的GID应该属于指定的首要组,组的ID数值列在`/etc/group`文件里。
*   `GECOS`:可选的注释字段,通常记录用户全名
*   `directory`:用于登录命令设置`$HOME`环境变量。某些服务的用户主目录设置为"/"是安全的,但不建议普通用户设置为此目录。
*   `shell`:是用户默认登录的shell,通常是[Bash](https://wiki.archlinux.org/index.php/Bash_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "Bash (简体中文)"),还可选择其他的命令解释器,默认是"/bin/bash"(不带括号),如果你用的是别的shell,在这里设置其路径,此部分是可选的,可留空。

示例:
jack:x:1001:100:Jack Smith,some comment here,,:/home/jack:/bin/bash

示例分解说明:用户登录名为jack,密码保存在`/etc/shadow`,UID为1001,首要组的ID是100 (users组),全名Jack Smith并加了一些注释,主目录是`/home/jack`,使用Bash作为默认shell。

ssh-keygen

生成ssh密钥用户以进行身份验证、无密码登录和其他操作.

  • Generate a key interactively:
    ssh-keygen

  • Specify file in which to save the key:
    ssh-keygen -f ~/.ssh/filename

  • 生成一个ed25519密钥,包含100个密钥派生函数轮:
    ssh-keygen -t ed25519 -a 100

  • 生成一个RSA 4096位密钥,并将您的电子邮件作为注释:
    ssh-keygen -t rsa -b 4096 -C "email"

  • 从主机检索密钥指纹(用于在首次通过SSH连接到主机时确认主机的真实性):
    ssh-keygen -l -F remote_host

  • 检索MD5十六进制密钥的指纹:
    ssh-keygen -l -E md5 -f ~/.ssh/filename

  • 更改密钥的密码:
    ssh-keygen -p -f ~/.ssh/filename

service

通过运行init脚本管理服务。
应该省略完整的脚本路径(/etc/init.d 假设)。

  • 启动/停止/重启/重新加载服务(启动/停止应该总是可用的):
    service init_script start|stop|restart|reload

  • 完全重新启动(使用start和stop运行脚本两次):
    service init_script --full-restart

  • 显示服务的当前状态:
    service init_script status

  • 列出所有服务的状态:
    service --status-all

useradd

创建一个新用户.

  • 创建新用户:
    useradd name

  • 创建具有默认主目录的新用户:
    useradd --create-home name

  • 使用指定的shell创建新用户:
    useradd --shell /path/to/shell name

  • 创建属于其他组的新用户(注意没有空格):
    useradd --groups group1,group2 name

  • 创建没有主目录的新系统用户:
    useradd --no-create-home --system name

groupmod

修改系统中现有的用户组.

  • 更改组名称:
    groupmod -n new_group_name old_group_name

-更改组id:
groupmod -g new_group_id old_group_name

gpasswd

管理“/etc/group”和“/etc/gshadow”。

  • 定义组管理员:
    sudo gpasswd -A user1,user2 group

  • 设置组成员列表:
    sudo gpasswd -M user1,user2 group

  • 为指定的组创建密码:
    gpasswd group

  • 将用户添加到指定的组:
    gpasswd -a user group

  • 从已命名组中删除用户:
    gpasswd -d user group

groupadd

向系统添加用户组.

  • 创建一个新的Linux组:
    groupadd group_name

  • 使用特定的groupid创建新组:
    groupadd group_name -g group_id

id

显示当前用户和组标识.

  • 显示当前用户id (UID)、组id (GID)和它们所属的组:
    id

  • 将当前用户标识显示为数字:
    id -u

  • 将当前组标识显示为数字:
    id -g

  • 显示任意用户的id (UID)、组id (GID)和它们所属的组:
    id username

usermod user model

修改用户帐户。

  • 更改用户名:
    usermod -l newname oldname

  • 将用户加入 群组,用逗号分隔:
    usermod -a -G group1,group2 user

  • 为用户创建一个新的主目录并将其文件移动到其中,更改用户主目录:
    查看 当前用户主目录 在环境变量 $HOME 中
    usermod -m -d /path/to/home(新的目录) user

通过find命令查找属于某个用户或某个组的文件
find / -group "用户组"
find / -user "用户"

who
显示登录的用户和相关数据(进程、启动时间).

  • 简洁的方式显示登录用户
    whoami

  • 显示当前登录的所有会话的用户名、行和时间:
    who

  • 仅显示当前终端会话的信息:
    who am i

  • 显示所有可用信息:
    who -a

  • 使用表头显示所有可用信息:
    who -a -H

stat

显示文件和文件系统信息.

  • 显示文件属性,如大小、权限、创建和访问日期等:
    stat file

  • 和上面一样,但是更简洁:
    stat -t file

  • 显示文件信息:
    stat -f file

  • 只显示八进制文件权限:
    stat -c "%a %n" file

  • 显示文件的所有者和组:
    stat -c "%U %G" file

  • 以字节为单位显示文件的大小:
    stat -c "%s %n" file

link

创建到现有文件的硬链接。 (-s 是软链接)
有关更多选项,请参见ln命令.

  • 创建从新文件到现有文件的硬链接:
    link path/to/existing_file path/to/new_file

unlink

从文件系统中删除到文件的链接。
如果链接是文件的最后一个链接,则文件内容将丢失

  • 如果指定的文件是最后一个链接,则删除它:
    unlink path/to/file

netstat

显示与网络相关的信息,如打开的连接、打开的套接字端口等。

  • 输出跟nginx相关的端口信息
    netstat -tnlup | grep nginx

  • 列出所有端口:
    netstat -a

  • 列出所有监听端口:
    netstat -l

  • 列出监听TCP端口:
    netstat -t

  • 显示特定端口的PID和程序名:
    netstat -p {PROTOCOL}

  • 持续输出:
    netstat -c

  • 打印路由表:
    netstat -nr

reboot
重启系统.

  • 立即重新启动:
    reboot

  • 立即重启,而不是优雅地关闭:
    reboot -f

chsh

更改用户的登录shell。

  • 获取当前使用的shell
    echo $SEHLL or export | grep SHELL
  • 改变shell:
    chsh -s 新的shell的路径 username 例如zsh 需要 which zsh /bin/zsh

cut

从STDIN或文件中删除字段.

  • 剪掉每一行的前16个字符:
    cut -c 1-16

  • 删除给定文件每行的前16个字符:
    cut -c 1-16 file

  • 把从第三个字符到每行末尾的所有内容都剪掉:
    cut -c 3-

  • 使用冒号作为字段分隔符(默认分隔符是tab),删除每行中的第5个字段:
    cut -d':' -f5

  • 使用分号作为分隔符,删除每一行的第2和第10个字段:
    cut -d';' -f2,10

  • 使用空格作为分隔符,将字段3切到每一行的末尾:
    cut -d' ' -f3-

sort

对文本文件行进行排序。

  • 按升序排列文件:
    sort filename

  • 按降序排列文件:
    sort -r filename

  • 以不区分大小写的方式对文件排序:
    sort --ignore-case filename

  • 使用数字而不是字母顺序对文件排序:
    sort -n filename

  • 按第三个字段对passwd文件进行数字排序:
    sort -t: -k 3n /etc/passwd

  • 对只保留唯一行的文件进行排序: (有重复的行只保留一个)
    sort -u filename

  • 对人类可读的数字排序(在本例中是“ls -lh”的第5个字段):
    (使用标准输出取代文件 管道符连接)
    ls -lh | sort -h -k 5

uniq

从给定的输入或文件中输出唯一的行。
因为它不会检测重复的行,除非它们是相邻的,所以我们需要首先对它们进行排序。

  • 每一行显示一次:
    sort file | uniq

  • 只显示唯一的行:
    sort file | uniq -u

  • 只显示重复的行:
    sort file | uniq -d

  • 显示每一行的出现次数:
    sort file | uniq -c

  • 显示每行出现的次数,按最频繁的次数排序:
    sort file | uniq -c | sort -nr

w命令

显示谁已登录以及他们正在做什么。
打印用户登录、TTY、远程主机、登录时间、空闲时间、当前进程。

  • 显示已登录的用户信息:
    w

  • 显示登录的用户信息,没有标题:
    w -h

  • 显示登录用户的信息,按空闲时间排序:
    w -i

watch 命令

定期执行程序,显示全屏输出。.

  • 反复运行命令并显示结果:
    watch command

  • 每60秒重新运行一个命令:
    watch -n 60 command

  • 监视目录的内容,在它们出现时突出显示差异:
    watch -d ls -l

make命令

用于Makefile中描述的目标的任务运行器。
主要用于控制从源代码编译可执行文件。

  • 调用Makefile中指定的第一个目标(通常名为“all”):
    make

  • 调用特定目标:
    make target

  • 调用一个特定的目标,同时执行4个作业:
    make -j4 target

  • 使用特定的Makefile:
    make --file file

  • 从另一个目录执行make:
    make --directory directory

  • 强制生成目标,即使源文件没有更改:
    make --always-make target

ifconfig命令
网络接口配置器.

  • 查看以太网适配器的网络设置:
    ifconfig eth0

  • 显示所有接口的详细信息,包括禁用的接口:
    ifconfig -a

  • 禁用eth0接口:
    ifconfig eth0 down

  • 使eth0接口:
    ifconfig eth0 up

  • 将IP地址分配给eth0接口:
    ifconfig eth0 ip_address

chkconfig命令

管理CentOS 6上的服务运行级别。

  • 列出带有运行级别的服务:
    chkconfig --list

  • 显示服务的运行级别:
    chkconfig --list ntpd

  • 启动时启用服务:
    chkconfig sshd on

  • 在启动时为运行级别2、3、4和5启用服务:
    chkconfig --level 2345 sshd on

  • 在启动时禁用服务:
    chkconfig ntpd off

  • 在启动时禁用运行级别3的服务:
    chkconfig --level 3 ntpd off

systemctl命令
Linux systemctl是一个系统管理守护进程、工具和库的集合,用于取代System Vservicechkconfig命令)
注意,一般先杀死nginx进程再去开启 systemctl 管理 nginx
控制系统和服务管理。

  • 列出失败的服务:
    systemctl --failed

  • 启动/停止/启动/重新加载一个服务: (这里是立刻启动服务)
    systemctl start/stop/restart/reload unit

  • 显示一个单元的状态:
    systemctl status unit egsystemctl status nginx|mysqld

  • 开机启动时(启用)和(禁用)要启动的模块:
    systemctl enable/disable unit

  • 屏蔽/解压一个单元,防止它在启动时启动:
    systemctl mask/unmask unit

  • 重新加载systemd,扫描新的或更改的模块:
    systemctl daemon-reload

adduser 命令

添加用户命令.

  • 创建一个具有默认主目录的新用户,并提示用户设置密码: (会创建一个主目录)
    adduser username

  • 创建没有主目录的新用户:
    adduser --no-create-home username

  • 使用指定路径上的主目录创建一个新用户:
    adduser --home path/to/home username

  • 创建一个新用户,并将指定的shell设置为登录shell:
    adduser --shell path/to/shell username

  • 创建属于指定组的新用户:
    adduser --ingroup group username

users 命令
显示已登录用户的列表.

  • 显示已登录用户的列表:
    users

  • 显示根据特定文件登录的用户列表:
    users /var/log/wmtp

chown 命令

更改文件和文件夹的用户和组所有权.

  • 更改文件/文件夹的所有者用户:
    chown user path/to/file

  • 更改文件/文件夹的所有者、用户和组:
    chown user:group path/to/file

  • 递归地更改文件夹的所有者及其内容:
    chown -R user path/to/folder

  • 更改符号链接的所有者:
    chown -h user path/to/symlink

  • 更改文件/文件夹的所有者以匹配引用文件:
    chown --reference=path/to/reference_file path/to/file

rename命令

重命名多个文件.

  • 直接重新命名
    rename originName newName originName

  • 使用Perl公共正则表达式重命名文件(在找到的地方用bar替换foo):
    rename 's/foo/bar/' \*

  • 显示哪些重命名将在不执行它们的情况下发生:
    rename -n 's/foo/bar/' \*

  • 强制重命名,即使该操作将覆盖现有文件:
    rename -f 's/foo/bar/' \*

  • 将文件名转换为小写(在不区分大小写的文件系统中使用' -f ',以防止"already exists"错误):
    rename 'y/A-Z/a-z/' \*

  • 用下划线替换空格:
    rename 's/\s+/_/g' \*

main命令

格式化和显示手册页。

  • 显示命令的手册页:
    man command

  • 显示来自第7节的命令的手册页:
    man command.7

  • 搜索手册页的显示路径:
    man --path

  • 显示手册页的位置,而不是手册页本身:
    man -w command

  • 对包含搜索字符串的手册页进行关键字搜索:
    man -k keyword

dirname命令

计算给定文件或目录路径的父目录.

  • 计算给定路径的父目录:
    dirname path/to/file_or_directory

  • 计算多个路径的父目录:
    dirname path/to/file_a path/to/directory_b

  • 用NUL字符而不是换行符分隔输出(在与' xargs '结合时非常有用):
    dirname --zero path/to/directory_a path/to/file_b

basename

返回路径名的非目录部分.

  • 只显示路径中的文件名:
    basename path/to/file

  • 只显示路径中的文件名,并删除后缀:
    basename path/to/file suffix

test 命令
评估条件。
如果为真,返回0退出状态,否则返回1。

  • 测试给定的变量是否等于给定的字符串:
    test $MY_VAR == '/bin/zsh'

  • 测试给定变量是否为空:
    test -z $GIT_BRANCH

  • 测试文件是否存在:
    test -e filename

  • 测试目录是否不存在:
    test ! -d path/to/directory

  • if - else语句:
    test condition && echo "true" || echo "false"

nginx命令
Nginx web服务器.

  • 使用默认配置文件启动服务器:
    nginx path:/etc/nginx/nginx.conf

  • 使用自定义配置文件启动服务器:
    nginx -c config_file

  • 显示版本并配置选项,然后退出:
    nginx -V

  • 使用配置文件中所有相对路径的前缀启动服务器:
    nginx -c config_file -p prefix/for/relative/paths

  • 在不影响正在运行的服务器的情况下测试配置:
    nginx -t

  • 通过发送一个没有停机的信号来重新加载配置:
    nginx -s reload

  • 通过发送一个没有停机的信号来重新打开配置:
    nginx -s reopen

  • 停止nginx:
    nginx -s stop

  • 退出nginx:
    nginx -s quit

-?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : 从配置文件中设置全局指令

supervisorctl

Supervisor是一个客户机/服务器系统,它允许用户在类unix操作系统上控制多个进程。
监督者ctl是监督者的命令行客户端,它提供了一个类似shell的接口.

  • 启动/停止/启动一个过程:
    supervisorctl start|stop|restart process_name

  • 启动/停止/重启组中的所有进程:
    supervisorctl start|stop|restart group_name:*

  • 显示最后100字节的流程stderr:
    supervisorctl tail -100 process_name stderr

  • 保持在进程外显示stdout:
    supervisorctl tail -f process_name stdout

  • 重新加载进程配置文件,根据需要添加/删除进程:
    supervisorctl update

  • 查看进程状态
    supervisorctl status

supervisord

Supervisor是一个客户机/服务器系统,用于控制类unix操作系统上的一些进程。
监控器是监控器的服务器部分;它主要通过配置文件进行管理。

  • 用指定的配置文件启动督导员: 默认在 /etc/supervisord.conf 下面
    supervisord -c path/to/file

  • 在前台运行督导员:
    supervisord -n

  • 使用默认的配置文件 /etc/supervisord.conf
    supervisord

  • 明确指定配置文件
    supervisord -c /etc/supervisord.conf

  • 使用 user 用户启动 supervisord
    supervisord -u user

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,961评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,444评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,009评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,082评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,101评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,271评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,738评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,395评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,539评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,434评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,481评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,160评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,749评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,816评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,038评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,548评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,140评论 2 341

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,357评论 0 5
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,438评论 0 13
  • (一)基本命令 命令格式: 命令 参数 1.ls 显示文件名,等同于dos下dir命令 命令格式:ls [opti...
    飞羽孟德阅读 1,860评论 0 3
  • 1. (( 双重尖括号命令 (( ))双尖括号和[[ ]]双方括号都是bash shell的两项新的扩展,提供了可...
    KevinCool阅读 620评论 0 0
  • 1、vi 字符串查找(常用):/要查找的字符串 敲enter开始查找 n代表下一个 N代表上一个从上往下找...
    Kris_Shin阅读 270评论 0 4