Linux常用命令

Posted xcool

tags:

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


  • Part One 用户命令

  • who相关命令
  • who: 显示当前登录用户 如图1-1所示
  • who am i: 显示当前登录用户信息 如图1-2所示
  • whoami: 显示当前登录用户名 如图1-3所示
  • who -q: 统计当前登录用户个数和显示用户名 如图1-4所示
  • who -u: 显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。 如图1-5所示
  • who -H: 显示各栏信息 如图1-6所示
  • who -m: 等同于 who am i 如图1-7所示
  • who -w: 显示用户的信息状态栏 如图1-8所示
  • who -H -l: 显示用户登录来源 如图1-9所示
  • who -T -H: 显示终端属性 如图1-10所示

  • 查看系统当前登录用户状态
  • w: 可以看到登录用户的信息与cpu占用率。
  • last:查看最近登录的用户信息。

  • useradd与adduser添加用户
    注意: 这两条命令是一样的,参数也是一样的,adduser是useradd的一个perl脚本,作用是提供交人机互式操作。
  • 参数说明
  • -c:加上备注文字,备注文字保存在passwd的备注栏中。

  • -d:指定用户登入时的主目录,替换系统默认值/home/<用户名>
  • -D:变更预设值。

  • -e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。

  • -f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.

  • -g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。

  • -G:指定用户所属的附加群组。

  • -m:自动建立用户的登入目录。

  • -M:不要自动建立用户的登入目录。

  • -n:取消建立以用户名称为名的群组。

  • -r:建立系统账号。

  • -s:指定用户登入后所使用的shell。默认值为/bin/bash。

  • -u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。

    例:
  • useradd admin -u 512 -d /home/em -g root -c "测试" -e 14/10/2018 -n: 创建一个名为admin的用户,设置用户id为512,替换默认/home/admin目录为/home/em,并且添加此用户为root组用户,添加备注,设置账号失效日期,取消建立以用户名称为名的群组。 如图1-11所示
  • passwd admin:给admin设置密码为123456。
  • ssh登录新用户: 如图1-12
  • groups: 查看当前用户用户组 如图1-13所示
  • 进入根目录下etc目录中,查看passwd文件,里面包含了用户信息: 如图1-14所示
admin:x:512:0:测试:/home/em:/bin/bash

>说明:从左到右数据依此为:用户名:密码:用户id:用户组id:备注:用户主目录:shell命令主目录。

  • 删除用户userdel
  • userdel username: 删除用户
  • userdel -f username: 删除用户账号与相关的文件

  • 切换用户
  • su username:需要输入切换用户的密码。

  • Part Two 文件操作相关

  • 查看文件
  • ls命令及参数
  • a : 显示所有文件及目录 (包括以.开头的隐藏文件或文件夹)
  • -l : 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r : 将文件以相反次序显示(原定依英文字母次序)
  • -t : 将文件依建立时间之先后次序列出
  • -A : 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F : 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  • -R : 若目录下有文件,则以下之文件亦皆依序列出(递归文件夹显示所有文件)

  • 查看文件内容
  • cat 文件名 :显示文件内容。
  • cat -n 文件名 : 显示行号。
  • cat 文件 | head -3: 查看文件前三行。
  • cat 文件1 文件2:将两个文件连接起来输出显示。
  • head -3 文件: 查看文件前三行。
  • tail -5 文件 : 查看文件后5行。
  • less 文件 : 分页查看文件,less分页内容少。
  • more 文件: 分页查看文件,more分页内容多。

  • 创建空文件
  • touch: touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。显示时间记录可用ls -l查看文件信息。
  • touch a 文件 : 改变档案的读取时间记录。
  • touch m 文件 : 改变档案的修改时间记录。
  • 创建空文件夹
  • mkdir folder : 创建名为folder的空文件夹。
  • mkdir -p a/b : 创建二级目录,a文件夹下有b文件夹。

  • 删除文件与文件夹
  • rm:删除文件与文件夹。
  • -i: 删除前逐一询问确认。
  • -f: 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r:将目录及以下之档案亦逐一删除。
  • rm -f 文件:删除文件且以yes跳过询问操作。
  • rm -rf 文件夹:删除文件夹及文件夹内的文件。

  • 复制文件
  • cp复制
  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。
  • cp 文件 路径/新文件名 :复制文件到新路径并重命名。例:cp a.py code/aa.py
  • cp 文件 路径:复制文件到其他路径,不更改文件名字。例: cp b.py code
  • cp 文件夹 -r 路径 :复制文件夹所有内容到新的路径,不会复制文件夹本身。
  • cp 文件夹 -r 路径/新文件夹名字 : 复制文件夹内容到路径下的新文件夹中。
  • mv为文件或目录改名、或将文件或目录移入其它位置。
  • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件。
  • -f: 在mv操作要覆盖某已有的目标文件时不给任何指示。
  • mv 文件 文件 :将文件1改名为文件2。
  • mv 文件 文件夹:将文件移动到文件夹。
  • mv 文件夹 文件夹:目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名。

  • 更改文件权限
  • chmod
  • u: 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • +: 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r: 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
