我常用的linux命令大全

本文介绍我常用的linux命令大全。知识和经验在于积累和总结。

1.  cd

     cd /    切换到根目录

     cd  或者cd ~    切换到当前用户主目录, 其中~表示用户主目录

     cd ..   切换到上级目录

     cd ../..  切换到上上级目录

     cd /mnt/sdcard   切换到/mnt/sdcard目录

     cd -   切换到上次目录, 高级的用法的, 不是所有人都知道。

2. ls

    ls 简单列举

    ls -l 详细列举, 可用ll哦(当然, 这个是用了alias设置的)

    ls -t 按时间列举

    ls -r 逆向列举

   (因此, ls -lrt就非常有用了, 按时间顺序逆向列举, 最新的在最下面, 非常便于眼睛观察!   我在实际中经常用ll -rt)

    ls -rS 当前目录文件按大小排序(非常常用啊)

    ls -a 理解所有

    ls -lta  上述组合

    ls /mnt/sdcard  不解释了

    ls *.txt  列举所有的.txt文件

    ll -Sr   文件从小到大排序

    ll -h  a.txt  计算a.txt的大小(以human readable的方式)

3. pwd

    pwd  查看当前目录

4. touch

    touch a.txt  用于创建一个a.txt空文件, 如果a.txt已经存在, 则不做任何操作

51. cat

    cat a.txt 查看a.txt中的内容

    cat -n a.txt会显示行号, 利用cat -n a.txt > b.txt可以将带行号的内容重定向到b.txt中.  

    cat -b a.txt会显示行号, 不过呢, 空白的编号就不显示了.

5.2 tac

    看, tac和cat刚好相反, 是从文件最后一行开始显示。

5.3. nl

     nl也是用于查看文件, 但带行号, 如nl a.txt实际上等价于cat -n a.txt

6. more

    more a.txt, 分页查看a.txt中的内容

    空格键表示下一页, enter键表示下一行, 合情合理啊, 空格键本来就比enter键大

    b或ctrl b表示向前翻页

    :f显示当前行数和文件名

    q表示离开该文件, 也可用ctrl + c

7. less

    less a.txt  分页查看a.txt中的内容, 比more稍微强大, 前后翻。 

    以后用more的时候直接用less.

     /int  向下搜索int,  会把所有的int标出来, 所以随你滚动吧。

8. head

    head -n 10 a.txt  查看a.txt中的头10行

9. tail

    tail -n 10 a.txt   查看a.txt中的尾10行

    问题:要看程序第10行到第20行的信息, 该怎么办呢? 没有这个命令啊, 其实, 用下面命令可以搞定:

    head -20 a.txt | tail -11

    另外,  tail还有一个重要用途, 比如log.txt日志文件在动态变化, 那么如何观察到它的动态变化呢? 用tail -f log.txt即可。 非常有用。

    

    

10. grep

    grep hello a.txt   在a.txt中查找hello串

    grep "hello world" a.txt  找这种串, 必须有引号(另外, a.txt可用*.txt替换, 表示在所有.txt文件中搜索, 很有用啊)

    grep -i xxx  忽略大小写

    grep -v xxx  忽略有xxx的行,在过滤中很有用啊

    (下面这个我常用)

    grep -2 hello test.txt   搜索test.txt中的hello, 另外附上前后两行    有的shell还支持grep -C 2 hello test.txt, 意思跟这个一样。 实际中, 我经常把-C 2放在后面, 且可以写到一起, 看起来也爽。 比如:grep hello test.txt -C 2

    grep -B 2 hello test.txt   搜索test.txt中的hello, 另外附上前两行   (before)

grep -A 2 hello test.txt   搜索test.txt中的hello, 另外附上前两行 (after)

那问一下, 如果要过滤某个单词xxx, 该怎么过滤呢? cat a.txt | grep -w xxx 千万要注意, -w不能少。

11. find

      find a.txt  在当前目录下查找a.txt文件

      find -name a.txt  在当前目录和子目录中查找a.txt文件

      find -name "a*"  在当前目录和字母中查找以a开头的文件(其实也包括文件夹)

      find -iname xxx  不区分大小地去找文件

     (当然上述也可以针对文件夹)

      find -L -name a.txt    (考虑到某些软链目录下有a.txt, 必须加-L, 曾错过)

12. whereis

     whereis ls   谁用谁知道

13. man

    man  ls  谁用谁知道

    man socket 谁用谁知道

    我差点就想说man万能了。

14. whatis

      whatis  ls 谁用谁知道

15. who

      who 谁用谁知道

      有一次, 大家在一个会议室开会, 某同事要做报告, 但不记得自己电脑的ip了, 也就无法远程了。 怎么办? 我突然想, 可以在linux服务器上用who命令查看大家的登录记录啊, 高。

16. whiami 

      whoami   谁用谁知道

17. uname

      name -a   系统信息, 很重要很常用的命令啊

18. mkdir

      mkdir test  建立test目录

      make test1/test2 有误, 应该用mkdir -p test1/test2, 这样, 不管当前目录下有没有test1文件夹, 都不会有错。

