Ubuntu shell 常用指令 指南

Ubuntu shell 指南

  • Ubuntu常用指令
  • su和sudo:得到root权限
  • apt和dpkg:用于安装软件包
  • pip:用于安装python模块(不是linux里的默认指令,需自行安装sudo apt-get install pip)
  • ssh和scp:用于主机间的通信
  • zip,unzip,tar,rar,unrar:压缩和解压
  • du和df:查看磁盘的存储占用和查看文件系统的存储占用
  • which,whereis,locate,find:查找命令
  • 文件权限
  • 文件和文本操作
  • 进程
  • 网络
  • 查看电脑配置
  • vim简单操作
  • 其他
  • 参考

Ubuntu常用指令

石墨版: Ubuntu指南.

su和sudo:得到root权限

sudo passwd [root]  设定root密码
su [root]  切换到root用户
sudo COMMAND  切换到root用户,执行COMMAND,然后切换回当前用户
su USER  切换回普通用户USER

apt和dpkg:用于安装软件包

apt list  根据名称列出软件包
apt show PACKAGE 显示软件包细节
sudo apt-get install PACKAGE  安装软件包
sudo apt-get remove PACKAGE  卸载软件包
sudo apt-get check PACKAGE  检查依赖
sudo apt-get update  更新可用软件包列表
sudo apt upgrade  通过升级来更新系统
sudo apt-get install -f  修复依赖

sudo dpkg -i xxx.deb  运行deb程序进行安装

pip:用于安装python模块(不是linux里的默认指令,需自行安装sudo apt-get install pip)

sudo apt-get install python3-pip  # 安装python3下的pip

# 更新pip到指定版本
python3 -m pip install --user --upgrade pip==9.0.3  # (换成你想要的版本编号)

# pip临时加速
pip 加参数-i https://pypi.tuna.tsinghua.edu.cn/simple 

# pip永久加速
# Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
"""
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

"""

# windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini。内容同上。

pip install PACKAGE  # 安装包
pip uninstall PACKAGE  # 卸载包
pip search PACKAGE  # 搜索能安装的包
pip list  # 例出所有的已安装的包
pip show PACKAGE  # 展示已安装包的信息,可以指定单个包名展示  
pip check PACKAGE  # 检查依赖
pip --version  # 显示pip版本和位置
pip help  # 查看帮助
pip help install  # 查看install指令的相关option介绍

ssh和scp:用于主机间的通信

ssh USERNAME@IP -p PORTNUM  # 远程登录到主机
scp LOCAL_FILE USERNAME@IP:REMOTE_DIRECTORY  # 复制本地文件到远程主机
scp -r LOCAL_FILE USERNAME@IP:REMOTE_DIRECTORY  # 复制本地文件夹到远程主机
sudo ufw dissable  # 关闭防火墙
sudo ufw enable  # 开启防火墙

sudo apt-get install vsftpd  # 安装sftp
service vsftpd starrt  # 启用sftp

zip,unzip,tar,rar,unrar:压缩和解压

