𝓝𝓮𝓶𝓸&博客

【Linux】Shell命令相关英文缩写含义

相关英文缩写含义

对于很多人来说,用Linux都是熟能生巧,而不清楚为什么是那样的命令,所以我在这列了一个表,翻译了其对应的英文。

注意:一般我们下载文件,*.zip.gz 就是 Linux 版本的压缩文件。

技巧:我们使用tab键可以进行代码补齐,ctrl + c可以终止一切命令。

命令行中光标的移动快捷键:

  • 行:ctrl + a/e
  • 字符:ctrl + b/f
  • 单词:alt + b/f或ctrl + ←/→

bash使用的是emacs的操作方式,具体操作可以查看emacs命令。

路径

相对路径是指目标相对于当前文件的路径,网页结构设计中多采用这种方法来表示目标的路径。相对路径有多种表示方法,其表示的意义不尽相同。表示方法如下:

  • ./:代表文件所在的目录(可以省略不写),一般相对前边有这么一个./表示“当前目录”,但是可以省略不写。如 page/index./page/index是一样的效果。
  • ../:代表文件所在的父级目录
  • ../../:代表文件所在的父级目录的父级目录
  • /:代表文件所在的根目录,从任何用户执行该命令都会进入同一个目录,即 所有用户共享

值得注意的是,(/ :代表文件所在的根目录)其实可以理解成项目内部的绝对路径。
类比:一个大房子

  • ~/:当前用户的家目录

类比:大房子里面的属于当前用户的一个小房间

image

➜  ~ cd ..
➜  /Users cd ..
➜  / cd ..
➜  / ls

权限

Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • 读(read):r:4
  • 写(write):w:2
  • 执行(execute):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

在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。

例如用ls -l命令列文件表时,得到如下输出:-rw-r--r-- 1 apple users 2254 2006-05-20 13:47 tt.htm

从第二个字符起rw-是说用户apple有读、写权,没有运行权,
接着的r--表示用户组users只有读权限,没有运行权,
最后的r--指其他人 (others)只有读权限,没有写权和运行权。

这是系统默认设置,可以改写tt.htm,同组的人和其他人只有权读,没人有权运行,因为只是一个 html文件,不必运行。这在Novell的directory services之前很先进。

读(r, read)、写(w, write)、执行(x, execute)三项权限可以用数字表示,就是r=4,w=2,x=1。所以,上面的例子中的rw-r--r--用数字表示成644。反过来说777就是rwxrwxrwx,意思是该登录用户(可以用命令id查看)、所在的组和其他人都有最高权限。


如果是root用户创建的文件默认权限是644,目录默认权限是755;
普通用户创建的文件默认权限是664,目录默认权限是775。
两者的默认权限是不同的,造成两者用户权限不同的原因就是Linux针对不同的用户创建文件和创建目录默认的权限不同,Linux系统通过umask(遮罩)的概念来控制相应的权限。可以在/etc/profile 文件中进行查看。

Linux chmod命令

Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

image

file type分为-或者d

  • -:文件
  • d:目录

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

image

使用权限 : 所有使用者

语法

chmod [-cfvR] [--help] [--version] mode file...

参数说明

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

符号模式

使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:

who 用户类型 说明
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
a all 所用用户, 相当于 ugo

operator 的符号模式表:

Operator 说明
+ 为指定的用户类型增加权限
- 去除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置

permission 的符号模式表:

模式 名字 说明
r 设置为可读权限
w 设置为可写权限
x 执行权限 设置为可执行权限
X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

八进制语法

chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。

# 权限 rwx 二进制
7 读 + 写 + 执行 rwx 111
6 读 + 写 rw- 110
5 读 + 执行 r-x 101
4 只读 r-- 100
3 写 + 执行 -wx 011
2 只写 -w- 010
1 只执行 --x 001
0 --- 000

例如, 765 将这样解释:

  • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
  • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
  • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

实例

将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

为 ex1.py 文件拥有者增加可执行权限:

chmod u+x ex1.py

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

chmod 777 file

语法为:

chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1

  • 若要 rwx 属性则 4+2+1=7;
  • 若要 rw- 属性则 4+2=6;
  • 若要 r-x 属性则 4+1=5。
chmod a=rwx file

chmod 777 file

效果相同

chmod ug=rwx,o=x file

chmod 771 file

效果相同

若用 chmod 4755 filename 可使此程序具有 root 的权限。

更多说明

命令 说明
chmod a+r *file* 给file的所有用户增加读权限
chmod a-x *file* 删除file的所有用户的执行权限
chmod a+rw *file* 给file的所有用户增加读写权限
chmod +rwx *file* 给file的所有用户增加读写执行权限
chmod u=rw,go= *file* 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
chmod -R u+r,go-r *docs* 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod 664 *file* 对file的所有者和用户组设置读写权限, 为其其他用户设置读权限
chmod 0755 *file* 相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)0 没有特殊模式。
chmod 4755 *file* 4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。
find path/ -type d -exec chmod a-x {} \; 删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用'-type f'匹配文件
find path/ -type d -exec chmod a+x {} \; 允许所有用户浏览或通过目录path/

网卡名

CentOS6之前基于传统的命名方式如:eth1,eth0....
Centos7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名是全自动的、可预知的,缺点是比eth0、wlan0更难读。比如enp5s0

可以理解为从centos7开始,网卡命名会根据网卡的硬件信息,插槽位置等有关。

一、网卡命名的策略

systemd对网络设备的命名方式

  • 规则1:如果Firmware或者BIOS提供的设备索引信息可用就用此命名。比如eno1。否则使用规则2
  • 规则2:如果Firmware或Bios的PCI-E扩展插槽可用就用此命名。比如ens1,否则使用规则3
  • 规则3:如果硬件接口的位置信息可用就用此命名。比如enp2s0
  • 规则4:根据MAC地址命名,比如enx7d3e9f。默认不开启。
  • 规则5:上述均不可用时回归传统命名方式
  • 上面的所有命名规则需要依赖于一个安装包:biosdevname

net.ifnames的命名规范为:设备类型+设备位置+数字


二、前两个字符的含义:设备类型

名称 含义 英文
en 以太网 Ethernet
wl 无线局域网 WLAN
ww 无线广域网 WWAN, Wireless Wide Area Network

三、第三个字符根据设备类型来选择:设备位置+数字

