我觉得我效率最高的时候,就是我在使用 Shell 的时候。因为这个时候,只要疯狂敲键盘就可以了。 我统计了 Macbook Pro 和几个服务器上 history 中命令历史记录,然后根据频率生成了下面这张词云图。
日常使用的就是这么几个命令。 cd ls mv cp rm mkdir rmdir vim …. 简单的命令结合不一样的参数会有不同的用法,接下来的这些命令都是我觉得平常比较有用的,对于新手来说一时肯定记不住,但是可以看一遍记住可以shell是可以实现这些功能的,在需要的时候,可以来这里查找或者去网上查找,包括学习其他语言也是首先要知道程序可以实现哪些功能(打破信息差),需要的时候再去寻找。
ls (list)
1 2 3 4 5 6
ls # 列出当前目录下的文件 默认是按英文a-z排序 ls -r # 反序显示 就是z-a排序 ls -l # 列出详细信息包括权限 链接数 用户组 用户 大小 修改日期 ls -a # 列出所有文件,包括隐藏文件 在linux中 . 开头的就是隐藏文件或者隐藏文件夹 ls -R # 递归显示,显示子目录下的文件,以及子目录下的子目录下的文件,以此类推,就跟tree命令差不多 ls -t # 按照修改时间排序 越新的越前 这个很有用,文件多的时候,就容易忘记最近操作的文件或者文件目录是哪个
cd (change directory)
1 2 3 4 5 6 7 8 9
cd # 切换目录
cd .. # 切换到上一级目录 cd - # 切换到上一次所在的目录 cd ~ # 切换到Home目录 cd / # 切换到根目录
cd dirs # 切换到相对路径 cd /home/username/dirs # 切换到绝对路径
软链接类似于 Windows 中的快捷方式,软链接在文件系统管理中非常灵活,可以用于简化路径访问、创建快捷方式等场景。
1
ln -s /home/user/file.txt /home/user/links/mylink
批量操作
shell 是一种批处理语言,可以很方便的进行批量操作。
1 2 3 4 5 6
for i in {01..10}; do echo $i; done # 这是for的基本语法,$ 是变量的引用,这个命令是输出01到10的数字 for i in {01..10}; do touch file$i; done #这个命令是创建file01到file10的文件 for i in {01..10}; do mkdir dir$i; done #这个命令是创建dir01到dir10的目录
for i in *;do cp $i/CONTCAR zzz/$i.vasp;done # 这个命令是将当前目录下所有目录中的CONTCAR文件复制到zzz目录下,并重命名为目录名.vasp for i in *.vasp;do mkdir ${i/.vasp};mv $i ${i/.vasp}/POSCAR;done # 这个命令是将当前目录下所有vasp文件的文件名去掉.vasp后缀,创建目录,然后将文件移动到目录下,并重命名为POSCAR for i in *;do echo -n $i,;tail -n 1 $i/331/OSZICAR|awk '{print$5}';done # 这个命令是输出当前目录下所有目录中331目录下OSZICAR文件的最后一行的第五列