gzip  # gzip是Linux使用最广的压缩指令
gzip [-cdtv#] FILENAME
"""
-c :将压缩的数据输出到屏幕上
-d :解压缩
-t :检验压缩文件是否出错
-v :显示压缩比等信息
-# : # 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
"""

bzip2  # 提供比gzip更高的压缩比
bzip2 [-cdkzv#] FILENAME
"""
-k :保留源文件
"""

xz2  # 提供比bzip2更佳的压缩比
xz [-dtlkc#] FILENAME

tar  压缩打包
tar [-z|-j|-J][cv][-f NEW_TAR_FILE] FILE  # 打包压缩
tar [-z|-j|-J][tv][-f TAR_FILE]  # 查看
tar [-z|-j|-J][xv][-f TAR_FILE] [-C DIR]  # 解压
"""
-z :使用 zip
-j :使用 bzip2
-J :使用 xz
-c :新建打包文件
-t :查看打包文件里面有哪些文件
-x :解打包或解压缩的功能
-v :在压缩/解压缩的过程中,显示正在处理的文件名
-f : filename:要处理的文件
-C DIR : 在特定目录解压缩
"""

# 例1
tar -jcv -f file.tar.bz2 file  # 压缩
tar -jxv -f file.tar.bz2 -C ./file  # 解压
tar -zcv -f dir.tar.gz dir1 dir2 ... # 多个文件压缩

# 例2
tar -zcv file | split -b 4000M -d -a 1 - file.tar.gz.  # 压缩成多个压缩包
# 使用split命令
"""
-b 4000M 表示设置每个分割包的大小,单位还是可以k
-d 参数指定生成的分割包后缀为数字的形式
-a x来设定序列的长度(默认值是2)
"""

cat file.tar.gz.* | tar -zxv file  多个压缩包解压

du和df:查看磁盘的存储占用和查看文件系统的存储占用

du -s  # 仅显示总计,只列出最后加的总值
du -c  # 除了显示个别文件或目录的大小外,还显示一行目录和文件的总和大小
du -h  # 以k,m,g为单位,提高信息的可读性
du --max-depth=1  # 查看当前目录所有(一级)文件的大小
du -sh *.mkv  # 显示每个mkv文件的大小
du -csh *.mkv  # 显示每个mkv文件的大小和总和

df -h  # 以k,m,g为单位,提高信息的可读性
df -T  # 显示文件系统的类型

which,whereis,locate,find:查找命令

#which在PATH变量制定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果
#whereis只能用于程序名的搜索,而且只能搜索二进制文件(-b),man说明文件(-m),源代码文件(-s)。若省略,则返回所有信息
#locate配合数据库查看文件位置。linux会将系统内所有文件记录在一个数据库文件中,电视该数据库并不是实时更新
#find实际搜寻硬盘查询文件名称

find . -name "*.conf"  当前目录查找扩展名为.conf的文件
updatedb  更新数据库
locate STRING  快速查找系统数据库中指定的内容
which python  查询python
whereis python  查询python

文件权限

chmod [ugoa][+-=][rwx] FILE|DIR  # 改变指定目录或文件的权限
# u代表该文件所有者,g代表该文件所有者的同组用户,o代表其他,a表示这三者皆是
# r可读,w可写,x可执行
chomd u+x test  # 该文件的所有者增加可执行的权限

# 用数字表示,规定r=4,w=2,x=1
chmod 777 file  # 三种用户都赋予可读可写可执行的权限
chown -R 用户名[:组名] 文件名或目录  # 改变指定目录或文件的所属用户,-R代表递归地改变目录下的所有文件

文件和文本操作

ls [-adl] FILE|DIR # 列出文件或者目录信息
"""
-a :列出全部的文件
-d :仅列出目录本身
-l :以长数据串行列出,包含文件的属性与权限等等数据
"""

cd DIR # 更换当前路径

mkdir [-mp] DIR # 创建目录
"""
-m :配置目录权限
-p :递归创建目录
"""

rmdir [-p] DIR # 删除目录,目录必须为空
"""
-p :递归删除目录
"""

touch [-acdmt] FILENAME # 更新文件时间或者建立新文件
"""
-a : 更新 atime
-c : 更新 ctime,若该文件不存在则不建立新文件
-m : 更新 mtime
-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date="日期或时间"
-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
"""

cp [-adfilprsu] SOURCE DESTINATION # 复制文件
"""
-d :若来源文件为链接文件,则复制链接文件属性而非文件本身
-i :若目标文件已经存在时,在覆盖前会先询问
-p :连同文件的属性一起复制过去
-r :递归持续复制
"""

rm [-fir] FILE|DIR # 删除文件或者目录
"""
-r :递归删除
"""

mv [-fiu] SOURCE DESTINATION # 移动文件
"""
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
"""

ln [-sf] SOURCE DESTINATION # 创建链接
"""
-s :默认是 hard link,加 -s 为 symbolic link
-f :如果目标文件存在时,先删除目标文件
"""

cat [-n] FILENAME # 获取文件内容
"""
-n :打印出行号,连同空白行也会有行号,-b 不会
"""

grep str /tmp/test # 在文件/tmp/test中查找str
grep ^str /tmp/test # 在文件/tmp/test中查找以str开始的行

ls -ld */ # 显示当前目录的所有目录文件
ls -l | grep '^d' # 显示当前目录的所有目录文件

wc -l # 统计文件行数
wc -w # 统计单词数量

ls -l | wc -l # 统计当前目前的文件数量,注意要减去“总用量”那一行

cp -a dir1 dir2 # 复制目录
mv dir1 dir2 # 移动/重命名目录
mkdir -p /tmp/dir1/dir2 # 创建一个目录树
rm -f file1 # 删除文件
rm -rf dir1 # 删除目录

ln -s /real_file /soft_link # 创建软链接

进程

ps -e  # 显示所有进程
ps -f  # 全格式显示进程
ps -u 'liaohuqiang' | grep 'tmux' # 显示指定用户执行的进程,并匹配出包含'tmux'的那一行进程
ps -ef | grep 'python' | grep -v grep  # 把grep命令排除掉
ps -ef | grep 'python' | grep -v grep  | awk '{print $2}'  # 提取进程号

pstree -A #查看进程树

kill -2 PID  # 类似ctrl+C,在程序结束之前能够保存相关数据,再退出
kill -9 PID  # 直接强制结束进程

reboot  # 重启
shutdown -r now  # 立刻重启
shutdown -r 30  # 30分钟后重启
shutdown -r 23:00  # 晚上11点重启

halt  # 立刻关机
poweroff  # 立刻关机
shutdown -h now  # 立刻关机
shutdown -h 30  # 30分钟后关机

shutdown -c  # 取消shutdwon的重启或关机

command &  # 使指令成为后台任务
nohup  # 不挂断地运行命令,通常和&一起用,输出将附加到目录的nohup.out
jobs -l  # 列出任务列表,l表示显示进程号(只查看当前终端的,关闭终端后无法看到)
fg  # 把最近一个job切换到前台
fg n  # 把某个job切换到前台
ctrl z  # 挂起某个前台进程
bg  # 把作业放到后台运行


top  # 动态显示进程信息
top -i  # 不显示任何闲置或无用的进程
"""
k  杀死某进程
n  改变显示的进程数量
u  显示指定用户
P  按CPU使用情况排序
q  退出
"""


lscpu  # 查看cpu信息概要

# 监视cpu
# 先安装matstat
sudo apt install sysstat
# 每两秒查看一次
mpstat  -P ALL 2

网络

netstat  # 显示网络情况
netstat -a  # 列出所有端口
netstat -l  # 只显示监听端口
netstat -t  # 列出所有tcp端口
netstat -p  # 显示使用该端口的pid和程序名称
netstat -n  # 直接使用ip地址,不通过域名服务器


# 找出程序运行的端口 
netstat -anp | grep ssh


# 找出运行在指定端口的进程 
netstat -anp | grep ':80'


ifconfig  # 查看网卡信息

查看电脑配置

free -m   # 查看内存使用情况
df  # 查看磁盘使用情况
cat /proc/cpuinfo  # 查看cpu信息
lspci | grep VGA  # 查看显卡
nvidia-smi  # 查看英伟达系列显卡的使用情况
nvidia-smi -L  # 查看显卡型号
watch -n 1 -d nvidia-smi  # 实时监控nvidia-smi,每隔一秒刷新一次,d表示高亮 
cat /proc/driver/nvidia/version  # 查看显卡驱动
cat /etc/issue  # 查看ubuntu版本

vim简单操作

vim可以分为三种模式:命令模式(Command mode)插入模式(Insert mode)底线命令模式(Last line mode)
Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。

在Command mode下按‘i’、‘a’或‘o’三键就可进入Insert mode。这时候您就可以开始输入文字了
i: 插入,从目前光标所在之处插入所输入的文字
a: 增加,目前光标所在的下一个字开始输入文字
o: 插入新的一行,从行首开始输入文字
Insert的切换→Command mode,按Esc
您目前处于Insert mode,您就只能一直打字。假如您发现打错字了,想用光标键往回移动,将该字删除,就要按ESC键转换回Command mode,再删除文字

在Command mode下,可按冒号“”键入入Last line mode,例如:
:w filename (输入“w filename”,将文章存入指定的文件名filename)
:wq (输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
:q! (输入“q!”,强制离开并放弃编辑的文件)

x:每按一次删除光标所在位置的后面一个字符
dd:删除光标所在行
yy:复制光标所在行
u:假如您误操作一个指令,可以马上按u,回复到上一个操作

其他

date  # 显示时间
whoami  # 显示当前用户名
who  # 目前登录系统的用户信息
curl 'url' -O --progress  # 下载文件,-O代表保存文件(如果没有则输出到屏幕), --progress表示会显示进度条 
# (curl不是linux的默认自行,需自行安装apt install curl)
echo $SHELL  # 查看系统使用的是哪种shell
echo $PATH  # 查看环境变量

xdg-open filename  # 用默认应用程序打开文件

python run_generation.py | tee vggTrainResult  # 重定向到文件 

cat /usr/local/cuda/version.txt  # 查看cuda版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2  # 查看cudnn版本

参考

https://www.cnblogs.com/liaohuiqiang/p/7191462.html

你可能感兴趣的:(linux,linux,ubuntu,shell,指南,指令)