Bash入门笔记

作者: 开水的杯子 | 来源:发表于2017-01-28 02:42 被阅读212次

本猫工作之前除了基本的cd, ls, cat, less之外,基本上没见过bash。于是开始工作之后果断跪了,当了整整一个月的傻逼。在这里纪录一下子认为任何一个程序猿工程猫在被允许毕业之前应该去学的bash基础和常用指令。关于bash脚本的问题,另见《Bash脚本入门笔记》。

节省时间

行间游走

  • Move to beginning of line: ctrl+a
  • Move to end of line: ctrl+e
  • Delete to end of line: ctrl+k
  • Delete to beginning of line: ctrl+u

查找历史

  • Reverse search: ctrl+r
  • Forward search: ctrl+s (note: put stty -ixon in your .bashrc)
  • Move back one: ctrl+p
  • Move forward one: ctrl+n

注:http://unix.stackexchange.com/questions/12107/how-to-unfreeze-after-accidentally-pressing-ctrl-s-in-a-terminal

查找替换

不知道为什么,工作中可利用到查找替换的场景实在很多。而如果你要手动去做的话,那么恭喜你,你不用回家了。Sed是一个强大而复杂的东西,但菜鸟只知道可以用它进行查找及替换就行了。比如说,把所有的a替换成b:sed 's/a/b/g'

echo aabbcc | sed 's/a/z/g'
zzbbcc

这里|叫做pipe,是把上一个指令递给下一个指令的stdin的意思。

sed 's/[bar]/[foo]/g' [inputFilename]

pbcopy是mac里面pipe给clipboard的功能。

echo 'I want to copy this thing' | pbcopy

你可以把sed的结果pipe给pbcopy用来复制粘贴,也可以用-i来edit in place。比如:

sed -i 's/[bar]/[foo]/g' [inputFilename]

这样会直接改变你的源文件。
regex在vim里面也适用。比如说查找替换:

:%s/bad_variable_name/good_variable_name/g

常用的正则表达式(regex)太多,另外讨论。

正则表达式的游乐园:http://sed.js.org/

.bashrc和.bash_profile

把你每次开启terminal之前想要跑的指令放在这里。几个比较常见的用途就是自己的常用aliasPATH函数的改动,以及给中environment variables。

$ cat ~/.bash_profile
# Shortcuts
alias m="make clean && make"
alias mc="make clean"
alias server="python -m SimpleHTTPServer 8000"

# Modifications to PATH variable
export PATH=$PATH:/usr/local/opt/groovy/libexec/bin
export PATH=$PATH:/usr/local/Cellar/gradle/3.0/libexec/bin

# Environment Variables
export JAVA_HOME="$(/usr/libexec/java_home)"
export GROOVY_HOME=/usr/local/opt/groovy/libexec
export GRADLE_HOME=/usr/local/Cellar/gradle/3.0/libexec

ssh或者login的时候会source你的bash_profile,开启non-login shell的时候会source .bashrc。为了避免弄混,干脆就在.bash_profile里面加这么一行:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

Sudo

sudo su - root
sudo -iu root

常用指令 (更新中)

将文件夹名作为文件夹中所有有某后缀的文件的前缀:

ls *.ext | while read t; do mv $t ${PWD##*/}-$t; done

把回车改成逗号,把每个字加上括号:

cat [filename.txt] | tr '\n' ', ' | sed 's/,/\",\"/g'

在本文件夹里面找到所有有某后缀的文件:

find . -name "*.ext"

相关文章

  • Bash入门笔记

    本猫工作之前除了基本的cd, ls, cat, less之外,基本上没见过bash。于是开始工作之后果断跪了,当了...

  • Bash脚本入门笔记

    要debug同事写的脚本但是尼玛看不懂,真么办?Bash到人话翻译机:http://explainshell.co...

  • 几个入门命令行

    几个入门命令行学习笔记:ls、cat、mv、touch。 学习环境:windows7下的git bash。 1、l...

  • bash入门

    1、设计一个shell脚本,在/userdata目录下建立10个目录,即user1~user50,并设置每个目录的...

  • BASH入门

    1.变量定义 变量=变量内容 如myName=Jocelyn知识点如下: 等号连边不能有空格 变量只能以英文开头,...

  • bash入门

    Bourne-Again SHell; Born Again SHell Introduction 写作“入门”,...

  • git 命令

    bash入门(了解) bash是许多linux系统默认的shell(命令行工具)。 cmd和powershell是...

  • Zsh 入门和介绍

    Zsh 入门和介绍 Zsh 兼容 Bash,据传说 99% 的 Bash 操作 和 Zsh 是相同的 Zsh 官网...

  • Bash脚本编程(2)——编程入门

    @(Bash)[编程入门] 1. Bash中的变量 1.1 变量类型 字符型 数值型 整型 浮点型 语言类型: 强...

  • Kotlin入门笔记八:Lambda和序列

    Kotlin入门笔记一:方法、变量、类 Kotlin入门笔记二:when、for、in Kotlin入门笔记三:可...

网友评论

    本文标题:Bash入门笔记

    本文链接:https://www.haomeiwen.com/subject/tphqittx.html