1. 程式人生 > >bash指令碼基礎

bash指令碼基礎

新建bash指令碼
vim hello.sh

#!/bin/bash
echo hello world

#!/bin/bash
在 BASH 中 第一行的 “#!” 及後面的 /bin/bash 就表明該檔案是一個 BASH 程式,需要由 /bin 目錄下的 bash 程式來解釋執行。BASH 這個程式一般是存放在 /bin 目錄下,如果你的 Linux 系統比較特別,bash 也有可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin 這樣的目錄下;如果還找不到,你可以用 locate bash ,find / -name bash 2>/dev/null 或 whereis bash 這三個命令找出 bash 所在的位置;如果仍然找不到,那你可能需要自己動手安裝一個 BASH 軟體包了

執行bash程式

sh hello.sh
bash hello.sh
. ./hello.sh

chmod u+rx hello.sh
./hello.sh

指令碼中將字串輸入到檔案中

#!/bin/bash
echo "hello world" > my.txt

使用指令碼清除/var/log下的log檔案

#!bin/bash
LOG_DIR = var/log
cd $LOG_DIR
cat /dev/null > wtmp
echo "logs cleans up"
exit

1. 遇到許可權不夠的提示,為什麼,如何解決?
許可權不夠加sudo啊,可是你會發現許可權不夠加sudo啊,可是你會發現
sudo cat /dev/null > /var/log/wtmp
一樣會提示許可權不夠,為什麼呢?因為sudo只能讓cat命令以sudo的許可權執行,而對於>這個符號並沒有sudo的許可權,我們可以使用
sudo sh -c "cat /dev/null > /var/log/wtmp "
讓整個命令都具有sudo的許可權執行

2. 為什麼cleanlogs.sh可以將log檔案清除?
因為/dev/null ,裡面是空的,什麼東西都可以往裡面扔,扔了就沒了

註釋

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

#轉義 去掉#原本的註釋效果
數制轉換(使用二進位制表示),不是一個註釋,雙括號表示對於數字的處理