终端指令

1. 查找

1.1 查找确定的文件及位置

参考一 参考二

1.1.1 find指令
  • find命令是一个实时查找工具,通过遍历指定路径而完成对文件的查找;
  • 在使用该命令时,如果不选定参数,则在当前目录下查找子目录与文件并显示之
  • 另外,任何位于参数之前的字符串,都将视为欲查找的目录名。
  • 由于是实时遍历查找,find有如下特性:精确实时查找,速度慢可能只搜索用户具备读取和执行权限的目录。
    语法
find [OPTION]... [查找路径] [查找条件] [处理动作]
  • 查找路径:指定具体目标路径,默认为当前目录
  • 查找条件:指定的查找标准,可以是文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
    1. 根据文件名和inode查找
    2. 根据属主、属组查找
    3. 根据文件类型查找
    4. 根据逻辑组合条件查找
    5. 根据文件大小来查找
    6. 根据时间戳来查找
    7. 根据权限来查找
  • 处理动作:对符合条件的文件做操作,默认输出至屏幕
  • -print: 默认动作,显示至屏幕
  • -ls: 类似于对查找到的文件执行 ls -l 命令
  • -delete: 删除查找到的文件
  • -fls file: 查找到的所有长格式的信息保存至指定文件中
  • -ok COMMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令,且都会交互式要求用户确认
  • -exec COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令;
  • {}: 用于引用查找至的文件名称自身
  • find 传递查找到的文件至后面指定的命令时,查找到所有符号条件的文件一次性传递给后面的命令
  • 有些命令不能接受过多的参数,此时命令执行可能会失败,用 xargs 来规避此问题

举例:

sudo find / -name g2o

它会显示出搜索路径下所有匹配文件名的路径,在这里它显示了根目录所有名称为g2o的路径。

1.1.2 locate指令

简介

  • locate命令可以在搜寻数据库时快速找到档案,locate为模糊查找
  • 数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的
  • locate所找到的若是最近才建立或 刚更名的,可能会找不到
  • 在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
  • 在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

命令格式:

locate filename

参数
命令参数:

  • -e 将排除在寻找的范围之外。
  • -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
  • -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
  • -q 安静模式,不会显示任何错误讯息。
  • -n 至多显示 n个输出。
  • -r 使用正规运算式 做寻找的条件。
  • -o 指定资料库存的名称。
  • -d 指定资料库的路径
  • -h 显示辅助讯息
  • -V 显示程式的版本讯息

实例

locate 文件名
1.1.3 whereis

背景

  • whereis 命令只能用户程序名称的搜索,只搜
  • 二进制文件(参数-b)
  • man说明文件(参数-m)
  • 源代码文件(参数-s).
  • 如果省略参数,则返回所有信息。
    *和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高
      但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
whereis [-bmsu] 文件或者目录名
  • -b: 只找二进制格式的文件
  • -m: 只找在说明文件manual 路劲下的文件
  • -s: 只找source 源文件
  • -u: 查找不在上述三个选项中的其他特殊文件
      
    实例
    查询ifconfig文件名
whereis ifconfig
1.1.3 文件名

它不仅会像find显示出g2o文件路径,还会显示包含g2o文本的文件路径。

2. 统计

参考

2.1 统计文件数量

1、统计当前目录下文件的个数(不包括目录)

ls -l | grep "^-" | wc -l

2、统计当前目录下文件的个数(包括子目录)

ls -lR| grep "^-" | wc -l

3、查看某目录下文件夹(目录)的个数(包括子目录)

ls -lR | grep "^d" | wc -l

4、统计当前文件夹下叫某某的文件的数量

find . -name filename | wc -l

5、统计当前文件夹下指定类型的文件的数量

#例如这里需要找 js 文件的数量:
find -name "*.js" | wc -l

3. 软连接

3.1 创建软连接

ln -s 【目标目录】 【软链接地址】

3.2 删除

rm -rf 【软链接地址】
  • 软链接地址最后不能含有“/”,当含有“/”时,删除的是软链接目标目录下的资源,而不是软链接本身

3.3 修改

ln -snf 【新目标目录】 【软链接地址】

2. vim常用指令

1. 文本的第一行或者最后一行

  1. 跳转到第一行
:0 或 :1 或 gg
  1. 跳转到最后一行
:$ 或 Shift + g
  1. 跳到某一行
# 就可以定位到任意行n
:n

2. 移动到行首或者行尾

2.1 行首

  • 方法一:移到第一个字符
    注意,不要加入:,直接在esc后输入命令
^
  • 方法二:移到某行的行首,不管第一个字符
0

2.2 行尾

esc模式下,直接输入

$

2. 插入、复制、删除

参考一

2.1 复制

复制的命令是y,即yank(提起) ,常用的命令如下:

  • y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用;
  • yy 复制整行(nyy或者yny ,复制n行,n为数字);
  • y^ 复制当前到行头的内容;
  • y$ 复制当前到行尾的内容;
  • yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
  • yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)

2.2 剪切

