Tag: Shell Script
在 Linux 很多时都会用 sudo 以 root 身份执行指令,一般情况下执行 sudo 后需要输入使用者密码确认,但有些情况不能输入密码,例如 Shell Script, 在这种情况下系统记录档会出现以下错误: sudo: sorry, you must have a tty to run sudo 出现问题的原因,是多数 Linux 发行版,默认使用 sudo 开启了 requiretty,要解决很容易,只要用 visudo …
如果在使用一些指令 (例如 rm) 不小心, ShellCheck 是一个 Shell Script 分析及除错工具, 之后要花很多时间修复, 可以在尝试执行 Shell Script 前先找出 Warning 及一些建议。以下会纪录安装及使用 ShellCheck 的步骤。 安装 ShellCheck 安装 ShellCheck 可以用 yum 或 apt-get 直接安装: RHEL, CentOS, …
编写在 CLI 执行的程式, 很多时都会用到询问使用者 yes / no 是否执行, 以下记录一下在 Python 的写法: 例如: 上面程式很简单询问是否继续, 如果输入 “yes” 则会输出 “Hello World!”. 上面程式必须输入 “yes” 才会输出 “Hello World!”, 如果输入 “Yes” 则不会继续, 其中一个方法是将 if 判断式加入多一个选项, …
以前习惯用 Tab 来做缩排,在用 Sublime Text 没什么关系,Tab 跟 4 个空格的长度一致,但近年经常用 vim 直接在 CLI 写程式,当程式需要多层判断式或循环时,很多时在终端机会看得很辛苦,因为在 vim 显示 Tab 会比 4 个空格的距离还长。 所以还是用 4 个空格取代 Tab 较方便,以下是在 vim 及 Sublime Text 按下 …
在 Python 写入档案内容跟读取档案差不多, 也很简单方便,以下会介绍用 Python 逐行读取档案内容的 4 种方法。 在看例子前先要了解开启档案的参数, 一般上读取档案会用 “r”, 即唯读的意思, 如果要写入档案, 分别可以用 “w” (即 write 的意思) 或 “a” (即 append 附加的意思), 两者的分别在于: 如果档案原本已经存在, “w” 会将写入的内容直接覆蓋原来的档案内容; 而 “a” …
在 Python 读取档案内容十分简单方便,以下会介绍用 Python 逐行读取档案内容的 4 种方法。 while 用 While 读取档案是最简单的方法: with readlines iter
在 CLI 下执行的小工具,将输出结果以不同颜色呈现,对可读性有很大帮助,在 Python 要控制输出文字的颜色,做法与 html 相似,只是使用 ANSI escape codes 控制颜色输出。显示颜色文字的颜色编号及格式如下: 以下是样式、颜色及背景颜色的可供选项: 文字样式: 0 一般样式 1 粗体 4 加底线 5 灰底 7 文字及背景颜色对调 文字颜色: 30 黑色 31 红色 32 …
uniq 指令可以作用去除重复资料,对象可以是档案或者 pipe 管线输入。 uniq 去除重复资料时,只会对连续重复的行进行过滤处理,所以很多时 uniq 会配合 sort 指令一同使用,或者用 “sort -u” 实现。 uniq 使用例子: 例如有一个档案,里面的内容如下: This is a testing. This is a testing. This is a testing. This …
写程式经常需要做字串处理,其中一项常做的是字串分割。在 PHP 有一个很好用的函式是 explode(), 可以根据指定的分割字符,将字串分割,并把每一组分割后的字串放到 array 内. 在 Shell Script 要这样分割字串,可以用 $IFS 变量实现,以下是 Shell Script 的写法: 上面会将字串 “This is a testing.” 以空格分割,并会将分割后的字串放到 new_string 阵列,最后印出该阵列第一个元值,即 “This”. 如果想将分割后的字串逐一印出,可以改成这样: 上面程式的执行结果是: This is …
写程式很多时需要将阵列的内容印出或逐一处理,在 Shell Script 可以用 for loop 简单地实现,以下是具体写法: 以上 Shell Script 会将阵列 arr 的 key 及 value 逐一印出。