shell脚本开头
#!/bin/bash
====================================================================
后台运行命令:nohup + &
nohup /home/lzf/anaconda3/bin/python3 HealthPunch.py >> output.log 2>&1 &
nohup python3 -u irx_mod_disks.py 8 > M8.log 2>&1 &
====================================================================
修改文本文件内容: sed -i ‘s/abc/xxx/g’ file
abc修改前的字符串;xxx是修改后的字符串 ;file是要被修改的文件
sed -i 's/1.0/5.0/g' inlist_project
====================================================================
查看电池状态
upower -i /org/freedesktop/UPower/devices/battery_BAT0
====================================================================
定时器:
编辑定时器任务
crontab -e
列出定时器任务
crontan -l
====================================================================
查看某进程
ps + | + grep
ps:查看进程
ps -ef 查看所有进程信息
|: 管道命令,左边命令的输出变为右边命令的输入
grep:查找文件里符合条件的字符串
ps -ef | grep python3
====================================================================
删除7天前的日志文件
sudo find /var/log/ -type f -mtime +7 -exec rm -f {} \;
====================================================================
与服务器传输文件
- 上传文件到服务器
scp /path/filename username@servername:/path
- 上传文件夹到服务器
scp -r /home/local_dirname username@servername:/path
- 下载文件
scp username@servername:/path/filename /home/local_dir
- 下载整个文件夹
scp -r username@servername:/path /home/local_dirname
====================================================================
wget下载文件
wget+空格+参数+url
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh
参数:
-c:断点续传
-b:后台下载
-O:下载到指定目录
-P:保存文件之前先创建指定名称的目录
-t:尝试连接次数
-r:递归下载
====================================================================
清除根目录下的软件缓存(.cache目录中)
清理旧版本的软件缓存
清理所有软件缓存
删除系统不再使用的孤立软件
这三个命令主要清理升级缓存以及无用包的
nsudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove
====================================================================
批量修改文件名
for name in `ls *`;do mv $name ${name%.dat}_irx.dat;done
若查看修改前后效果
for name in `ls *`;do echo $name ${name%.dat}_irx.dat;done
详解:
假设有变量 var=http://www.google.com/test.htm
1、 # 号截取,删除左边字符,保留右边字符。
echo ${var#//}
其中 var 是变量名,# 号是运算符,// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.google.com/test.htm
2、 ## 号截取,删除左边字符,保留右边字符。
echo ${var##/}
##/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.google.com/
结果是 test.htm
3、 %号截取,删除右边字符,保留左边字符
echo ${var%/}
%/ 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.google.com
4、 %% 号截取,删除右边字符,保留左边字符
echo ${var%%/}
%%/ 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
====================================================================
一键解决各种依赖问题
sudo apt-get install -f
====================================================================
gcc编译
gcc -o a.c a -lm
若需要 gprof 分析性能
gcc -o a.c a -lm -pg
====================================================================
在当前目录下递归搜索某类文件
find . -name "*.py"
查找指定文件中的特定字符串
find [location] -name "[search-term]" -type f | xargs [command]
find . -name "*.py" | xargs grep -i "str"
====================================================================
批量修改文本文件
sed -i '1,2d' `find . -name "*.spec"`
====================================================================
Linux按列合并两文件,列的拼合
awk 和 cut 都能把一个多列文件差分成单列文件,那么反过来也可以用paste命令把多个单列文件拼合成一个多列文件。
命令举例:
paste A B 将两个文件合并用tab键分隔开
paste -d’+’ A B 将两个文件合并指定’+'符号隔开
====================================================================
查看并截取文本文件中的部分数据
1.如果只想看文件的前100行,可以使用head命令,如
head -100 filename
2.如果你想查看文件的后100行,可以使用tail命令,如:
tail -100 filename 或 tail -n 100 filename
3.查看文件中间一段,你可以使用sed命令,如:
sed -n '100,200p' filename
这样你就可以只查看文件的第100行到第200行。
4、截取的文件可以用重定向输入到新的文件中:
head -100 filename >a.txt
====================================================================
统计文件夹数目
ls -l | grep "^d" | wc -l
ls -l:列出当前目录下的所有文件和文件夹。
grep “^d”:查找以字母"d"开头的行,这些行表示文件夹。
wc -l:计算行数,也就是文件夹的数量。
====================================================================
统计当前目录文件数目
ls -l | grep "^-" | wc -l