Linux基本命令

Posted 123why

tags:

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

Ubuntu安装python3
sudo apt install python3
sudo apt install python3-pip
1.安装软件
1.解压软件  unzip
2. ./configure
    使用./configure出错执行下面命令
         autoreconf  -iv    自动生成configure文件
3.make
4. make install 

注意,由于xshell远程连接ubuntu是通过ssh协议的,所以,确保ubuntu安装ssh服务器:

输入以下命令进行安装远程ssh服务

# sudo apt-get install openssh-server
若没有ssh,需要执行

# sudo apt-get install ssh

ubuntu安装paramiko需先安装依赖  sudo apt-get install libssl-dev

;  # 注释内容
安装python
1.下载https://www.python.org/downloads/source/
2.解压 tar -zxvf /usr/local/python3
3.配置编译安装 ./configure --prefix=/usr/local/python3
            make && make install
4.建立软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

cat /etc/redhat-release:查看系统版本
        cat a.txt>b.txt   #将a中的内容覆盖到b中   
        cat a.txt>>b.txt  #将a中的内容追加到b中
hostname:查看主机名
init 0 
exit
man == -h == --help
whoami
who
useradd                         # 添加新用户
passwd                          # 修改用户密码
clear
ls 
ls -l
ls -l /目录
ll -d                           # 查看目录的权限
ls -a                           # 查看隐藏文件 点开头
cal                             # 查看日历
date
date                            # 修改时间 格式:‘月日时分年‘
su                              # 切换账户
pwd                             # 显示当前目录
cp                              # 复制
    语法:cp [-adfilprsu]  source destination
    参数解释:

    a:相当于-pdr的意思
    d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

    f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

    -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

    -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;

    -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
    -r:递归持续复制,用於目录的复制行为;(常用)
    -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;

    -u:若 destination 比 source 旧才升级 destination !

    a)复制文件到指定目录
    命令:cp source destination
    实例:cp  11 test

    b)复制目录到目录
    命令:cp -r source destination 或者 cp -a source destination
    实例:cp -a 22 test

    或者:cp -r 22 test

    c)将多个源文件复制到目录
    命令:cp file1 file2 file3  destination
    实例:cp qq ww ee cpdir

    d)将多个目录复制到目录
    命令:cp  -r  dir1 dir2 dir3 destination 或者 cp  -a dir1 dir2 dir3 destination
    实例:cp -r 11 22 cpdir

    或者:cp -a 11 22  cpdir
alias                           # 别名
mv 
mkdir                           # 创建目录
touch                           # 创建文件
cat                             # 查看文件内容
head/tail                       # 查看指定行数的内容 tail -f 动态查看

关于用户创建
    /etc/passwd    root:x:0:0:root:/root:/bin/bash
                   用户名:密码:userid:groupid:描述信息:家目录:可登录/bin/bash,不可登录/sbin/nologin
    创建一个用户:test会自动在以下目录中创建文件
    /etc/passwd   创建一条用户信息
    /etc/shadow   
    /etc/group
    /etc/gshadow
    /home
    /var/spool/mail
    # 查看用户id信息
    [root@localhost ~]# id tim
    uid=1001(tim) gid=1001(tim) 组=1001(tim)
    [root@localhost ~]# id why
    uid=1000(why) gid=1000(why) 组=1000(why),10(wheel),1001(tim)
    userdel -r
    usermod -d # 修改家目录
    usermod -G # 将用户添加到指定组中,-aG追加
关于文件:
    ls -l 
    -rw-------. 1 root root 1547 7月   6 05:16 anaconda-ks.cfg
    权限信息 硬连接数 属主 属组 创建日期 文件名
    权限信息:
        1:文件类型
            -:普通文件
            d:目录文件
            l:软链接(快捷方式)
            b:设备
            p:管道文件
        2-4:属主权限,读r、写w、执行x
        5-7:属组权限
        8-10:
    修改权限:
        chmod u,g,o = --- 或者 +- --- 文件名

