1. 截取字符串
(1)、##和%%的使用
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${
file#*/}:删掉第一个/及其左边的字符串: dir1/dir2/dir3/my.file.txt
${
file##*/}:删掉最后一个/及其左边的字符串:my.file.txt
${
file#*.}:删掉第一个.及其左边的字符串:file.txt
${
file##*.}:删掉最后一个.及其左边的字符串:txt
${file%/*}:删掉最后一个/及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个/及其右边的字符串:(空值)
${file%.*}:删掉最后一个.及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个.及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
(2)、${var:a:b}的使用
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
2. ftp、sftp、lftp使用
1、ftp
ftp -n 132.42.49.160 <<EOF
user ftpusr_all ftpusr_all
prompt off
bin
cd /settle01/interface_data/dt_data_bak
lcd $local_home
get $file_pre
close
EOF
2、sftp
sftp ${user_name}@${password}:132.42.49.160 <<EOF
user ftpusr_all ftpusr_all
prompt off
bin
cd /settle01/interface_data/dt_data_bak
lcd $local_home
get $file_pre
close
EOF
3、lftp
#!/bin/bash
#用户
USER=xxx
#密码
PASSWORD=xxx
#本机所需下载到的目录名称
dir=abc01
cd ${dir}
#sftp目录(待下载文件目录)
dir=abc
#sftp的IP
IP=192.168.1.66
#端口
#PORT=22
lftp -u ${USER},${PASSWORD} sftp://${IP} << EOF
cd ${dir}
mget -c *
by
EOF
3. 字符集转换
将GBK转换成UTF-8,在LINIX下执行
iconv -f GB18030 -t UTF-8 -c aa.txt -o utf8.txt
4. 输出日志
在计划任务中经常看到,例如:
*/2 * * * * sh /opt/xxxx/test_S1/html/xxxx/test.sh >/dev/null 2>&1
注:
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
5. EOF用法
Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。
可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。
例子:自动登录mysql(root:root,passwd:123456),查询test库,test1表里的user=aa的记录。
复制代码代码如下:
#!/bin/sh
mysql -uroot -p123456 <<EOF
use test;
select * from testaa while a=10000; ###1000 not usr single quote mark,because a is int
exit
EOF
6. awk命令详解
1、Linux以逗号为分隔符,打印文件file.txt中的第一个和第三个字符
awk –F’,’ '{print $1,$3}' file.txt
2、计算多个文件行数
cat *txt |awk -F'€' 'BEGIN{total=0}{total+=$3}END{print total}'
7. rsync命令(断点续传)
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
8. dirname $0(取当前路径)
【``】,学名叫“倒引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。
比如 dirname $0, 就表示需要执行 dirname $0 这个命令
【“”】 , 被双引号括起来的内容, 里面 出现 $ (美元号: 表示取变量名) (倒引号: 表示执行命令) \(转义号: 表示转义), 其余的才表示字符串。 【’‘】, 被单引号括起来的内容, 里面所有的都表示串, 包括上面所说的 三个特殊字符。 在命令行状态下单纯执行 $ cddirname $0是毫无意义的。因为他返回当前路径的"."。 这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。 $0:当前Shell程序的文件名 dirname $0,获取当前Shell程序的路径 cddirname $0`,进入当前Shell程序的目录
例如:
在/home/admin/test/下新建test.sh内容如下:
cd `dirname $0`
echo `pwd`
然后返回到/home/admin/执行
sh test/test.sh
运行结果:
/home/admin/test
9. if判断语句
(1)基本语法:
if [ command ];then
符合该条件执行的语句
elif [

这篇博客详细介绍了Linux中常见的命令及其使用方法,包括字符串截取、FTP/SFTP/LFTP的使用、字符集转换、输出日志、EOF用法、awk命令、rsync的断点续传功能、文件路径获取、if判断语句、运算符、for/while/until循环、变量自增、printf函数、计划任务crontab、时间格式化、文件分割、vim编辑技巧、批量解压、find命令、批量替换、查看进制、cut命令、uniq去重、tee双重重定向、sort排序、文件压缩与解压等,是学习Linux运维必备的知识点。
最低0.47元/天 解锁文章
690

被折叠的 条评论
为什么被折叠?



