热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

中级Linux用户非常有用的20个命令

为什么80%的码农都做不了架构师?21.命令:Find搜索指定目录下的文件,从开始于父目录,然后搜索子目录。➜~find-namei

为什么80%的码农都做不了架构师?>>>   hot3.png

21. 命令: Find

搜索指定目录下的文件,从开始于父目录,然后搜索子目录。

➜  ~  find -name idea.sh
./bigdata/idea-IU-143.1184.17/bin/idea.sh
./bigdata/idea-IC-141.2735.5/bin/idea.sh

注意: `-name‘选项是搜索大小写敏感。可以使用`-iname‘选项,这样在搜索中可以忽略大小写。(*是通配符,可以搜索所有的文件;‘.sh‘你可以使用文件名或者文件名的一部分来制定输出结果)

22. 命令: grep

‘grep‘命令搜索指定文件中包含给定字符串或者单词的行。举例搜索‘/etc/passwd‘文件中的‘tecmint’


root@tecmint:~# grep tecmint /etc/passwd

tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash


使用’-i’选项将忽略大小写。


root@tecmint:~# grep -i TECMINT /etc/passwd

tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash


使用’-r’选项递归搜索所有自目录下包含字符串 “127.0.0.1“.的行。


root@tecmint:~# grep -r "127.0.0.1" /etc/

/etc/vlc/lua/http/.hosts:127.0.0.1
/etc/speech-dispatcher/modules/ivona.conf:#IvonaServerHost "127.0.0.1"

注意:您还可以使用以下选项:

1 -w搜索单词 (egrep -w ‘word1|word2‘ /path/to/file).

2 -c用于统计满足要求的行 (i.e., total number of times the pattern matched) (grep -c ‘word‘ /path/to/file).

3 –color彩色输出 (grep –color server /etc/passwd).

23. 命令: man

‘man‘是系统帮助页。Man提供命令所有选项及用法的在线文档。几乎所有的命令都有它们的帮助页,例如:


root@tecmint:~# man man

24. 命令: ps

ps命令给出正在运行的某个进程的状态,每个进程有特定的id成为PID。

➜  ~  psPID TTY          TIME CMD
10668 pts/4    00:00:00 ps
25757 pts/4    00:00:00 zsh

使用‘-A‘选项可以列出所有的进程及其PID。

注意:当你要知道有哪些进程在运行或者需要知道想杀死的进程PID时ps命令很管用。你可以把它与‘grep‘合用来查询指定的输出结果,例如:

➜  ~  ps -A|grep -i ssh1148 ?        00:00:00 sshd2617 ?        00:00:00 ssh-agent

25. 命令: kill

杀死一个进程需要知道进程的PID.

假设你想杀死已经没有响应的‘apache2′进程,运行如下命令:


root@tecmint:~# ps -A | grep -i apache2

1285 ?        00:00:00 apache2


搜索‘apache2′进程,找到PID并杀掉它.例如:在本例中‘apache2′进程的PID是1285..


root@tecmint:~# kill 1285 (to kill the process apache2)


注意:每次你重新运行一个进程或者启动系统,每个进程都会生成一个新的PID.你可以使用ps命令获得当前运行进程的PID.

另一个杀死进程的方法是:


root@tecmint:~# pkill apache2


注意:kill需要PID作为参数,pkill可以选择应用的方式,比如指定进程的所有者等.

26. 命令: whereis

whereis的作用是用来定位命令的二进制文件\资源\或者帮助页.举例来说,获得ls和kill命令的二进制文件/资源以及帮助页:

➜  ~  whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
➜  ~  whereis kill
kill: /bin/kill /usr/share/man/man2/kill.2.gz /usr/share/man/man1/kill.1.gz

27. 命令: service

‘service‘命令控制服务的启动、停止和重启,它让你能够不重启整个系统就可以让配置生效以开启、停止或者重启某个服务。

在Ubuntu上启动apache2 server:


root@tecmint:~# service apache2 start

* Starting web server apache2                                                                                                                                 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
httpd (pid 1285) already running                        [ OK ]


重启apache2 server:


root@tecmint:~# service apache2 restart

