1. 复制/移动文件

例如复制/移动文件a.txt到b.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
cp {a.txt,b.txt}
mv {a.txt,b.txt}
#以上后缀相同,甚至可写为
cp {a,b}.txt
mv {a,b}.txt

#如果a.txt在目录 /opt/text/下,则
cp /opt/text/{a.txt,b.txt}
mv /opt/text/{a.txt,b.txt}

#如果要将/opt/text/a.txt复制/移动到其它目录,则b.txt使用相对于/opt/text/的相对目录
cp /opt/text/{a.txt,../b.txt} #复制到/opt/b.txt
mv /opt/text/{a.txt,test/b.txt} #移动到/opt/text/test/b.txt

2. 删除文件

删除目录下除某些文件以外的其余文件。

1
2
3
4
5
6
7
8
#删除所有文件
rm *

#删除除.cpp和.h后缀的其它文件
rm !(.cpp|.h)

#删除除 a.txt,b.cc,c.h外的其它文件
rm !(a.txt|b.cc|c.h)

3. ssh快速登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#检查是否有ssh公钥,看是否有id_rsa,id_rsa.pub
ls ~/.ssh

#如果没有则生成
ssh-keygen -t rsa -C "abc@mail.com"

#将id_rsa.pub公钥放到远程连接上的authorized_keys(~/.ssh/authorized_keys)
#可以手动复制,也可以用命令
ssh-copy-id root@xxx.xx.xxx.xxx

#为方便可在~/.ssh/config中配置,如果没有config则创建
Host ali
HostName xxx.xxx.xxx.xxx
User root

#ssh登录
ssh ali

4. scp命令快速使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#未配置ssh公钥

#将本地a.txt上传到远程/root/doc/a.txt
scp a.txt root@xxx.xxx.xxx.xx:/root/doc/.

#将远程连接/root/doc/a.txt下载到本地
scp root@xxx.xxx.xxx.xx:/root/doc/a.txt .

#配置好ssh公钥后

#上传
scp a.txt ali:/root/doc/.

#下载
scp ali:/root/doc/a.txt .

5. 批量将文件编码格式转换为utf-8

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
#!/bin/bash

# file命令查看文件类型:
# bluetooth.c: C source, ISO-8859 text, with CRLF line terminators

# grep命令过滤出编码格式是 ISO-8859 text 的文件
# awk命令获取文件名,-F ':' =》 以冒号为分隔符

# find -name *.c -o -name *.h #第二个必须带 -o
# find -name "*.[c|h]" #必须带双引号
fileName=$(file $(find -name "*.[c|h]") | grep ISO | awk -F ':' '{print $1}')

echo $fileName

for i in $fileName ;
do
echo $i
# vim -c 选项后跟命令(此命令在.vimrc之前执行),主要目的是自动执行命令并且退出文件
# set fileencoding 更改编码格式
# set ff 更改换行格式
# x 保存退出
vim -c "set fileencoding=utf-8" -c "set ff=unix" -c "x" $i
# 延时1s,sleep 默认单位是秒,0.1是0.1秒,m-分钟,h-小时,d-天
sleep 1s
done

6. fs