drwxr-xr-x 2 root root 4096 Oct 13 15:49 abc
-rwxr--r-- 1 root root 1158 Oct 10 15:04 a.py
-rwxr--r-- 1 root root  440 Oct 10 15:07 b.py
-rw-r--r-- 1 root root   56 Oct 13 15:03 code

说明:d表示文件夹,-rwxr--r--意思是,当前用户可执行操作为rwx,可读写执行,同组用户可对该文件执行r--读操作,其他用户可对改文件执行r--读操作。

  • 新建一个c.py文件
    用 ll 命令查看c.py的权限为 -rwxr--r--
    注: ll = ls -l
-rw-r--r--  1 root root        0 Oct 13 16:02 c.py
  • chmod修改权限方法一
  • chmod u+x c.py:修改c.py文件为当前用户的可执行文件。
-rwxr--r--  1 root root        0 Oct 13 16:02 c.py
  • 二进制修改权限
  • chmod 754 a.py:修改c.py为当前用户和同组可执行文件。
-rwxr-xr--  1 root root        0 Oct 13 16:02 c.py

说明:7代表rwx,5代表r-x,4代表r--,如果将三位权限看成三位二进制,为0就是没有权限,为1就是有权限,那rwx就是二进制的111,r-x就是二进制的101,r--就是二进制的100,所以权限754就是给c.py添加当前用户和同组用户的可执行文件。

  • chown 更改文件的所有者
  • user : 新的文件拥有者的使用者 ID
  • group: 新的文件拥有者的使用者组(group)
  • chown user 文件:改变文件的所有者
  • chown root:user 文件:将文件拥有着设置为root组的用户user。
  • chown -R root:admin 文件夹:将文件夹所有文件所有者设置为root下admin用户。

  • Part Three 其他Linux命令

  • clear:清屏。
  • logout/exit:退出登录。
  • cd:切换目录。cd ~ 回到根目录
  • pwd:查看当前工作目录。
  • man 命令:获得某个命令的帮助文档。
  • 命令 --help:获得命令的参数说明。
  • wget 网址:下载网址的内容。
  • wall 内容:给所有线上设置mesg y的用户发消息,设置为mesg n的用户不会收到,注意root用户发的消息不能拒绝。wall 加 某个用户就是对某个用户发消息,不加参数就是给所有人发。
  • history:查看所有历史命令。
  • history -c:清除历史命令。
  • history -d 命令编号:删除某条历史命令。
  • !+历史命令编号:执行某条命令。
  • date:查看当前时间。
  • cal:查看日历。
  • cal 12 2018:查看某年某月的日历。
  • cal 2018:查看某年日历。
  • alias 别名="命令":给命令起别名,可以通过别名来执行命令。例:alias ca="cal"
  • unalias 别名: 撤销别名。
  • wc 文件:统计文件内容行数,字节数,单词个数。
  • wc -l 文件:只看文件内容行数。
  • sort a.txt | uniq |wc -l:排序文件去重再查看行数。sort排序,uniq去重。
  • diff 文件1 文件2:比较两个文件的不同的地方。
  • gzip/gunzip:压缩/解压缩文件。
  • tar -xvf:解归档。
  • ln -s /a/b/c/d.txt haha:创建一个haha的软链接可以直接访问d.txt文件,如果不加 -s 就是硬链接,相当于文件的引用,只要引用数不为0 ,文件就会一直存在。
  • echo输出语句
  • echo 内容 > 文件 :再次写入会覆盖上次内容。
  • echo 内容 >> 文件: 追加写入。
  • echo 内容 > 文件1 2>文件2 :错误输出重定向,正确的结果输入文件1,出错就输出文件2。