* Restarting web server apache2                                                                                                                               apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName  [ OK ]


停止apache2 server:


root@tecmint:~# service apache2 stop

* Stopping web server apache2                                                                                                                                 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting                                                                [ OK ]


注意:要想使用service命令,进程的脚本必须放在‘/etc/init.d‘,并且路径必须在指定的位置。

如果要运行“service apache2 start”实际上实在执行“service /etc/init.d/apache2 start”.

28. 命令: alias

alias是一个系统自建的shell命令,允许你为名字比较长的或者经常使用的命令指定别名。

我经常用‘ls -l‘命令,它有五个字符(包括空格)。于是我为它创建了一个别名‘l’。


root@tecmint:~# alias l='ls -l'


试试它是否能用:


root@tecmint:~# l

total 36
drwxr-xr-x 3 tecmint tecmint 4096 May 10 11:14 Binary
drwxr-xr-x 3 tecmint tecmint 4096 May 21 11:21 Desktop
drwxr-xr-x 2 tecmint tecmint 4096 May 21 15:23 Documents
drwxr-xr-x 8 tecmint tecmint 4096 May 20 14:56 Downloads
drwxr-xr-x 2 tecmint tecmint 4096 May  7 16:58 Music
drwxr-xr-x 2 tecmint tecmint 4096 May 20 16:17 Pictures
drwxr-xr-x 2 tecmint tecmint 4096 May  7 16:58 Public
drwxr-xr-x 2 tecmint tecmint 4096 May  7 16:58 Templates
drwxr-xr-x 2 tecmint tecmint 4096 May  7 16:58 Videos


去掉’l’别名,要使用unalias命令:


root@tecmint:~# unalias l


再试试:


root@tecmint:~# l

bash: l: command not found


开个玩笑,把一个重要命令的别名指定为另一个重要命令:


alias cd='ls -l' (set alias of ls -l to cd)
alias su='pwd' (set alias of pwd to su)
....
(You can create your own)
....


想想多么有趣,现在如果你的朋友敲入‘cd’命令,当他看到的是目录文件列表而不是改变目录;当他试图用’su‘命令时,他会进入当前目录。你可以随后去掉别名,向他解释以上情况。


29.命令: df

报告系统的磁盘使用情况。在跟踪磁盘使用情况方面对于普通用户和系统管理员都很有用。 ‘df‘ 通过检查目录大小工作,但这一数值仅当文件关闭时才得到更新。


root@tecmint:~# df

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       47929224 7811908  37675948  18% /
none                   4       0         4   0% /sys/fs/cgroup
udev             1005916       4   1005912   1% /dev
tmpfs             202824     816    202008   1% /run
none                5120       0      5120   0% /run/lock
none             1014120     628   1013492   1% /run/shm
none              102400      44    102356   1% /run/user
/dev/sda5         184307   79852     94727  46% /boot
/dev/sda7       95989516   61104  91045676   1% /data
/dev/sda8       91953192   57032  87218528   1% /personal


‘df’命令的更多例子请参阅 12 df Command Examples in Linux.

30. 命令: du

估计文件的空间占用。 逐层统计文件(例如以递归方式)并输出摘要。


root@tecmint:~# du

8       ./Daily Pics/wp-polls/images/default_gradient
8       ./Daily Pics/wp-polls/images/default
32      ./Daily Pics/wp-polls/images
8       ./Daily Pics/wp-polls/tinymce/plugins/polls/langs
8       ./Daily Pics/wp-polls/tinymce/plugins/polls/img
28      ./Daily Pics/wp-polls/tinymce/plugins/polls
32      ./Daily Pics/wp-polls/tinymce/plugins
36      ./Daily Pics/wp-polls/tinymce
580     ./Daily Pics/wp-polls
1456    ./Daily Pics
36      ./Plugins/wordpress-author-box
16180   ./Plugins
12      ./May Articles 2013/Xtreme Download Manager
4632    ./May Articles 2013/XCache


注意: ‘df‘ 只显示文件系统的使用统计,但‘du‘统计目录内容。‘du‘命令的更详细信息请参阅10 du (Disk Usage) Commands.


