Linux下的基本操作命令集錦
對于Linux下的開發(fā)人員來說,除了編寫代碼之外,也要熟練掌握Linux操作系統(tǒng)的一些基本操作。很多開發(fā)人員可能會有這樣的經(jīng)歷:有很多非常簡單的操作命令長期不用就忘掉了,等需要用到的時候又要到處去找,甚至去問周圍的同事。在尷尬之余,我們也怪自己沒有將那些簡單而有用的操作命令記錄下來。
本文匯總了我在使用Linux的過程中所使用過的一些基本操作,可供相關(guān)的開發(fā)人員參考。本文中的操作命令雖然比較簡單,但很實用,相信對大家會有所幫助的。
這些基本的操作命令如下:
1.Linux下,如何從當(dāng)前普通用戶切換到root用戶?如何從root用戶切換到普通用戶?如何從當(dāng)前普通用戶切換到其他普通用戶?
1)從當(dāng)前普通用戶切換到root用戶可使用su命令,并需要輸入用戶名(root)和密碼。操作示例如下:
- zhou:~> su - root
- Password:
- root:~
其中,輸入的密碼是不會顯示出來的。
2)從root用戶切換到普通用戶也使用su命令,只需要輸入用戶名。操作示例如下:
- root:~ su - zhou
- zhou:~>
3)從當(dāng)前普通用戶切換到其他普通用戶也使用su命令,并需要輸入用戶名和密碼。操作示例如下:
- zhou~> su - zhao
- Password:
- zhao:~>
其中,輸入的密碼是不會顯示出來的。
2.如何在Linux下的大量文件中搜索特定的文本內(nèi)容?
可使用grep命令來實現(xiàn)特定文本內(nèi)容的搜索,具體使用示例如下:
(1)在某個文件中搜索特定的文本內(nèi)容,例如在Test.txt中搜索“Hello”,可使用如下兩個命令:
- 1)grep “Hello” Test.txt
- 2)cat Test.txt | grep “Hello”
(2)在某一系列文件中搜索特定的文本內(nèi)容,例如在Test.txt、Test1.txt、Test2.txt…中搜索“Hello”,可使用如下兩個命令:
- 1)grep “Hello” Test*
- 2)cat Test* | grep “Hello”
其中,星號(*)為通配符。
(3)在某一個或一系列文件中搜索特定的文本內(nèi)容出現(xiàn)的次數(shù),例如在Test.txt、Test1.txt、Test2.txt…中搜索“Hello”的出現(xiàn)次數(shù),可使用如下兩個命令:
- 1)grep “Hello” Test* | wc -l
- 2)cat Test* | grep “Hello” | wc -l
其中,星號(*)為通配符。
3.如何快速統(tǒng)計在Linux下的同類文件(相同前綴或后綴)的個數(shù)?
可使用“ls -ltr 文件名 | wc -l”命令,操作示例如下:
- zhou:~> ls -ltr Test* | wc -l
- 11
其中,星號(*)為通配符。
4.如何在Linux下對文件進(jìn)行壓縮和解壓縮?
可使用tar命令對文件進(jìn)行壓縮和解壓縮,具體操作示例如下:
1)如果想把test.txt文件壓縮為test.tar,則可執(zhí)行如下命令:
- tar -zcvf test.tar test.txt
2)如果想把test.tar解壓縮,則可執(zhí)行如下命令:
- tar -zxvf test.tar
5.如何在Linux下使用命令登錄到MySQL、Oracle和Sybase?
(1)登錄到MySQL使用如下命令:
mysql -u用戶名 -p’密碼’ -h網(wǎng)絡(luò)IP地址 -P端口
如:
- mysql -uroot -p’root’ -h10.10.10.10 -P3306
(2)登錄到Oracle使用如下命令:
sqlplus 用戶名/’密碼’@數(shù)據(jù)庫服務(wù)名
如:
- sqlplus username/’userpwd’@db10_10_10_10
注意:登錄Oracle之前需要到Oracle目錄下的tnsnames.ora文件里面配置數(shù)據(jù)庫服務(wù)名,如下所示:
- 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數(shù)據(jù)庫服務(wù)名
如:
- isql -Uusername -Puserpwd -Sdb10_10_10_10
6.如何在Linux下使用命令啟動Oracle?
首先登錄到Oracle用戶下,然后按照如下步驟操作:
(1)打開Oracle監(jiān)聽
- lsnrctl start
(2)進(jìn)入sqlplus
- sqlplus /nolog
(3)使用sysdba角色登錄sqlplus
- SQL> conn /as sysdba
(4)啟動數(shù)據(jù)庫
- SQL> startup
經(jīng)過上面的四個步驟,Oracle數(shù)據(jù)庫就可以正常啟動并使用了。
啟動之后,可以用這個命令查看啟動是否正常:lsnrctl status。
如果要關(guān)閉數(shù)據(jù)庫,可在第(4)步執(zhí)行“shutdown”命令,如果要強(qiáng)制關(guān)閉,則使用“shutdown abort”命令。
在Oracle用戶下直接運行SQL腳本,可使用如下命令:
- sqlplus username/’userpwd’@db10_10_10_10 @test.sql
7.如何在Linux下使用命令啟動Sybase?
首先登錄到Sybase用戶下,然后按照如下步驟操作:
(1)轉(zhuǎn)到install目錄下
可使用cd命令,如本人使用的是15.0版本的Sybase,則需要執(zhí)行如下命令:
- cd /home/sybase/ASE-15_0/install
(2)使用“startserver -f RUN_SYBASE”命令啟動Sybase
注意,“RUN_SYBASE”是一個shell腳本文件,用于啟動Sybase,不同的Sybase安裝版本中的文件名會有所區(qū)別。
在Sybase用戶下直接運行SQL腳本,可使用如下命令:
- isql -Uusername -Puserpwd -Sdb10_10_10_10 -itest.sql
8.如何在Linux下查看當(dāng)前系統(tǒng)的時間?
直接使用“date”命令即可,如下所示:
- ~date
- Thu May 5 11:10:41 CST 2016
9.如何在Linux下添加和刪除用戶?
首先切換到root用戶下,然后按照如下示例執(zhí)行添加用戶的操作:
- ~useradd -d /home/zhou -m zhou
- ~passwd zhou
- Changing password for zhou.
- ~New password:
- ~Re-enter new password:
- ~Password changed
刪除用戶時,只需在root用戶下執(zhí)行如下操作即可:
- userdel -r zhou
10.當(dāng)Linux下有程序崩潰的時候,如何修改操作系統(tǒng)配置以產(chǎn)生core文件?
當(dāng)Linux下程序異常退出時,內(nèi)核會在當(dāng)前工作目錄下生成一個core文件(是一個內(nèi)存映像,同時加上調(diào)試信息)。
通過如下兩個步驟可以讓系統(tǒng)將core文件產(chǎn)生出來:
(1)在當(dāng)前用戶下執(zhí)行“ulimit -a”命令以查看程序異常崩潰時是否會產(chǎn)生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表示不會產(chǎn)生core文件,可用“ulimit -c filesize”命令設(shè)置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.當(dāng)Linux下使用VI編輯文件時,如何快速跳轉(zhuǎn)到文件的第一行和最后一行?
(1)要跳轉(zhuǎn)到文件的第一行,可以使用如下命令:
1)gg
2):0 (注意:冒號是不可少的)
3):1 (注意:冒號是不可少的)
(2)要跳轉(zhuǎn)到文件的最后一行,可以使用如下命令:
1):$ (注意:冒號是不可少的)
2)Shift + G (即Shift鍵和G鍵的組合)
12.如何查看Linux下的文件中的重復(fù)記錄?
(1)如果是單個文件,可使用如下命令:
cat 文件名 | uniq -d
如:
- cat test.txt | uniq -d
(2)如果是多個文件(相同前綴或后綴),可使用如下命令:
cat (文件前綴)或(文件后綴) | uniq -d
如:
- cat test* | uniq -d
其中,星號(*)為通配符。
13.如何統(tǒng)計Linux下的文件中的記錄行數(shù)和字節(jié)數(shù)?
(1)對于單個文件中的記錄行數(shù)和字節(jié)數(shù)的統(tǒng)計,可使用如下命令:
1)統(tǒng)計記錄行數(shù)
wc -l 文件名
如:
- ~ wc -l TestFile.txt
- 5 TestFile.txt
2)統(tǒng)計字節(jié)數(shù)
wc -c 文件名
如:
- ~ wc -c TestFile.txt
- 48 TestFile.txt
(2)對于多個文件中的記錄行數(shù)和字節(jié)數(shù)的統(tǒng)計,可使用如下命令:
1)統(tǒng)計記錄行數(shù)
wc -l (文件前綴)或(文件后綴)
如:
- ~ wc -l TestFile*
- 2 TestFile1.txt
- 5 TestFile.txt
- 7 total
2)統(tǒng)計字節(jié)數(shù)
wc -c (文件前綴)或(文件后綴)
如:
- ~ wc -c TestFile*
- 18 TestFile1.txt
- 48 TestFile.txt
- 66 total
其中,星號(*)為通配符。
14.如何查看Linux下的某個目錄下的文件總數(shù)?
可使用如下命令:
ls -1 | wc -l
如:
- ~ ls -1 | wc -l
- 41
15.如何在Linux下使用FTP功能?
第一步,啟用系統(tǒng)的FTP功能
在root用戶下執(zhí)行如下命令:
- service vsftpd start
第二步,執(zhí)行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>
通過以上三步,就已經(jīng)通過FTP的方式連接到對端機(jī)器上了。
如果還要獲取某個文件,可繼續(xù)執(zhí)行第四步操作。
第四步,獲取某個文件
- 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,則繼續(xù)執(zhí)行第五步操作。
第五步,停止FTP
- ftp> bye
- 221 Goodbye.
16.如何在Linux下使用GCC將C代碼文件編譯為可執(zhí)行的文件?
假設(shè)現(xiàn)有HelloWorld.c文件,可以使用如下命令(命令中的gcc均可替換為cc)將其編譯為可執(zhí)行的文件:
(1)生成a.out可執(zhí)行文件
第一步,執(zhí)行:gcc -c HelloWorld.c
第二步,執(zhí)行:gcc HelloWorld.o
即可生成a.out文件,然后執(zhí)行./a.out命令,即可看到程序運行結(jié)果。
(2)生成HelloWorld可執(zhí)行文件
第一步,執(zhí)行:gcc -c HelloWorld.c
第二步,執(zhí)行:gcc -o HelloWorld HelloWorld.o
即可生成HelloWorld文件,然后執(zhí)行./HelloWorld或HelloWorld命令,即可看到程序運行結(jié)果。
(3)生成HelloWorld可執(zhí)行文件
直接執(zhí)行:gcc -o HelloWorld HelloWorld.c
即可生成HelloWorld文件,然后執(zhí)行./HelloWorld或HelloWorld命令,即可看到程序運行結(jié)果。
(4)生成帶調(diào)試信息的HelloWorld可執(zhí)行文件
直接執(zhí)行:gcc -g -o HelloWorld HelloWorld.c 或 gcc -g HelloWorld.c -o HelloWorld
即可生成HelloWorld文件,然后執(zhí)行./HelloWorld或HelloWorld命令,即可看到程序運行結(jié)果。
17.如何查看Linux下某進(jìn)程的詳細(xì)信息?
直接使用“ps -ef | grep 進(jìn)程(或程序)名”即可。
例如,要想查看正在運行的“HelloWorld”進(jìn)程的詳細(xì)信息,可使用如下命令:
- ps -ef | grep HelloWorld
命令執(zhí)行結(jié)果如下:
- ~ ps -ef | grep HelloWorld
- 1009 7437 1 0 09:04 ? 00:00:21 HelloWorld
其中,第二個參數(shù)(即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是可執(zhí)行文件。
19.如何查看Linux下某個可執(zhí)行文件所依賴的庫文件?
直接使用“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ù)據(jù)庫腳本文件從sh格式變?yōu)镾QL格式?
假設(shè)要將example.sh文件變?yōu)閑xample.sql,則執(zhí)行步驟如下:
(1)上傳sh文件
使用FTP工具(如filezilla)將example.sh文件上傳到Linux的對應(yīng)目錄下。
(2)使用dos2unix命令修改文件格式
由于example.sh文件是在本地的Windows操作系統(tǒng)下編寫的,因此要先轉(zhuǎn)換為Linux下的格式才能使用。
dos2unix命令用來將DOS格式的文本文件轉(zhuǎn)換成UNIX格式的,其使用的格式為:dos2unix file,如果一次轉(zhuǎn)換多個文件,把這些文件名直接跟在dos2unix之后(dos2unix file1 file2 file3 …)。
在這里,命令執(zhí)行如下:
- ~ dos2unix example.sh
- dos2unix: converting file example.sh to UNIX format …
(3)使用chmod命令修改文件的權(quán)限
在執(zhí)行了dos2unix命令之后,還是不能立馬生成文件,還需要修改文件的權(quán)限。
chmod命令是Linux系統(tǒng)中最常用到的命令之一,用于改變文件或目錄的訪問權(quán)限。
在這里,命令為:chmod 777 example.sh
(4)生成SQL文件
直接運行帶后綴的sh文件名,即可生成SQL文件。命令如下:
- ~ example.sh
- example.sql no exits and is creating it
表示example.sql文件之前不存在,這是第一次生成。
注意:如果example.sh文件本來就是在Linux下編輯的,那么就可以直接執(zhí)行第四步操作(生成SQL文件)。
22.如何在Linux下跟蹤程序所生成的日志?
程序所生成的日志文件一般以.log作為后綴,在產(chǎn)生日志的過程中,可以用“tail -f 日志文件名”命令來跟蹤日志。示例如下:
- ~ tail -f test.log
- Hello,world
- Hello,world
- Hello,world
如果要查看具體的日志文件內(nèi)容,可以使用“vi 日志文件名”命令。示例如下:
- ~ vi test.log
- Hello,world
- Hello,world
- Hello,world
- Hello,world
可以直接使用鍵盤上的上下左右按鈕來查看日志內(nèi)容,如果要搜索文本內(nèi)容,可以使用“/欲查找內(nèi)容”命令(如:/world)。
23.如何在Linux下查看某個系統(tǒng)程序是否存在?
直接使用“whereis 程序名”命令即可,示例如下:
- ~ whereis telnet
- telnet: /usr/bin/telnet /usr/share/man/man1/telnet.1.gz
24.如何將Linux下的makefile文件所編譯的程序從32位移植為64位?
在將編譯程序所需要的庫都替換為64位的庫之后,只需要直接修改makefile文件即可。
具體要修改makefile文件中的內(nèi)容為:
(1)在“CF_MACRO”項值的后面添加“-D_64_BIT_ -D_REENTRANT -D_PSTAT64”。
(2)在“CFLAGS”項值的最前面添加“-fPIC”。
(3)在最后一個gcc緊接著的后面添加“-fPIC”。
25.如何使用命令對Linux下的文件和目錄進(jìn)行備份?
直接使用cp命令即可,具體如下:
(1)文件的備份
1)直接在當(dāng)前目錄下備份文件,使用命令“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)直接將目錄備份到當(dāng)前位置,使用命令“cp -rf 原目錄名 備份目錄名”。示例如下:
- ~ cp -rf HelloWorld HelloWorld_bak
2)將目錄備份到其他地方,使用命令“cp -rf 原目錄名 備份目錄/備份目錄名”。示例如下:
- ~ cp -rf HelloWorld /home/zhou/zhouzx/HelloWorld_bak
26.如何在Linux下殺死某個進(jìn)程?
首先要查找到要殺死的進(jìn)程的PID,之后執(zhí)行“kill -9 PID”命令即可。
例如,我們要殺死名為“HelloWorld”的進(jìn)程,則執(zhí)行示例如下:
- ~ ps -ef | grep HelloWorld
- zhou 24046 1 2 08:43 ? 00:00:00 HelloWorld
- ~ kill -9 24046
- ~ ps -ef | grep impservice
- ~
27.如何修改Linux下某個文件所屬用戶和群組?
直接在root用戶下執(zhí)行“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文件的完整文件名,再將其刪除。執(zhí)行示例如下:
- ~ 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操作系統(tǒng)的位數(shù)?
有如下兩個命令可以查看Linux操作系統(tǒng)的位數(shù):
- 1) uname -a
- 2) lsb_release -d
如:
1)執(zhí)行第一個命令之后,結(jié)果如下:
- ~ 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
可以看出,操作系統(tǒng)是64位的(x86_64 x86_64 x86_64 GNU/Linux)。
2)執(zhí)行第二個命令之后,結(jié)果如下:
- ~ lsb_release -d
- Description: SUSE Linux Enterprise Server 11 (x86_64)
可以看出,操作系統(tǒng)是64位的(x86_64)。不僅如此,還可以看出使用的操作系統(tǒng)是SUSE Linux的第11版。
30.如何修改Linux的系統(tǒng)時間?
登錄或切換到root用戶下,然后執(zhí)行如下命令:
- date -s “YYYY/MM/DD HH:MI:SS”
命令示例:
- date -s “2016/05/04 13:49:07”
31.如何在Linux下使用命令啟動MySQL?
首先登錄到mysql用戶下,然后執(zhí)行如下命令:
- xpecdmoni
如果要停止MySQL的運行,可執(zhí)行如下命令:
- xsuperstop
在MySQL用戶下直接運行SQL腳本,可使用如下命令:
- mysql -uroot -p’root’ -h10.10.10.10 -P3306 -Ddb_name
【本文是51CTO專欄作者周兆熊的原創(chuàng)文章,作者微信公眾號:周氏邏輯(logiczhou)】