创建一个新用户tim
在root用户下创建一个文件c.txt
修改文件权限
在why用户下创建一个w.txt
修改文件权限使其他人没有任何权限
用tim用户修改这个文件
将tim用户添加到why组中
再次修改这文件
执行文件的方法
sh 文件路径
. 文件路径
bash 文件路径
./ 文件路径
创建于~目录下的文件不会在其他用户下出现
chown 属主.属组 文件名/目录
chown -R 递归修改,目录下所有文件修改
mkdir -p /a/b/c/d 递归创建
r->4 w->2 x->1
> 覆盖符号
>> 追加符号
wc -l 显示文件有多少行
| 管道符 上一步命令的结果当作下一步命令的操作对象
cat a.txt b.txt > new.txt | wc -l 
归档:将多个文件打包在一个文件中
tar -c(创建)f(文件名)v(显示创建 过程) test.tar 需要打包的文件名 空格
tar -tf 查看
tar xvf 文件名 -C 指定位置 解包
压缩:
两种压缩算法: gzip bzip2
vim:
命令行模式下
dd 删除光标所在行
u 撤销操作
u 撤销操作
yy复制光标当前行
p粘贴到光标下一行
P粘贴到光标上一行
set nu:显示行数

top: 查看进程
free: 查看内存
             total        used        free      shared  buff/cache   available
Mem:        2031888      687352      829444        9964      515092     1134900
Swap:       2097148           0     2097148
ps aux :查看所有进程
pstree:查看进程树
grep 内容: 筛选 (-v过滤) 
kill -9 PID :强制杀死
fg %工作号:后台程序调到前台
bg %工作号:后台暂停运行
程序名 & 程序后台运行
jobs:查看工作号

系统启动顺序
Bios:找到硬盘
MBR:主引导目录 512b 446引导信息 64分区信息 2结束符
grub:找内核
kernel:
init:进入的级别 0,1,2,3,4,5,6


添加一块硬盘的流程:
fdisk -l :查看硬盘
    磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x0e2ab367

       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    10487807     5242880   83  Linux

1.对硬盘分区:
fdisk /dev/硬盘名(sda,sdb):进入一个程序在其中进行磁盘分区等操作
    [root@localhost ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。

    Device does not contain a recognized partition table
    使用磁盘标识符 0x0e2ab367 创建新的 DOS 磁盘标签。

    命令(输入 m 获取帮助):m
    命令操作
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       g   create a new empty GPT partition table
       G   create an IRIX (SGI) partition table
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partitions system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)

        
n:进行分区
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)  主分区 :最多只能创建四个主分区,MBR中64b的引导信息所限制
       e   extended   :扩展分区:属于四个主分区,在其中可以分更多的逻辑分区
    Select (default p): 