名称 描述 英文
o<index> 集成设备索引号 on-board device index number
s<slot> 扩展槽的索引号 hotplug slot index number
x<MAC> s<slot> 基于MAC进行命名 MAC address
p<bus> s<slot> PCI扩展总线 PCI geographical location
USB port number chain
  • o<index>:主板集成设备序号。

  • s<slot>[f<function>][d<dev_id>]:热插拔索引号。所有的多功能PCI设备(multi-function PCI devices)都会在设备名中代[f<function>]号,包含功能0设备(includeing the function 0 device)。

  • x<MAC>:MAC地址。

  • [P<domain>]p<bus>s<slot>[f<function>][d<dev_id]:PCI的物理位置。在PCI物理位置(geographical location)中,[P<domain>]号如果不是0,那么它仅是用于记录。例如:ID_NET_NAME_PATH=P1enp5s0

  • [P<domain>]p<bus>s<slot>[f<function>][u<port>][…][c<config>][i<interface>]:USB端口链号(USB port number chain)。用于USB设备,the ful chain of port numbers of hubs is composed. 如果名字超过15个字符的最大限制,那么这个名字不能使用。如果有多个USB设备在链中,USB配置描述符(c1)和USB接口描述符(i0)会被压缩。

实际的例子:

  • eno1 板载网卡
  • enp0s2 pci网卡
  • ens33 pci网卡
  • wlp3s0 PCI无线网卡
  • wwp0s29f7u2i2 4G modem
  • wlp0s2f1u4u1 连接在USB Hub上的无线网卡
  • enx78e7d1ea46da pci网卡

biosdevname的命名规范为
实际的例子:

  • em1 板载网卡
  • p3p4 pci网卡
  • p3p4_1 虚拟网卡

文件名

.开头的文件,代表不可见,隐藏文件。

.zshrc:zsh resource config,资源配置文件。

1、目录名:

image

名称 英文 英文含义 描述
/boot boot 引导 操作系统的内核及在引导过程中使用的文件
/root root 系统管理员的主目录(根目录)
/run run 运行 系统运行时所需文件
/home home 用户的主目录基点,显示这台机器的所有用户
/etc ETCetera 附加,等 存放系统配置文件
/bin BINaries 二进制文件 存放二进制可执行文件(ls,cat,mkdir等命令)
/dev DEVices 设备 用于存放设备文件
/lib LIBraries 存放跟文件系统中的程序运行所需要的共享库及内核模块
/mnt MouNT 安装,挂载 系统管理员安装临时文件系统的安装点
/proc PROCesses 进程,过程 虚拟文件系统,存放当前内存的映射
/tmp TeMPorary 临时 用于存放各种临时文件
/var VARiable 可变的 用于存放运行时需要改变数据的文件
/srv SeRVices 服务 系统启动服务时候可以访问的数据库目录
/opt OPTional 可选的 额外安装的可选应用程序包所放置的位置
/sbin Super BINaries
(Superuser BINaries)
超级用户的二进制文件 存放二进制可执行文件,只有root才能访问
/sys SYStem 系统 硬件设备的驱动程序信息
/usr Unix System Resources
(Unix Software Resources)
(Unix Shared Resources)
Unix系统资源 用于存放系统应用程序,比较重要的目录/usr/local本地管理员软件安装目录

dev/xxyn下面说明了解析分区命名方案的方法:

  • /dev/这个字串是所有设备文件所在的目录名。因为分区在硬盘上,而硬盘是设备,所以这些文件代表了在/dev/上所有可能的分区。
  • xx分区名的前两个字母标明分区所在设备的类型。通常是 hd (IDE 磁盘)或 sd(SCSI 磁盘)。IDE硬盘是作为系统操作硬盘使用,而SCSI硬盘是作为数据存储硬盘使用。
  • y这个字母标明分区所在第几个设备。例如,/dev/hda(第一个 IDE 磁盘)或 /dev/sdb(第二个 SCSI 磁盘)
  • n最后的数字代表分区。前四个分区(主分区或扩展分区)是用数字从 1 排列到 4。逻辑分区从 5 开始。例如,/dev/hda3 是在第一个 IDE 硬盘上的第三个主分区或扩展分区;/dev/sdb6 是在第二个 SCSI 硬盘上的第二个逻辑分区。

USB存储设备属于SCSI设备,其编号为sdX;

u盘一般用/sdb1
mount [ -t 文件系统类型 ] 存储设备 挂载点

  • 查看所有硬盘挂载情况:df -h
  • 挂载U盘:mount [-t vfat] /dev/sdb1 /mnt/usb
  • 卸载U盘:umount /mnt/usb

2、常用命令:

  • Linux命令通常由以下三部分组成:
    Command[-option][argument]
    • Command即是要运行的命令本身,说白了就是一个软件(程序)
    • Option的话是可选的,即有些命令是没有选项的,选项是控制命令运行状态和行为的
    • argument是参数,是命令要操作的文件、路径、数据等,也是可选的,因为有些命令不需要操作这些内容,如果没有的话,就选择默认的

后台运行命令

nohup 英文全称 no hang up(不挂断),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。


在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 http.server,我们可以很简单的使用 python -m http.server 快速搭建一个http服务,提供一个文件浏览的web服务,而mac自带了 python,windows需要安装python才能使用。

1.当前目录发布到8001端口(明令后边的8001端口是可选的,不设置的话使用默认端口8000),该服务是前台运行的,control+c会关闭该服务。

python -m http.server 8001

2.进程在后台运行,control+c不会关闭该服务,关闭bash时关闭服务。

python -m http.server 8001 &

3.在命令的开头加一个nohup,忽略所有的挂断信号,如果当前bash关闭,则当前进程会挂载到init进程下,成为其子进程,这样即使退出当前用户,其8000端口也可以使用。

nohup python -m http.server 8001 &

4.在浏览器访问:http://localhost:8001 ,如果当前文件夹有index.html文件,会默认显示该文件,否则,会以文件列表的形式显示目录下所有文件。

2.1、文件及文件夹管理:

ls(LiSt,列表)

显示目录中的内容

