1. 程式人生 > >Linux下的基本操作命令集錦

Linux下的基本操作命令集錦

對於Linux下的開發人員來說,除了編寫程式碼之外,也要熟練掌握Linux作業系統的一些基本操作。很多開發人員可能會有這樣的經歷:有很多非常簡單的操作命令長期不用就忘掉了,等需要用到的時候又要到處去找,甚至去問周圍的同事。在尷尬之餘,我們也怪自己沒有將那些簡單而有用的操作命令記錄下來。

本文彙總了我在使用Linux的過程中所使用過的一些基本操作,可供相關的開發人員參考。本文中的操作命令雖然比較簡單,但很實用,相信對大家會有所幫助的。

這些基本的操作命令如下:

1.Linux下,如何從當前普通使用者切換到root使用者?如何從root使用者切換到普通使用者?如何從當前普通使用者切換到其他普通使用者?


1)從當前普通使用者切換到root使用者可使用su命令,並需要輸入使用者名稱(root)和密碼。操作示例如下:

zhou:~> su - root
Password:
root:~

其中,輸入的密碼是不會顯示出來的。

2)從root使用者切換到普通使用者也使用su命令,只需要輸入使用者名稱。操作示例如下:

root:~ su - zhou
zhou:~>

3)從當前普通使用者切換到其他普通使用者也使用su命令,並需要輸入使用者名稱和密碼。操作示例如下:

zhou~> su - zhao
Password:
zhao:~>

其中,輸入的密碼是不會顯示出來的。

2.如何在Linux下的大量檔案中搜索特定的文字內容?
可使用grep命令來實現特定文字內容的搜尋,具體使用示例如下:
(1)在某個檔案中搜索特定的文字內容,例如在Test.txt中搜索“Hello”,可使用如下兩個命令:

1)grep “Hello” Test.txt
2)cat Test.txt | grep “Hello”

(2)在某一系列檔案中搜索特定的文字內容,例如在Test.txt、Test1.txt、Test2.txt…中搜索“Hello”,可使用如下兩個命令:

1)grep “Hello” Test*
2)cat Test* | grep “Hello”

其中,星號(*)為萬用字元。

(3)在某一個或一系列檔案中搜索特定的文字內容出現的次數,例如在Test.txt、Test1.txt、Test2.txt…中搜索“Hello”的出現次數,可使用如下兩個命令:

1)grep “Hello” Test* | wc -l
2)cat Test* | grep “Hello” | wc -l

其中,星號(*)為萬用字元。

3.如何快速統計在Linux下的同類檔案(相同字首或字尾)的個數?
可使用“ls -ltr 檔名 | wc -l”命令,操作示例如下:

zhou:~> ls -ltr Test* | wc -l
11

其中,星號(*)為萬用字元。

4.如何在Linux下對檔案進行壓縮和解壓縮?
可使用tar命令對檔案進行壓縮和解壓縮,具體操作示例如下:
1)如果想把test.txt檔案壓縮為test.tar,則可執行如下命令:

tar -zcvf test.tar test.txt

2)如果想把test.tar解壓縮,則可執行如下命令:

tar -zxvf test.tar

5.如何在Linux下使用命令登入到MySQL、Oracle和Sybase?
(1)登入到MySQL使用如下命令:
mysql -u使用者名稱 -p’密碼’ -h網路IP地址 -P埠
如:

mysql -uroot -p’root’ -h10.10.10.10 -P3306

(2)登入到Oracle使用如下命令:
sqlplus 使用者名稱/’密碼’@資料庫服務名
如:

sqlplus username/’userpwd’@db10_10_10_10

注意:登入Oracle之前需要到Oracle目錄下的tnsnames.ora檔案裡面配置資料庫服務名,如下所示:

db10_10_10_10 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER=DEDICATED)
(SERVICE_NAME = db)
)
)

(3)登入到Sybase使用如下命令:
isql -U使用者名稱 -P密碼 -S資料庫服務名
如:

isql -Uusername -Puserpwd -Sdb10_10_10_10

6.如何在Linux下使用命令啟動Oracle?
首先登入到Oracle使用者下,然後按照如下步驟操作:
(1)開啟Oracle監聽

lsnrctl start

(2)進入sqlplus

sqlplus /nolog

(3)使用sysdba角色登入sqlplus

SQL> conn /as sysdba

(4)啟動資料庫

SQL> startup

經過上面的四個步驟,Oracle資料庫就可以正常啟動並使用了。
啟動之後,可以用這個命令檢視啟動是否正常:lsnrctl status。
如果要關閉資料庫,可在第(4)步執行“shutdown”命令,如果要強制關閉,則使用“shutdown abort”命令。
在Oracle使用者下直接執行SQL指令碼,可使用如下命令:

sqlplus username/’userpwd’@db10_10_10_10 @test.sql

7.如何在Linux下使用命令啟動Sybase?
首先登入到Sybase使用者下,然後按照如下步驟操作:
(1)轉到install目錄下
可使用cd命令,如本人使用的是15.0版本的Sybase,則需要執行如下命令:

cd /home/sybase/ASE-15_0/install

(2)使用“startserver -f RUN_SYBASE”命令啟動Sybase
注意,“RUN_SYBASE”是一個shell指令碼檔案,用於啟動Sybase,不同的Sybase安裝版本中的檔名會有所區別。

在Sybase使用者下直接執行SQL指令碼,可使用如下命令:

isql -Uusername -Puserpwd -Sdb10_10_10_10 -itest.sql

8.如何在Linux下檢視當前系統的時間?
直接使用“date”命令即可,如下所示:

~date
Thu May 5 11:10:41 CST 2016

9.如何在Linux下新增和刪除使用者?
首先切換到root使用者下,然後按照如下示例執行新增使用者的操作:

~useradd -d /home/zhou -m zhou
~passwd zhou
Changing password for zhou.
~New password:
~Re-enter new password:
~Password changed

刪除使用者時,只需在root使用者下執行如下操作即可:

userdel -r zhou

10.當Linux下有程式崩潰的時候,如何修改作業系統配置以產生core檔案?
當Linux下程式異常退出時,核心會在當前工作目錄下生成一個core檔案(是一個記憶體映像,同時加上除錯資訊)。
通過如下兩個步驟可以讓系統將core檔案產生出來:
(1)在當前使用者下執行“ulimit -a”命令以檢視程式異常崩潰時是否會產生core檔案。示例如下:

~ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 46741
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) 5095324
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 46741
virtual memory (kbytes, -v) 4795600
file locks (-x) unlimited

(2)“core file size”為0表示不會產生core檔案,可用“ulimit -c filesize”命令設定core檔案大小。示例如下:

~ ulimit -c 1000000
~ ulimit -a
core file size (blocks, -c) 1000000
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 46741
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) 5095324
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 46741
virtual memory (kbytes, -v) 4795600
file locks (-x) unlimited

11.當Linux下使用VI編輯檔案時,如何快速跳轉到檔案的第一行和最後一行?
(1)要跳轉到檔案的第一行,可以使用如下命令:
1)gg
2):0 (注意:冒號是不可少的)
3):1 (注意:冒號是不可少的)

(2)要跳轉到檔案的最後一行,可以使用如下命令:
1):$ (注意:冒號是不可少的)
2)Shift + G (即Shift鍵和G鍵的組合)

12.如何檢視Linux下的檔案中的重複記錄?
(1)如果是單個檔案,可使用如下命令:
cat 檔名 | uniq -d
如:

cat test.txt | uniq -d

(2)如果是多個檔案(相同字首或字尾),可使用如下命令:
cat (檔案字首)或(檔案字尾) | uniq -d
如:

cat test* | uniq -d

其中,星號(*)為萬用字元。