命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):1
    起始 扇区 (2048-41943039,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
    分区 1 已设置为 Linux 类型,大小设为 5 GiB

p:查看分区

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0e2ab367

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux

w:保存退出
2.更新磁盘表
partprobe:更新磁盘列表
3.格式化磁盘,创建文件系统
mkfs.ext4 /dev/sdb1
    [root@localhost ~]# mkfs.ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    327680 inodes, 1310720 blocks
    65536 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=1342177280
    40 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 

可创建的文件系统类型
    mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
    mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs:处理海量数据   
4.挂载磁盘
mount:将磁盘挂载在指定目录下,在该目录中创建的文件或者目录将被写道磁盘的该分区中
umount:卸载磁盘
mount /dev/sdb1 /sdb1
[root@localhost /]# mkdir sdb1
[root@localhost /]# mount /dev/sdb1 /sdb1
df:查看挂载关系
[root@localhost /]# df
    文件系统                   1K-块    已用     可用 已用% 挂载点
    /dev/mapper/centos-root 17811456 3626800 14184656   21% /
    devtmpfs                 1000024       0  1000024    0% /dev
    tmpfs                    1015944       0  1015944    0% /dev/shm
    tmpfs                    1015944    9200  1006744    1% /run
    tmpfs                    1015944       0  1015944    0% /sys/fs/cgroup
    /dev/sda1                1038336  164004   874332   16% /boot
    tmpfs                     203192       4   203188    1% /run/user/42
    tmpfs                     203192      24   203168    1% /run/user/0
    /dev/sdb1                5029504   20472  4730504    1% /sdb1

    
du:统计一个目录下文件有多大

[root@localhost ~]# df -i :查看inode编号  -h:查看空间大小
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 8910848  122880 8787968       2% /
devtmpfs                 250006     401  249605       1% /dev
tmpfs                    253986       1  253985       1% /dev/shm
tmpfs                    253986     584  253402       1% /run
tmpfs                    253986      16  253970       1% /sys/fs/cgroup
/dev/sda1                524288     327  523961       1% /boot
tmpfs                    253986       6  253980       1% /run/user/42
tmpfs                    253986      17  253969       1% /run/user/0
/dev/sdb1                327680      11  327669       1% /sdb1


ln -s :软链接   ln -s /a/sou.txt /b/des.txt
特点:
1.就相当于快捷方式
2.删除目标文件,源文件无影响
3.删除源文件,目标文件消失
4.无论修改哪一个,都共同被修改
5.inode号不一样
6.指向文件名
7.可跨分区链接
ln :硬链接
特点:
2.删除目标文件,源文件无影响
3.删除源文件,目标文件无影响
4.无论修改哪一个,都共同被修改
5.inode号一样
6.指向inonde号
7.不可跨分区

ifconfig:查看网卡  ip a
route -n:查看网关
arping -I eth0 192.168.11.11 :返回mac地址,检查是否有冲突,有冲突则返回两个mac地址
ifdown :关闭网卡
ifup:开启网卡   ifup ens33
网卡配置文件 :/etc/sysconfig/network-scripts/
重启网络服务:systemctl restart network

linux中软件包有两种形式
tar.gz:源码,需要编译安装
rpm :红帽Redhat的一种软件包格式,本身就是二进制,也就是编译好的程序
rpm -ivh:安装rpm包   最后加--force(覆盖安装)
rpm -qa:显示已安装的所有rpm包 -ql查询软件包安装位置 -qi:信息
rpm -e:卸载
wget:下载rpm软件包

自定义yum源
安装createrepo
mkdir /test
cp 软件包 /test
createrepo /test
修改/etc/yum.repos.d/local/repos
baseurl = /test

yum的模糊安装
yum install *http*
yum erase 软件包名
yum clean all:删除缓存
gcc-* glibc*

部署一个服务 apache
    准备环境
        关闭防火墙(centos6:service iptables stop,开机就关闭:chkconfig iptables off)
                    centos7:systemctl stop firewalld.service
        关闭selinux :setenforce 0
        配置ip
    装软件包 yum install httpd -y 
    修改配置文件vim /etc/httpd/conf/httpd.conf 
            Listen端口
            DocumentRoot:文档根目录  
            显示界面文件:/var/html
    重启服务
    systemctl restart httpd.service
    测试 
    查看主机名:hostname ,如果修改直接在后面加要修改的名 还要修改 /etc/hosts
        通过查看welcome.conf这个配置文件,可以发现apache默认页面文件为
        /usr/share/httpd/noindex/index.html

samba服务 网盘
    创建一个samba服务网盘
    关闭SElinux :

        [root@bogon ~]# sestatus           查看selinux状态
        SELinux status:                 enabled
        SELinuxfs mount:                /sys/fs/selinux
        SELinux root directory:         /etc/selinux
        Loaded policy name:             targeted
        Current mode:                   permissive
        Mode from config file:          enforcing
        Policy MLS status:              enabled
        Policy deny_unknown status:     allowed
        Max kernel policy version:      28

        临时关闭selinux 
        setenforce 0 
        永久关闭selinux 
        vi /etc/selinux/config 
        修改enforcing为disabled
    关闭防火墙:
        [root@bogon ~]# firewall-cmd --state                        查看防火墙状态
        running                                                     开启状态
        [root@bogon ~]# systemctl stop firewalld.service            关闭防火墙
        [root@bogon ~]# firewall-cmd --state 
        not running                                                 关闭状态

    1. yum install samba -y   
            # 被占用
            Another app is currently holding the yum lock; waiting for it to exit...
              另一个应用程序是:PackageKit
                内存:164 M RSS (1.0 GB VSZ)
                已启动: Fri Aug  2 10:21:06 2019 - 06:21之前
                状态  :睡眠中,进程ID:2489
            命令  rm -f /var/run/yum.pid

    2.进入配置文件 /etc/samba/smb.conf
        # See smb.conf.example for a more detailed config file or
        # read the smb.conf manpage.
        # Run ‘testparm‘ to verify the config is correct after
        # you modified it.

        [global]

                security = user   # 用户模式user share
                passdb backend = tdbsam 


            添加一个网盘
            [public]    
            ;    comment = Public Stuff#描述信息
            ;    path = /home/samba    #目录
            ;    public = yes          #公开
            ;    writable = no         #是否可写
            ;    printable = no        #打印
            ;    write list = +staff   #允许谁写
    3.添加一个用户
        smbpasswd -a username # 用户必须是系统用户
        在windows中使用该用户登录网盘进入的是 /home/username
    4.开启服务和检查状态
        [root@bogon samba]# systemctl start smb
        [root@bogon samba]# systemctl status smb
    5.
        使用时在windows端 右键计算机--->映射网络驱动器--->
        \192.168.1.120company(填写网盘名)
        --->勾选使用其他凭据连接

netstat -an | grep 8000
netstat -tulnp 查看端口

通过密钥对免密连接:
    持有私钥的主机可以连接持有公钥的主机但不可反向
    密钥对保存在当前用户   ~/.ssh  中
    举例: A(root@192.168.145.137)主机连接B(why@192.168.145.138)主机
        1.在A主机上安装ssh-keygen
        2.在命令行执行ssh-keygen
            [root@why_centos7 .ssh]# ssh-keygen
            Generating public/private rsa key pair.
            Enter file in which to save the key (/root/.ssh/id_rsa): 
            Created directory /root/.ssh.
            Enter passphrase (empty for no passphrase):                                                        # 
            Enter same passphrase again: 
            Your identification has been saved in /root/.ssh/id_rsa.
            Your public key has been saved in /root/.ssh/id_rsa.pub.
            The key fingerprint is:
            SHA256:DfdqGXHduJjXFHuXFDMh8S61bLg+MiFVZyo0ULDfG9o root@why_centos7
            The keys randomart image is:
            +---[RSA 2048]----+
            |         o+. o.Bo|
            |          .o o+=*|
            |        ..+ + *==|
            |         +.*.+=++|
            |        S +.==o=.|
            |         . =o.*  |
            |          =..E   |
            |         . o..   |
            |            o..  |
            +----[SHA256]-----+
        3.将公钥发送到B主机上 有不同的发送方法这里使用ssh-copy-id     还有scp id_rsa.pub root@172.16.22.132:/root/.ssh 
            [root@why_centos7 .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 why@192.168.145.137 
            /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
            /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
            /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
            why@192.168.145.137s password: 

            Number of key(s) added: 1

            Now try logging into the machine, with:   "ssh -p ‘22‘ ‘why@192.168.145.137‘"
            and check to make sure that only the key(s) you wanted were added.
        
        4.免密连接
            ssh -p 22 why@192.168.145.137


配置开关机
在家目录下有两个文件 .bashrc、.bash_logout,前者是开机执行,后者是关机执行

    
    

 

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

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

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

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程