ios技巧--shell

author author     2023-04-16     443

关键词:

参考技术A 确认当前终端 tty 使用的 Shell 类型:

第一个 Shell 环境是 Thompson Shell ,在贝尔实验室开发并于1971年发布。

现代 Shell 最突出的祖先是被称为 sh 的 BourneShell ,这是以在 AT&T 工作的创始人 Stephen Bourne 命名的。

Shell 一直在基于这个概念,不断添加各种新功能,演变出很多种的 Shell 。

例如,很早版本的 OS X 中使用的是:

在 OS X 10.3 版与 10.4 版之后,默认的 Shell 是:

除了默认的 bash ,现在 macOS 中,默认的 Shell 变成了 zsh 。这是一种由 Paul Falstad 于1990年开发的。它是一个 Bourne 式 Shell ,它使用 bash 和 previous shell 的特性,并添加了更多的特性:

在使用命令行工具时,我们可能会遇到一些教程,可能需要你把一些配置写入到 .bashrc 、 .bash_profile 或者 .zshrc 等。那么这几个文件到底有什么作用和区别?
首先,从文件名称判断 .bashrc 、 .bash_profile 是给 Bash 来使用的。而 .zshrc 是给 zsh 来使用的。

当调用 Shell 时, Shell 从一组启动文件中读取信息并执行命令。读取什么文件就取决于 Shell 是作为交互式登录还是非登录调用。

换言之, Shell 分为交互式的或非交互式的:

交互式 Shell 可以是登录 Shell ,也可以是非登录 Shell 。

当用户通过 ssh 或本地远程登录到终端时,或者使用 --login 选项启动时,将调用登录 shell 。

当作为交互式登录 Shell 调用时, Bash 会先查找 /etc/profile 文件,如果该文件存在,它将运行文件中列出的命令。然后,搜索
~/.bash_profile , ~/.bash_login 以及 ~/.profile 文件,顺序读取。

当 Bash 作为交互式非登录 shell 调用时,会读取 ~/.bashrc 。

所以说, .bashrc 和 .bash_profile 之间的区别是, .bash_profile 当 Bash 作为交互式登录 shell 调用时被读取并执行,而 .bashrc 对于交互式非登录 shell 被执行。

大多数 Linux/Unix 发行版都使用 ~/.profile 代替 ~/.bash_profile 。 ~/.profile 所有 shell 都读取该文件,而 ~/.bash_profile 只有 Bash 才会读取该文件。
~/.zshrc 是 zsh 的交互式 shell 的用户配置。

对于 Bash ,它们的工作方式如下:

对于 zsh ,它们的工作方式如下:

在 tty 中执行 echo $0 ,输出的 Shell 如果前面带 - ,说明是登录 Shell 。

都是以 #!/bin/bash 开头

PS1 指Shell前面的提示符

终端就是一个大型的 shell 函数,所以我们可以直接操作

先做一个参数解析的脚本

find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件 的文件并对之采取相关的操作。
该命令提供的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。

-name '字串' 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]。
查询多组文件注意要用 -o链接,通过括号包裹,并且需要转义字符
find ./mm.xcframework \( -name "*.framework" -o -name "*.o" \)

-exec 命令名称 对符合条件的文件执行所给的命令,而不询问用户是否需要执行该命令。

表示命令的参数即为所找到的文件;命令的末尾必须加上终结符,终结符有两个:";"和"+"结束。其中";"会对每一个find到的文件去执行一次cmd命令。而"+"让find到的文件一次性执行完cmd命令。也需要添加转义字符。
find ./mm.xcframework \( -name "*.framework" -o -name "*.o" \) -exec echo \;

grep是大小写敏感的,可以添加 -i 来解决
grep "eof" -i find_api.sh
-E --extended-regexp # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
grep -E "Some|weak" test.m

首先记住一点, 不加引号的 * 首先会被bash进行扩展,所以 find . -name test* 在执行 find 命令前,bash先把 test* 替换成了 test1 test2 ... 然后 find 命令看到的参数实际上是 test1 test2 ..., 加了引号,bash就不去做替换了,那么 find 命令看到的参数就是 test*

set -x 展开输入的命令

=~ 表示是通过zhneg'ze

linux学习总结(76)——shell脚本日志技巧(代码片段)

常见日志打印方式编写shell脚本时,最简单的日志打印是使用echo输出,比如:下面是打印一个测试程序的日志[root@VM-0-2-centos~]#echo"thisisalogtest..."thisisalogtest...上面的方式使用起来非常简单,编写效率也很高,对于一些功能简单,代... 查看详情

shellbash技巧说明shell参数特殊书写格式(代码片段)

shellbash技巧说明shell参数特殊书写格式执行shell脚本三种方式的区别(sh,bash,xxx.sh/source,./exec)执行shell脚本三种方式的区别(sh,bash,xxx.sh/source,./exec)1.bash/sh/shellscript执行时,另起一个子shell,继承父shell的环境变量,子shelll的变量执行完后... 查看详情

linux常用命令及使用技巧

shell命令格式:command[options][arguments]shell的通配符*匹配任意一个或多个字符?匹配任意单一字符[]匹配任何包含在方括号内的单字符shell的重定向:  输入重定向<和<<  输出重定向>和>>  错误重定向2>和2>&g... 查看详情