a=10
b=3
echo $a
10
echo $[a+b]
13

  • Part Four 进程

  • ps
  • -w: 显示加宽可以显示较多的资讯
  • -au: 显示较详细的资讯
  • rss: 占用的记忆体大小
  • r: 正在执行中
  • s: 静止状态
  • t: 暂停执行
  • n: 低优先序的行程
  • ps -ef:显示所有的进程
  • 关闭进程
  • kill 进程编号:关闭进程
  • kill -9 进程编号:强制杀死某个进程
  • ps -ef | grep httpd | grep -v grep---进程不包含搜索操作本身这条进程

  • top
  • top:实时显示进程的状态

中止运行中的进程ctrl+c
暂停进程并置于后台-ctrl+z

  • redis-server &:服务名后面加&放在后台运行。
  • jobs ---查看后台进程
  • bg %编号 --- 让后台暂停的进程继续再后台运行,编号为后台进程编号
  • fg %编号--- 让后台进程再前台运行

  • netstat
  • netstat -nap | grep 80:查某个端口被谁占用。
    参考

  • Part Five Linux启动过程与目录说明

  • 启动过程
  • 内核的引导。
  • 运行 init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。
  • Linux系统有7个运行级别(runlevel)

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
  • shutdown: 关机
  • shutdown -c:取消关机
  • init 0:关机且不发送通知
  • init 6:重启
  • rebot:重启

  • linux目录说明

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev:dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv:该目录存放一些服务启动之后需要提取的数据。

  • /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
    该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp:这个目录是用来存放一些临时文件的。

  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin:系统用户使用的应用程序。

  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:内核源代码默认的放置目录。

  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • Part Six 进程管道通信与短路运算

  • 管道通信语法
  • 命令1 | 命令2:命令1的输出作为命令2的输入。
  • ls | grep codes:查询codes目录是否存在。
  • 短路运算
  • 命令1 || 命令2 || 命令3:从左至右依此执行,谁正确就执行谁,后面不再执行。
  • 命令1 && 命令2 && 命令3:从左到右,依此执行。

  • Part Seven linux安装软件

  • yum安装
  • yum search git ---查找软件
  • yum install git --- 安装软件 yun -y install git ---跳过yes步骤,以yes来安装
  • yum remove git --- 卸载软件
  • yum info git --- 查看软件信息
  • yum update 软件名字 更新软件
  • yum update ----- 更新所有的软件
  • yum list installed--- 列出已经安装的文件

  • code安装以python3环境为准
  • step 1:下载源代码 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
  • step 2:解压缩 gunzip Python-3.7.0.tgz
  • step 3:解归档 tar -xvf Python-3.7.0.tar
  • step 4:安装底层依赖库 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
  • step 5:进到解归档后的文件夹路径 cd Python-3.7.0
  • step 6:执行可执行文件./configure --prefix=/usr/local/python37 --enable-optimizations
  • step 7:构建安装 make && make install 源代码构建安装
  • step 8:配置PATH环境变量 export PATH=$PATH:/usr/local/python37/bin
  • step 9:注册软链接(符号链接) ln -s /usr/local/python37/bin/python/3 /usr/bin/python3


  • Part Eight web服务器配置与防火墙

  • nginx

    先yum安装nginx服务器,命令yum install nginx

  • systemctl start 服务名字 --- 启动服务
  • systemctl stop 服务名字 停止服务 ----
  • systemctl restart 服务名字 重复服务 ----
  • systemctl status 服务名字 查看信息 ----
  • systemctl enable 服务名字 ---- 开机自启
  • systemctl disable 服务名字---- 关闭自启
  • journalctl -xe---查看启动服务失败的错误原因
  • systemctl status 服务.service--- 查看失败错误原因

  • httpd---Apache

    yum安装httpd服务器,yum install nginx

  • 注意 : 两个服务器默认使用的是80端口,要想同时使用必须修改其中一个端口号。修改方法,进入/etc目录下找到安装文件夹/nginx,修改nginx.conf文件中listen。参考

  • 防火墙

    阿里云服务器自带防火墙,我们可以不使用它而自己配置,配之前需要关闭阿里云的防火墙。关闭阿里云的防火墙-----打开安全组规则,设置端口为1-65535,打开全部端口。

