Tag: RHEL & CentOS
很多时在写程式时, 需要将一些数值补零, 例如 1 显示为 001, 以下是 Shell Script 的实现方法: Shell Script 的 printf 函式已经可以做到自动补零, 例如想将 8 显示为 “008”, 可以这样写: 除了在数值的前面补零外, 也有一种情况是在小数点补零, 例如数值 “8” 是整数, 但也要强制显示小数点后一个位, 可以这样写: 如果想将上面的结果放到变量, 可以这样写: …
Shell Script 里面的指令, 如果没有用条件控制 (例如 if), 不管之前的指令执行结果如何, 每个指令也会逐一执行, 例如: 上面的程式码很简单, 只是用 cd 指令转换到 /path/dir 目录, 然后执行 rm 指令, 将所有 .txt 结尾的档案删除。 但如果执行 cd 指令的时出错, 例如 /path/dir 目录不存在, 或者没有权限进入, 那便会在当前目录删除所有 …
如果透 SSH 连接到 Linux Server, 用 vi 或 vim 开启档案后, 要将里面的文章复制并贴上, 很多时会用 SSH Client 的复制贴上功能。 例如以 Putty 为例, 用鼠标 Highlight 文字会复制, 按鼠标右键会贴上。 但这种方法要在键盘跟鼠标间操作很麻烦, 其实如果要将整行复制, 可以用 vi 内建的复制贴上功能, 全部在键盘完成, 方法如下: …
root 在 Linux 系统下有最高权限, 但如果用 root 身份执行 rm 指令删除档案, 或要修改档案时, 有些情况可能会出现以下错误: rm: cannot unlink ‘filename’: Operation not permitted 出现这个问题, 多数是因为 chattr 指令锁定了该档案。用 chattr 指令锁定档案后, 除了不能删除外, 也不能修改及改动, 必须要用 chattr 指令解除锁定才可以: …
在 Linux 下有时会有一些暂存盘或日志档需要定时删除, 如果只要在特定目录下, 删除档名包含有指定字串的旧档案, 可以不用 Shell Script, 而直接在 crontab 用 find 指令完成 。 例如我想将 /var/www/html/tmp/ 目录下, 将所有超过 7 日的档案, 并以 “delname.log” 作为档案开头删除, 可以在 crontab 加上以一行, 先开启 crontab : …
在 CentOS 执行 yum 指令时, 出现以下错误: Failed to set locale, defaulting to C 解决方法是正确设定 locale 语系环境, 先建立以下档案: # vi /etc/profile.d/locale.sh 加入以下内容: 储存盘案后离开编辑器, 执行以下指令重新加载参数: # source /etc/profile.d/locale.sh 然后便可以重新执行 yum 指令.
在 Shell Script 读取输入时, 很多时需要按字串的长度作出不同的处理, 而 Shell Scrit 检查变量的字串长度十分简单, 写法如下: 上面的程式码会检查用户输入的变量 “string”, 然后检查 string 变量的长度, 如果字串长度大过 10, 会显示 “Error!”, 并结束程式执行; 如果变量的字串长度等如或小于 10, 会继续执行。
Linux 下的目录结构分工很仔细, 虽然初时接会很困惑, 但用久了反而会觉得十分清晰, 即使在不同的发行版下使用, 要习慢也很容易。以下是 Linux 下目录结构及内含的档案内容。 /boot : /boot 是一个独立的硬盘分割区, 用作储存 Linux 核心, Linux 核心设定档 (Config-x-x-x), initramfs 及 GRUB (boot loader). 当完成 BIOS 程序后, 会由 /boot 接手启动系统. …
wget 是在 CLI 下十分好用的下载工具, 如果遇到下载的档案很大, 或者下载速度很慢时, 可以用以下方法让 wget 在背景执行。 wget 已经内建背景执行的功能, 语法是: $ wget -bqc http://path-to-url/filename.iso 上面的 wget 指令加入了 -bqc 参数, 其中 b 代表 background, 即背景执行的意思。 另一个方法是用 nohup 指令, …
当写 Shell Script 时, 很多时需要取得 Shell Script 本身的目录位置, 以下教学是在 Shell Script 取得目录位置的写法。 在 Shell Script 的 $0 变量代表指令的第一个参数, 即 Shell Script 本身, 例如 Shell Script 是 “/root/test.sh”: #!/usr/bin/sh echo …