日常开发中的shell小技巧(代码片段)

工具推荐命令行中很方便的代码统计工具---cloc模拟生成熵(避免暴力手搓键盘)sudorngd-r/dev/urandom-o/dev/random-f自动输密码的脚本,基于expect#!/usr/bin/expectsetpassword"butub"setfiles[glob-nocomplain--./*.deb]puts"[llength$files]&q 查看详情

6条shell小技巧

如何能让自己的shell显得不那么业余?分享6点实践。一、以下面的语句开场set-onounset在默认情况下,遇到不存在的变量,会忽略并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终... 查看详情

6条shell小技巧

如何能让自己的shell显得不那么业余?分享6点实践。一、以下面的语句开场set-onounset在默认情况下,遇到不存在的变量,会忽略并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终... 查看详情

shell小技巧bashshellfor循环1到100(代码片段)

前言用bashshell写程序时,经常会用到for循环,特别是从1到100这种需求,这里记录几种shell中从1到100的循环方法类似c语言for((i=1;i<=100;i++))do echo$idonein使用foriin1..100do echo$idoneseq使用作用seq-printasequence 查看详情

shell常用小技巧

#!/bin/bash#遇到不存在的变量,终止脚本的执行set-onounset#遇到执行出错,终止脚本的执行set-oerrexit#封装函数有必要#使用静态变量声明readonly和local修饰变量#使用$()代替`(反单引号)#使用[[]]代替[]#echo不是唯一的调试方法#用-n对脚本进... 查看详情

6条shell小技巧,让脚本显得不再业余(1分钟系列)

长文《memcache核心技术点》阅读较低,重启1分钟系列,快消时代,碎片时间可能大家更喜欢短文,更喜欢技术实践类文章吧。画外音:说实话,技术思路类文章(WHY,HOW),比技术实践类(WHAT)更难写。如何能让自己的shell显得不那么... 查看详情

shell命令奇淫技巧,就是有点短(代码片段)

1、在任意目录之间快速移动你发现自己要在两个或更多目录之间频繁移动,一会切换到这里,一会切换到那里,来回跳转。这些目录之间隔得还挺远,反复输入冗长的路径让人疲惫不堪。使用内建命令pushd和popd来管理目录栈,... 查看详情

shell-字符串处理扩展的脚本技巧正则表达式(代码片段)

字符串截取的方法   方法一:使用$表达式     格式:$var:起始位置:长度   方法二:使用exprsubstr     格式:exprsubstr"$var"起始位置长度   方法三:使用cut工具     格式:echo$var|cut-b起始位置结束位置 取目... 查看详情

shell小技巧字符串-中(下)划线转驼峰(代码片段)

帮朋友写的小列子,需要中划线转驼峰例如:user-id转换为userId百度了一下发现竟然没有人写这个小李子,所以就贴出来了。#!/bin/bashPARA=$1arr=(`echo$PARA|tr'-'''`)result=''forvarin$arr[@]d 查看详情

6条shell小技巧,让脚本显得不再业余

前同事王霄出书了,《从零开始Linux运维实践》,让他给我寄了一本。看完书,我说,你这个书不“高大上”呀,讲Linux,讲命令工具集,讲vim,讲shell编程,讲awk实践...想大卖,不得整点高... 查看详情

6条shell小技巧,让脚本显得不再业余

前同事王霄出书了,《从零开始Linux运维实践》,让他给我寄了一本。看完书,我说,你这个书不“高大上”呀,讲Linux,讲命令工具集,讲vim,讲shell编程,讲awk实践...想大卖,不得整点高... 查看详情

来学一学linux系统中shell环境的搭建技巧

参考技术A什么是LINUXSHELL环境?shell在会话中会保存着大量信息,而这些信息就是shell环境。LINNX命令程序通过获取SHELL环境中的数据(此处的数据通常称为环境变量)来输出本机相应的配置数据。LINUX环境变量Linuxshell环境中存储... 查看详情

[原创]脚本小技巧:awk变量传递到shell变量(代码片段)

[简介]常用网名:猪头三出生日期:1981.XX.XX个人网站:https://www.x86asm.orgQQ交流:643439947编程生涯:2001年~至今[共20年]职业生涯:18年开发语言:C/C++、80x86ASM、PHP、Perl、Objective-C、ObjectPascal、C#、Python开发工具:VisualStudio、Delphi、XCode、E... 查看详情

ios核心动画高级技巧-8(代码片段)

iOS核心动画高级技巧-1 iOS核心动画高级技巧-2 iOS核心动画高级技巧-3 iOS核心动画高级技巧-4 iOS核心动画高级技巧-5 iOS核心动画高级技巧-6 iOS核心动画高级技巧-715.图层性能图层性能要更快性能,也要做对正... 查看详情

百分之99的人都不知道的shell的一个高级技巧,历史命令搜索

按一下Ctrl+r可以搜索历史命令,先Ctrl+r,然后输入内容,会进行模糊匹配,如果匹配到了,回车即可执行。那么如何上翻呢?继续按Ctrl+r就能实现上翻。如果想编辑下再执行,可以按ctrl+j。 查看详情