13.如何統計Linux下的檔案中的記錄行數和位元組數?
(1)對於單個檔案中的記錄行數和位元組數的統計,可使用如下命令:
1)統計記錄行數
wc -l 檔名
如:

~ wc -l TestFile.txt
5 TestFile.txt

2)統計位元組數
wc -c 檔名
如:

~ wc -c TestFile.txt
48 TestFile.txt

(2)對於多個檔案中的記錄行數和位元組數的統計,可使用如下命令:
1)統計記錄行數
wc -l (檔案字首)或(檔案字尾)
如:

~ wc -l TestFile*
2 TestFile1.txt
5 TestFile.txt
7 total

2)統計位元組數
wc -c (檔案字首)或(檔案字尾)
如:

~ wc -c TestFile*
18 TestFile1.txt
48 TestFile.txt
66 total

其中,星號(*)為萬用字元。

14.如何檢視Linux下的某個目錄下的檔案總數?
可使用如下命令:
ls -1 | wc -l
如:

~ ls -1 | wc -l
41

15.如何在Linux下使用FTP功能?
第一步,啟用系統的FTP功能
在root使用者下執行如下命令:

service vsftpd start

第二步,執行ftp命令,連線到對端IP

~ ftp 10.10.10.10
Connected to 10.10.10.10.
220 (vsFTPd 2.0.7)
Name (10.10.10.10:zhou):

第三步,輸入使用者名稱和密碼

~ Name (10.10.10.10:zhou): zhou
331 Please specify the password.
~ Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

通過以上三步,就已經通過FTP的方式連線到對端機器上了。
如果還要獲取某個檔案,可繼續執行第四步操作。

第四步,獲取某個檔案

ftp> get test.txt
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||30090|)
150 Opening BINARY mode data connection for 166servicemain.sh (698 bytes).
100% |*******************************************************************************| 698 2.28 MB/s 00:00 ETA
226 File send OK.
698 bytes received in 00:00 (64.39 KB/s)
ftp>

如果要停止FTP,則繼續執行第五步操作。

第五步,停止FTP

ftp> bye
221 Goodbye.

16.如何在Linux下使用GCC將C程式碼檔案編譯為可執行的檔案?
假設現有HelloWorld.c檔案,可以使用如下命令(命令中的gcc均可替換為cc)將其編譯為可執行的檔案:
(1)生成a.out可執行檔案
第一步,執行:gcc -c HelloWorld.c
第二步,執行:gcc HelloWorld.o
即可生成a.out檔案,然後執行./a.out命令,即可看到程式執行結果。

(2)生成HelloWorld可執行檔案
第一步,執行:gcc -c HelloWorld.c
第二步,執行:gcc -o HelloWorld HelloWorld.o
即可生成HelloWorld檔案,然後執行./HelloWorld或HelloWorld命令,即可看到程式執行結果。

(3)生成HelloWorld可執行檔案
直接執行:gcc -o HelloWorld HelloWorld.c
即可生成HelloWorld檔案,然後執行./HelloWorld或HelloWorld命令,即可看到程式執行結果。

(4)生成帶除錯資訊的HelloWorld可執行檔案
直接執行:gcc -g -o HelloWorld HelloWorld.c 或 gcc -g HelloWorld.c -o HelloWorld
即可生成HelloWorld檔案,然後執行./HelloWorld或HelloWorld命令,即可看到程式執行結果。

17.如何檢視Linux下某程序的詳細資訊?
直接使用“ps -ef | grep 程序(或程式)名”即可。
例如,要想檢視正在執行的“HelloWorld”程序的詳細資訊,可使用如下命令:

ps -ef | grep HelloWorld

命令執行結果如下:

~ ps -ef | grep HelloWorld
1009 7437 1 0 09:04 ? 00:00:21 HelloWorld

其中,第二個引數(即7437)為PID。

18.如何檢視Linux下某個檔案的型別及編碼格式等?
直接使用“file 檔名”命令即可,使用示例如下:

~ file HelloWorld.c
HelloWorld.c: ASCII C program text, with CRLF line terminators
~ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped

可以看到,HelloWorld.c檔案是ASCII格式的C檔案,而a.out是可執行檔案。

19.如何檢視Linux下某個可執行檔案所依賴的庫檔案?
直接使用“ldd 檔名”命令即可,使用示例如下:

~ ldd a.out
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/tls/libc.so.6 (0x40032000)
/lib/ld-linux.so.2 (0x40000000)

可以看到,a.out依賴於3個庫檔案。

20.如何檢視Linux下磁碟空間的佔用情況?
直接使用“df -h”命令即可,示例如下:

~ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 77G 19G 54G 26% /
udev 3.8G 120K 3.8G 1% /dev
tmpfs 3.8G 72K 3.8G 1% /dev/shm
/dev/vda2 190M 36M 145M 20% /boot

21.如何將Linux下的資料庫指令碼檔案從sh格式變為SQL格式?
假設要將example.sh檔案變為example.sql,則執行步驟如下:
(1)上傳sh檔案
使用FTP工具(如filezilla)將example.sh檔案上傳到Linux的對應目錄下。

(2)使用dos2unix命令修改檔案格式
由於example.sh檔案是在本地的Windows作業系統下編寫的,因此要先轉換為Linux下的格式才能使用。
dos2unix命令用來將DOS格式的文字檔案轉換成UNIX格式的,其使用的格式為:dos2unix file,如果一次轉換多個檔案,把這些檔名直接跟在dos2unix之後(dos2unix file1 file2 file3 …)。
在這裡,命令執行如下:

~ dos2unix example.sh
dos2unix: converting file example.sh to UNIX format …

(3)使用chmod命令修改檔案的許可權
在執行了dos2unix命令之後,還是不能立馬生成檔案,還需要修改檔案的許可權。
chmod命令是Linux系統中最常用到的命令之一,用於改變檔案或目錄的訪問許可權。
在這裡,命令為:chmod 777 example.sh

(4)生成SQL檔案
直接執行帶字尾的sh檔名,即可生成SQL檔案。命令如下:

~ example.sh
example.sql no exits and is creating it

表示example.sql檔案之前不存在,這是第一次生成。

注意:如果example.sh檔案本來就是在Linux下編輯的,那麼就可以直接執行第四步操作(生成SQL檔案)。

22.如何在Linux下跟蹤程式所生成的日誌?
程式所生成的日誌檔案一般以.log作為字尾,在產生日誌的過程中,可以用“tail -f 日誌檔名”命令來跟蹤日誌。示例如下:

~ tail -f test.log
Hello,world
Hello,world
Hello,world

如果要檢視具體的日誌檔案內容,可以使用“vi 日誌檔名”命令。示例如下:

~ vi test.log
Hello,world
Hello,world
Hello,world
Hello,world

可以直接使用鍵盤上的上下左右按鈕來檢視日誌內容,如果要搜尋文字內容,可以使用“/欲查詢內容”命令(如:/world)。

23.如何在Linux下檢視某個系統程式是否存在?
直接使用“whereis 程式名”命令即可,示例如下:

~ whereis telnet
telnet: /usr/bin/telnet /usr/share/man/man1/telnet.1.gz

24.如何將Linux下的makefile檔案所編譯的程式從32位移植為64位?
在將編譯程式所需要的庫都替換為64位的庫之後,只需要直接修改makefile檔案即可。
具體要修改makefile檔案中的內容為:
(1)在“CF_MACRO”項值的後面新增“-D_64_BIT_ -D_REENTRANT -D_PSTAT64”。
(2)在“CFLAGS”項值的最前面新增“-fPIC”。
(3)在最後一個gcc緊接著的後面新增“-fPIC”。

25.如何使用命令對Linux下的檔案和目錄進行備份?
直接使用cp命令即可,具體如下:
(1)檔案的備份
1)直接在當前目錄下備份檔案,使用命令“cp 原檔名 備份檔名”。示例如下:

~ ll
-rw——- 1 zhou users 94 2016-05-09 09:43 HelloWorld.c
~ cp HelloWorld.c HelloWorld1.c
~ ll
-rw——- 1 zhou users 94 2016-05-12 15:18 HelloWorld1.c
-rw——- 1 zhou users 94 2016-05-09 09:43 HelloWorld.c

2)將檔案備份到其他目錄中,使用命令“cp 原檔名 備份目錄/備份檔名”。示例如下:

~ cp HelloWorld.c /home/zhou/zhouzx/HelloWorld1.c

(2)目錄的備份
1)直接將目錄備份到當前位置,使用命令“cp -rf 原目錄名 備份目錄名”。示例如下:

~ cp -rf HelloWorld HelloWorld_bak

2)將目錄備份到其他地方,使用命令“cp -rf 原目錄名 備份目錄/備份目錄名”。示例如下:

~ cp -rf HelloWorld /home/zhou/zhouzx/HelloWorld_bak

26.如何在Linux下殺死某個程序?
首先要查詢到要殺死的程序的PID,之後執行“kill -9 PID”命令即可。
例如,我們要殺死名為“HelloWorld”的程序,則執行示例如下:

~ ps -ef | grep HelloWorld
zhou 24046 1 2 08:43 ? 00:00:00 HelloWorld
~ kill -9 24046
~ ps -ef | grep impservice
~

27.如何修改Linux下某個檔案所屬使用者和群組?
直接在root使用者下執行“chown 所屬使用者:群組 檔名”命令即可,示例如下:

~ll
-rw-r–r– 1 root root 4 May 16 17:14 TestFile.txt
~chown zhou:zhao TestFile.txt
~ll
-rw-r–r– 1 zhou zhao 4 May 16 17:14 TestFile.txt

28.如何刪除Linux下的.swap檔案?
先檢視.swap檔案的完整檔名,再將其刪除。執行示例如下:

~ ll -a
drwx—— 2 zhou users 192 2016-05-19 17:09 .
drwx—— 4 zhou users 96 2016-05-05 17:39 ..
-rw-r–r– 1 zhou users 491010 2016-05-19 17:09 Test.txt
-rwxrwxrwx 1 zhou users 6774 2016-05-19 17:09 .Test.txt.swap
~ rm .Test.txt.swap
~ ll -a
drwx—— 2 zhou users 192 2016-05-19 17:09 .
drwx—— 4 zhou users 96 2016-05-05 17:39 ..
-rw-r–r– 1 zhou users 491010 2016-05-19 17:09 Test.txt

29.如何檢視Linux作業系統的位數?
有如下兩個命令可以檢視Linux作業系統的位數:
1) uname -a
2) lsb_release -d

如:
1)執行第一個命令之後,結果如下:

~ uname -a
Linux suse 3.0.76-0.11-default #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux

可以看出,作業系統是64位的(x86_64 x86_64 x86_64 GNU/Linux)。

2)執行第二個命令之後,結果如下:

~ lsb_release -d
Description: SUSE Linux Enterprise Server 11 (x86_64)

可以看出,作業系統是64位的(x86_64)。不僅如此,還可以看出使用的作業系統是SUSE Linux的第11版。

30.如何修改Linux的系統時間?
登入或切換到root使用者下,然後執行如下命令:

date -s “YYYY/MM/DD HH:MI:SS”

命令示例:

date -s “2016/05/04 13:49:07”

31.如何在Linux下使用命令啟動MySQL?
首先登入到mysql使用者下,然後執行如下命令:

xpecdmoni

如果要停止MySQL的執行,可執行如下命令:

xsuperstop

在MySQL使用者下直接執行SQL指令碼,可使用如下命令:

mysql -uroot -p’root’ -h10.10.10.10 -P3306 -Ddb_name