50个最常用的UNIX/Linux命令
1. tar 命令
- 创建一个新的 tar 文档
$ tar cvf archive_name.tar dir name/ - 从现有 tar 文档提取文件
$ tar xvf archive_name.tar - 查看现有 tar 文档
$ tar tvf archive_name.tar
2. grep 命令
- 从文件中搜索字符串
$ grep -i "the" demo_file - 打印输出匹配的行,以及后面三行
$ grep -A 3 -i "example" demo_text
Search for a given string in all files recursively - 在所有文件中递归搜索字符串
$ grep -r "ramesh" *
3. find 命令
- 通过文件名查找文件
$ find -i name "MyCProgram.c" - 在被搜索到的文件中执行查找命令
$ find -i name "MyCProgram.c" -exec md5sum {} ; - 在home目录下搜索所有空目录
$ find ~ -empty
4. ssh 命令
- 登录远程主机
ssh -l jsmith remotehost.example.com - 调试SSH客户端
ssh -v -l jsmith remotehost.example.com - 显示SSH客户端版本
$ ssh -V
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
5. sed 命令
- 当你拷贝一个DOS文件到Unix环境,你能在文档的任何行尾找到\r\n。下面的例子是使用sed命令进行转换格式化在Unix环境下的DOS文档
$ sed 's/.$//' filename - 以相反的顺序打印输出内容
$ sed -n '1!G;h;$p' thegeekstuff.txt - 为文件中所有非空行添加行号
$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'
6. awk 命令
- 使用 awk 命令删除重复行
$ awk '!($0 in array) { array[$0]; print }' temp - 从 /etc/passwd 打印输出所有拥有相同 uid 和 gid 的行
$awk -F ':' '$3==$4' passwd.txt - 从文件中打印输出具体的字段
$ awk '{print $2,$5;}' employee.txt
7. vim 命令
- 跳转至文件的第143行
$ vim +143 filename.txt - 跳转至文件中第一个匹配的指定字符
$ vim +/search-term filename.txt
Open the file in read only mode. - 以只读模式打开文件
$ vim -R /etc/passwd
8. diff 命令
- 比对时忽略空白
$ diff -w name_list.txt name_list_new.txt
2c2,3
< John Doe --- > John M Doe
Jason Bourne
9. sort 命令
- 正序排序文件
$ sort names.txt - 倒序排序文件
$ sort -r names.txt - 根据第三个字段排序文件
$ sort -t: -k 3n /etc/passwd | more
10. export 命令
- 查看Oracle相关环境变量
$ export | grep ORACLE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm" - 导出环境变量
$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0
11. xargs 命令
- 拷贝所有图片到外部的硬盘
$ ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory - 在系统中查找所有jpg格式的图片并存档
$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz - 下载所有url-list中提到的文件
$ cat url-list.txt | xargs wget –c
12. ls 命令
- 以人类可读的格式显示文件大小 (例如 KB,MB 等)
$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz - 使用 ls -ltr 命令根据最后修改时间排序文件
$ ls -ltr - 使用 ls -F 命令根据特殊字符对文件进行分类
$ ls -F
13. pwd command
- pwd 命令是打印当前工作目录,没什么可说的。
14. cd 命令
- 使用 cd - 命令切换最后两个目录
- 使用 shopt -s cd spell 命令自动纠正输入cd命令式错误的目录名
15. gzip 命令
- 创建一个 .gz 格式的压缩文件
$ gzip test.txt - 解压一个 .gz 格式的压缩文件
$ gzip -d test.txt.gz
Display compression ratio of the compressed file using gzip -l - 使用gzip -l 命令显示压缩文件的压缩比例
$ gzip -l *.gz
compressed uncompressed ratio uncompressed_name
23709 97975 75.8% asp-patch-rpms.txt
16. bzip2 命令
To create a *.bz2 compressed file:
- 创建一个 .bz2 格式的压缩文件
$ bzip2 test.txt
To uncompress a *.bz2 file: - 解压一个 .bz2 格式的压缩文件
$ bzip2 -d test.txt.bz2
17. unzip 命令
- 解压提取一个 .zip 格式的压缩文件
$ unzip test.zip - 不解压查看 .zip 格式的压缩文件
$ unzip -l jasper.zip - 存档 .zip 格式的压缩文件
Length Date Time Name
40995 11-30-98 23:50 META-INF/MANIFEST.MF
32169 08-25-98 21:07 classes_
15964 08-25-98 21:07 classes_names
10542 08-25-98 21:07 classes_ncomp
18. shutdown 命令
- 10分钟过后关闭系统
$ shutdown -h +10 - 重启系统
$ shutdown -r now - 强制重启系统时检查文件系统
$ shutdown -Fr now
19. ftp 命令
- ftp和secure ftp (sftp)类似的命令,去连接一个远程的服务器并执行以下操作下载多个文件
$ ftp IP/hostname
ftp> mget *.html - 在下载远程服务器上的文件前使用 mls ftp 命令查看相关文件名称
$ ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html
20. crontab 命令
View crontab entry for a specific user
- 查看指定用户的 crontab 条目
$ crontab -u john -l - 启动一个每10分钟执行的 cron 任务 (检查硬盘空间)
*/10 * * * * /home/ramesh/check-disk-space
21. service 命令
service命令是用于运行系统中的初始化脚本,例如可以使用service命令代替调用位于 /etc/init.d/ 的完整文件夹路径
- 检查ssh服务的状态
$ service ssh status - 检查所有服务的状态
service --status-all - 重启一个服务
$ service ssh restart
22. ps 命令
ps 命令用于显示关于当前系统中运行的进程信息,ps 命令可以携带很多参数,下面是关于ps命令的一些常见问题
- 查看当前运行的进程
$ ps -ef | more - 以树形结构查看当前运行的进程,H 参数代表进程的层次结构
$ ps -efH | more
23. free 命令
-
这个命令用于显示系统中可用空闲内存。通常输出以 bytes 显示。
$ free
total used free shared buffers cached
Mem: 3566408 1580220 1986188 0 203988 902960
-/+ buffers/cache: 473272 3093136
Swap: 4000176 0 4000176 -
如果你想要快速的检查系统使用了多少GB内存,可以使用 -g 参数。-b 参数以 bytes 显示,-k以 KB 显示
$ free -g
total used free shared buffers cached
Mem: 3 1 1 0 0 0
-/+ buffers/cache: 0 2
Swap: 3 0 3 -
如果你想要查看系统总内存(包括交换),可以使用 -t 参数进行转换。将会以如下行显示:
ramesh@ramesh-laptop:~$ free -t
total used free shared buffers cached
Mem: 3566408 1592148 1974260 0 204260 912556
-/+ buffers/cache: 475332 3091076
Swap: 4000176 0 4000176
Total: 7566584 1592148 5974436
24. top 命令
- top 命令显示系统中前面的进程(默认按 CPU 使用排序)。想要根据某个列排序,可以按大写的O,将会显示出所有可以排序的列
- 当前排序列 : P for window 1 : Def
- 选择通过字母排序返回所有的key
a: PID = Process Id v: nDRT = Dirty Pages count
d: UID = User Id y: WCHAN = Sleeping in Function
e: USER = User Name z: Flags = Task Flags
........ - 显示只属于特定用户的进行使用 -u 选项。下面是只展示oracle用户的top进程
$ top -u oracle
25. df 命令
- 显示文件系统磁盘空白可用,输入 -k 以bytes输出
$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 29530400 3233104 24797232 12% /
/dev/sda2 120367992 50171596 64082060 44% /home - df -h显示输出以人类可读的表格,例如大小将显示成GB
ramesh@ramesh-laptop:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 3.1G 24G 12% /
/dev/sda2 115G 48G 62G 44% /home - 使用 -T 参数显示文件系统类型
ramesh@ramesh-laptop:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 29530400 3233120 24797216 12% /
/dev/sda2 ext4 120367992 50171596 64082060 44% /home
26. kill 命令
-
使用 kill 命令终止一个进程。首先使用ps -ef 命令获取进程ID,然后使用 kill -9 杀掉Linux进程。你也可以使用 killall,xkill命令终止一个unix进程
$ ps -ef | grep vim
ramesh 7243 7222 9 22:43 pts/2 00:00:00 vim$ kill -9 7243
27. rm 命令
- 在删除文件前获得确认信息
$ rm -i filename.txt - 同时给shell元字符文件名参数是非常有用的
- 在删除文件前输出文件名和获取确认信息
$ rm -i file* - 下面的例子是递归删除所有文件和文件夹,也会删除自己的文件夹
$ rm -r example
28. cp 命令
- 拷贝文件1到文件2的保存模式,拥有权和时间戳
$ cp -p file1 file2 - 拷贝文件1到文件2,如果文件2存在,那么在覆盖前提示确认信息
$ cp -i file1 file2
29. mv 命令
- 重命名文件1到文件2,如果文件2存在,那么在覆盖前提示确认信息
$ mv -i file1 file2
提示 : mv -f 是相反的,在覆盖文件的时候不提示确认信息 - mv -v 将会打印出有用的在文件重命名期间所发生的元信息
$ mv -v file1 file2
30. cat 命令
- 你可以同时查看多个文件,下面的例子将file1 file2紧随其后的内容打印到stdout
$ cat file1 file2 - 当显示文件,cat -n 命令会在每行的后面追加行号
$ cat -n /etc/logrotate.conf
1 /var/log/btmp {
2 missingok
3 monthly
4 create 0660 root utmp
5 rotate 1
6 }
31. mount 命令
-
挂载文件系统时,您应该首先创建一个目录并挂载它,如下所示。
$ mkdir /u01$ mount /dev/sdb1 /u01
-
你也可以添加这个卷为自动挂载。例如任何时间系统重启,文件系统会自动挂载
/dev/sdb1 /u01 ext2 defaults 02
32. chmod 命令
- chmod 命令是用于修改文件或者文件夹的权限
- 给用户和组对于指定的文件所有的权限(例如:读,写和执行)
$ chmod ug+rwx file.txt - 撤销所有对于组对于指定文件的权限(例如:读,写和执行)
$ chmod g -rwx file.txt - 将文件权限递归地应用于所有子目录中的文件。
$ chmod -R ug+rwx file.txt
33. chown 命令
- chown 命令是用于修改文件的拥有者和组
- 改变拥有者为oracle和组给db在一个文件。例如:同时改变所有者和组
$ chown oracle:dba dbora.sh - 使用 -R 递归地改变所有权
$ chown -R oracle:dba /home/oracle
34. passwd 命令
- 改变你的密码使用passwd命令行,将会提示在使用新密码前输入旧密码
$ passwd - 超级用户使用passwd命令重置其他用户的密码,将不会提示当前用户密码。
$ passwd USERNAME - 给指定的用户删除密码。Root用户可以给指定用户禁用密码。如果密码被禁用了,用户可以不使用密码登录
$ passwd -d USERNAME
35. mkdir 命令
- 在你的home目录下创建一个temp目录
$ mkdir ~/temp - 使用mkdir命令创建嵌套的目录。如果任何目录已经存在,将不会显示任何错误。如果目录不存在,将会创建他们
$ mkdir -p dir1/dir2/dir3/dir4/
36. ifconfig 命令
-
使用ifconfig命令查看或者配置Linux系统网络接口
-
查看所有网络接口的状态
$ ifconfig -a -
使用up或者down来开启或停止指定的网络接口
$ ifconfig eth0 up$ ifconfig eth0 down
37. uname 命令
- uname 命令显示系统重要的信息,例如内核名称,主机名称,内核释放版本,处理器类型等
- 例子中uname输出一个Ubuntu笔记本信息
$ uname -a
Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux
38. whereis 命令
- 当你想要找出特定存在的Unix命令(例如:ls命令存在哪里?),你可以执行如下命令
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz - 当你想要从默认路径以外搜索一个可执行的,你可以使用 —B 选项并且加上路径参数。 搜索的可执行的会在/tmp路径,并且尽可能展示
$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk
39. whatis 命令
- whatis 命令显示一个关于当前命令单独的行介绍
$ whatis ls
ls (1) - list directory contents
$ whatis ifconfig
ifconfig (8) - configure a network interface
40. locate 命令
- 使用locate命令你可以快速的搜索到特定文件的路径或者文件组。locate命令使用数据库被更新资料库创建
- 下面的例子是展示所有包含crontab文字的系统文件
$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim
41. man 命令
-
显示一个特定命令的页面
$ man crontab
When a man page for a command is located under more than one section, you can view the man page for that command from a specific section as shown below. -
当一个man 页面命令坐落在一个以上的部分,您可以查看该命令的页面从特定部分如下所示。
$ man SECTION-NUMBER command-name
General commands
System calls
C library functions
Special files (usually devices, those found in /dev) and drivers
File formats and conventions
Games and screensavers
Miscellaneous
System administration commands and daemons -
当你使用whatis crontab命令,你将会注意到crontab 有两个man页面(部分1和部分5).查看第五部分的crontab man 页面,如下
$ whatis crontab
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron$ man 5 crontab
42. tail 命令
- 默认打印文件最后10行
$ tail filename.txt - 打印文件N行
$ tail -n N filename.txt - 事实查看文件内容使用 tail -f命令,这在查看log文件时很有用,可以使用CTRL-C终止
$ tail -f log-file
43. less 命令
- 当查看大的日志文件时less是非常高效的,它不需要去打开并加载全部
$ less huge-log-file.log - 一旦你使用less命令打开一个文件,如下两个快捷键会对你非常有帮助
CTRL+F – forward one window
CTRL+B – backward one window
44. su 命令
- 切换到不同的用户帐号使用us命令,超级用户可以不输入密码切换到任何其他用户
$ su - USERNAME - 从一个不同的账户名执行一个单独的命令。下面的例子,john可以执行ls命令作为raj用户名,一旦这个命令执行,将会返回到John的账号
[john@dev-server]$ su - raj -c 'ls'
[john@dev-server]$ - 登录一个指定的用户帐号,然后执行指定的命令代替默认的命令
$ su -s 'SHELLNAME' USERNAME
45. mysql 命令
- mysql可能是在Linux上使用最广泛的开源数据库。即使你不运行mysql数据库在自己的服务器上,你也可以使用mysql命令(客户端)连接到一个运行在远程服务器上的mysql数据库
- 当连接一个远程的mysql数据库时,会提示你输入密码
$ mysql -u root -p -h 192.168.1.2
To connect to a local mysql database. - 连接一个本地的mysql数据库
$ mysql -u root -p - 如果你想要命令行自己指定密码,在输入密码后立即在后面输入-p(不输入任何空格)
46. yum 命令
- 使用 yum 命令安装httpd
$ yum install httpd - 通过 yum 命令升级httpd
$ yum update httpd - 通过 yum 命令卸载删除httpd
$ yum remove httpd
47. rpm 命令
- 使用 rpm 命令安装apache
$ rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm
To upgrade apache using rpm. - 通过 rpm 升级apache
$ rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm
To uninstall/remove apache using rpm. - 通过 rpm 卸载删除apache
$ rpm -ev httpd
48. ping 命令
- 给一个远程的主机发送5个数据包
$ ping -c 5 gmail.com
49. date 命令
-
设置系统日期时间
$ date -s "01/31/2010 23:59:53" -
一旦你已经修改了系统日期,你应该使用如下命令同步硬件时钟
$ hwclock –systohc$ hwclock --systohc –utc
50. wget 命令
- 使用 wget 命令快速高效的方法从因特网下载软件,音乐,视频资源
$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz - 下载和保存使用不同的名字
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701