Linux使用筆記

Yanwei Liu
4 min readJan 5, 2019

#20210922更新zip打包進階指令

# 將txt文件中的所有圖片路徑打包成一個壓縮檔cat image_path.txt | zip -@ image_compressed.zip

#20210904更新grep指令

# 尋找任意檔案中,包含指定字串的功能
# https://stackoverflow.com/questions/16956810/how-do-i-find-all-files-containing-specific-text-on-linux
#當下目錄中,包含有.pth.tar的檔案或字串,並顯示出在第幾行$ grep -rnw './' -e '.pth.tar' -r or -R is recursive,-n is line number, and-w stands for match the whole word.-e is the pattern used during the search

#20210531更新screen工具

#20200710更新GNU / Linux 各種壓縮與解壓縮指令

aiForge的主機當中,檔案如果是zip格式,則無法每次都很順利的下載回本地端;如果改成.tar.gz這種格式的話,就可以。

# 將txt文件中的所有圖片路徑打包成一個壓縮檔cat image_path.txt | zip -@ image_compressed.zip

#20190621更新Vim常用指令

#20191012更新如何在Windows上執行Linux指令:使用Cygwin

#20191011更新如何在Windows上使用wget指令

#20190911更新cron job教學連結

1.注意字母的大小寫

2.注意是否有輸入錯誤的字母

3.cd、ls、rm(rm -rf可以移除資料夾檔案)、mv

如何在Windows上使用touch指令建立大量的空白檔案(.py , .txt , .xlsx……..)

在Windows中顯示資料檔案的樹狀圖

sudo apt-get update和sudo apt-get upgrade的差別

#update只更新安裝list的清單
#upgrade更新軟體到最新版本

Linux的磁碟命名邏輯

切換目錄

cd /opt      #切換目錄到/opt            使用絕對路徑(由 / 寫起)
cd opt #切換到本目錄中的opt目錄 使用相對路徑(不是由 /寫起)
cd ../ #切換到上一層的目錄
cd .. .. #切換到上兩層的目錄
cd .. .. .. #切換到上三層的目錄

#絕對路徑正確度比較好
目錄的相關操作
. 代表此層目錄
.. 代表上一層目錄
- 代表前一個工作目錄
~ 代表目前使用者身分所在的家目錄

~account 代表account這個使用者的家目錄

使用管理員身分進行操作

$ sudo 你需要的指令$ sudo sh #進入super user模式
$ exit #離開super user模式

顯示文字

echo "<text>"

清空Commands畫面

clear
或者
Ctrl+L

新建文件 (在Windows上使用touch指令)

touch file2                 #建立file2touch file3 file4 file5     #同時建立多個檔案

下載檔案

curl -o google.html -L 'http://google.com'

nano檔案編輯

sudo apt-get install nano #安裝nano編輯器
sudo select-editor #將預設編輯器改成nano
touch test.py #建立test.py
nano test.py #編輯test.py(若無此檔案,則建立test.py)
nano的快捷鍵
Ctrl+6開始複製
Alt+6完成複製
Ctrl+U貼上
Ctrl+X離開,Y存檔,Enter確定寫入
Ctrl+W搜尋

將文字寫入檔案

$ echo "file contents here" > test.txt

將CMD結果輸出到文件

$ ls > myfiles.txt

Vim檔案編輯

vim test.txt     #建立text.txtvi和vim的差別:
編輯文檔時,vi無顏色;vim有顏色
其他功能無差別,故使用vi或vim都可以
vim編輯器的使用方式
vim進入檔案後
點擊「i」鍵編輯(insert模式)
編輯完後,點擊「ESC」回到(normal模式)
點擊「Shift+:」
輸入「wq」(存檔並離開)

複製

cp file1 folder1/          #複製file1到folder1資料夾中

顯示目前所在的目錄

pwd    #相對路徑
pwd -P #絕對路徑
pwd是 print working directory的所寫

搜尋檔案

which      完整檔名(執行檔)
whereis 檔案名稱(任何檔案)

離開目前的shell

exit#或者使用Ctrl+C

列出使用過的指令

history 5   #最近使用過的五個指令history | grep apt-get  #包含apt-get的指令##搜尋結果如下:
#6 sudo apt-get update
#7 sudo apt-get install bottle
#8 sudo apt-get install python-bottle
#55 history | grep apt-get

指定python環境變數執行程式

#!/usr/bin/python
#!/usr/bin/env python #在env(環境變數)中,找尋Python安裝路徑並且執行

設定環境變數

echo $PATH                        #列出所有已經加到PATH的環境變數位置nano ~/.bashrc
export PATH=$PATH:/to/your/path #加在最後一行
source ~/.bashrc

Command Line快捷鍵設定指令(alias)