剪切的命令是d,即deletedy命令基本类似,所以两个命令用法一样,包括含有数字的用法.

  • d 剪切选定块到缓冲区;
  • dd 剪切整行
  • d^ 剪切至行首
  • d$ 剪切至行尾
  • dw 剪切一个word
  • dG 剪切至档尾

2.3 粘贴

粘贴的命令式p,即put(放下)

  • p :小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
  • P 大写P代表贴至游标前(上)

2.4 撤销

在复制粘贴时,

  • 一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改)
  • Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别

2.5 添加新行

# 字母大写 O
O

注意

  • 在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。
  • 命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号.可以重复上一个命令。

3. 文件及文件夹指令

3.1 查看文件及文件夹大小

3.1.1. df

df -h 目录名

3.1.2. du

  1. 输出当前目录下的所有文件和文件夹的大小,并按照大小排序
du -h -d 1 | sort -h
  1. 显示当前目录下所有一级子目录的大小
du -h -d  1
  1. 显示当前目录的总大小
du -sh
  1. 显示当前目录下所有子目录的大小,递进到最大深度
du -h

3.2文件夹内文件数量

参考 当前目录下文件的个数(不含子文件夹):

ls -l | grep "^-" | wc -l

当前目录下文件的个数(含子文件夹里的),注意:R,代表子目录:

ls -lR | grep "^-" | wc -l

当前目录下文件夹的个数(不含子文件夹):

ls -l | grep "^d" | wc -l

当前目录下文件夹的个数(含子文件夹里的):

ls -lR | grep "^d" | wc -l

指定目录下(这里是/abc)文件的个数(不含子文件夹):

ls -l /abc| grep "^-" | wc -l

通常一个种子在某个路径(这里看作abc文件夹下)下载后是一个文件或是一个文件夹,可以变相统计种子数:

ls -l /abc | wc -l

命令解释:

  • ls:用于列出文件
  • grep:用于过滤信息
  • wc:用于统计各类信息,-l用于统计行数

3.3 压缩解压缩

参考

3.3.1 ZIP

zip可能是目前使用得最多的文档压缩格式。

  • 优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。
  • 缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。
3.3.1.1 压缩

我们可以使用下列的命令压缩一个目录:

zip -r archive_name.zip directory_to_compress
3.3.1.2 解压缩

下面是如果解压一个zip文档:

unzip archive_name.zip

3.3.2 TAR

Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。

3.3.2.1 压缩

下面是如何打包一个目录:

# tar -cvf archive_name.tar directory_to_compress
3.3.2.2 解压缩

如何解包:

# tar -xvf archive_name.tar.gz

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

# tar -xvf archive_name.tar -C /tmp/extract_here/

3.3.3 TAR

TAR.GZ
这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。

3.3.3.1 压缩

使用下面这种格式去压缩一个目录:

tar -zcvf archive_name.tar.gz directory_to_compress
3.3.3.2 解压缩:
# tar -zxvf archive_name.tar.gz

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

# tar -zxvf archive_name.tar.gz -C /tmp/extract_here/

3.3.4 TAR.BZ2

这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。

这个就是你如何使用tar.bz2进行压缩。

3.3.4.1 压缩
# tar -jcvf archive_name.tar.bz2 directory_to_compress
3.3.4.2 解压缩:

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

# tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/

3.3.5多个分卷合并

3.3.5.1 tar.gz包
  1. 文件形式一。(参考)[]
#连接文件为单独一个
cat filename.tar.gz.a* >> filename.tar.gz

#解压文件
tar xvf filename.tar.gz
  • 文件形式二.参考
1、合并使用spilt分割的文件 
   # cat sxrt5.0.dvd1.tar.gzaa  sxrt5.0.dvd1.tar.gzab  sxrt5.0.dvd1.tar.gzac >>sxrt5.0.dvd1.tar.gz

2、解压gz文件
   # gunzip sxrt5.0.dvd1.tar.gz

3、解tar包
   # tar xvf sxrt5.0.dvd1.tar

查看端口占用

参考一

  1. 查看所有的服务端口(ESTABLISHED)
netstat -a
  1. 查看所有的服务端口,显示pid号(LISTEN,ESTABLISHED)
netstat -ap
  1. 查看某一(**)端口,则可以结合grep命令:
netstat -apn | grep 9091

4. 用户及用户组

4.3 设置用户密码

sudo passwd root
[sudo] v100 的密码: 
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码

5. 查看相关指令状态

nvidia

通常存在显存占用,但是无进程问题

参考

  1. 安装psmisc
sudo apt-get install psmisc
  1. 查看当前占用显存的进程
sudo fuser -v /dev/nvidia*

会出现如下结果,其中PID即为占用显存的进程号

USER          PID    ACCESS COMMAND
/dev/nvidia0:                root            124        F...m python3
/dev/nvidiactl:             root            124        F...m python3
/dev/nvidia-uvm:        root           124        F...m python3
  1. kill 占用的进程,例如:
sudo kill 124
  1. 全部杀死
sudo fuser -v /dev/nvidia* |awk '{for(i=1;i<=NF;i++)print "sudo kill -9 " $i;}' | sh