Linux自带防火墙firewalld

  • 配置firewalld防火墙
  • systemctl start firewalld : 启动防火墙服务
  • firewalld-cmd --add-service = 服务 : ---添加服务 配置防火墙---
  • firewalld-cmd --add-port=80/tcp :---打开端口
  • firewalld-cmd --permanent --add-port=80/tcp: ---永久打开端口
  • firewalld-cmd --query-port=443/tcp: ---查询端口是否打开
  • firewalld-cmd --query-service=ssh:---查询是否有某个服务
  • firewalld-cmd --remove-port=443/tcp:---删除端口

    >firewalld默认打开22端口用于ssh连接,所以要用什么服务,就开一个端口,并且设置这个服务默认使用端口为开的端口。

  • Part Nine vim编辑器

  • 使用方法
  • vim 文件:进入命令模式,命令模式下按shift + 两次zshift + 冒号进入末行模式,在末行模式下输入wq保存退出,q退出,wq!是强制保存退出,按i进入编辑模式,按Esc退出编辑模式。
  • 设置编辑模式下的格式
  • vim .vimrc.vimrc文件是vim的配置文件
set nu --- 设置行号显示
syntax on --- 设置语法高亮显示
set tabstop =4 --- 设置一个tab为4个空格
map <F2> gg99999dd --- 设置功能键,按F2删除所有内容
inoremap _main if __name__ == ‘__main__‘: --- 设置快捷键,输入_main快捷输入
inoremap _#  #!/usr/bin/python3 --- 设置快捷键,输入_#快捷输入#!/usr/bin/python3 
  • 命令模式下
  • 0 :--光标移动到当前行最开始
  • $ :--光标移动到当前行最末尾
  • h: --光标向左移动
  • l: --光标向右移动
  • k :--光标向上移动
  • ``j```: --光标向下移动
  • gg--光标移到最开始
  • G: --光标移动到最末尾
  • nG:--光标移动到第几行 == ngg
  • yy: --复制光标当前行
  • nyy:--复制光标当前行到下面n行
  • p: --粘贴
  • dd :--删除光标当前行
  • ndd: --删除光标下n行包含当前光标行
  • ctrl+e: --下翻一行
  • ctrl+y:--上翻一行
  • ctrl+f: --向前翻页
  • ctrl+b :--向后翻页
  • u:--撤销操所
  • ctrl+r: --恢复操作
  • ctrl+x ctrl+o:--代码提示
  • /word:-- 查找当前光标下内容中word这个词
  • ?word: --查找当前光标上内容中word这个词
  • vim -d 文件1 文件2 --比较两个文件的区别

  • 末行模式下
  • :n1,n2s/world1/world2/gice --- n1行到n2行进行替换
  • :1,$s/world1/world2/gice --全文替换world1为world2
    --g:全局模式,正则表达式的全局匹配 i忽略大小写,c每次替换都要确认 ,-e允许错误,静默处理,忽略错误
  • :w: --保存
  • :q: --退出
  • :set nu: --设置行号
  • :set ts =4: --设置tab为4个空格
  • :set autoindent:--自动缩进

如果vim打开了多个文件,可以在末行模式下通过:b<编号>切换到其他文件 :ls查看打开文件编号

  • 打开多个文件:
  • :vs anotherfile 垂直拆分两个窗户显示不同文件,两次ctrl+w 切换光标到另一个文件
  • :sp anotherfile水平拆分
  • :wqa: --退出全部窗口
  • :map <F1> gg999999dd ---映射快捷键 删除所有(命令模式下的映射)
  • :inoremap _main if __name__ == ‘__main__‘::---输入模式下的映射 nore---非递归 避免_main死循环

改配置

  • vim .vimrc--- 必须叫.vimrc这个名字

  • Part Else 远程连接与拷贝

  • 远程连接
  • ssh [email protected]:远程连接用户名为root,主机为112.74.164.93的服务器。
  • 远程拷贝

  • scp 文件1 [email protected]:/root/a.py --将文件1拷贝到ip93的root目录下并且名为a.py
  • scp [email protected]+绝对路径 [email protected]+绝对路径 ---将一台机器的文件 传到另一个机器
  • sftp [email protected]---ftp远程下载

  • python配置

    python 代码加 #!/usr/bin/python3然后再修改.py文件为可执行权限,再./文件执行python文件,如./a.py即可执行,但前提是将python的安装文件中的执行程序软连接到/usr/bin/python3目录下。

  • Linux向windows互输文件

    xshll 与 xftp的传输,点击圈的按钮。

技术分享图片












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

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

Linux常用文件管理命令

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

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

C#常用代码片段备忘

常用python日期日志获取内容循环的代码片段