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 命令

posted @ 2017-03-16 16:44  袁老板  阅读(264)  评论(0编辑  收藏  举报