Linux 基础命令

Posted 小石王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 基础命令相关的知识,希望对你有一定的参考价值。

0001,启动linux图形界面

  • startx

0002,设置系统区域,语言等

  • local:查看当前系统的的locale信息

    $ locale
    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    
  • localectl:修改locale显示出来的信息。

    • localectl -h:查看帮助

    • list-locales:列出所有可以使用的locale信息,各个国家都有

    • set-locale:修改locale信息

      用中文显示系统:localectl set-locale LANG=zh_CN.utf8

      LC_CTYPE等都可以修改。localectl set-locale LC_CTYPE=xxx

      还可以使用LC_ALL一次修改所有LC_的值。

0003,查看是否启动了ssh进程,也就是查看是否监听tcp协议的22端口,只有启动了ssh,才能在远程访问此系统。

  • ss -tnl

0004,查看自己的ip地址

  • ifconfig
  • ip addr list

0005,关闭防火墙

  • centos7:
    • systemctl disable firewalld.service
    • systemctl stop firewalld.service
  • centos6:
    • service iptables stop
    • chkconfig iptables off

0006,查看使用的是什么shell

  • echo $SHELL

0007,终端种类

  • 物理终端:console(/dev/console)
  • 虚拟终端:tty(/dev/tty#)#:数字
  • 串行终端:ttys(/dev/ttys#)#:数字
  • 伪终端:pts(/dev/pts/#)#:数字

0008,查看当前终端编号

  • tty

0009,关机(poweroff),重启(reboot)

0010,取得名字

  • basename

    $ basename /usr/local/bin/docker-compose
    docker-compose
    $ basename /usr/local/bin/
    bin
    

0011,取得路径

  • dirname

    $ dirname /usr/local/bin/docker-compose
    /usr/local/bin
    [ys@localhost ~]$ dirname /usr/local/bin/
    /usr/local
    

0012,查看文件类型

  • file

    $ file /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
    

    linux系统里的可执行文件的类型是ELF格式的

    文件文件的类型是ASCII。

    库文件的类型是shared library

    软连接的类型是Symbolic links

0013,linux系统里命令分类

  • buildin(嵌入到shell进程里的命令):这个命令的代码是和shell的代码是一起编译出来的,所以在磁盘上不存在此命令对应的可执行文件。比如cd命令。

  • 外部命令:装载磁盘上的可执行文件到内存,并执行。比如ls命令。其实在终端输入ls后,实际执行的是ls --color=auto。如果就想要执行ls怎么办呢?使用\\command,就可以了。

  • 使用type命令可以查看命令是外部命令还是buildin命令。

    $ type cd
    cd is a shell builtin
    $ type ls
    ls is aliased to `ls --color=auto\'
    
  • shell在执行用户输入的命令后,如果是外部命令,则shell进程必须找到外部命令所对应的可执行文件在哪里,找到后加载到内存中并执行它。但是shell是怎么找到ls命令的可执行文件的呢?是通过查找环境变量PATH,来查找的,查找是从左到右,只要找到了就不去后面的路径里找了,所以如果在2个目录里都有ls命令的可执行文件,则使用最左面的。目录间用冒号分隔。

    $ echo $PATH
    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ys/.local/bin:/home/ys/bin
    

0014,获取命令使用帮助

  • 获得简要格式的使用帮助

    • buildin:help COMMAND
    • 外部:COMMAND --help
  • 获得详细的帮助手册

    帮助手册文件存放在/usr/share/man/下。有的命令的帮助手册是分章节的,章节的帮助手册存放在/usr/share/man/man#(数字和字母)/目录下。

    $ ls /usr/share/man/
    man1   man2  man3  man4  man5  man6   man7  man8 
    
    • man1下:用户命令

    • man2下:系统调用函数

    • man3下:C库函数

    • man4下:设备文件及特殊文件

    • man5下:文件格式(配置文件格式)

    • man6下:游戏使用帮助

    • man7下:杂项

    • man8下:管理工具及守护进程

    • man COMMAND:从man1到man8查找,找到就显示。但有的命令会放在多个man目录下,所以想看特定章节下的使用帮助,则必须使用数字,来告诉man命令,显示哪个章节的。

      例如:命令passwd,既在man1下有,也在man5下也有,如果不指定数字,则只显示man1下的使用帮助,指定数字5,就显示man5下的使用帮助。

      $ man 5 passwd
      
      • name:功能性说明

      • synopsis:语法

        []:可选内容

        <>:必须提供的内容

        a|b|c:多选一

        ...:同类可以出现多次

      • description:功能描述

      • example:使用例子

      • author:作者

      • bugs:报告bug的方式

      • see also:参考

    • 如何查看命令在哪些章节里有呢?whatis command

      $ whatis ls
      ls (1)               - list directory contents
      ls (1p)              - list directory contents
      

      发现在目录/usr/share/man/man1和/usr/share/man/man1p下都有passwd的使用帮助手册。

      所以可以使用man 1 lsman 1p ls来查看ls的使用帮助。

    • 并不是所有命令都可以使用whatis来调查,当自己装了可执行程序后,whatis就查不到它。因为whatis是查询数据库的,这时就使用makewhatis命令,把新装的可执行程序加入到数据库里后,whatis就可以调查它了。

  • 浏览帮助手册的方法

    • 向下翻一屏:空格
    • 向上翻一屏:b
    • 向下翻半屏:ctrl+d
    • 向上翻半屏:ctrl+u
    • 向下翻一行:回车
    • 向上翻一行:k
    • 跳到最后一行:G
    • 跳到第一行:1G
    • 跳到任何行:#(行号)G
  • 搜索帮助手册的方法

    • /target:区分大小写,从上往下搜索。
      • n:往下搜索下一个
      • N:往上搜索上一个
    • ?target:区分大小写,从下往上搜索。
      • n:往上搜索上一个
      • N:往下搜索下一个
  • 去指定目录找帮助手册

    使用-M选项,后加手册文件所在的目录

  • 获取在线的帮助文档

    • info command
  • 很多程序自带帮助文档:/usr/share/doc/app-version

    • README:相关信息
    • INSTALL:安装信息
    • CHANGES:版本改动信息
  • 主流发行版官方文档

    红帽:http://www.redhat.com/doc

  • 程序的官方文档:去官方站点找。

0015,切换目录cd

  • 切换到上一次所在的目录:cd -
    • 环境变量PWD:存放当前所在的目录。用echo $PWD验证
    • 环境变量OLDPWD:存放上一次所在的目录。用echo $OLDPWD验证
  • 切换到别的user的家目录:cd ~user。bash下好用。必须有权限才可以。

0016,显示目录下有哪些文件ls

  • -a:显示所有文件,包含隐藏文件
  • -A:显示所有文件,包含隐藏文件,但是不显示【.】和【..】
  • -l:显示详细信息,
    • 第一个数字:表示文件被硬链接的次数
    • 第二个数字:文件的大小,单位是字节
  • -h:对单位字节进行换上,变成容易读
  • -d:查看目录自身的属性,而不是目录下文件的属性。通常和-l一起使用。
  • -r:逆序显示
  • -t:按文件的最后一次修改时间排序,最后被修改的放在最前面;配和-r,就能够把最后被修改的文件放到最后面。
  • -R:递归显示子目录

0017,把文件里的内容连接到一起,显示到标准输出cat

  • -n:给内容加上行号

  • -E:显示行结束符

    cat -nE /etc/issue /etc/fstab
         1  \\S$
         2  Kernel \\r on an \\m$
         3  $
         4  $
         5  #$
         6  # /etc/fstab$
         7  # Created by anaconda on Fri Nov 29 16:44:28 2019$
         8  #$
         9  # Accessible filesystems, by reference, are maintained under \'/dev/disk\'$
        10  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$
        11  #$
        12  /dev/mapper/centos-root /                       xfs     defaults        0 0$
        13  UUID=3d3b316a-529e-484a-9895-e785fdde5365 /boot                   xfs     defaults        0 0$
        14  /dev/mapper/centos-home /home                   xfs     defaults        0 0$
        15  /dev/mapper/centos-swap swap                    swap    defaults        0 0$
    

0018,把cat命令显示出来的内容反转过来。tac

0019,回显。echo后面的字符串可以是单引号,也可以是双引号

  • 单引号:里面的变量不执行替换。

  • 双引号:里面的变量执行替换。

    #echo "$SHELL"
    /bin/bash
    # echo \'$SHELL\'
    $SHELL
    
  • 在bash里变量的正规引用是:${name}

  • -n:不换行

  • -e:让转意字符生效

    echo -e "hello \\nworld"
    hello
    world
    

0020,关机,重启shutdown

  • shutdown [OPTIONS...] [TIME] [WALL...]
  • -h:关机
  • -r:重启
  • -c:取消
  • time:
    • now:马上
    • hh:mm:指定时间
    • +m:几分钟后
  • WALL:发送给所有终端的信息
# shutdown -r +5 "shutdown in 5 minii"
# shutdown -c "cancle shutdown in 5 minii"

0021,linux里面有2种时钟,硬件时钟和系统时钟

0022,显示系统时钟时间date [OPTION]... [+FORMAT]

  • FORMAT:

    %a     locale\'s abbreviated weekday name (e.g., Sun)
    %A     locale\'s full weekday name (e.g., Sunday)
    %b     locale\'s abbreviated month name (e.g., Jan)
    %B     locale\'s full month name (e.g., January)
    %c     locale\'s date and time (e.g., Thu Mar  3 23:05:25 2005)
    %C     century; like %Y, except omit last two digits (e.g., 20)
    %d     day of month (e.g., 01)
    %D     date; same as %m/%d/%y
    %e     day of month, space padded; same as %_d
    %F     full date; same as %Y-%m-%d
    %T     time; same as %H:%M:%S
    ...
    
    # date +%F
    2019-12-12
    # date +%T
    18:11:03
    # date +"%F %T"
    2019-12-12 18:14:59
    # date +%F~%T
    2019-12-12~18:15:10
    

0023,修改当前系统时钟时间date [MMDDhhmm[[CC]YY][.ss]]

0024,显示硬件时钟clock和hwclock

0025,修改硬件时钟时间

  • -s:--hctosys:把硬件时钟时间调整成系统时钟时间
  • -w:--systohc:把系统时钟时间调整成硬件时钟时间

0026,查看日历cal

  • 查看某年的日历:cal 2019
  • 查看某年某月的日历:cal 12 2019
  • 查看当前月的日历:cal

0027,查看哪些命令是别名命令alias

# alias
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'
alias rm=\'rm -i\'
alias which=\'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde\'
  • 自定义别名alias name=\'command\'注意:只在当前shell进程里有效。

    $ alias ll=\'ls -lrt\'
    
  • 撤销别名: unalias name

0028,查找可执行程序,存放在哪里

  • 语法:which [options] programname [...]

  • ----skip-alias:不显示别名,只显示存放路径。

    # which --skip-alias ls
    /usr/bin/ls
    

0029,查找可执行程序,可执行程序对应的源代码,可执行程序对应的帮助文件,存放在哪whereis

  • 语法:whereis [options][-BMS directory... -f] name...
  • -b:只显示可执行程序,存放在哪
  • -m:只显示帮助文件,存放在哪
  • -s:只显示源代码,存放在哪

0030,查看谁登录的系统who

  • 语法: who [OPTION]... [ FILE | ARG1 ARG2 ]
  • -b:最近一次的系统启动时间。
  • -d:显示死亡的进程
  • -l:显示login processes
  • -u:和直接用who差不多,多了2列,其中一列是进程id。
  • -r:显示运行级别

0031,查看谁登录的系统,和这些人在运行什么进程w

pts/1是终端的类型,是虚拟终端,编号为1.

IDLE:是多久没有操作终端了。

what:是正在运行哪个进程。

$ w
 19:41:10 up  1:14,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    192.168.0.104    18:27    1:26   0.11s  0.11s -bash
root     pts/2    192.168.0.104    19:18    6.00s  0.06s  0.01s w

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

以上是关于Linux 基础命令的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么查看mysql数据库版本

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

逆向及Bof基础实践

20155307刘浩《网络对抗》逆向及Bof基础