31. 命令: rm

‘rm’ 标准移除命令。 rm 可以用来删除文件和目录。

删除目录


root@tecmint:~# rm PassportApplicationForm_Main_English_V1.0

rm: cannot remove `PassportApplicationForm_Main_English_V1.0': Is a directory


‘rm’不能直接删除目录,需要加上相应的’-rf’参数才可以。


root@tecmint:~# rm -rf PassportApplicationForm_Main_English_V1.0


警告: ”rm -rf” 命令是一个破坏性的命令,假如你不小心删除一个错误的目录。一旦你使用’rm -rf’ 删除一个目录,在目录中所有的文件包括目录本身会被永久的删除,所以使用这个命令要非常小心。


32. 命令: echo

echo  的功能正如其名,就是基于标准输出打印一段文本。它和shell无关,shell也不读取通过echo命令打印出的内容。然而在一种交互式脚本中,echo通过终端将信息传递给用户。它是在脚本语言,交互式脚本语言中经常用到的命令。


root@tecmint:~# echo "Tecmint.com is a very good website"

Tecmint.com is a very good website


创建一小段交互式脚本

1. 在桌面上新建一个文件,命名为 ‘interactive_shell.sh‘  (记住必须带 ‘.sh‘扩展名)。

2. 复制粘贴如下脚本代码,确保和下面的一致。


#!/bin/bash
echo "Please enter your name:"
  read name
  echo "Welcome to Linux $name"


接下来,设置执行权限并运行脚本。


root@tecmint:~# chmod 777 interactive_shell.sh


root@tecmint:~# ./interactive_shell.sh

Please enter your name:
Ravi Saive
Welcome to Linux Ravi Saive


注意: ‘#!/bin/bash‘ 告诉shell这是一个脚本,并且在脚本首行写上这句话是个好习惯。. ‘read‘ 读取给定的输出.


33. 命令: passwd

这是一个很重要的命令,在终端中用来改变自己密码很有用。显然的,因为安全的原因,你需要知道当前的密码。


root@tecmint:~# passwd

Changing password for tecmint.
(current) UNIX password: ********
Enter new UNIX password: ********
Retype new UNIX password: ********
Password unchanged   [这里表示密码未改变,例如:新密码=旧密码]
Enter new UNIX password: #####
Retype new UNIX password:#####

35. 命令: cmp

比较两个任意类型的文件并将结果输出至标准输出。如果两个文件相同, ‘cmp‘默认返回0;如果不同,将显示不同的字节数和第一处不同的位置。

以下面两个文件为例:

file1.txt


root@tecmint:~# cat file1.txt

Hi My name is Tecmint


file2.txt


root@tecmint:~# cat file2.txt

Hi My name is tecmint [dot] com


比较一下这两个文件,看看命令的输出。


root@tecmint:~# cmp file1.txt file2.txt

file1.txt file2.txt differ: byte 15, line 1


36. 命令: wget

Wget是用于非交互式(例如后台)下载文件的免费工具.支持HTTP, HTTPS, FTP协议和 HTTP 代理。

使用wget下载ffmpeg


root@tecmint:~# wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2

--2013-05-22 18:54:52--  http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59
Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://kaz.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2 [following]
--2013-05-22 18:54:54--  http://kaz.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
Resolving kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)... 92.46.53.163
Connecting to kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)|92.46.53.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 275557 (269K) [application/octet-stream]
Saving to: ‘ffmpeg-php-0.6.0.tbz2’

100%[===========================================================================>] 2,75,557    67.8KB/s   in 4.0s

2013-05-22 18:55:00 (67.8 KB/s) - ‘ffmpeg-php-0.6.0.tbz2’ saved [275557/275557]


37 命令: mount

mount 是一个很重要的命令,用来挂载不能自动挂载的文件系统。你需要root权限挂载设备。

在插入你的文件系统后,首先运行”lsblk”命令,识别出你的设备,然后把分配的设备名记下来。


root@tecmint:~# lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk
├─sda1   8:1    0 923.6G  0 part /
├─sda2   8:2    0     1K  0 part
└─sda5   8:5    0   7.9G  0 part [SWAP]
sr0     11:0    1  1024M  0 rom
sdb      8:16   1   3.7G  0 disk
└─sdb1   8:17   1   3.7G  0 part


从这个输出上来看,很明显我插入的是4GB的U盘,因而“sdb1”就是要挂载上来的文件系统。以root用户操作,然后切换到/dev目录,它是所有文件系统挂载的地方。


root@tecmint:~# su
Password:

root@tecmint:~# cd /dev


创建一个任何名字的目录,但是最好和引用相关。


root@tecmint:~# mkdir usb


现在将“sdb1”文件系统挂载到“usb”目录.


root@tecmint:~# mount /dev/sdb1 /dev/usb


现在你就可以从终端进入到/dev/usb或者通过X窗口系统从挂载目录访问文件。

是时候让程序猿见识见识Linux环境是多么丰富了!


38. 命令: gcc

gcc 是Linux环境下C语言的内建编译器。下面是一个简单的C程序,在桌面上保存为Hello.c (记住必须要有‘.c‘扩展名)。


#include
int main()
{
 printf("Hello world\n");
 return 0;
}


编译


root@tecmint:~# gcc Hello.c


运行


root@tecmint:~# ./a.out

Hello world


注意: 编译C程序时,输出会自动保存到一个名为“a.out”的新文件,因此每次编译C程序 “a.out”都会被修改。 因此编译期间最好定义输出文件名.,这样就不会有覆盖输出文件的风险了。

用这种方法编译


root@tecmint:~# gcc -o Hello Hello.c


这里‘-o‘将输出写到‘Hello‘文件而不是 ‘a.out‘。再运行一次。


root@tecmint:~# ./Hello

Hello world


39. 命令: g++

g++是C++的内建编译器。下面是一个简单的C++程序,在桌面上保存为Add.cpp (记住必须要有‘.cpp‘扩展名)。


#include

using namespace std;

int main()
   {
         int a;
         int b;
         cout<<"Enter first number:\n";
         cin >> a;
         cout <<"Enter the second number:\n";
         cin>> b;
         cin.ignore();
         int result &#61; a &#43; b;
         cout<<"Result is"<<"  "<          cin.get();
         return 0;
    }


编译


root&#64;tecmint:~# g&#43;&#43; Add.cpp


运行


root&#64;tecmint:~# ./a.out

Enter first number:
...
...


注意:编译C&#43;&#43;程序时&#xff0c;输出会自动保存到一个名为“a.out”的新文件&#xff0c;因此每次编译C&#43;&#43;程序 “a.out”都会被修改。 因此编译期间最好定义输出文件名.&#xff0c;这样就不会有覆盖输出文件的风险了。

用这种方法编译


root&#64;tecmint:~# g&#43;&#43; -o Add Add.cpp


运行


root&#64;tecmint:~# ./Add

Enter first number:
...
...


40. 命令: java

Java 是世界上使用最广泛的编程语言之一. 它也被认为是高效, 安全和可靠的编程语言. 现在大多数基于网络的服务都使用Java实现.

拷贝以下代码到一个文件就可以创建一个简单的Java程序. 不妨把文件命名为tecmint.java (记住: ’.java’扩展名是必需的).


class tecmint {
 public static void main(String[] arguments) {
   System.out.println("Tecmint ");
 }
}


用javac编译tecmint.java


root&#64;tecmint:~# javac tecmint.java


运行


root&#64;tecmint:~# java tecmint


注意: 几乎所有的Linux发行版都带有gcc编译器, 大多数发行版都内建了g&#43;&#43; 和 java 编译器, 有些也可能没有. 你可以用apt 或 yum 安装需要的包.

请留下您宝贵的意见和想看到的文章类型. 稍后, 我会来一个很有趣主题, 关于Linux的一些鲜为人知的知识.


原文出处&#xff1a;Tecmit  

译文出处&#xff1a;oschina

译文链接&#xff1a;http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users



转:https://my.oschina.net/sunmin/blog/617318



推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 错误:requireluasql.mysqlstdin:1:moduleluasql.mysqlnotfound:nofieldpackage.preload[lua ... [详细]
author-avatar
符小萧_103
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有