$ sudo nano ~/.bashrc   #修改環境變數
$ alias L='ls -a' #以後輸入L就會有'ls -a'的效果
$ source .bashrc #生效環境變數

開機自動執行Script

$ sudo nano /etc/rc.local#Add the following line after the first block of comment lines that begin with #:$ /usr/bin/python /home/pi/my_program.py &
#&是在背景執行的意思,一定要加

背景執行

$ python program.py &    #&是在背景執行的意思,一定要加
$ fg #移到前景

指令說明

help exit   #解釋exit指令的功能

查看網路狀態

ifconfig

更改IP地址

ifconfig eth0 192.168.1.100  
#將IP地址更改到192.168.1.100

更改檔案權限

$ chmod u+x file2.txt #更改檔案使用權限

查看檔案內容

cat 檔案名稱            #從第一行開始顯是檔案內容
tac 檔案名稱 #從最後一行開始顯示,tac是cat倒著寫
nl 檔案名稱 #顯示的時候,順便顯出行號
cat /etc/hosts.allow #顯示/etc/hosts.allow的內容

解壓縮檔案

$ gunzip myfile.gz
$ tar -xzf myfile.tar.gz

合併檔案

cat file_1.csv file_2.csv > target_file.csv
#將file_1.csv和file_2.csv合併成targer_file.csv,且file_2.csv緊接著於file_1的尾端

查看文檔行數

wc -l abc.txt

列出目錄下的所有檔案

ls
ls /etc #列出etc底下的檔案
ls -a #列出目前目錄底下的檔案,包含隱藏檔
ls -l #詳細顯示檔案內容
ls -la #詳細顯示檔案內容,包含隱藏檔

新增目錄

mkdirmkdir data           #新增名為data的子目錄
mkdir data/data2 #在data子目錄新建data2的資料夾

移動檔案或更名

mv file1 file2  #將檔案file1更名為file2
mv file1 /tmp/ #將檔案移動到/tmp之下

刪除檔案或目錄

rm      檔案名稱
rmdir folder3 #移除空白資料夾
rm -rf folder3 #移除非空白資料夾

移除軟體

apt-get remove softwareName  #移除指定軟體

比較檔案並且顯示差異部份

diff file1 file2  #比對檔案file1和file2的不同

顯示日期與日曆

date          #顯示日期
cal #顯示本月日曆
cal 2019 #顯示2019年的日曆
cal 6 2019 #顯示2019年6月的日曆

透過GUI新增開機自動執行服務

apt-get install rcconf #安裝rcconf
rcconf #執行rcconf

自動排程:crontab指令

crontab指令:grep CRON /var/log/syslog*  #查看crontab運作情形crontab -e                  #編輯目前正在GCP上排程的程式(用來新增排程)crontab -l                  #查看目前有在GCP排程的程式crontab -r                  #刪除所有在GCP排程的程式#搭配crontab guru 看出程式實際執行的時間點為何
-------------------------------------------------------
自動排程步驟:
1.輸入crontab -e後,先刪除所有註解再進行以下步驟
2.新增指令(以下指令選一,用於設定時間)0 */3 * * * /usr/bin/python3 /home/ccs_nknu/pm25.py #3小時執行1次程式
*/1 * * * * /usr/bin/python3 /home/ccs_nknu/pm25.py #1分鐘執行1次程式
*/60 * * * * /usr/bin/python3 /home/ccs_nknu/pm25.py #60分鐘執行1次程式
3.按下Ctrl+X離開4.出現Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
輸入Y(yes),進行保存。
5.出現File Name to Write: /tmp/crontab.IJMcp4/crontab。點擊Enter6.輸入grep CRON /var/log/syslog*進行檢查,若沒什麼異常,就是成功了。#注意路徑的設定要用/usr而不是/user,否則無法順利執行python程式-----------------------------------------------------
解決(CRON) info (No MTA installed, discarding output)
#加入>/dev/null 2>&1
例如:
*/1 * * * * /usr/bin/python /home/ccs_nknu/pm25.py >/dev/null 2>&1

產生密碼

yum install -y expect     #安裝expect軟體
mkpasswd #產生隨機密碼
mkpasswd -l 12 #產生長度12字的密碼
mkpasswd -l 12 -s 0 -d 3 #-s 指定特殊字元個數
#-d 指定數字的個數

檢查作業系統OS版本

$ cat /etc/os-release

查看磁碟容量

df -h

查看目錄大小

ls -lh

查看目錄下檔案大小

du -hs *

查看記憶體使用量

free -m

顯示工作管理員

top   #按q鍵可以退出top

查卡網路流量

yum install -y epel-release; yum install -y nload #安裝epel和nload
nload #查看網路流量

執行Shell程式的注意事項

參考書籍

--

--