Linux命令
本文总结Linux系统(主要是Arch Linux)中常用的操作和配置,以防遗忘。
软件位置
路径 |
内容 |
/opt/ |
放置第三方大型软件 |
/usr/share/applications/ |
已安装软件的可执行文件快捷方式 |
/usr/bin |
上述快捷方式的软连接,桌面环境的已安装软件目录就是基于这个文件夹的内容来获取的 |
桌面快捷方式的编写规范:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [Desktop Entry] Version= Encoding=UTF-8 Name= Comment= Exec=/usr/local/bin/qq Icon=/usr/local/share/tencent-qq/qq.png Terminal= Type=Application Categories=Application;Network;Tencent Software; StartupNotify=true Name[zh_CN]=腾讯QQ GenericName[zh_CN]= Comment[zh_CN]=腾讯QQ
|
环境变量
环境变量是一个具名对象,包含应用程序可以使用的数据。安装coreutils
软件包并使用printenv
命令可以显示当前环境变量的值。
在命令前可以用<key>=<value>
或env <key>=<value>
的形式临时指定环境变量,例如:
1 2
| EDITOR=vim xterm env EDITOR=vim xterm
|
环境变量包括系统级环境变量和用户级环境变量,原则上任何shell脚本都可以用于初始化环境变量,但按照约定应该仅在特定文件中配置环境变量,不同文件具有不同的限制。
系统级环境变量:
/etc/environment
与shell无关,无法使用脚本和通配符展开,该文件中使用<key>=<value>
的形式设置环境变量。
/etc/profile
仅初始化登陆shell的变量。
- 特定于shell的配置文件,例如Bash终端的
/etc/bash.bashrc
、Zsh终端的/etc/zsh/zshrc
。
用户级环境变量可在下面文件中定义:
- shell的用户配置文件,例如Bash终端的
~/.bashrc
、Zsh终端的~/.zshrc
。
- systemd用户环境变量读取自
~/.config/environment.d/*.conf
。
各种命令
删除命令
1 2 3
| rm -i # 交互式删除 rm -r # 递归删除,删除目录 rm -rf # 强制递归删除,谨慎使用
|
解压
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| tar -zxvf xx.tar.gz # 解压.tar.gz文件格式 tar -jxvf xx.tar.bz2 # 解压.tar.bz2文件格式
unzip -l xx.zip # 列出.zip压缩文件目录 unzip xx.zip -d /path/to/dir/ # 解压到某个目录,没有该目录会自动创建 unzip -O GBK xx.zip # 指定编码方式解压 convmv -f gbk -t utf8 --notest xxx -r # 转换编码方式,-r表示递归转换
unrar <命令l,p,t,e,x> xx.zip /path/to/dir/ <命令> l # 查看文件内容 p # 标准输出流 t # 测试文件 e # 解压文件,全部散落出来 x # 带目录解压文件
|
conda命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| conda --version/-v # 获取版本号 conda --help/-h # 获取帮助 conda env -h # 环境管理 conda info --envs # 列举出当前所有环境 conda env list # 列举出当前所有环境
conda create -n new_env_name [python=3.8] [numpy] # 创建新的python虚拟环境 conda create -n new_env_name --clone old_env_name # 复制环境 conda remove -n your_env_name --all # 删除某个环境 conda activate your_env_name # 进入某个环境 conda deactivate # 退出环境
conda env export > environment.yml # 当前环境写到environment.yml配置里 conda env create -f environment.yml # 从当前配置构建环境
conda list # 列举当前环境下的所有包 conda list -n your_env_name # 列举非活跃环境下的所有包 conda install -n env_name package_name # 为某个环境安装指定的包,如果要用pip安装,需要先激活当前的conda环境 conda install -c anaconda anaconda-navigator # 安装anaconda-navigator conda install mamba -c conda-forge # 从社区管理的conda-forge仓库中安装mamba mamba install numpy # mamba可以替代conda,加速包安装
|
文件权限
chmod命令控制用户对文件的权限,该命令调用分为三级:文件所有者u
、用户组g
、其他用户o
,每级包括三种权限:读r
、写w
、执行x
。
1
| chmod [r,w,x] [r,w,x] [r,w,x]
|
设置方式有三种:
- 使用三位二进制数
0-7
来表示每级的权限,r=4
、w=2
、x=1
,例如chmod 754
表示文件所有者设置rwx
权限,用户组设置rx
权限,其他用户设置x
权限。
- 符号设置,例如
chmod u=rx
为文件所有者设置r
和x
权限。
- 增加和删除权限,例如
chmod u+x
为文件所有者增加x
权限。
查看系统信息
1 2 3 4 5
| cat /proc/version # 查看系统版本 uname -e # 查看系统位数 cat /usr/local/cuda/version.txt # 查看cuda版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 # 查看cudnn版本 inxi -G # 查看显卡使用情况
|
pacman和yay
1 2 3 4 5 6
| pacman -S 软件包 # 安装软件 pacman -Rns 软件包 # 卸载软件,删除依赖 yay -S 软件包 # 安装软件 yay -Ss 软件包 # 搜索软件包 yay 软件包 # 搜索并安装软件包 yay # 更新系统及所有软件包
|
文件查找
locate
命令在数据库中查找,数据库默认每天更新一次,也可以使用updatedb
命令手动更新。find
不使用数据库进行查找,查找较慢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| locate <文件前几个符号> # 在数据库中搜索文件
find <选项> <文件名> # 在当前目录及其子目录下查找文件或者文件夹 <选项> -name/iname # 指定文件名字/指定文件名字(忽略大小写) -type # 指定文件类型,f普通文件,l符号链接,d目录,c字符设备,b块设备,f套接字,p Fifo -maxdepth # 指定最大的查找深度 -regex/iregex # 根据正则表达式来匹配字符/忽略大小写 ! # 否定,排除搜索到的文件 -size # 根据大小进行匹配,b块,c字节,w字,k千字,M兆字节,G吉字节。+表示大于,-表示小于 -delete # 删除文件 -user # 指定拥有的用户 -group # 指定拥有的组 -exec <指令> {} \; # 使用其他指令来处理找到的文件,{}表示找到的所有文件 \;表示命令结束 -ok <指令> {} \; # 同上,不过会给出提示
-atime/amin # 最后一次访问的时间,time天,min分钟,大于表示+,小于表示- -mtime/mmin # 文件最后一次修改的时间 -ctime/cmin # 文件数据元最后一次修改的时间,例如权限等。
-empty # 文件为空 \(<文件名> -o <文件名>\) # 或者 -perm -o=r # 找到所有只读的文件,perm指定权限。
<实例> find . -name "*.java"|xargs cat|grep -v ^$|wc -l # 代码行数统计, 排除空行 find . -type f -name "*" | xargs grep <内容> # 列出当前目录下,包含固定内容的文件
|
rsync
rsync用于在服务器之间传递文件,用法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| rsync <选项> <源地址> <目标地址> -r # 递归同步 -a # 递归同步,并同步元信息(比如修改时间、权限) -v # 显示输出细节,-vv输出更详细的细节,-vvv输出最详细的细节 -e "ssh -p 25884" # 指定协议,用ssh时可以省略,但如果有额外的参数则必须加e参数 -n # 不确定命令执行的结果,可以使用-n参数模拟执行的结果 --progress # 显示进度条 --delete # 使目标目录成为源目录的镜像,将额外的文件删除 --exclude # 排除某些文件,多个匹配模式可以使用多次exclude参数 --include # 指定必须同步的文件模式,通常和exclude配合使用
<实例> rsync -av -e "ssh -p 25884" root@10.184.17.2:/opt/data/private/mmyolo/work_dirs/ . --progress
|