• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Linux常用shell命令总结

互联网 diligentman 1周前 (02-21) 5次浏览

Linux常用shell命令总结

原创 dudu

目录

  • 常用文件shell命令
  • 常用网络shell命令
  • 常用进程shell命令
  • 常用文本shell命令
  • 小结

一、常用文件shell命令###

  1. 改变目录

    1、cd

    # 进入到/tmp目录下

    $ cd /tmp/

    # 回退一个路径

    $ cd …

    # 回退到根目录

    $ cd ~

    # ~ 表示:root目录,# 表示:超级管理员

  2. 查看当前路径

    1、pwd

    # 用pwd命令来查看当前的路径

    $ cd work

    $ pwd

    /home/dudu/work

  3. 创建目录

    1、mkdir

    # 在 /tmp下创建一个test的文件夹

    $ mkdir /tmp/test

    $ ls

    test

    # 诺tmp文件夹不存在,上述命令就会出错,需要加上 -p属性

    $ mkdir -p tmp2/test

    # 创建多个文件夹

    $ mkdir a b c

    $ ls

    a b c

    # -p 确保目录名称存在,不存在的就建一个。

  4. 创建文件

    1、touch

    # touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。ls -l 可以显示档案的时间记录。

    # 诺 test文件不存在,touch将创建一个新的空白文件

    $ touch test

    # 查看文件的时间属性

    -rw-r–r– 1 hdd hdd 55 2020-09-21 19:02 test

    # 诺 test文件存在,touch将修改文件"testfile"的时间属性为当前系统时间

    $ touch test

    # 查看文件的时间属性

    $ ls -l test

    -rw-r–r– 1 hdd hdd 55 2020-09-21 19:09 test

    # 如果需要创建的空白文件不存在,touch创建一个新的空白文件.否则,touch将修改文件"testfile"的时间属性为当前系统时间,及时间戳均修改为当前时间

  5. 删除文件或文件夹

    1、rm

    # 删除文件前逐一询问确认

    *$ rm test.txt *

    rm:是否删除 一般文件 “test.txt”? y

    # 直接删除,无需逐一确认

    $ rm -f test.txt

    # 将目录及以下之档案亦逐一删除。

    $ rm -r work

    rm:是否删除 目录 “homework”? y

    # 将该目录和目录下的文件都删除,不需要确认

    $ rm -rf work

    # 一般删除文件用 -rf

  6. 复制文件

    1、cp

    # 复制/root/ 目录下的 a.txt 文件到 /tmp 下

    $ cp /root/a.txt /tmp/

    # 复制/root/ 目录下的 所有 文件到 /tmp 下

    $ cp /root/ /tmp/*

    $ cp /root/? /tmp/

    # 通配符

    # * :表示所有文件和文件夹

    # ?:表示一个字符

  7. 移动和改名

    1、mv

    # 将 /root 下的 dir 移动到 /home下

    $ mv dir/ /home/

    # 把 /home/ 下的dir目录改名为directory

    $ cd /home/

    $ mv dir/ directory

  8. 查看文件内容

    1、cat

    # cat 命令直接显示一个文本的所有内容,有利于查看篇幅较短的文本

    # 命令格式:查看/etc/services的内容

    *$ cat /etc/services *

    2、tail

    # tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容

    # 显示 notes.log 文件的最后 10 行

    $ tail notes.log

    # 踪名为 notes.log 的文件的增长情况

    $ tail -f notes.log

    # 此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

    # 文件 notes.log 的内容,从第 20 行至文件末尾

    $ tail +20 notes.log

    # 显示文件 notes.log 的最后 10 个字符

    $ tail -c 10 notes.log

    3、more

    # more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h

    # 逐页显示 test 文档内容,如有连续两行以上空白行则以一行空白行显示。

    $ more -s test

    # 从第 20 行开始显示 testfile 之文档内容

    $ more +20 test

    4、less

    # less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

    # 查看文件

    $ less notes.log

    # ps查看进程信息并通过less分页显示

    $ ps -ef |less

    # 查看命令历史使用记录并通过less分页显示

    $ history | less

二、常用网络shell命令

  1. hostname

    # 显示主机名字

    $ hostname

    # 显示机器所属域名

    $ hostname –d

    # 显示完整的主机名和域名

    $ hostname –f

    # 显示当前机器的 ip 地址

    $ hostname –i

  2. ping

    # ping 将数据包发向用户指定地址。当包被接收,目标机器发送返回数据包。ping 主要有两个作用:

    # 1、 用来确认网络连接是畅通的。

    # 2、 用来查看连接的速度信息。

    # 得到ip 地址,通过 ctrl+C 来停止命令

    $ ping dudu.net // ping主机

    # -c 参数可以定义 ping 的次数,如:比如 ping -c 3 dudu.net 就是 ping dudu博客3次

  3. ifconfig

    # 查看用户网络配置。它显示当前网络设备配置。对于需要接收或者发送数据错误查找,这个工具极为好用。

    # 显示当前网络设备配置

    $ ifconfig

三、常用进程shell命令

  1. ps

    # ps 命令用于显示当前进程的状态,类似于 windows 的任务管理器。

    # 显示进程信息

    $ ps -A

    PID TTY TIME CMD

    1 ? 00:00:02 init

    2 ? 00:00:00 kthreadd

    3 ? 00:00:00 migration/0

    # 显示指定用户信息

    PID TTY TIME CMD

    1 ? 00:00:02 init

    2 ? 00:00:00 kthreadd

    3 ? 00:00:00 migration/0

    # 显示所有进程信息,连同命令行

    $ ps -ef

    UID PID PPID C STIME TTY TIME CMD

    root 1 0 0 10:22 ? 00:00:02 /sbin/init

    root 2 0 0 10:22 ? 00:00:00 [kthreadd]

    root 3 2 0 10:22 ? 00:00:00 [migration/0]

    root 4 2 0 10:22 ? 00:00:00 [ksoftirqd/0]

  2. kill

    # kill 命令用于删除执行中的程序或工作。kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看

    # 杀死进程

    $ kill 12345

    # 强制杀死进程

    $ kill -KILL 123456

    # 发送SIGHUP信号,可以使用一下信号

    & kill -HUP pid

    # 彻底杀死进程

    $ kill -9 123456

  3. sudo

    # sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

    # 指定用户执行命令

    $ sudo -u userb ls -l

    # 以root权限执行上一条命令

    $ sudo !!!

    # 列出目前的权限

    $ sudo -l-l*

    # 列出 sudo 的版本资讯

    $ sudo -V-V

四、常用文本shell命令

  1. awk

    # AWK 是一种处理文本文件的语言,是一个强大的文本分析工具

    1、选项参数

    # 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:

    -F fs or –field-separator fs # 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F

    -v var=value or –asign var=value # 赋值一个用户定义变量

    -f scripfile or –file scriptfile # 从脚本文件中读取awk命令

    -W copyleft or –copyleft, -W copyright or –copyright # 打印简短的版权信息。

    -W posix # 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符=不能代替=;fflush无效。

    -W re-interval or –re-inerval # 允许间隔正则表达式的使用

    -W source program-text or –source program-text # 使用program-text作为源代码,可与-f命令混用

    1、基本用法

    # 创建文件log.txt,内容如下:

    2 this is a test

    3 Are you like awk

    This’s a test

    10 There are orange,apple,mongo

    # 每行按空格或TAB分割,输出文本中的1、4项

    KaTeX parse error: Can't use function '$' in math mode at position 15: awk '{print $̲1,$4}' log.txt*… awk '{printf “%-8s %-10sn”,$1,KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲' log.txt*<br> …$ awk -va=1 '{print $1,KaTeX parse error: Expected 'EOF', got '}' at position 4: 1+a}̲' log.txt*<br> …$ awk 'KaTeX parse error: Expected 'EOF', got '#' at position 20: … log.txt*<br> *#̲ 过滤第一列大于2并且第二列等…$ awk '$1>2 && $2==“Are” {print $1,$2,KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}̲' log.txt*<br> …$ awk ‘BEGIN{printf “%4s %4s %4s %4s %4s %4s %4s %4s %4sn”,“FILENAME”,“ARGC”,“FNR”,“FS”,“NF”,“NR”,“OFS”,“ORS”,“RS”;printf “———————————————n”} {printf “%4s %4s %4s %4s %4s %4s %4s %4s %4sn”,FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}’ log.txt

    FILENAME ARGC FNR FS NF NR OFS ORS RS

    log.txt 2 1 5 1

    log.txt 2 2 5 2

    log.txt 2 3 3 3

    log.txt 2 4 4 4

    # 使用正则,字符串匹配

    # 输出第二列包含 “th”,并打印第二列与第四列

    $$ awk ‘$2 ~ /th/ {print $2,$4}’ log.txt

    this a

五、小结

  1. Linux系统强大的控制台、终端和shell的关系,在控制台终端登录或在图形界面下开启“终端”,默认都会启动一个shell来接待使用者。(added by smsong:可以认为终端是父进程getty先启动,该getty会执行login程序,以处理登录的动作,登陆完成以后,login就会执行用户的 shell,这时就是为用户默认分配了一个shell。该shell执行用户键入的命令。同样该shell也可以开启其子shell来执行用户输入,当该 子shell结束时,它会送一个信号给其父进程。所以当用户离开系统时候,它的登陆shell会告诉init,而init知道了以后会为那个终端产生一个 新的getty进程,然后这个循环就不断的重复下去。注意:如果用户登陆失败,则login进程推出,它向其父进程init发送一个信号,指明应当为终端创建一个新的getty进程,重复上面的动作。
  2. 终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成的,linux默认提供了6个纯命令行界面的’‘terminal’’(准确的说这里应该是6个虚拟控制台)来让用户登录,在物理机系统上你可以通过ctrl+alt+F1~F6进行切换。当切换到其中一个终端后,想要切换回图形界面,可以按下ctrl+alt+F7来完成。

  • @author: dudu
  • @email : 2065150945@qq.com
  • @time :2020/9/21 23:54
  • 说明: 转载请声明作者

程序员灯塔
转载请注明原文链接:Linux常用shell命令总结
喜欢 (0)