ls [opions] [文件或目录]...
  • -a--all:列出目录下的所有文件和目录,包括文件和子目录的名称
  • -A--almost-all:列出除“.”(当前目录)及“..”(当前目录的上级目录)外的任何文件和目录
  • -b--escape:把文件名中不可输出的字符用反斜杠家字符编号的形式列出
  • -c:输出文件的ctime(文件最后更改的时间),并根据ctime排序
  • -C:分成多列显示文件和目录
    -d--directory:将目录像文件一样显示,而不是显示其下的文件
  • -F--classify:加上文件类型的指示符号,其中“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;
  • -l:列出文件详细信息“|”表示管道文件;“=”表示套接字
  • -h:以人类可读的方式列出,常-lh一起使用查看文件大小
  • -t 将按照修改时间排序,最新的文件在最前面

cd(Change Directory,更改目录)

用户改变用户的工作目录

cd [目的目录]
  • 根目录~/
  • 当前目录./
  • 父级目录../
  • cd -返回上一次目录

pwd(Print Working Directory,打印工作目录)

用于显示当前的目录

dirname(Directory Name,目录名)

用于提取出路径中的目录名

cp(CoPy,复制)

复制文件

cp [options] 源文件 目标文件
  • -a--archive:等同于-dpR
  • -d:复制符号链接时,把目标文件或目录也建立为符号链接,并指向与源文件或目录链接的原始文件或目录
  • -f--force:强行复制文件或目录,不论目标文件或目录是否已存在
  • -i--intercative:覆盖目标文件前需要确认
  • -n--no-clobber:不覆盖已经存在的目标文件
  • -p:复制源文件或目录内容的同时也复制文件属性如存取权限等
  • -R, -r--recursive:递归复制目录,将源目录下所有文件及子目录都复制到目标位置
  • cp -r /home/A /home/B:将文件夹A复制到文件夹B下
  • cp -r /home/A/* /home/B:将文件夹A下的所有文件复制到文件夹B下

mv(MoVe,移动)

移动文件或文件换名

mv [options] 源文件 目标文件
  • -i--interactive:覆盖文件前需要确认
  • -f--force:若目标文件或目录已存在,直接覆盖
  • -n--no-clobber:不覆盖已存在的文件
  • -u--update:移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件

rm(ReMove,删除)

|删除文件或者目录
rm [options] ...文件或目录...
删除目录必须要加"-r"选项 |-f--force:强制删除文件或目录
-i--interactive:删除文件或目录前提示要用户确认
-r-R--recursive:递归删除指定目录及其下属各级子目录和相应的文件|

pushd(PUSH to Directory,压栈到目录)

popd(POP from Directory,从目录出栈)

mkdir(MaKe DIRectory,新建目录)

建立用户目录
mkdir [options] 目录名...

-m--mode=MODE:对新建目录设置存取权限
-p--parents:若所建目录的上层目录不存在,则一并建立

rmdir(ReMove DIRectory,删除目录)

删除目录
rmdir [options] 目录名...

-p--parents:删除指定目录后,若该目录的上层目录已变成空目录,则一并删除

split(split,拆分)

拆分文件,提升文件上传速度,减少文件上传错误

split [要切割的文件][输出文件名]
-b <字节>:指定每多少字节切成一个小文件
[输出文件名]: 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
拆分完后可以使用下面的cat命令进行拼接cat image_part* > image.JPG

cat(CATenate or conCATenate,拼接、连接)

连接文件并输出
cat [options] [file…]

  • -b--number-noblank:从1开始对所有非空输出行进行编号
  • -n--number:从1开始对所有输出行编号
  • -s--squeeze-blank:将连续两行以上的空白行合并成一行空白行

watch(watch,观察)

定期执行某一命令并全屏显示执行结果
watch 'command'
watch 'tail xxx'

tail(TAIL,尾部)

默认输出文件尾部十行
tail [options] [file]

  • -n:规定输出后多少行
  • -f--follow:会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容

head(HEAD,头部)

默认输出文件头部十行
head [options] [file]

  • -n:规定输出后多少行

less(LESS,更少)

由于more不能后退,就取more的反义词less加上后退功能
less [options] [file]

  • -N:显示每行的行号

Linux里流传着这样一句话:"less is more"

more(MORE,更多)

显示更多
more [options] [file]

  • h:帮助说明
  • space:向下
  • b:向上

sed(Stream EDitor,流编译器)

diff(DIFFerence,不同,差异)

比较文本文件,并找出它们的不同
diff [options] 文件1 文件2

  • \|表示前后2个文件内容有不同
  • <表示后面文件比前面文件少了1行内容
  • >表示后面文件比前面文件多了1行内容

参数

  • -y--side-by-side:以并列的方式显示文件的异同之处。
  • -W<宽度>--width<宽度>:在使用-y参数时,指定栏宽,默认是130。
  • -b--ignore-space-change:忽略空格造成的不同
  • -B--ignore-blank-lines:忽略空行造成的不同
  • -i--ignore-case:忽略大小写的不同
  • -r 或 --recursive:当比较的文件都是目录时,递归比较子目录中的文件

wc(Word Count,字数)

统计给定文件中的行数单词数,以及字节数
wc [options] ...[文件]...

  • -c--bytes:统计字节数
  • -m--chars:统计字符数
  • -l--lines:统计行数
  • -w--words:统计字数

可以与find一起使用,计算目录下文件的数量find ./ -name "*.json" \| wc -lls *.json \| wc

chmod(CHange MODe,更改权限)

改变文件或目录的许可权限
chmod [who] [opt][mode] 文件名…

  • + 表示增加权限、
  • - 表示取消权限、
  • = 表示唯一设定权限。
  • r 表示可读取,
  • w 表示可写入,
  • x 表示可执行,
  • X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

chown(CHange OWNer,更改所有者)

chown [options] [用户][:[组]] 文件...

  • -R--recursive:递归式地改变指定目录及其下的所有子目录和文件的拥有者

chgrp(CHange GRouP,更改组)

chgrp [options] 所属组 文件...

  • -R--recursive:递归式地改变指定目录及其下的所有子目录和文件的属组

awk(Aho Weinberger and Kernighan)

gawk(Gnu AWK)

mawk(Minimal AWK)

grep(General Regular Expression Print,通用正则表达式打印)

在文件中搜索匹配行并输出
grep [选项] 查找模式 [文件...]
在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。
grep test *file

  • OR:grep -e 'pattern1' -e 'pattern2' filename
    grep -E 'pattern1\|pattern2' filename(正则表达式)
    grep 'pattern1\|pattern2' filename(转义为正则表达式)

  • AND:grep 'pattern1' filename \| grep 'pattern2'

  • NOT:grep -v 'pattern1' filename

  • -E--extended-regexp:将查找模式解释成扩展的正则表达式,相当于egrep

  • -o--only-matching : 只显示匹配PATTERN 部分(可以配合正则表达式使用)

  • -F--fixed-regexp:将搜索模式解释成单纯的字符串,相当于fgrep

  • -i--ignore-case:忽略字符大小写

  • -v--invert-match:反转查找,显示不包含匹配字符串的文本行

  • -A<显示行数>--after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

  • -B<显示行数>--before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

  • -C<显示行数>--context=<显示行数>-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。(如果输出中有--作为隔断,则代表两个之间还有内容)

  • -e<范本样式>--regexp=<范本样式> : 指定字符串做为查找文件内容的样式

  • -r:(recursion)以递归目录的方式查找符合条件的文件。grep -r update /etc/acpi

  • --include *.txt--exclude *.txt从指定文件中查找,支持通配符

  • -l--file-with-matches : 列出文件内容符合指定的样式的文件名称。

  • -L--files-without-match : 列出文件内容不符合指定的样式的文件名称。

在文件间建立连接
ln [options] 源文件 [目标文件]
ln [options] 源文件… 目录
默认为硬链接

  • -s:对源文件建立软链接(符号连接),而非硬链接

tar(tape archive(TARball),打包归档(打包软件))

打包备份文件
tar [options] [文件或目录]...

  • 打包并压缩:tar -czvf 目标文件.tar.gz 目标文件这里的目标文件.tar.gz是作为-f的参数,所以会怪异一点

  • 还原并解压:tar -xzvf 目标文件

  • -x--extract--get:从备份文件中还原文件。

  • -c--create:建立新的备份文件。

  • -z--gzip--ungzip:通过gzip指令处理备份文件。

  • -v--verbose:显示指令执行过程。

  • -f<备份文件>--file=<备份文件>:指定备份文件。

  • -C<目的目录>--directory=<目的目录>:切换到指定的目录。

  • -A--catenate:新增tar文件到已存在的备份文件

  • -t--list:列出备份文件的内容

  • --delete:从备份文件中删除指定文件|

touch(touch,触摸,修饰,润色)

用来修改文件时间戳,或者新建一个不存在的文件

find(find,找到、发现)

搜索特定文件
find [路径…] [表达式]
find . -name "*.json"

  • -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
  • -type c : 文件类型是 c 的文件。
  • d: (Directory)目录;
  • c: (char)字符装置文件;
  • b: (block)区块装置文件;
  • p: (pipe)管道、具名贮列;
  • f: (file)一般文件;
  • l: (link)符号连结;
  • s: socket|

which(which)

查找指令

whereis(whereis)

查找指令

gzip(GNUzip,压缩文件)

压缩文件
gzip [options] [文件名…]

  • -d--decompress 解压
  • -c--stdout--to-stdout:压缩后文件输出到标准输出设备,不改变原始文件
  • -d 或 --decompress--uncompress:解压文件
  • -f--force:强行压缩文件
  • -n--no-name:压缩文件时,不保存原来的文件名称及时间戳记
  • -N--name:压缩文件时,保存原来的文件名称及时间戳记
  • -r--recursive:递归处理,将指定目录下的所有文件及子目录一并处理|

gunzip(gunzip,解压缩文件)

解压缩文件
gunzip [options] [文件名…]

open(open,打开)

打开文件或目录
open [options] [文件名或目录名]

(macOS)open .打开当前目录

nautilus(鹦鹉螺)

(Linux)nautilus .打开当前目录

explorer(explorer,探索器)

(Windows)explorer .打开当前目录

echo(echo,回音)

输出内容
echo [内容]

xargs(eXtended ARGuments,扩展参数)

somecommand \| xargs [-item] command
xargs 一般是和管道一起使用
将前面命令的输出附加到后面的命令上

由于命令的读取是按顺序执行的,所以只能等前面命令执行完了输出了,后面的命令才能获取到

2.2、硬件管理:

df(Disk Free,磁盘空闲)

检查文件系统的磁盘空间占用情况
df [options],如df -h /查看根目录的磁盘

  • -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统
  • -k:以k字节为单位显示
  • -i:显示I节点信息,而不是磁盘块
  • -t:显示各指定类型的文件系统的磁盘空间使用情况
  • -x:列出不是某一指定类型文件系统的磁盘使用情况(与t选项相反)
  • -T:显示文件系统类型
  • -h--human-readable:使用人类可读的格式(预设值是不加这个选项的...)我们可以看到输出显示的数字形式的'G'(千兆字节),"M"(兆字节)和"K"(千字节)。这使输出容易阅读和理解,从而使显示可读的。请注意,第二列的名称也发生了变化,为了使显示可读的"大小"。|

du(Disk Usage,磁盘使用)

显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小
du [options] [dirname]
du -sh *

  • -h:以人们较易读的容量格式 (G/M) 显示;
  • -s:对每个dirname参数只给出占用的数据块总数
  • -a:递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示dirnames中的每一个目录及其中的各子目录所占的磁盘块数

dd(Data Description,转换和复制文件)

(有说是Convert and Copy, 但是cc被用掉了,就用dd了)

parted(PARTition EDitor,分区编辑器)

fdisk(Format DISK,格式化磁盘)

磁盘及分区管理工具
fdisk [-l] [设备名称]

  • -l:该选项后面不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表|

mkfs(MaKe FileSystem,创建文件系统)

将硬盘分区后,可对其进行格式化(格式化的过程即创建文件系统的过程)
mkfs -t 文件系统类型 分区设备

fsck(File System ChecK,文件系统检查)

检查并修复文件系统
fsck [-sACR] [-t fstype] [filesysname] [fsck-options] filesys

  • -s:依顺序一个一个地执行fsck的指令检查
  • -A:对/etc/fstab中所有列出来的分区指令检查
  • -C:显示完整的检查进度
  • -R:检查时跳过root文件系统
  • -t:指定文件系统的形式,若存在/etc/fstab中已有定义或kernel本身已支持的则不需要此参数|

lspci(LiSt Peripheral Component Interconnect,列出外围组件互连)

lscpu(LiSt Central Process Unit,列出中央处理单元)

lsusb(LiSt Universal Serial Bus,列出通用串行总线)

lsblk(LiSt BLocK,列出块)

mdadm(Multiple Disk And Device Manager,多磁盘和设备管理器)

mount(mount,挂载)

挂载存储设备
mount [-t 文件系统类型] 存储设备 挂载点

umount(unmount,卸载)

卸载存储设备
umount 存储设备|-|

2.2.1、lvm

lvm(Logical Volume Manager,逻辑卷管理器)
pvcreate(Physical Volume CREATE,物理卷创建)
vgcreate(Volume Group CREATE,卷组创建)
lvcreate(Logical Volume CREATE,逻辑卷创建)
pvdisplay(Physical Volume DISPLAY,物理卷显示)
vgdisplay(Volume Group DISPLAY,卷组显示)
lvdisplay(Logical Volume DISPLAY,逻辑卷显示)
pvresize(Physical Volume RESIZE,物理卷大小调整)
vgresize(Volume Group RESIZE,卷组大小调整)
lvresize(Logical Volume RESIZE,逻辑卷大小调整)
pvextend(Physical Volume EXTEND,物理卷扩展)
vgextend(Volume Group EXTEND,卷组扩展)
lvextend(Logical Volume EXTEND,逻辑卷扩展)
pvremove(Physical Volume REMOVE,物理卷删除)
vgremove(Volume Group REMOVE,卷组删除)
lvremove(Logical Volume REMOVE,逻辑卷删除)
pvs(Physical Volume Status,物理卷状态)
vgs(Volume Group Status,卷组状态)
lvs(Logical Volume Status,逻辑卷状态)

2.3、软件及软件包管理:

包管理器又称软件包管理系统,它是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。

类比:Maven,统一去配置、下载依赖包
软件包(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类。应用软件包与特定的应用领域有关,又可分为通用包及专用包两类。通用软件包根据社会的一些共同需求开发,专用软件包则是生产者根据用户的具体需求定制的,可以为适合其特殊需要进行修改或变更。
常见格式 exe、zip、rar

man(MANual,手册)

获取帮助信息

dpkg(Debian PacKaGe)

yum(Yellow dog Updater, Modified,包管理工具)

类比Maven、应用商店,一键下载、安装

rpm(RPM Package Manager or Redhat Package Manager)

wget(World Wide Web get,网络获取工具、下载工具)

类比迅雷

wget 和 yum的比较

wget 是一种下载工具是通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理,而且wget可以在用户退出系统的之后在后台执行。名字是World Wide Web”与“get”的结合。
而 yum 是redhat, centos 系统下的软件安装方式,基于Linux,是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
rpm: 软件管理; redhat的软件格式 rpm r=redhat p=package m=management
用于安装 卸载 .rpm软件

将他们两个 比较呢 就好比 wget是迅雷下载中心,yum 呢就像是应用商店 里面有很多软件当然也有没有的

apt 命令|Advanced Packaging Tool |先进的包装工具

其实这些命令的操作都大同小异,这里以apt来举例子。

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

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

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


apt 语法:

  apt [options] [command] [package ...]
  • options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

apt 常用命令:

  • 列出所有可更新的软件清单命令:sudo apt update

  • 升级软件包:sudo apt upgrade

    列出可更新的软件包及版本信息:apt list --upgradeable

    升级软件包,升级前先删除需要更新软件包: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

找不到包管理工具怎么办

查看linux发行版本,然后百度此版本linux是使用的什么包管理工具。

cat /etc/issue

2.4、用户及用户组管理:

  • Linux系统中的用户三种类型
    • 超级用户:root,拥有最大权限
    • 普通用户:自定义用户,拥有部分权限
    • 特殊用户:在Linux系统中还存在一些特殊的与系统和程序服务相关的用户。

useradd(USER Add,用户添加)

useradd [options] username

  • -d dir:指定用户主目录
  • -u uid:可以指定用户ID
  • -g group:已存在一个组,新增用户要加入的主要组
  • -G group:已存在一个组,新增用户要加入的附加组
  • -c comment:用户的注释信息|

userdel(USER DELete,用户删除)

userdel -r username

  • -r username:不仅删除用户,还删除用户的全部用户主目录

usermod(USER MODify,用户修改)

usermod [-options] [arguments] username

  • -d dir:修改用户主目录
  • -e expire:修改用户过期日期
  • -g group:修改用户组名
  • -G group:修改用户组列表
  • -s Shell:修改用户登陆Shell
  • -u uid:修改用户ID

users(USER Status,用户状态)

groupadd(GROUP ADD,组添加)

groupdel(GROUP DELete,组删除)

groupmod(GROUP MODify,组修改)

groupmems(GROUP MEMberS,组成员)

2.5、系统管理:

depmod(DEPend MODule,依赖模块)

lsmod(LiSt MODule,列表模块)

modprobe(MODule PROBE,模块探查)

modinfo(MODule INFOrmation,模块信息)

insmod(INSert MODule,插入模块)

rmmod(ReMove MODule,删除模块)

mkfs(MaKe FileSystem,创建文件系统)

将硬盘分区后,可对其进行格式化(格式化的过程即创建文件系统的过程)
mkfs -t 文件系统类型 分区设备

fsck(File System ChecK,文件系统检查)

检查并修复文件系统
fsck [-sACR] [-t fstype] [filesysname] [fsck-options] filesys

ps(Processes Status,进程状态)

默认查看当前用户正在运行的进程
ps [option]

  • -e-A:entire显示所有用户的进程

  • -f:(可以显示出不同用户)全格式,full-format, including command lines

  • -h:不显示标题

  • -l(long):长格式

  • -w:宽输出

  • a:显示终端上的所有进程,包括其他用户的进程

  • r:只显示正在运行的进程

  • -x:显示没有控制终端的进程

  • -u:使用用户格式输出

  • ps aux \| grep xxx:这个更全面,能显示占用内存等信息

  • ps -ef \| grep 进程关键字:查找指定进程|

top(top,顶部)

显示系统当前的进程和其他状况
top [-dqsiupSc] [-d count] [-s time] [-u username]

  • d:指定每两次屏幕信息刷新之间的时间间隔
  • q:表示没有任何延迟地进行刷新
  • s:表示安全模式下运行
  • i:表示交互模式下运行,不显示空闲或僵尸进程
  • p:指定监控进程ID来仅监控某个进程状态
  • c:显示整个命令行而不是只显示命令名
  • d count:表示更新屏幕显示结果count次后退出top命令
  • s time:设置连续两次更新屏幕显示的时间间隔
  • u username:表示只显示属于用户username的进程|

kill(kill,杀死、使停止)

通过向进程发送指定信号来结束进程
kill [-s 信号\|-p] [-a] 进程号
kill -l [信号]

  • -s:指定需要送出的信号。既可以是信号名也可以对应数字
  • -p:指定kill命令只是显示进程的pid,并不真正送出结束信号
  • -l:显示信号名称列表,这也可以在/usr/include/linux/signal.h 文件中找到
  • kill -9 $(ps -ef \| grep tool):强制关闭所有tool进程|

killall(kill all,杀死所有,停止所有)

killall 用于杀死一个进程,与 kill 杀死指定进程ID不同的是它会杀死指定名字的所有进程。
killall [选项] name

  • -9:强制杀死

su(Substitute User,替代用户)

sh(SHell,执行shell脚本)

sh filename.sh
在当前环境下重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量

  • -x:(execute)实现shell脚本逐条语句的跟踪,可以用于调试

bash(Bourne Again SHell)

source 或 .(source,来源)

source fileName
在当前bash环境下读取并执行FileName中的命令。
可以用来执行一些非.sh的脚本文件

dash** |Debian Almquist SHell

init** |INITialization |初始化

ssh** |Secure SHell |安全外壳协议

SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
使用ssh协议连接目标IP地址,我们可以使用这个连接服务器,如Linux系统,不会影响到其他人,因为是多用户

|wine |Wine Is Not an Emulator

|exec |EXECute |执行

| fstab |FileSystem TABle

| passwd |PASSWorD |密码

|chpasswd |CHange PASSWorD |更改密码

|pwconv |PassWord CONVert |密码转换

|pwunconv |PassWord UNCONVert |密码不可转换

|tty |TeleTYpe |电传打字机

|sudo |SuperUser DO |超级用户操作

|grub |GRand Unified Bootloader

|tzselect |Time Zone SELECT |时区选择

|sync |SYNChronize |使同步

|systemd |SYSTEM Daemon |系统守护进程

(里面有systemctl bootctl journalctl loginctl localectl timedatectl 等等,都是blablabla ConTroL)

|ifconfig|network InterFaces CONFIGuring|网络接口配置|

显示或配置网络设备,查看IP

|lsof| LiSt Open Files | 列出打开的文件

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件

列出当前系统打开文件,可以用来查看进程以及端口号等信息

  • -c<进程名>:(command)列出指定进程所打开的文件;
  • -p<进程号>:(process)列出指定进程号所打开的文件;
  • -i<条件>:(internet)列出符合条件的进程。(46协议:端口@ip
  • -u:(user)列出UID号进程详情; |

|jps|Java Processes Status| Java进程状态|

显示所有的Java的进程
jdk中自带,需要配置环境变量才能使用|

使用jps获得pid,使用lsof结合pid获得端口号
lsof -p 24831 | grep : |

| jinfo|Java infomation|Java信息|

显示JVM进程的启动参数信息|
jinfo -flags <进程id>
此处的进程id可以使用jps来查看|

编解码

|md5|Message-Digest Algorithm 5|加密算法||

|xxd|hex dump|十六进制输出|可用于查看二进制文件||

|base64|base64|base64编码|编解码base64||

2.6、编辑器:

ed |EDitor |编辑器

nano |Nano's ANOther editor

emacs |Editor MACroS

vi |VIsual |视觉的

vim |VI iMproved |改进的VI

2.7、编译器:

cc |C Compiler |C语言编译程序

gcc|GNU Compiler Collection(作为一个软件集被你下载下来编译安装的时候) |GNU 编译程序集

gcc |GNU C Compiler (作为一个软件被你调用来编译C程序的时候) | GNU C语言编译程序 |

  • -c:只编译不链接,生成对应源文件的目标文件“.o”
  • -o file:指定输出文件为file,file可以是可执行文件、目标文件、汇编文件等
  • -I dir:在头文件的搜索路径列表中添加dir目录
  • -shared:生成一个共享目标文件,可以和其他目标文件连接产生可执行文件
  • -L dir:把指定的目录dir加到链接程序搜索库文件的路径表中
  • -library:链接时搜索由library命名的库
  • -g:吧调试信息加到可执行文件中,可启动程序调试工具gdb|

g++ |GNU c++ compiler |GNU C++语言编译程序 | |-|

gcj |GNU Compiler for Java |GNU Java语言编译程序 | |-|

yacc |Yet Another Compiler Compiler |另一个编译器的编译器 | |-|

guile |GNU Ubiquitous Intelligent Language for Extensions |扩展智能语言 | |-|

gas |GNU Assembler |GNU汇编程序 | |-|

php |PHP:Hypertext Preprocessor |超文本预处理器 | |-|

ld |LoaD |加载 | |-|

gdb |GNU DeBug |GNU 调试 | |-|

tcl |Tool Command Line |工具命令行 | |-|

makemake|制作|程序维护工具|

按makefile文件编译目录下的所有文件|-|

3、图形界面:

gnome |GNU Object Model Environment | | |

gdm |Gnome Display Manager | | |

gtk |Graphic user interface ToolKit | | |

qt |Toolkit(不说Q了,用Q只是因为在开发者的Emacs中Q特别漂亮) | | |

kde |K Desktop Environment | | |

lxde |Lightweight X11 Desktop Environment | | |

xfce |XForms Common Environment | | |

4、选项(声明:只是通常会使用的选项,并不一定是通用选项,使用时请注意):

名称 英文 英文含义 描述
-h : --help help 帮助
-v : --version version 版本

5、许可证:

gnu gpl |Gnu General Public License |Gnu 通用公共许可证 | |

gnu lgpl |Gnu General Lesser Public License |Gnu 一般公共许可证 | |

gfdl |Gnu Free Documentation License |Gnu 自由文档许可证 | |

agpl |Affero General Public License(或简写为Affero gpl) |Affero普通公共许可证 | |

apsl |Apple Public Source License |苹果公共资源许可证 | |

bsd |Berkeley Software Distribution license |Berkeley软件分配许可证 |BSD许可证 |

网络通信

ifconfig(network InterFaces CONFIGuring|网络接口配置)

显示或配置网络设备,查看IP|-|

ftp(File Transfer Protocol| 文件传输协议)

用于传输文件
ftp [hostname \| ip-address]

telnet(TELNET|远程登录协议|)

用于远程登录,明文传输,一般不使用
telnet [ip] [port]

nc9(etCat|网络管理工具|)

管理网络,如扫描端口等
nc -vz [ip] [port]

  • -v:可视化显示指令执行过程
  • -z:使用0输入/输出模式,表示zero,扫描时不发送任何数据|

ssh(Secure SHell|安全外壳协议|)

用于远程登陆,密文传输,只能使用shell,无界面
ssh [username@ip]

  • -p:指定端口号

ping(Packet INternet Groper|因特网包探索器|)

利用ICMP协议(网络层协议,所以不包含端口号)测试网络连接量,测试目的站是否可达及了解其有关状态
ping [ip]

curl(CommandLine Uniform Resource Locator|命令行URL(统一资源定位符)|)

用于数据传输,可用来请求 Web 服务器
curl [ip]

  • -H Content-Type: application/json:设置请求头
  • -X POST:指定 HTTP 请求的方法
  • -d ""--data:用于发送 POST 请求的数据体,如果数据以“@”开头,后紧跟一个文件,将post文件内的内容|

netstat(NETwork STATus|网络状态|)

用于显示网络状态
查看端口占用情况

  • -a--all 显示所有连线中的Socket
  • -n--numeric 直接使用IP地址,而不通过域名服务器
  • -p--programs 显示正在使用Socket的PID和program名称
  • netstat -anp:查看端口占用情况

traceroute(TRACE ROUTE|追踪路由|)

利用ICMP协议定位您的计算机和目标计算机之间的所有路由器
traceroute [ip]

nslookup(Name Server lookup|域名查询|)

用于查询 Internet域名信息或诊断DNS 服务器问题的工具
nslookup [name]

tcpdump(TCP DUMP|倾倒网络传输数据|)

抓包

可以使用如下命令来进行测试k8s,是否联通:

  • ping <servicename>
  • telnet <servicename> <port>
  • nc -vz <servicename> <port>:在Unix中,可以使用
  • curl http://<servicename>:<port>
  • nslookup dns.test:可以获知此域名是否能够正确获取地址。

终端学习

一、基本操作

1 在目录间游走

命令1:pwd
作用:获取当前所在路径
image

命令2:ls (list)
作用:列出当前目录下的所有文件
image

其他用法:ls -l (long)
作用:用长格式列出来
image

其他用法:ls -a
作用:列出文件(包括隐藏的文件)
image

其他用法:ls -al
作用:以长格式列出文件(包括隐藏的文件)
image

命令3:cd
作用:进行目录之间的相互跳转
Tips1:可以利用Tab键将目录名补全
Tips2:可以输入cd后,将文件拖入终端,这样可以显示该文件的目录
image

其他用法:cd (不带任何参数)
作用:返回家目录
image

其他用法:cd ~
作用:返回家目录
Tips:可以利用cd ~/Music快速到达该目录
image

Tips:利用cd ~Guest/进入Guest用户的家目录
由于本机没有其他用户登录,所以无法演示该效果

其他用法:cd -
作用:返回上一个目录,你总是可以在两个目录之间进行切换
image

其他用法:cd ..
作用:返回上一层目录
Tips:..表示上一层目录,而.表示当前目录
Tips:如果想要执行当前目录可执行文件a,需要输入./a,表示当前目录下的那个a
说明:这样做可以提高安全性,不会与命令的英文发生歧义
image

2 目录文件操作

命令1:mkdir [文件名] (make dir)
作用:新建文件夹
image

命令2:rmdir [文件名] (remove dir)
作用:删除文件夹
image

Tips:如果文件夹内不为空,则无法用rmdir删除文件夹
image

命令3:mv [原文件名] [新文件名] (move)
作用:把文件从一个地方移到另一个地方,但是当没有给出另外一个目录时,移动的现象就是为其更改了名字
image
image

命令4:rm [文件名] (remove)
作用:删除文件
注意:用rm删除掉的文件是无法从回收站中找回的!!
image

Tips:不能使用rm来删除文件夹
image

Tips:rm -rf [目录] (r-recursive递归的;f-force强迫的)
危险操作:使用rm递归删除文件夹及文件夹内所有内容,无法挽回
image

命令5:cp [带目录文件] [目标目录]
作用:复制黏贴
image

其他用法:cp -R [目录] [目标目录]
作用:用于带目录文件的复制

命令6:mv [原文件] [目标目录] (同命令3)
作用:移动
image

3 查看使用手册

命令1:man [命令]
例如:man cp
作用:查看该命令的使用手册
Tips:输入q来直接退出
image

二、操作历史

命令1:向上(向下)箭头
作用:查看上一个(下一个)命令,可以一直向前查看之前执行过的命令

命令2:!l
作用:找出与你最近一次的l开头的命令,并执行
image

命令3:history
作用:查看之前执行过命令的历史记录
Tips:碰到长一些的命令,可以输入一部分后,利用Tab进行补全
image

history记录存放在.bash_history文件中。

  • set -o history:开启历史记录
  • set +o history:可以关闭本次操作的历史记录。

三、进程管理

命令1:ps
作用:查看当前终端运行的程序
image

其他用法:ps ax
作用:列出这台电脑上正在运行的所有程序
image

命令2:top
作用:显示这台计算机上有哪些进程,它们占据了多少内存、CPU、负载等
Tips:按q退出
image

命令3:kill [PID]
作用:结束指定进程ID的进程
具体做法:先使用top命令查看想要结束进程的PID,然后使用命令kill [PID]
Tips:如果遇到无法杀掉的进程,输入命令sudo kill -9 [PID] (伪装超级管理员,强迫杀掉该进程),接着输入自己用户的密码(前提是自己这个用户具有sudo的资格)

image
默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。
TERM(或数字9)表示“无条件终止”;
因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。

四、重定向和管道

首先我们先做出一个A.java,输出一些简单的内容。
image

命令1(重定向):java A > out
作用:执行java程序A,把它在标准输出的结果写到名为out的文件里
image

命令2(重定向):java A < in
作用:执行java程序A,将in中的文本当做输入
image

组合命令1和2:java A < in > out
image

在执行一个程序的时候,它的标准输入和标准输出可以被我们重定向到文件里面,使它可以从文件里读数据,往文件里面写数据。

命令3(管道):ls | more
作用:可以让ls的输出拿过来当做右侧more的输入,而more是按照一屏一屏的显示,所以最后是把ls的结果按一屏一屏的显示出来
Tips:按q退出
image

命令4:more [文件名]cat [文件名]
作用:查看文件内容
image

命令5:cat > [文件名]
作用:向文件里写文本
Tips:按control+d
image

命令6:touch [文件名]
作用:仅仅使修改时间发生变化,而不改变文件内容
image

其他作用:touch [不存在的文件名]
效果:创建0字节的新文件
image

命令7:tail
作用:列出文件的最后几行
image

扩展命令:ls /usr/bin | tail -n 50
作用:列出最后50行
image

扩展命令:ls /usr/bin | tail -n 50 | more
作用:将得到的结果分屏显示
image

扩展命令:tail -f [文件名]
作用:若有程序持续向该文件写入内容,则可以实时查看该文件的内容

快捷键:control+z
作用:暂停一直在运行的程序

命令8:bg
作用:搭配control+z使用,把刚才暂停下来的程序放到后台运行
Tips:如果此时想中断该程序,只能使用px命令查看进程,获取到进程号后,根据进程号杀掉该进程

命令9:java A.java > log.txt &
作用:直接在后台运行A.java,并将输出结果写入log.txt


Linux 中直接使用cd进入which返回值所在的目录的方法
一、需要的Linux命令

1.Linux下将一个命令的输出作为另一个命令的参数:``(键盘左上的点,注意和引号不同)或者$()

2.提取文件目录中文件名之外目录的命令:dirname

二、实现直接使用cd进入到which得到的Android的adb文件目录的方法

方法1:cd `dirname $(which adb)`

方法2:cd $(dirname $(which adb))

三、返回原目录

方法1:cd -

方法2:cd $OLDPWD

五、万能的grep

命令1:grep 800 log.txt
作用:从log.txt中找出800位置的数据(即:查找"800"这个字符串)

命令2:grep -n 800 log.txt
作用:从log.txt中找出800位置的数据,并在前面加上行号(即:查找"800"这个字符串,并且打印"800"的所在行号)

命令3:grep (-n) Hello * (是否加上行号)
作用:从当前目录下的所有文件中找出出现过Hello的文件
image

命令4:ls /usr/bin | grep ls
作用:查看/usr/bin目录下面带ls的目录
image

命令5:wc
与命令4的组合:ls /usr/bin | grep ls | wc
作用:计算出单词的数量
image
18行 18个单词 148个字符

六、环境变量

前言:
我们在终端里能够执行的一条条命令(ls cd cp mv等等),都是放在/bin下面的一个个小程序。
之所以能够直接运行,不需要再其前面添加目录。
是因为将这些目录都添加到了环境变量PATH中

命令1:echo $PATHset | grep PATH
作用:查看环境变量
image

虽然东西很多,但是可以看出来他们之间使用了冒号分隔开

命令2:PATH=$PATH:~/bin
作用:将其他文件夹路径(本机用户下面的bin目录)添加到PATH
Tips:
这样做只是一次性的,也就是说在当前终端,是可以直接生效的,但是当你关闭后,重新打开终端,这个操作是不被保存的。
在/etc/profile这个文件是任何人打开终端都会执行的,是系统级的profile。
如果我们想自定义自己的profile,可以在自己的家目录下新建文件命名为:.profile,这个文件会在你打开终端时自动执行
我们将刚刚的命令2输入其中,然后保存退出(vim下使用:wq)
这样的话,在我们刚刚已经登录的终端里面它还是不起作用的,假如你希望它可以立刻生效,你可以使用source命令。


命令3:source
作用:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
例如:source .profile
至此,每次当你打开终端的时候,将会默认执行一遍.profile中的命令。

source命令:
source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:
source filename. filename
source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。

source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

举例说明:
1.新建一个test.sh脚本,内容为:A=1
2.然后使其可执行chmod +x test.sh
3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
4.运行./test.sh后,也是一样的效果
5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中


命令4:sudo vim ~/.bash_profile
按回车输入密码后用vi打开用户目录下的bash_profile文件。一定要用sudo,否则没权限保存文件。
image
按i键,开始编辑,例如这个MAVEN_HOME,

export MAVEN_HOME=/usr/local/apache-maven-3.5.0

export PATH=$PATH:$MAVEN_HOME/bin

编辑完之后,按ESC键,输入:wq,就可以保存退出了,如果不想保存就输入:q就可以了

七、网络配置

命令1:ifconfig
作用:列出本机所有的网络设备以及其上面的配置,主要指的是ip地址和mac地址
image

现在主要在连的就是en4,它是一个ip地址是192.168.1.105,然后它的状态时active(最后一行),而其他的状态都是inactive。

其他用法:ifconfig en4 down/up
作用:关闭(或打开)某个网络接口,比如en4
Tips:一般需要管理员权限,所以需要在前面加sudo命令

其他用法:sudo ifconfig en4 add 10.10.10.12 netmask 255.255.255.0
作用:给en4加入别的网段
image

其他用法:sudo ifconfig en4 delete 10.10.10.12
作用:给en4删除指定网段
image

其他用法:

ifconfig en0 down // 关闭网卡设备(这里假设是en0)
ifconfig en0 hw ether [MAC地址] // 修改MAC地址
ifconfig en0 up // 重启网卡

作用:临时修改MAC地址

其他用法:

ifconfig en0 down
ifconfig en0 192.168.169.245 netmask 255.255.255.0

作用:临时修改内网ip地址

命令2:ping
作用:检测网络是否是连通状态
image

如果能ping通,说明它们的网关之间是通的,当然也可以用它来检测到外网是不是通的

命令3:netstat
作用:显示各种网络相关信息

其他用法:netstat -l
作用:列出本机进行监听的端口

其他用法:netstat -lt
作用:只列出tcp的连接,同理在l后面跟上u的话,将会列出各种udp的监听端口

其他用法:netstat -s
作用:查看统计数据

其他用法:netstat -p
作用:列出进程信息,你可以了解是哪一个程序在哪一个端口上做些什么事情

其他用法:netstat -pc
作用:会显示出实时更新的进程信息

其他用法:netstat -r
作用:查看路由表
image

其他用法:netstat -i
作用:查看接口信息
image

扩展
to be continued(未完待续)...

posted @ 2018-11-29 18:05  Nemo&  阅读(1603)  评论(1编辑  收藏  举报