Linux笔记
shell命令
基础命令
man/info [prog]:查看帮助文档
echo xxxx:输出信息到控制台
sleep Number [单位(s)]:让系统休眠Number时间(默认是:s)
ps:显示当前进程状态
shutdown:关机
reboot:重启(shutdown -r now)
pwd:显示当前路径
cd <dir>:切换目录
ls [-a] [-lh] [file...]:列出当前目录下的文件(默认是所有文件)
-a:显示隐藏文件和文件夹
-l:将文件的详细信息都列出来(文件操作权限、创建用户、文件大小、上次修改时间...)
-lh(相当于ls -l -h):在前面-l命令的基础上以人类可读的形式展示信息(文件大小用K、M等表示)
alias <new_order>=<expression>:起别名,将一个命令表达式 <express>命名为 <new_order>
mkdir <new_dir>:新建文件夹
touch <new_file>:新建文件
rm [-i] [-f] [-r] <file>:删除文件
-i:交互模式,在删除文件前询问用户(一般会设置alias rm='rm -i')
-f:强制删除文件,忽略不存在的文件
-r:递归删除文件夹及其子文件夹和文件
rmdir <empty_dir>:删除空文件夹
ln [-s] <src> <des>:链接
-s:软链接(相当于Windows中的快捷方式,当源文件被删除后,目标文件不可用)无
-s时是硬链接,相当于复制源文件到目标文件
cat [-n] [-b] <file>:将文件中的字符输出到终端
-n:在每行输出前面添加行号
-b:与-n类似,但只对非空行前面添加行号
head [-c <number>] [-n <number>]:显示文件头部的部分内容
-c <number>:显示文件前面<number>字节的内容
-n <number>:显示文件前面<number>行的内容
解压缩命令:
unzip xxx.zip:解压xxx.zip文件
tar -zxvf xxx.tgz:解压xxx.tgz文件
tar: 处理归档文件
z: 使用gzip程序来解压缩
x: 表示解压缩(extract)
v: 解压缩是显示详细信息(verbose)
f: 表示后面跟着的是文件名
压缩命令:
tar -czvf xxx.tar /path/of/directory:压缩目录位xxx.tar压缩文件
c: 表示创建归档文件(create)
test命令
数值测试
| 参数 | 说明 |
|---|---|
| -eq | 等于则为真 |
| -ne | 不等于则为真 |
| -gt | 大于则为真 |
| -ge | 大于等于则为真 |
| -lt | 小于则为真 |
| -le | 小于等于则为真 |
# 示例
num1=100
num2=100
# 可以简写成:`if [ $num1 -eq $num2 ]`
if test $num1 -eq $num2
then
echo "Equal!"
else
echo "Not Equal!"
fi
文件测试
| 参数 | 说明 |
|---|---|
| -e 文件名 | 如果文件存在则为真 |
| -r 文件名 | 如果文件存在且可读则为真 |
| -w 文件名 | 如果文件存在且可写则为真 |
| -x 文件名 | 如果文件存在且可执行则为真 |
| -s 文件名 | 如果文件存在且至少有一个字符则为真 |
| -d 文件名 | 如果文件存在且为目录则为真 |
| -f 文件名 | 如果文件存在且为普通文件则为真 |
| -c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
| -b 文件名 | 如果文件存在且为块特殊文件则为真 |
if test -e <filename>
# 可以简写成:`if [ -e <filename> ]`
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
grep命令
sed命令
常用参数说明:
| 选项 | 说明 |
|---|---|
-n |
不自动打印输出(默认 sed 会打印每一行) |
-e |
允许多个编辑脚本(可选,多个脚本也可用 ; 分隔) |
-i |
直接修改文件内容(原地修改),否则只是输出 |
-
替换匹配字符
# 仅输出修改后的字符串,不对文件做修改,添加`-i`参数则会修改文件 sed 's/<old>/<new>/' <filename> # substitute,只将文件<filename>中所有行的第一个<old>字符串替换成<new>字符串 sed 's/<old>/<new>/g' <filename> # 替换文件<filename>中所有行的所有<old>字符串 sed '1s/<old>/<new>/g' <filename> # 替换文件<filename>中第1行的所有<old>字符串 sed '1,3s/<old>/<new>/g' <filename> # 替换文件<filename>中第1至3行的所有<old>字符串 -
删除匹配字符
sed '2d' <filename> # 删除第2行 sed '2,4d' <filename> # 删除第2到第4行 sed '/pattern/d' <filename> # 删除匹配某个模式的行 -
打印行
# 使用`-n`参数时不自动输出内容,通过`p`来指定输出内容 sed -n '2p' <filename> # 只打印第2行 sed -n '2,4p' <filename> # 打印第2到第4行 sed -n '/pattern/p' <filename> # 打印匹配的行 -
插入、追加指定字符
sed '2i\<插入的内容>' <filename> # 在第2行之前插入 sed '2a\<追加的内容>' <filename> # 在第2行之后追加 -
替换整行内容
sed '3c\<新的内容>' <filename> # 将第3行内容整行替换
流式控制
if
if <condition1>
then
<command1>
<command2>
...
elif <condition2> ;then # 当关键词写在一行时需要分隔符`;`
<command3>
...
else
<commandN>
fi
管道
使用符号
|表示
# example
echo "hello world" | head -c5
# out: "hello"
管道相当于将前面命令输出的结果送到后面的命令中作为输入,并且可以叠加多个管道
重定向
vim
sudo apt install vim:安装vim编辑器
vim <file>:使用vim编辑器编辑文件
详细教程可参考博客:https://www.cnblogs.com/scy157609962/p/18547210
ssh
-
安装ssh工具
sudo apt install openssh-serversudo systemctl start sshsudo systemctl enable ssh:设置ssh服务自启动sudo ufw allow sshsudo ufw reload:添加防火墙配置 -
创建ssh key
ssh-keygen -t rsa [-C "comment"]cat ~/.ssh/id_rsa.pubssh -T <username>@<ip>:测试ssh连接是否成功如果是在GitHub上添加ssh key,则命令是:
ssh -T git@github.com -
利用ssh key连接远程服务器(不需要验证登录密码)
ssh-copy-id [-i <ssh_public_key_file>] <username>@<ip>:将本地ssh公钥复制到服务器上 -
删除旧的密钥条目:
ssh-keygen -R <ip_address>
git
进程查询
sudo netstat -tulnp | grep :<port>
sudo kill -9 <PID>:杀死指定进程
VMWare虚拟机软件
Ubuntu虚拟机中挂在共享文件夹
-
在虚拟机设置中启用
共享文件夹,并添加主机文件夹路径 -
Ubuntu中挂在共享文件夹,运行命令:
sudo umount /mnt/hgfssudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=0 -o gid=0 -o umask=022
Docker
https://713.subts123.icu/api/v1/client/subscribe?token=efd64a8f64d20145d6400a9ce561df82
CUDA
清理CUDA缓存:
fuser -v /dev/nvidia* | awk '{for(i=1;i<=NF;i++)print "kill -9 " $i;}' | sudo sh
查看CUDA占用情况:
sudo lsof /dev/nvidia*
浙公网安备 33010602011771号