Linux使用筆記
#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……..)
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程式的注意事項
參考書籍