18. rmdir

      rmdir test  删除空的test目录, 如果目录不为空, 则删除不了, 所以rmdir基本就是个鸡肋

19. mv 

      mv主要用于移动文件或目录, 常用mv a.txt a.txt.bak对a.txt进行备份

20.1  cp

      cp主要用于复制文件或者目录, 千万要注意, cp在执行复制操作的时候, 会自动跳过目录, 所以并没有复制目录, 但可以用下面的方式进行解决:

      cp -r file test    将file目录拷贝到test目录下(不加-r是绝对不行的)

      cp -r file/* test   将file目录下的所有东西拷贝到test目录下(不加-r是绝对不行的)

20.2  scp

     scp主要是用来实现不同机器之间的拷贝, 比如我常常这么用:

     scp -r [email protected]:/usr/local/bin/test  ./    把1.1.1.1机器上的/usr/local/bin/test目录拷贝到当前机器的当前目录, user是1.1.1.1机器的一个用户名, 执行完这条命令后, 系统会提示用户输入1.1.1.1的user用户的密码, 这个是必然的哈。

     scp -r ./test [email protected]:/usr/local/bin  从本地复制到2.2.2.2这个机器上。

21  rm

      rm 主要用来删除文件或者目录(加-r), 千万要注意, 一定要谨慎地使用这么命令。 使用的时候, 如rm -rf test, 一定要慢, 慢, 慢。没有回收站, 不可恢复哈。

22.1. chmod 

      chmod是用来改变权限的

22.2  chown

      chown是用来改变owner的

23 重定向 > 和 >>

     echo hello > a.txt   试一下吧. 其中>和>>类似, 但有区别。

24 管道 |

    cat a.txt | grep hello

25. ping

     ping用于网络探测

26. ifconfig  注意, 不是ipconfig

     ifconfig用于查看ip

27. telnet

      telnet用于远程连接

28. netstat

      netstat用于查看网路状态

29. ps

      ps用来查看当前进程信息, 在有得终端上, 要用ps -ef 或者ps -aux哈

30. top

      top用来查看实时进程信息

31. date

     date用于查看当前日期

     date -d @0  显示1970年的时间, 这个很常用

32. df

     查看挂载情况。 有意思的是, umount某设备后, 再查看, 就没有了(我在android手机中umount cache, 重启后, 挂载了cache,可访问)。

33. history

     history查看最近使用的命令, 比如history 22  就是查看最近使用的 22条命令, 常用啊。

34. ifconfig

     用来配置网络, 用过。

35. diff

      diff a.txt b.txt 比较两个文件的差异, 其实也可以用于比较文件夹的差异。

36. umount

      umount /cache  卸载cache分区。

37. su    (英文全程是switch user)

      su 获取root权限

      su meinv 或者su - meinv 或者 su --meinv  切换到美女用户进行登录

38. sudo

      可以理解为临时用一下root权限, 用完后就是普通权限了。  sudo -s用于切换到root用户, 相当于su

39. tar   (英文全程是tape archive, 牛逼的命令, 牛逼的缩写)

      tar -cvf  material.tar   material    将material文件、目录打包为material.tar文件,   原来的material文件、目录不会删除。

      tar -xvf  material.tar   解开包包。

     我在实际中用的更多的是(打包后进行gzip压缩):

     tar -zcvf material.tar.gz material   打包后压缩

     tar -zxvf material.tar.gz   解压缩后解包

     实际上, 为了更加简便, 上述的-符号是可以省略的, 所以我经常这么用:

     tar zcvf material.tar.gz material   打包后压缩

     tar zxvf material.tar.gz   解压缩后解包

     另外, 如果是tar.bz2文件,  那么就把上述的z改为j即可。

40. gzip

      gzip a.txt   压缩(会删除原来的a.txt文件)

      gupzip a.txt.gz  解压缩, 或者用(gzip -d a.txt.gz) ,  会删除原来的a.txt.gz

      倾情奉献: gzip -c a.txt > a.txt.gz 不会删除原来的a.txt文件哈。解压的时候也可以使用类似的方法, 避免删除原来的压缩包包。

                         

41. od

     之前一直不知道有这个命令, 现在才知道它的用途了。 有一次, 需要查看一个二进制文件中的内容, 我居然自己去写了一个程序, 虽然也可以查看到, 但是浪费了时间。 其实, 有很多小工具可以查看二进制文件, 比如ultraEdit, 比如beyondCompare, 比如linux下的od命令。我们先来生成test二进制文件:

#include <iostream>
using namespace std;
 
int main()
{
    char str[100] = "hello\0world";
    str[99] = 'x'; // 本人故意写一个'x'
    FILE *fp = fopen("test", "wb");
    fwrite(str, 1, sizeof(str), fp);
    fclose(fp);
 
    return 0;
}
    且看linux下的od命令:

$ od -c test
0000000   h   e   l   l   o  \0   w   o   r   l   d  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000140  \0  \0  \0   x
0000144

      作为英语迷, 我自然会问, od是什么的缩写呢? 原来是octal dump, 所以,看到没, 上面默认的是八进制地址哈。

42.1 md5sum 

      md5sum filename   计算文件的md5值, 非常有用。 我经常需要判断在某个操作前后, 文件是否变化, 那么就可以在前后分别用这个命令。

42.2  sha1sum filename  计算文件的sha1值, 在实际应用中, 有md5sum就行, sha1sum的作用并不大。

43. /bin/bash --version  查阅bash版本号, 玩过, 但几乎没什么用。

44. mount  我靠, 这么重要的命令怎么没有介绍呢?

      mount  查看挂载设备

      mount /dev/xxx/yyy  /cache   把cache分区挂载到dev/xxx/yyy目录下

45.  exit  用于退出当前shell, 比如我们在父shell中进入子shell, 如果在子shell中执行exit, 则会退出到父shell中。

46. 一个tab键用于补全, 我经常用; 连续两个tab键用于列举, 我用得少, 我每次都是先用ls查看, 这样不好啊, 以后要多用两个tab.

47. locate a.txt  在所有地方查找a.txt, 而不限于当前路径。 这么强大的命令, 我居然很少用, 丢人啊。

48. ln -s a.txt b.txt  对a.txt创建软连接(符号连接), 符号连接为b.txt, 实际上b.txt相当于a.txt的一个快捷方式。 访问b.txt, 实际上就相当于访问了a.txt. 删除b.txt, 对a.txt毫无影响。但是, 如果删除了a.txt, 则b.txt就没啥用了。 注意: 软连接也可以针对目录, 如lin /usr/local/ xxx

      ln a.txt b.txt, 对a.txt创建硬连接, 也就是a.txt和b.txt绑在一起, 修改一方后, 会相互影响; 删除一方后, 对另一方没什么影响, 我试过的。

49.  & 经常用于在后台执行程序, 比如./a.out &

       一般来说, 如果用ctrl c, 那么前台运行的程序会自动退出。

50. kill 100  

      杀死进程号为100的这个进程, 我也经常用这个。

52. lsof a.txt

      查找正在用a.txt的进程, 用得不多。

53. id

      这个很简单的命令, 我以前还真没有用过。 该命令主要用于查阅当前登陆用户的身份, 试试吧。

54. dos2unix a.sh (或者busybox dos2unix)

     将dos格式的文件转化为linux格式的文件, 我常用。

54.1 既然有dos2unix, 那自然就有unix2dos啊。

55. seq 5   用来生成1 2 3 4 5这个序列

      seq 3 7  用来生成3 4 5 6 7 这个序列

      seq 3 2 7 用来生成3 5 7这个序列

56. expr  1 + 2

      计算1 + 2的值, 注意, +的左右必须有空格, 否则不行。 哈哈, 以后就不用计算器啦。

57. wc a.txt

     显示行数, 单词数, 字节数。  这个其实也是有点用的。注意, wc不是厕所, 而是word counts

58. sort a.txt  按行进行升序排列

      sort -r a.txt  按行进行降序排列

      这个命令, 不会改变源文件, 只会把排序后的结果输出。这么优秀的命令, 我用得不多了。

59. uniq

      对于已经排序好的序列, 删除重复的行。 经常需要与sort一起用。 当然, 这个命令也不会改变源文件。 某次, 我居然自己去写一个函数来实现sort a.txt | uniq这个功能, 哎。

60. cal

     显示日历, 比date更强大。另外cal还可以显示过去和未来的calendar.

     cal -j  很有意思, 能让人有时间紧迫感哈。

61. man ascii

     以后再也不用上网找ascii码了。

62. xxd test.txt

     显示文件的十六进制值, 非常类似于UltraEdit上的一个功能, xxd这个命令, 还是很强大的, 我经常用。

63. tree

      tree -L 2   列举当前目录的二级子目录的树形结构, 很有用也很有趣。如果你的linux上没有这个命令, 那就安装一个吧。

65. bc

      进入计算器, 好棒。

66. passwd

      修改用户的密码, 比如passwd user1就是用来修改user1的密码, 自然地, 如果要修改root的密码, 那就用passwd root吧, 我玩过, 靠谱。

67. wget

      wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz   下载这个文件, 我常用。

      现在就写这么多吧, 以后记起来了, 再慢慢补充。慢慢积累, 孰能生巧。另外, 一些相对复杂或者与linux开发、调试相关的命令, 我会在后续博文中逐步展开介绍。

68. du

      求文件或者目录大小, 知道现在才介绍这个命令, 晕乎。 du有很多参数, man du一下就知道了。

69.  watch

      在linux终端上循环执行命令, 相见恨晚啊, 比如:watch -n 1 'date'

      默认情况下, watch date是两秒刷新一次。 

      如果有-d参数, 则会动态显示变化的区域。

70. mysql

      mysql -h 1.1.1.1 -u root -P 3306 -p123\!456 db_name

      mysql登录,其中密码是123!456,  由于有!,故在命令行上执行上述语句时,需要转义,否则会出现-bash: !": event not found错误。

 
原文:https://blog.csdn.net/stpeace/article/details/24891093 
 

猜你喜欢

转载自blog.csdn.net/u012278016/article/details/90754563