【原創】命令列與python_基於powershell的命令列
一 起源和官方文件
學命令列,來自於《笨辦法學python》這本書,作者強調要先用python2和powershell
我確實也是先這麼幹的,所以先學了powershell
官方文件
powershell微軟官方手冊
https://docs.microsoft.com/zh-cn/powershell/scripting/getting-started/fundamental/using-familiar-command-names?view=powershell-6
微軟官方:https://docs.microsoft.com/en-us/powershell/
微軟官方中文:https://docs.microsoft.com/zh-cn/previous-versions/technet-magazine/hh551144(v=msdn.10)
微軟官方office:https://docs.microsoft.com/zh-cn/office/
一些中文參考文件
https://www.cnblogs.com/lavender000/p/6935589.html
https://www.pstips.net/powershell-online-tutorials
http://www.pstips.net/powershell-v3-basic-tutorial.html
http://www.pstips.net/windows-powershell-v3-language-specification.html
看了下官方手冊,好多內容,好強大
比如還有好多有用的命令,在windows作業系統的機器上,估計程式設計很多時候還需要用到這些命令。。。。
比如cls (clear screen)
shutdown.exe -1
stop-computer
restart-computer
二 學習命令列的好處
(1) 可以執行檔案
在windows裡用視覺化的finder只能開啟檔案編輯,但預設不會執行,但是在命令列裡打出檔案路徑,直至準確的檔名,可以執行,這樣就可以試驗自己寫的指令碼是否有錯,至少我以前也寫過簡單的Lua是吧,呵呵
用 lua xxx.lua
用 python xxx.txt/ xxx.py
(2) 在執行裡可以按 程式名 搜程式和服務
可以在安裝軟體時方便很多,比如直接在執行裡,輸入jira,不僅可以查到JIRA的程式,可以呼叫jira的幾個服務,停用jira和啟動jira 服務。
PS C:\Users\Administrator> python
PS C:\Users\Administrator> jira
(3)還可以學習一些簡單的命令,進行本地電腦控制,對遠端伺服器重啟等控制
(4)對了,電腦的一些基本執行命令
執行命令 msconfig 等等
cmd命令列:ipconfig,ipconfig/a
(5)雖然我之前連powershell都不知道,只會在執行裡直接輸,或者打cmd調出最基礎的那個編輯介面。。。。
cmd是新出的powershell的子集
三 作者的意思得先學習命令列,用powershell,然後才能學python
(1)在powershell中打 Python ,退出是用才ctrl+z(敲入後顯示為^z)退出python
(2)兩種方法
2-1 命令列狀態下直接敲命令
2-2 命令列狀態下,執行指令碼
(3)不同執行狀態的表現不同
比如在命令列下powershell下,Python下直接執行語句,每次都會有返回結果
繼續在cmd的普通目錄下,不進入對應功能,只是輸入 python執行指令碼,則不會額外返回結果,如果需要則需要額外的返回
四 基本快捷鍵
(1)命令列裡,按上箭頭可重複上次的打字內容,還可以多按幾次箭頭,可以省事點方便
(2)複製不是crtl+C,而是滑鼠左鍵按住選中要複製的文字,點一下右鍵即可,然後再需要貼上的地方也點下即可。
(3)Ctrl+Z 退出Python
CTRL+C 打斷
五 詳細的用powershell學習命令列的記錄
命令列列表
pwd | print working directory | 打印出當前的工作目錄 |
hostname | 你使用的電腦在網路中的名字 | |
mkdir | make | 建立路徑(資料夾) |
cd | change directory | 更改路徑 |
ls | 列出路徑下的所有內容 | |
rmdir | remove | 刪除路徑 |
pushd | 推送路徑 | |
popd | 彈出路徑 | |
cp | copy | 複製路徑/檔案 |
robocopy | 更可控的複製命令 | |
mv | move | 移動路徑/檔案 |
more | 逐頁顯示整個檔案內容 | |
type | 列印輸出整個檔案內容 | |
forfiles | 在一堆檔案上執行一條命令 | |
dir -r | 尋找檔案 | |
select-string | 在檔案內查詢內容 | |
help | 閱讀幫助手冊 | |
helpctr | 尋找合適的手冊頁面 | |
echo | 列印一些引數 | |
set | 設定/匯出一個新的環境變數 | |
exit | 退出powershell | |
runas | 成為超級使用者或root,危險命令 |
(1)第一個學習pwd,本來的全稱:print working directory,顯示當前路徑
pwd (打之前記得先退出python)
cd ~ (回到根目錄,home路徑,記得是 cd ~ 中間有空格)
(2)在根目錄下,可執行程式
比如PS C:\Users\Administrator> python 或PS C:\Users\Administrator> jira,進入到這些功能後,就不在根目錄了,所以按現在教程的逐級資料夾往下查就不行(高手估計是可以的),所以用先pwd 然後cd ~出來是不行的,得用ctrl+z退出程式,然後就回到了,檔案模式的根目錄了。
PS C:\Users\Administrator> python
^z (需要輸入crtl+z)
(3)windows的特別之處:/等於\,也就是 C:\Users\Administrator 等同於 C:/Users/Administrator
其他地方一般都只用/ (斜槓),比如各種其他作業系統,網址等等,windows這點有點奇葩?
所以程式碼使用時一般使用 C:\\Users\\Administrator 或者C:/Users/Administrator
因為很多程式裡 \ 會被認為是轉義!
輸入檔案路徑,要麼是 \\ 或 / 路徑,不要輸入\ 作為路徑分隔符
(4)mkdir (新建路徑 make dir)(只能建立目錄)
都是在根目錄下建立,因為你還沒有切換目錄啊(用cd命令),而且建立新目錄後,並不切換目錄,還留在原處。
mkdir temp
mkdir temp/test1
mkdir temp/test/test11
mkdir "I have fun" //路徑裡如果包含空格,得用引號
mkdir -p temp/test/test11 //即使中間目錄不存在也能成功?建立完整的?
(5)cd 切換路徑
cd temp
cd ~ // 寫成cd~會報錯,回到根目錄
cd .. //往上回一級
cd ../.. //往上回2級
cd ../../.. //往上回3級
cd "I have fun" // 只能 "I have fun" 上一層輸入,也就是必須逐級輸入,沒法直接查詢某個資料夾
(6)ls 顯示當前路徑下的內容:子一級的資料夾/檔案(類dir功能吧)
如果資料夾內是空的,輸出就啥也不顯示了
其實一般是這樣連用的 cd joe ----ls---找到下級要去的--cd alex ----ls....
ls //顯示本級的
ls test1/ // 顯示一個本級的子目錄下的內容
(7) 輸入 help,還要繼續選下級,比如get-command。。好多內容
(8)rmdir 刪除空檔案或空目錄 (remove dir) (可以刪除目錄,也可以刪除檔案)
rmdir test1 //如果test1裡有內容,會提示是否全部刪除 Y A N之類,選擇yes可以連下級都刪除,全部刪除
//也就說是,只有目錄裡是空的,才不提示直接刪,否則會詢問使用者,做抉擇。
(9)pushd 切換路徑 push dir
儲存當前路徑,切換到新路徑
(10) popd 回到上一個路徑 pop dir
回到上一個路徑
(11) touch --蘋果的,等同new-item
(12) new-item 建立空檔案/目錄
new-item -type file 建立檔案 ,如果不帶 -type 下一步會被詢問,輸入file亦可(或者dir)
new-item debug.txt -type file
new-item debug.xls -type file
new-item storage -type dir
(13) cp 複製檔案至一個新檔名/或某路徑下,名字不變
只能往同級或下層去操作,不能操作上層?
可以把目錄/檔案 往另外一個目錄裡放,但好像只有1層目錄,下層的不會?
cp test1.txt test2.txt
cp test1.txt test2222
cp test1.txt alreadydir/
cp testdir1 testdir2/
cp testdir1/test1.txt testdir2/
以前不會 從同級的desktop 複製1個檔案到 temp 下去--------其實就是用相對或絕對路徑複製過去即可
cp Desktop\\desktop1.txt temp\\123
首先,cmd和powershell也支援中文路徑
cd 桌面
cd Desktop
(14) mv 移動檔案/資料夾目錄 move,本質就是重新命名了rename, 原名的檔案消失了
如果新檔名沒有則自動建立,如果有就直接移動過去,老的消失
mv test1 test111
mv test1.txt test111.txt
引數
mv -a
mv -r 帶下層目錄遞迴
mv -f
(15)less 蘋果用
(16)more 顯示檔案內容
more test.txt
(17)cat 流檔案內容顯示,和more的區別是?--現在我覺得用起來是一樣的,以後慢慢發現和學習吧
cat test.txt
(18)rm 刪除檔案
rmdir不是也可以刪除檔案嗎?區別是?
(19)exit
(20) forfiles
(21)runas
(22)attrib
(23)icacls