ShannonChenCHN / iOSDevLevelingUp

A journey of leveling up iOS development skills and knowledge.
365 stars 104 forks source link

Linux 相关(vim、shell、shell script) #2

Open ShannonChenCHN opened 7 years ago

ShannonChenCHN commented 7 years ago

相关总结

ShannonChenCHN commented 6 years ago

sed 流式文本编辑器

推荐阅读

实践

#!/bin/bash

# 将 #import "/Users/xianglongchen/Desktop/Playground/ObjCLibA/ObjCLibA/ObjCLibA-Bridging-Header.h" 替换成 #import "ObjCLibA-Bridging-Header.h"
sed -i "" "s/^#import.*ObjCLibA-Bridging-Header\.h\"$/\#import \"ObjCLibA-Bridging-Header\.h\"/g" /Users/xianglongchen/Desktop/Playground/ObjCLibA/ObjCLibA-Swift.h
  1. sed 的正则表达式不能识别 ^#import(.+)ObjCLibA-Bridging-Header\.h\"$,但是能识别 ^#import.*ObjCLibA-Bridging-Header\.h\"$
  2. mac 执行sed -i指令时,总是出现extra characters at the end of command,原因是 Unix 和 Linux 下 sed 指令有一点区别: https://blog.csdn.net/lgh1117/article/details/50094595
  3. sed 教程:
ShannonChenCHN commented 6 years ago

awk 文本处理工具

ShannonChenCHN commented 6 years ago

grep 文本搜索命令行工具

ShannonChenCHN commented 6 years ago

Shell 脚本

Shell 脚本学习总结

FAQ

1. 如何将一个字符串转成大写?

y="HELLO"
val=$(echo "$y" | tr '[a-z]' '[A-Z]')
# 或者 val=$(echo "$y" | tr '[:upper:]' '[:lower:]')
string="$val world"

2. 在linux下怎么把一个文件的内容复制到另一个文件的末尾?

cat file1.txt >> file2.txt

参考:

2. Mac 终端执行 sed -I 指令时,总是出现 extra characters at the end of command

在 -i 指令后面多加一个 “”即可:

sed -i "" "s/192.168.0.2/192.168.0.3/g" *.rptdesign  

参考:

3. 如何获取当前脚本文件的路径?

# 通过 readlink 获取绝对路径,再取出目录
work_path=$(dirname $(readlink -f $0))

参考:

4.创建命令别名(alias Shell 命令)

alias Name=String

5. Shell 脚本读取参数

$@: 参数本身的列表,也不包括命令本身 $*: 和 $@ 相同,但 "$*""$@" (加引号)并不同,"$*" 将所有的参数解释成一个字符串,而 "$@" 是一个参数数组。

#!/bin/bash

for arg in "$@"
do
    echo $arg
done
ShannonChenCHN commented 6 years ago

常用 Mac/Linux 终端命令

指定特定程序打开文件

open -a <application> <file-to-open>
ShannonChenCHN commented 6 years ago

Bash Shell 常用快捷键

移动光标

编辑命令

其它

zsh

Vim

移动光标

删除


参考

ShannonChenCHN commented 6 years ago

如何在 Mac 的 Command Line Tool 上使用 Linux 命令?

问题

尽管都是源于 Unix,但是 Mac 上的终端命令跟 Linux 上的命令还有有些细微的差别。

比如 ls 命令启用彩色输出的选项就是如此:

# macOS
ls -G

# Linux
ls --color=auto

解决

使用 homebrew 在某个目录下安装 GNU utilities,主要是 coreutils。

brew install coreutils

一些问题

  1. 安装 GNU coreutilities 后,默认情况下,所有的命令在使用时,都需要加上前缀 “g”才能使用。

可以通过新建 ~/.bashrc 文件并在该文件中添加下面这一行:

export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"

为了让 ~/.bashrc 文件一直生效,需要在 ~/.bash_profile 文件中加入source ~/.bashrc这一行命令。

注:当然,不新建 ~/.bashrc 文件,而是直接新建 ~/.bashrc 文件加入上面的那行代码也是可以的。

如果需要恢复 Mac 自带的 shell 命令,从 ~/.bashrc 文件中删掉上面那行代码。

参考

ShannonChenCHN commented 6 years ago

Linux

ShannonChenCHN commented 5 years ago

Mac OS 环境变量设置