- rename批量更改文件后缀名
# 更改当前文件夹下的JPG文件为jpg文件 rename 's/\.JPG/\.jpg' *
-
zip打包
# zip分卷打包文件夹下内容 # 每隔100m建立一个分卷 # 执行命令后,创建Main.zip Main.z01 Main.zo2 ... zip -s 100m -r Main.zip ./Main # 每隔2g建立一个分卷 zip -s 2g -r Main.zip ./Main # 切分已有zip文件 # 执行命令后,创建new.zip new.z01 new.z02 ... zip Main.zip --out new.zip -s 2g # 将分卷文件合并成一个单独文件--linux平台解压分卷zip文件需要先合并再调用unzip解压 # 执行命令后将生成一个由new.zip new.z01 new.z02 ...合并而成的Main.zip单一打包文件 zip -s 0 new.zip --out Main.zip # 打包大文件下的部分文件夹 # 文件夹目录结构如下: # dir_test: # |--sub_dir1: # | |--t11.txt # | |--t12.txt # |--sub_dir2: # | |--t21.txt # | |--t22.txt # |--SUB_DIR3: # |--t31.txt # |--t32.txt # 打包部分文件夹(sub_dir1与sub_dir2),不包含文件夹中文件 zip sub_dir12.zip ./dir_test/sub_dir* zip sub_dir12.zip ./dir_test/sub_dir1 ./dir_test/sub_dir2 # 打包部分文件夹(sub_dir1与sub_dir2),包含文件夹中文件 zip sub_dir12_r.zip -r ./dir_test/sub_dir* zip sub_dir12_r.zip -r ./dir_test/sub_dir1 ./dir_test/sub_dir2 # zip打包文件夹(./Main)与文件(text.txt)的组合 zip -r Main.zip ./Main text.txt # zip打包文件夹下所有内容 zip -r Main.zip ./Main zip Main.zip ./Main/* # 注:打包的sub_dir12.zip与sub_dir12_r.zip直接使用unzip解压后的目录是dir_test
-
unzip解压打包文件
# 将Main.zip文件解压到当前文件夹 unzip Main.zip -d ./ unzip Main.zip # 将解压密码为12345678的压缩包Main.zip加压至当前文件夹 unzip -P 12345678 Main.zip
-
匹配文件删除
ls | grep 12[5-9]\\.pth | xargs rm
-
显示前/后n个或n行输出
ls | head -n 5 ll | head -n 5 ls | tail -n 5 ll | tail -n 5
-
screen命令
# 查看后台的screen会话情况 screen -ls # 开一个名为test的会话 screen -S test # 创建可以自动保存日志名为test的screen会话,当前会话会自动保存所有输出到当前目录的screenlog.0文件中 screen -L -S test # 上一种方法中,若不同的会话在相同目录,则不同的会话输出的日志会同时指向screenlog.0, # 会出现日志错乱或覆盖,改进方式是按窗口名生成日志。具体操作:在/etc/screenrc文件最后添加 # logfile ./screenlog_%t.log,然后按照以下命令创建会话,日志将会保存至screenlog_window.log, # -t指定会话窗口名与%t对应 screen -L -t window -S test # 进入test窗口 screen -r test # 进入Attached状态的下的会话 screen -d -r test # 删除无法使用(Dead)的screen会话 screen -wipe # 在相应的screen外部删除指定名称的screen会话 screen -X -S test quit # 退出并删除窗口 exit # 进入screen窗口后按下一下按键将会将会话的输出记录到用户目录下,日志文件为hardcopy.0,此日志文件需要及时备份 Ctrl + A -> H # 退出当前窗口(当前窗口内的程序进入后台运行状态) Ctrl + A -> D # 进入copy模式可以使用Page Up、Page Down、↑、↓等进行翻页 Ctrl + A -> Esc -> Page Up | Page Down / ↑ | ↓ # 与上面类似,但此处只能使用↑|↓键 Ctrl + A -> F -> ↑ | ↓
-
du命令
# 打印当前文件夹及其所有子文件夹所占容量 du # 打印某个特定文件所占容量 du -sh ./data.txt # 打印当前文件夹所占的总容量 du -sh ./ # 打印指定文件夹所占的容量--打印当前文件夹下的zhangxiang文件夹所占的容量 du -sh ./zhangxiang/ # 打印当前文件夹下所有的一级文件夹所占硬盘的容量 du -sh ./*
-
conda命令
# 创建名为pytorch的conda环境 conda create -n pytorch # 创建一个指定python版本的conda环境 conda create -n pytorch python=3.6 # 基于已有的base环境创建名为pytorch的新环境 conda create -n pytorch --clone base # 删除环境 conda remove -n pytorch --all # 激活环境 conda activate pytorch source activate pytorch # 打印已经创建的conda虚拟环境 conda env list # 安装python包 conda install opencv-python conda install opencv-python==4.11 # 指定源安装python包 conda install -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ opencv-python conda install --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ opencv-python # 本地包安装(本地包可以是conda格式也可以是tar格式,此处以conda格式的pytorch为例) conda install --use-local .\pytorch-1.4.0-cpu_py36ha775e86_0.conda # 卸载包 conda uninstall tensorflow conda uninstall tensorflow==2.0 conda remove tensorflow conda remove tensorflow==2.0 # 打印当前conda环境下已经安装的python包 conda list # 导出当前环境(pytorch环境)到当前目录 conda env export > pytorch.yaml # 从环境包文件导入环境 conda env create -f pytorch.yaml # 若导入环境出错,一般情况下原始conda环境与目前的环境下的conda环境不是同一个版本 # 并且此时一般是待导入环境下的conda版本低,执行以下命令更新conda conda update conda # 配置conda包仓库(以配置清华大学源为例) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 显示已经配置的conda包仓库 conda config --show channels # 查找包来源(以pytorch为例) conda search pytorch
-
rm命令
# 删除文件 rm ./data.txt # 删除文件夹 rm ./data/ -r
-
scp命令
# 从本地向端口为56、ip为1.2.3.4服务器的/root/zhangxiang/data/下远程发送VOC2007文件夹 scp -P 56 -r ./VOC2007/ root@1.2.3.4:/root/zhangxiang/data/ # 远程发送文件 scp -P 56 ./data.txt root@1.2.3.4:/root/zhangxiang/data/ # 远程接收文件夹 scp -P 12 -r root@3.4.5.6:/root/zhangxiang/data/ ./data/ # 远程接收文件 scp -P 12 root@3.4.5.6:/root/zhangxiang/data/data.txt ./data/
-
ftp命令与目录下载
# 使用ftp登录域名ftp, 假设域名为www.xxx.com(域名与地址等效) ftp www.xxx.com # 下载单个文件 ftp>get test.txt # 下载多个文件 ftp>mget test.txt test.dat ftp>mget test.* # 打开/关闭ftp命令执行提示(交互模式) ftp>prompt # 退出ftp ftp>quit # 注:若ftp服务未提供特定的访问账户与密码则可以使用匿名账户 # 提示输入用户名后,使用通用的匿名账户登录,匿名账户名称为anonymous # 提示输入密码后直接回车,因为匿名账户的密码为空 # 使用wget命令下载ftp的整个目录 # 假定ftp服务器地址为1.2.3.4端口为56,用户名为download,密码为download wget ftp://1.2.3.4:56/* --ftp-user=download --ftp-password=download -r
-
统计目录下所有代码行数
# 统计C语言代码行数,其他语言的代码可以更改指令中的后缀名实现 find . "(" -name "*.c" ")" -print | xargs wc -l | grep total | awk '{sum += $1};END {print sum}'
-
df命令
# 查看硬盘容量使用信息 df -h df -hl
-
多线程下载
# 线程数设置为:-n 8(若不设置的话默认为4线程下载,一般情况使用默认即可), 字符显示下载进度: -a axel -n 8 -a https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2018.3a/kali-linux-e17-2018.3a-amd64.iso
-
测试网络带宽
# 安装测试工具 pip install speedtest-cli # 测试带宽 speedtest-cli
-
定位软件安装位置
# 定位程序位置--此处以定位axel程序为例 # 仅定位执行程序位置 which axel # 定位执行程序及其相关依赖的位置 whereis axel
-
远程登录
# 以root用户远程登录端口号为1234网络地址为192.168.0.1的服务器 ssh -p 1234 root@192.168.0.1
-
sftp命令
# 假设用户为sftp-user,服务器域名为sftp.com,密码为sftp-download # 用户登录 sftp sftp-user@sftp.com password:sftp-download # 列出sftp服务器上当前文件夹下的目录与文件 sftp>ls # 下载单个文件 sftp>get test.txt # 上传单个文件 sftp>put test.txt # 下载整个目录(假设有一个Dataset目录) sftp>get -r Dataset # 上传整个目录 sftp>put -r Dataset # 下载当前目录下的所有zip压缩文件 sftp>get *.zip # 上传当前目录下的所有zip压缩文件 sftp>put *.zip
-
显示linux进程信息
# 显示进程状态 ps -aux # 动态显示进程信息 top
-
显示端口占用信息
# 查询特定端口占用情况 lsof -i:5000
- 文件与文件夹拷贝
# 文件拷贝 拷贝当前目录下的test.txt文件到/home目录, -v表示显示拷贝细节 cp -v ./test.txt /home/ # 文件夹拷贝 拷贝./test文件夹到/home目录下 cp -v -r ./test /home/ # 文件备份 cp ./etc/sudoer ./etc/sudoer.bak
-
目录与文件统计
# 注意:(1)ls -l列出的结果中没有.目录与..目录(当前目录与上级目录) # (2)ls -l列出的结果中第一行为total行,当文件夹下为纯文件或者纯文件夹时也必须使用 # grep "^-"或grep "^d"进行结果筛选,否则统计的数量结果会多1 # (3)ls -l可以使用ll替代,不同的是ll的输出结果中有.目录与..目录,但没有total行, # 若不使用grep "^-"或grep "^d"进行结果筛选,则结果可能会多2 # 查看当前目录下的文件数量(不包含子目录中的文件) # grep "^-" 使用正则匹配,其中 ^ 表示锚定行的开始,- 表示文件,^- 表示匹配以 - 开始的行,即匹配文件 ls -l | grep "^-" | wc -l # 查看当前目录下的文件数量(包含子目录中的文件) # -R 表示循环迭代子目录 ls -lR | grep "^-" | wc -l # 查看当前目录下的文件夹目录个数(不包含子目录中的目录) # ^d 表示匹配以 d 开始的行,即匹配目录 ls -l | grep "^d" | wc -l # 查看当前目录及子目录下的文件夹目录个数 ls -lR | grep "^d" | wc -l # 查询指定目录下的文件数量(包含子目录,若不统计子目录则去掉-R即可) # 查询data文件夹下的文件数量 ls -lR ./data/ | grep "^-" | wc -l
- mv命令
# 文件夹重命名,将dir1命名为dir2 mv dir1 dir2 # 将文件t1.txt t2.txt移动至dir_test目录下 mv t*.txt ./dir_test
- chmod命令
# 给文件增加可执行权限 chmod 777 zip_ctrl.py
- 上传与下载命令
# 文件上传 rz # 文件下载,假设下载当前文件夹下的test.txt sz test.txt
-
文件切割与拼接
# split 文件切割,将大文件切割为多个小文件 # 按大小切割,单位为K、M等 # 按200M为单位切割,结果为smallfile.tara、smallfile.tarb、... split -b 1M largefile.tar smallfile.tar # 按行切割,单位为文本行,切割目标为文本文件(一般用不到) # 按100行为单位切割,结果为smallfile.csva、smallfile.csvb、... split -l 100 largefile.csv smallfile.csv # cat 文件拼接,将多个文件合并为单个文件 # 将smallfile.tara、smallfile.tarb、...合并为单个文件 cat smallfile.tar* > largefile.tar
- nohup后台执行
# 后台执行 # nohup 需要后台执行的命令 > 后台输出重定向文件路径 2>&1 & nohup python test.py > ./nohup.out 2>&1 & # 注:0 – stdin (standard input,标准输入) # 1 – stdout (standard output,标准输出) # 2 – stderr (standard error,标准错误输出) # 2>&1解释: # 将标准错误(2)重定向到标准输出(&1), # 标准输出(&1)再被重定向输入到myout.file文件中 # &解释: # 表示后台运行,不霸占交互命令行
- 关闭进程
# 根据进程id关闭进程(假设进程id为2346) kill 2346 # 强制关闭进程 kill -9 2346 # 根据进程名关闭进程(假设进程名为io500) pkill io500 # 根据进程名强制关闭进程 pkill -9 io500 # 根据进程名关闭同一个程序的所有进程(假设存在多个io500进程) kill -9 $(pidof io500) killall -9 io500 pkill -9 io5 # 注:1、killall关闭进程要求指定精确的进程名,其不会误删名字相似的进程,推荐使用 # 2、pkill关闭进程不要求指定精确的进程名,只需包含连续的进程名关键字即可,如io5与io500,该方法容易误删名字类似的无关进程,一般情况不推荐使用
Linux基础命令使用笔记
于 2019-10-29 08:49:26 首次发布