SHELL命令行快捷键
- Ctrl+a:光标回到命令行首
- Ctrl+e:光标回到命令行尾
- Ctrl+b:光标向行首移动一个字符
- Ctrl+f:光标向行尾移动一个字符
- alt +b: 光标向行首移动一个单词
- alt +f: 光标向行首移动一个单词
- Ctrl+w: 删除光标处到行首的字符
- alt+d: 删除光标后一个单词
- Ctrl+k:删除光标处到行尾的字符
- Ctrl+u:删除整个命令行文本字符
- Ctrl+y: 粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本
- ctrl+shift+c: 复制
- ctrl+shift+v: 黏贴
- Ctrl+z:使正在运行在终端的任务,运行于后台。 (可用bg,fg恢复)
- Ctrl+c:中断终端中正在执行的任务
- Ctrl+d: 在空命令行的情况下可以退出终端
参数文件名有空格
加 双引号 "$1"
如下pdf压缩f程序
#!/bin/bash
if [ # -lt 2 ]; then
echo "Usage: sh0 para1 para2"
echo " "
echo "e.g. : "
echo "m.split.compress.pdf.sh out.pdf input.pdf"
exit 1
fi
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=1 "2"
echo " "
echo "finish compressed as $1.pdf"
shell脚本添加到默认路径
自己写的shell脚本;不放到PATH路径下,命令只能在脚本所在路径下运行,为了能像ls等系统命令可以在任意路径下使用,需要进行如下设置:
- 现在用户根目录下创建
bin
目录,可以是任意目录,习惯上命名为bin
- 添加到
.bashrc
文件中 - 更新
.bashrc
文件
$ cd ~
$ mkdir bin
$ vim .bashrc
$ export PATH=$PATH:~/bin
$ source .bashrc
编写SHELL脚本
#!/bin/bash
echo 'this is shell?'
统计文件个数
ls -l | grep "Train" | wc -l
ps -ef | grep matlab |wc -l
批量移动清单中的文件
- 有需要移动的文件名清单 filename.txt
- 文件在files1文件夹下有filename.txt中的文件
- 从files1文件夹移动filename.txt中的文件到files2
$ cat mv_from_filelistname.sh
#!/bin/bash
mkdir tmp
for I in `cat $1`
do
mv $2/$I tmp/
done
# useage
./mv_from_filelistname.sh bdgt_test.txt clipbdgt
参考文献:everfigh
批量文件重命名
文件夹下有文件 a.prj, a.sta a.tfw a.tif a.txt
,批量重命名为 b.prj, b.sta b.tfw b.tif b.txt
rename [options] <expression> <replacement> <file>...
Options:
-v, --verbose explain what is being done
-s, --symlink act on the target of symlinks
-n, --no-act do not make any changes
-a, --all replace all occurrences
-l, --last replace only the last occurrence
-o, --no-overwrite dont overwrite existing files
-i, --interactive prompt before overwrite
rename a b a.*
批量添加前缀由 a.mp3
重命名为 s1_a.mp3
for i in *; do mv -- "i" "s1_i"; done
微信图片时间标签名
批量修改为年-月-日
批量重命名
#!/bin/bash
for i in (ls)
do
name=(echo i |cut -b 1-10)
echoname
namen=(date -d "1970-01-01name seconds" +"%Y-%m-%d_%H%M%S")
echo namen
rename.ulname nameni
done
神奇的1234567890
秒转换为年月日date -d "1970-01-01 $name seconds" +"%Y-%m-%d_%H%M%S"
CentOS下shell显示-bash-4.1
CentOS下新增加一个用户,登录进去会发现shell脚本信息没有显示用户名和主机名,反而显示的是-bash-4.1$
而不是我们经常看到的username@hostname$的组合,看起来特别别扭不舒服。
问题的原因是:没有配置.bash_profile的问题,或者说没有这个文件的问题,可以通过配置或者新建这个文件来解决问题。
解决方案:
1.在新建用户的~目录下新建或者更改.bash_profile;
2.在.bash_profile中添加以下内容:export PS1='[\u@\h \W]\$'
3.在新建用户下运行一下命令:source ~/.bash_profile
这样就可以正常显示用户名和主机名了, 参考文献
PS1终端显示色彩
PS1='[\033[01;37m][[\033[01;35m]\u[\033[01;31m]@[\033[01;35m]\h[\033[01;32m]\A [\033[01;33m]\w[\033[01;37m]] [\033[01;34m]\$ [\033[0m]'