shell常见使用误区
来源:互联网 发布:工业控制软件 编辑:程序博客网 时间:2024/04/30 06:05
[**Aniya**]#pwd
/home/sysadmin/zhaoyj
创建文件
[**Aniya**]#for i in `seq 1 5`;do touch file$i;done
查看文件
[**Aniya**]#ls
file1 file2 file3 file4 file5 software
[**Aniya**]#for i in "ls file*";do du -sh $i;done
du: 无法访问 “ls”: 没有那个文件或目录
4.0K file1
4.0K file2
4.0K file3
4.0K file4
4.0K file5
为什么错误呢?因为for...in语句是按照空白来分词的,包含空格的文件名会被拆 成多个词
用双引号也不行,它会将ls和file*分别当成一个词来处理,而不是使用它的执行结果
正确写法:
[**Aniya**]#for i in "`ls file*`";do du -sh $i;done
4.0K file1
4.0K file2
4.0K file3
4.0K file4
4.0K file5
[**Aniya**]#for i in "file*";do du -sh $i;done
4.0K file1
4.0K file2
4.0K file3
4.0K file4
4.0K file5
------------------------------------------------------------------------------------
以-开头的文件名在复制的时候比较特殊
[**Aniya**]#touch -- -file6
直接使用文件名,错误:
[**Aniya**]#cp -file6 /home/sysadmin/
cp:无效选项 -- e
请尝试执行“cp --help”来获取更多信息。
添加--选项
[**Aniya**]#cp -- -file6 /home/sysadmin/
如果系统不支持--选项,可以考虑使用相对路径:
[**Aniya**]#cp ./-file6 !$
cp ./-file6 /home/sysadmin/
[**Aniya**]#touch "file 1"
[**Aniya**]#ls -l
-rw-r--r-- 1 root root 0 12-25 00:06 file 1
[**Aniya**]#cp file\ 1 /home/sysadmin/ 这里的反斜杠是转义的功能,因为空格在shell里面有实际的意义
------------------------------------------------------------------------------------
在条件判断中,经常会遇到字符串的判断,我们经常会忘记加双引号“”
通常的写法是:
[ $filename = “test.txt” ]
如果filename是个正常的变量,这种判断方法还可以,但是如果filename中还有空格或者以-开头,这种判断方式就有问题了
定义变量
[**Aniya**]#filename="file 1"
$filename不加双引号的情况下:
[**Aniya**]#if [ $filename != test.txt ];then echo $filename;fi
bash: [: too many arguments
$filename加上双引号:
[**Aniya**]#if [ "$filename" != test.txt ];then echo $filename;fi
file 1
[[$filename不加双引号,但是使用[[]]将变量括起来
[**Aniya**]#if [[ $filename != test.txt ]];then echo $filename;fi
file 1
------------------------------------------------------------------------------------
当有两个条件语句的时候,&&或者||符号的位置
错:[ $filename = “test.*” && $filename != test.txt ]
对:[ $filename = “test.*” ] &&[ $filename != test.txt ]
------------------------------------------------------------------------------------
条件语句中对数字的判断
通病是:
[[ $num > 10 ]]
只可惜[[只适用于对字符串的判断,数字比较应该这样写
(( $num > 10 ))
或者是使用经典写法:
[ $num -gt 10 ]
- shell常见使用误区
- 使用MVC模型的几个常见误区
- 使用maven常见的误区与解决办法!
- HTML5标签使用的常见误区
- HTML5标签使用的常见误区
- 10个常见的缓存使用误区
- 10个常见的缓存使用误区
- 10个常见的缓存使用误区
- 10个常见的缓存使用误区
- 10个常见的缓存使用误区
- 盘点 HTML5标签使用的常见误区
- 常见误区
- 使用MVC模型的几个常见误区 【转载】Li XianJing
- 十个常见的缓存使用误区及建议
- RxJava 常见误区(一):过度使用 Subject
- RxJava 常见误区(一):过度使用 Subject
- 性能测试常见误区
- C/C++ 常见误区
- 自制StartUp宏病毒专杀小工具
- 给老板汇报技术规划的一些要点
- 我为何爱读代码?你为何也应当爱?
- 35个google开源项目
- 关于线程的重用
- shell常见使用误区
- 安装comtypes 0.6.2时ImportError: cannot import name DistutilsOptionError 解决办法
- C++文件操作
- TabHost应用
- 错误error C2665: 'operator new' : none of the 5 overloads could convert all the argument types
- MAC OS X L2TP/IPSEC VPN
- [Linux]CentOS下安装Redmine心得
- 致CSDN会员的公开道歉信 哪些会员密码需要修改?
- Facebook移动信息流新增游戏广告