⑴ 在命令行模式下執行命令
輸入命令按下enter鍵就會開始執行,如果輸入的命令很長,可以使用反斜杠來轉義enter符號,使命令連續到下一行。
在linux環境中大小寫是不同的
1.顯示日期和事件的命令:date
如果想要輸出特定格式的日期和事件需要帶上參數
例如:date +%Y/%m/%d
date +%H:%M
2.顯示日歷的命令:cal
cal的基本能語法:cal [[month] year]
可以顯示某年的日歷:例如,cal 2009
可以顯示某年某月的日歷:例如,cal 9 2009
3.計算器命令:bc
輸入bc命令就進入bc這個軟體的工作環境,就可以像在windows中一樣進行加減乘除,
+加法,-減法,*乘法,/除法,^指數,%余數。
bc默認是輸出整數的,如果要輸出全部小數,就必須執行scale=number,其中number就是小數點後的位數。
要離開bc,需要輸入quit才能離開bc軟體環境。
1.tab鍵:用於補全命令或者補全文件
2.ctrl+c:用於中斷目前正在運行的命令
3.ctrl+d:表示鍵盤輸入結束,也可以用來代替exit的輸入。
在命令行中直接按下兩次tab鍵,可以看到總共有多少個命令可以供當前用戶使用。
可以使用man 命令名來查看命令的具體用法。
其中man是manual的縮寫。
數據同步寫入磁碟中:在關機前可以使用命令sync將內存中尚未被更新的數據就會被寫入硬碟中。
關機命令:shutdown、reboot、halt、poweroff
系統執行等級:
run level 0:關機
run level 3:純命令行模式
run level 5:含有圖形界面模式
run level 6:重啟
可以使用init命令來切換各種模式,例如想要關機的話,也可以使用init 0。
Linux文件屬性
ls -al 列出所有的文件,-al表示列出所有的文件詳細的許可權和屬性。
例如
[1] [2] [3] [4] [5] [6] [7]
[許可權] [連接] [所有者][用戶組][文件容量] [修改日期] [文件名]
drwxr-x--- 4 root root 4096 Sep 8 14:06 .gconfd
-rwxr-xr-x 1 root root 1024 Jan 3 11:01 install.log
1.第一列文件的類型與許可權
第一列由10個字元組成:
第一個字元代表這個文件是目錄、文件或者鏈接文件等
其中d表示目錄,
-表示是文件
l表示是連接文件
接下來的字元中,以三個字元為一組,均是rwx的組合,其中r表示可讀,w表示可寫,x表示可執行。如果沒有相應的許可權就用-表示。
這三組分別表示的許可權是:
第一組為」文件所有者的許可權「
第二組為」同用戶組的許可權「
第三組為」其他非本用戶組的許可權「
2.第二列表示有多少個文件名連接到此節點上
3.第三列表示這個文件或目錄的所有者賬號
4.第四列表示這個文件所屬的用戶組
5.第五列表示這個文件的大小,默認單位為B
6.第六列表示這個文件的創建日期或這個文件的修改日期。
7.第七列表示這個文件名
改變文件屬性和許可權:
chgrp(change group):改變文件的所屬用戶組
chown(change owner):改變文件所有者
chmod:改變許可權,許可權的設置有兩種方式,使用數字或者符號來進行許可權的更改。
數字類型改變許可權:
使用數字分別代表各個許可權,其中:
r:4
w:2
x:1
owner、group、others三種身份各自有自己的rwx許可權,三個許可權的分數需要累加。例如
owner = rwx = 4 + 2 + 1=7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0
那麼這個文件的許可權數字就是770
符號類型改變許可權:
使用u,g,o分別代表user、group、others三種身份的許可權,a表示所有身份
例如:
一個文件的許可權為:-rwxr-xr-x
user:有可讀、可寫、可執行的許可權
group:有可讀、可執行的許可權
others:有可讀、可執行的許可權
可以使用命令 chmod u=rwx,go=rx install.log
給install.log文件的所有用戶增加寫許可權
chmod a+w install.log
給install.log文件的所有用戶去掉可執行許可權
chmod a-x install.log
Linux下文件沒有所謂的擴展名,一個linux文件能不能被執行,與文件名沒有一點關系,而是許可權中有x,就代表這個文件可以被執行。
通常會以適當的擴展名來表示文件是什麼種類的。例如, .sh表示腳本或批處理文件, .Z、 .tar、 .tar.gz、 .zip、 .tgz都表示壓縮文件。
FHS(Filesystem Hierarchy Standard)標准用於讓用戶能夠了解到已安裝的軟體通常放置在哪個目錄下。FHS根據文件系統使用的頻繁與否和是否允許用戶隨意改動,而將目錄定義成四種交互作用的形態。分別如下:
可分享的 不可分享的
不變的:/usr(軟體放置處)、/opt(第三方軟體) /etc(配置文件)、/boot(開機與內核文件)
可變動的: /var/mail(用戶郵件信箱) /var/run(程序相關)、/var/lock(程序相關)
/var/spool/news(新聞組) /var/lock(程序相關)
可分享的:可以分享給其他系統掛載使用的目錄,所以包括可執行文件與用戶的郵件等數據,是能夠分享給網路上的其他主機掛載用的目錄。
不可分享的:自己機器上運行的設備文件或者程序有關的socket文件等,不適合分享給其他主機。
不變的:數據不經常變動。
可變動的:數據經常變動
根目錄(/):是整個系統最重要的目錄,不僅所有其他目錄是由根目錄衍生出來的,而且根目錄與開機、還原、系統修復等操作有關。根目錄所在的分區越小越好,並且應用程序所安裝的軟體最好不要與根目錄在同一個分區。
開機過程中僅有根目錄會被掛載,其他的分區會在開機完成之後才會持續進行掛載,因此根目錄下與開機過程有關的目錄就不能夠與根目錄放到不同的分區去。有如下這些目錄:
/etc:配置文件
/bin:重要執行文件
/dev:所需要的設備文件
/lib:執行文件所需的函數庫與內核所需的模塊
/sbin:重要的系統執行文件
/usr(UNIX software resource)unix操作系統軟體資源,所有系統默認的軟體都會放置在該目錄下,因此這個目錄有點類似與windows下的「C:Windows」和「C:Program files」。
/var 放置一些緩存、登錄文件以及某些軟體運行所產生的文件。
相對路徑和絕對路徑:
絕對路徑:由根目錄/開始寫起的文件名或目錄名稱。
相對路徑:相對於當前路徑
.:或者./表示當前路徑
..:或者../表示上層目錄
幾個特殊的目錄
. 代表此層目錄
.. 代表上層目錄
~ 代表「目前用戶身份」所在的主文件夾
~account 代表account這個用戶的主文件夾
幾個常見的處理目錄的命令
cd:切換目錄
剛登錄時會回到自己的主文件夾,主文件夾有一個代表符號就是~,cd ~會回到個人的主文件夾中,僅輸入cd和輸入cd ~相同。
pwd:顯示當前目錄
pwd [-p] 其中-p表示顯示當前路徑,而不是使用連接路徑。加上-p可以讓我們取得正確的目錄名稱。
mkdir:創建一個新目錄
mkdir [-mp] 目錄名稱,其中m參數表示配置文件夾的許可權。p參數表示遞歸創建所需要的所有目錄
rmdir:刪除一個空目錄
rmdir [-p] 目錄名,其中p參數表示連同上層空的目錄一起刪除。要刪除的目錄中必定不能存在其他的目錄或文件。
執行文件路徑的變數:$PATH
例如查看文件屬性的命令是ls,而ls完整的文件名是/bin/ls,為什麼我們可以在任何地方執行ls這個命令呢,這是因為環境變數PATH的幫助。當我們輸入ls的時候,系統會依照PATH的設置去每個PATH定義的目錄中查找文件名為ls的可執行文件,如果在PATH定義的目錄中含有多個文件名為ls的可執行文件,那麼先查詢到的同名命令先被執行。
默認情況下,如果用戶創建文件,則默認沒有可執行許可權(x),只有r、w這兩個選項,即默認許可權是-rw-rw-rw(666)
默認情況下,如果用戶創建目錄,則默認所有許可權均開放,即為drwx-rwx-rwx(777)
unmask的分數是指「該默認值需要拿掉的許可權」,例如上面的022表示用戶沒有被拿掉任何許可權,用戶組和其他被拿掉了寫的許可權。
如何使用unmask修改新建文件的默認許可權,直接在unmask後面加上分數就好了
比如:
···
unmask 002 就表示用戶和用戶組的讀寫許可權不被拿掉,其他會被拿掉寫的許可權
···
2.與用戶或用戶組名有關的參數
-uid n 其中n表示數字,即用戶的ID,也稱為UID
-gid n 其中n表示數字,即用戶組名的ID,也稱為GID
-user name 其中name為用戶的賬號名稱
-group name 其中name為用戶組名
-nonuser 表示尋找文件的所有者不存在在/etc/passwd中的文件
-nongroup 表示尋找文件的所有用戶組不存在於/etc/group中的文件
例如:
3.與文件許可權及名稱有關的參數
-name filename 查找文件名為filename的文件
-size [+-] SIZE 查找比size大(+)或小(-)的文件
-type TYPE表示查找文件類型為TYPE的文件
-perm mode表示查找文件許可權剛好等於mode的文件
-perm -mode表示查找文件許可權必須全部包括mode的許可權的文件
例如 查找文件許可權為-rwxr--r--的文件,即許可權744,那麼文件許可權為-rwxr-xr-x(755)的文件也會被列出來,因為-rwxr-xr-x的屬性包括了-rwxr--r--的屬性
-perm +mode表示查找文件許可權包含任一mode的許可權的文件,例如查找-rwxr-xr-x,但是另一個文件屬性包括-rw-------的文件也會被列出來,因為它有-rw屬性存在
4.其他可進行的操作
-exec command :其中command表示其他命令,-exec表示接其他命令來處理查詢的結果
-print 表示將結果列印在屏幕上
vi和vim的區別是vim是vi的高級版本
為什麼要學vim
1.所有的linux like 系統都會內置vi文本編輯器,而其他的文本編輯器不一定有
2.很多軟體的編輯介面都會主動調用vi
3.vim有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便設計
vi的使用:
vi有三種模式:一般模式、編輯模式、命令行模式
一般模式:使用vi打開一個文件的時候就進入了一般模式,在這個模式中可以按左右鍵移動游標,可以刪除字元或刪除整行,也可以復制粘貼你的文件數據。但是不可以編輯文件。
編輯模式:在一般模式下按下「i 、I、o、O、a、A、r、R」等任何一個字母才會進入編輯模式,按esc退出編輯模式
命令行模式:在一般模式下,輸入「:、/、?」就進入了,命令行模式,在這個模式下可以進行讀取、保存文件,離開vi等操作。
編輯牧師和命令行模式之間是不可以切換的。
一般模式切換到命令行模式可用的按鈕
:w 表示將編輯的內容寫入到硬碟中
:w! 表示如果文件屬性為 只讀時,強制寫入該文件
:q表示離開vi
:q!表示如果文件有修改過,不保存強制退出,
:wq表示保存後離開
vim的用法和vi完全一樣
管道命令僅會處理standard out,對於standard error output會予以忽略
管道命令必須要能夠接收來自前一個命令的數據成為standard input繼續處理才行
選取命令:cut,grep
1.cut -d 『分隔符』 -f field
cut -c 字元范圍
-d表示分隔符
-f表示與-d分隔符一起使用,表示取分割後的第幾段
-c表示以字元為單位取出固定字元區間
以「行」為單位進行處理的選取
例如:
2.grep
grep [-acinv] [--color=auto] '查找的字元串' filename
其中
-a表示將binary文件以text文件的放肆查找數據
-c表示計算找到「查找字元串」的次數
-i表示忽略大小寫的不同
-n表示輸出行號
-v表示反向選擇,即顯示出沒有『查找字元串』內容的那一行。
--color=auto表示將找到的關鍵字部分加上顏色
例如:
首先學習一下grep命令的一些高級參數
grep [-A] [-B] [--color=auto] 『搜索字元串』 filename
其中:
-A :後面可加數字,表示after的意思,除了列出該行外,後續的n行也列出來。
-B :後面可加數字,表示before的意思,除了列出該行外,前面的n行也列出來。
--color=auto表示將選取的數據添加顏色
grep是一個很常用的命令,grep在數據中查找一個字元串時,是以整行為單位來進行數據的選取的。假如一個文件有10行,其中有兩行具有你查找的字元串,則將那兩行顯示在屏幕上,其他的丟棄。
例如
1.查找特定的字元
2.利用中括弧[]來查找集合字元
[]裡面不論有幾個字元,它都只代表某「一個」字元
3.行首與行尾字元^$
^ 出現在[]之外表示定位在首行,^ 出現在[]中表示方向選擇
4.任意一個字元.與重復字元*
.(小數點):代表一定有一個任意字元
*(星號):代表重復前一個字元0到無窮次的意思
例如:
5.限定連續RE字元范圍{}
因為符號{}在shell中是有特殊意義的,因此必須要使用轉義字元來讓它失去特殊意義才行。
例如
^word 表示待查找的字元word在首行
word$ 表示待查找的字元在結尾
.(小數點)表示一定有一個任意字元的字元
表示轉義字元,將特殊符號的特殊意義去掉
*表示重復零個或無窮多個前一個字元
[list]表示從字元集合list中找出想太選取的一個字元
[n1-n2]表示從字元集中查找想要選取的字元范圍
[^n1-n2]表示從字元集中查找不要的字元串或范圍
{n,m}表示連續n到m個前一個字元,若為{n}表示連續n個前一個字元,{n,}表示連續n個以上前一個字元。
sed命令可以將數據進行替換、刪除、新增、選取特定行等
sed [-nefr] [動作]
其中
-n表示使用安靜模式,在一般sed用法中,所有來自STDIN的數據一般都會被列出在屏幕上,但如果加上-n參數後,則只有經過sed特殊命令處理的那一行才會被列出來。
-e表示直接在命令行模式上進行sed的動作編輯
-f表示直接將sed的動作寫在一個文件內
-r表示sed的動作支持的是擴展型的正則表達式,默認是基礎型的正則表達式
-i表示直接修改讀取的內容,而不是由屏幕輸出
動作說明:
[n1[,n2]] function
n1,n2:不一定會存在,一般代表選擇進行動作的行
function 有下面的參數
a表示新增,a後面可以接字元串,而這些字元串會在新的一行出現(目前的下一行)
c表示替換,c的後面可以接字元串,這些字元串可以替換n1,n2之間的行
d表示刪除
i表示插入,i後買呢可以接字元串,而這些字元串會在新的一行出現(目前的上一行)
p表示列印,將某個選擇的數據列印出來,通常會和參數-n一起運行
s表示替換,可以直接進行替換工作,sed 『s/要被替換的字元串/新的字元串/g'
例如
awk是非常棒的數據處理工具。
awk '條件類型1{動作1} 條件類型2{動作2} 條件類型3{動作3}....' filename
awk主要是處理每一行的欄位內的數據,而默認的欄位的分隔符是空格鍵或[tab]鍵。
例如
awk內置變數有:
例如:
awk的邏輯運算符
例如:
我們發現上面會輸出第一行奇怪的數據,是因為當讀入第一行的時候,變數之間還是以空格鍵進行分隔的,所有,我們雖然定義了FS=":",但是卻在第二行後開始生效,我們可以利用BEGIN這個關鍵字。
使用awk進行計算統計
例如
格式輸出中,在printf的格式設置中,務必加上
,才能進行分行
在awk中變數可以直接使用,不用加上$符號
crontab進行工作調度
crontab [-u username] [-l | -e | -r]
-u表示只有root才能進行這個任務
-e表示編輯crontab的工作內容
-l表示查閱crontab的工作內容
-r表示刪除crontab的所有工作內容
例如
其中由6個欄位組成
分別表示的意義是:
分鍾 小時 日期 月份 周 命令
0-59 0-23 1-31 1-12 0-7 命令
其中周的0和7都表示星期日
表示任意時刻
,(逗號)表示分隔時段的意思,例如0 3,6 * * * commond,表示在3和6時執行
-(減號)表示一段時間范圍,例如20 8-12 * * * commond,表示8到12時之間每小時的20分執行。
/n(斜線)表示每隔n單位間隔的意思,例如 /5 * * * * commond,表示每隔5分鍾執行一次。
執行crontab -e這個crontab其實是/usr/bin/crontab這個執行文件。
scp -r 源文件路徑 root@ip:目標文件路徑
⑵ 怎麼使用CMD裡面的print命令
print 列印命令用法:
PRINT [/D:device] [[drive:][path]filename[...]]
/D:device 指定列印設備。
因此你的這樣寫:
print /D:指定列印設備 C:UsershjDesktopcc21.txt
⑶ linux命令輸出到屏幕的同時保存到文件
tee用於把命令結果列印在屏幕上並同時保存到文件。
tee用法
描述:從標准輸入中讀取並同時寫入到標准輸出和指定的文件上
選項:
-a,--append:不覆蓋,而是追加輸出到指定的文件中
-i,--ignore-interrupts:忽略中斷信息
若指定的輸出文件為'-',則再次輸出到標准輸出上
實例:
tee Example.txt #將標准輸入中輸入的內容同時輸出到Example.txt和標准輸出上
實踐:
例如 ifconfig | tee ifconfig.log
查看iconfig.log
註:
標准輸入一般有鍵盤和其它文件,標准輸出有屏幕等。tee只能進行標准輸入的輸出,對於錯誤輸入是不能輸出的。
在調試腳本時,想要每個命令的執行過程都輸出到屏幕或者文件中,以便後續查看,如何操作呢?首先腳本第一行要寫為「#!/bin/bash -x」,這樣會把每個命令的執行記錄都輸出到屏幕,若還要輸出到指定文件,要用到tee,但tee只能進行標准輸入,對於標准輸入和錯誤輸入要用到下式:
./filename.sh 2>&1 | tee output.log 或者直接 bash -x ./filename.sh 2>&1 | tee output.log
今天調試一個bash,要把屏幕的輸出結果存到log文件中,開始輸入$bash -x ./test.sh > log 結果發現log里只存放了程序的執行結果,後來在cu的一篇帖子里http://bbs.chinaunix.net/viewthread.php?tid=264380&highlight=bash得到了啟發,bash -x的調試信息是輸出到2號流中的,所以解決方案為bash -x ./test.sh 2>&1 | tee log 想起以前要存放執行make的結果時也遇到類似問題,總結如下:
1、管道符的「I」的作用只是把前一個程序的標准輸出流(stdout)的數據作為後一個程序的標准輸入流stdin的數據,如不進行重定向,則其他輸出流的信息是無法傳給後面的程序的
2、屏幕得到的信息不一定是從程序的標准輸出來的,也包括標准錯誤輸出流stderr中的信息
3、有些程序(特別是象bash、make這樣執行了其他程序的程序)的設計者為了省事,把一些正常情況的信息也放在stderr中輸出(即使程序本身並無錯誤),而stdout用來輸出被調用程序的執行時信息,造成了用戶的誤解簡單編寫了一下腳本,通過ssh登陸在命令行下運行正常,可是將腳本添加到crontab中就不正常。想記錄一下輸出信息,分析一下錯誤原因。將腳本通過使用>info.log 重定向輸出,結果發現一些在命令行下可以看到的文本信息沒有記錄到info.log文件中,研究了一下,那些輸出估計是輸出到了標准錯誤上。
研究了一下通常添加命令後面幾個輸出含義
■ >/dev/null 輸出到空設備,表示丟掉輸出信息。
■ 2>&1將輸出到標准錯誤的信息輸出到標准輸出設備(通常是屏幕)有3個默認的i/o,
■ 0是標准輸入,一般是鍵盤
■ 1是標准輸出,一般是屏幕
■ 2是標准錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了
⑷ JAVA從命令行輸入幾個字元串,統計並列印出輸入字元串的個數、以及各字元串的字元個數。(
public static void main(String[] args) {
System.out.println("字元串個數:"+args.length);
for(int i=0;i<args.length;i++) {
System.out.println("第"+(i+1)+"字元串字元個數:"+
args[i].length());
//args[i].length()表示傳入參數的個數
}
⑸ 在Python命令行輸出「你好,Python」能得到什麼結果
如果在 Python 命令行中輸入命令,您將看到以下輸出:print("你好,Python")
此代碼會將字元串寫入文件,而不是將其列印到命令行。可以使用此方法將函數的輸出重定向到 Python 中的任何類似文件的對象,例如文件、字元串緩沖區或套接字。祥談"你好,Python"output.txtprint()
回答不易望請採納