grep
cat file | grep -rn "string"
grep -rn "string" file
-r
递归所有子目录
-n
显示行号
-o
只输出匹配的字符
-E
扩展正则表达式
-v
反向选择
find
# 当前文件夹查找
find . -name file
find . -name "*.so"
find . -name file | xargs rm
find . -name file | xargs rm
find . -name file | xargs grep -rn "txt"
find . -maxdepth 2 -name file | xargs grep -rn "txt"
# 前天修改的文件
find . -mtime 2 -name file
# 近2天内(含前天)修改的文件
find . -mtime -2 -name file
# 2天前修改的文件
find . -mtime +2 -name file
# 查找并统计数量
find . -maxdepth 2 -name file | xargs grep -rn "txt" | wc -l
copy / mv
-r
复制文件夹
-u
只有文件不同时才复制,更新方式
chmod
chmod +x file
增加可执行权限
chmod 777 file
所有权限
chmod 777 -R dir
所有子目录权限
echo
下面的特性依赖于,echo添加
-e
选项,意为解析字符串中的反斜杠
e:特殊颜色
echo -e "\e[4x;3xm string \e[0m"
-
\e[0m
为ANSI控制码,表示结束输出有颜色的字符 -
\e[4xm;3xm
为ANSI控制码,表示开始输出有颜色的字符 -
4x
为表示背景颜的一组数字,x
取值为0到7,分别代表的颜色如下:
40
表示背景为黑色
41
表示背景为红色
42
表示背景为绿色
43
表示背景为黄色
44
表示背景为蓝色
45
表示背景为紫色
46
表示背景为浅蓝色
47
表示背景为灰白色 -
3x
为表示字体颜色的一组数字,x取值为0到7,分别代表的颜色如下:
30
表示黑色
31
表示红色
32
表示绿色
33
表示黄色
34
表示蓝色
35
表示紫色
36
表示浅蓝色
37
表示灰色 - 其它常用的ANSI控制码
\e[1m
让输出的字符高亮显式
\e[3m
输出斜体字
\e[4m
给输出的字符加上下划线
\e[5m
让输出的字符闪烁显式
\e[7m
设置反显效果,即把背景色和字体颜色反过来显示
\e
也可以用\033
代替
可以出现多次配置,如:echo -e "\e[41m\e[5m string \e[0m"
,红色闪烁
清屏:echo -e "\e[2J"
n:换行
echo -e "line0\nline1"
ln
- ln -s src symbolic_link
src symbolic_link需要时绝对地址,不能是相对地址
删除符号链接只是删除了链接,文件并不会变化
tar
使用bzip或gzip压缩或解压
-c
新建打包文件
-t
查看打包文件的内容含有哪些文件名
-x
解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j
通过bzip2的支持进行压缩/解压缩
-z
通过gzip的支持进行压缩/解压缩
-v
在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename
filename为要处理的文件
-C dir
指定压缩/解压缩的目录dir
常见组合:
- 压缩:
tar cvf filename.tar
要被处理的文件或目录名称 - 解压:
tar xvf filename.tar
[-C dir
]
gcc
-o
output之意,用于指定生成一个可执行文件的文件名
-c
用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序
-I
增加编译时搜索头文件的路径
-L
增加编译时搜索静态连接库的路径
-S
把源文件生成汇编代码文件
-lm
表示标准库的目录中名为libm.a的函数库
-lpthread
连接NPTL实现的线程库
-std=
用于指定把使用的C语言的版本
whereis
- 按系统路径查找文件
whereis file
ldd
- 查找库依赖
ldd exe/so
历史命令
history
显示历史命令
ctrl + r
查找历史命令
条件
-
文件属性
-e filename
如果 filename存在,则为真
-d filename
如果 filename为目录,则为真
-f filename
如果 filename为常规文件,则为真
-L filename
如果 filename为符号链接,则为真
-r filename
如果 filename可读,则为真
-w filename
如果 filename可写,则为真
-x filename
如果 filename可执行,则为真
-s filename
如果文件长度不为0,则为真
-h filename
如果文件是软链接,则为真
filename1 -nt filename2
如果 filename1比 filename2新,则为真。
filename1 -ot filename2
如果 filename1比 filename2旧,则为真。 -
整数变量表达式
-eq
等于
-ne
不等于
-gt
大于
-ge
大于等于
-lt
小于
-le
小于等于 -
字符串变量表达式
if [ $a = $b ]
如果string1等于string2,则为真
if [ $string1 != $string2 ]
如果string1不等于string2,则为真
if [ -n $string ]
如果string 非空(非0),返回0(true)
if [ -z $string ]
如果string 为空,则为真
if [ $sting ]
如果string 非空,返回0 (和-n类似) -
逻辑非
if [ ! -d $num ]
如果不存在目录$num -
逻辑与
if [ 表达式1 –a 表达式2 ]
-
逻辑或
if [ 表达式1 –o 表达式2 ]
文件编辑器
vi
esc
命令模式
i
编辑模式
:wq
保存并退出::
d2d
删除 2行
G
跳到最后一行
gedit
- 可视化编辑器
文件比较
- meld
- diff
多命令行
- 多命令同时执行
command1 & command2
- 不管前面命令执行成功没有,后面的命令继续执行
command1; command2
- 只有前面命令执行成功,后面命令才继续执行
command1 && command2
- 只有前面命令执行失败,后面命令才执行
command1 || command2
批量重命名
for i in `ls`; do mv -f $i `echo $i | sed 's/a/b/'`; done
安装软件
apt-get install name
初次使用需要配置更新源,并
apt-get install update
资源查看
# cpu占用
top
# 内存占用
free
# 进程查看
ps -aux | grep exe
# 磁盘占用
df -h
# 文件夹空间占用
du -h --max-depth=1
ssh免密操作
apt-get install sshpass
sshpass -p pwd ssh usr@ip
sshpass -p pwd ssh usr@ip cmd
sshpass -p pwd scp usr@ip:a b
文件共享方式
window与linux的文件共享
- samba共享
apt-get install samba
echo -e "[share]\ncomment = share\npath = /\npublic = yes\nwritable = yes\nbrowseable = yes\navailable = yes\nguest ok = yes" >> /etc/samba/smb.conf
# restart
service smbd restart
linux与linux的文件共享
网络磁盘挂载的方式:nfs
- 源主机开放共享权限
apt-get install nfs-kernel-server
sed -i '/auto_test/d' /etc/exports; echo "/ 192.168.1.*(rw,sync,no_root_squash) #auto_test" >> /etc/exports
# restart
/etc/init.d/nfs-kernel-server restart
- 目标主机挂载
mount -n -o nolock 192.168.1.111:/root/ /mnt/`
# 退出挂载
umount /mnt/
拷贝的方式:scp
scp usr@ip:a b
scp -r usr@ip:dir_a dir_b
计时
time
- 单命令执行实行
time sleep 1
```shell
### 仿MATLAB的Shell计时方法
* 创建文件TIC,内容如下
```shell
#! /bin/bash
echo -e "#! /bin/bash\necho it takes:\`echo \$(date +%s%N) $(date +%s%N) | awk '{ print (\$1 - \$2) / 1000000}'\` ms" >TOC; chmod +x TOC
如有必要,需执行
chmod +x TIC
- 使用方式
./TIC
sleep 1
./TIC
常见问题
Bad interpreter
- 检查文件开始的
#! /bin/bash
,注意!
后的空格 - 文件格式,用
dos2unix filename
转换 - 文件可能正在被读写
网友评论