1. 程式人生 > >【原創】命令列與python_基於powershell的命令列

【原創】命令列與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