精华内容
参与话题
问答
  • Linux常用命令大全(非常全!!!)

    万次阅读 多人点赞 2019-07-25 16:40:12
    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解...

    Linux常用命令大全(非常全!!!)

    最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考:

     

    系统信息 
    arch 显示机器的处理器架构
    uname -m 显示机器的处理器架构
    uname -r 显示正在使用的内核版本 
    dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) 
    hdparm -i /dev/hda 罗列一个磁盘的架构特性 
    hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 
    cat /proc/cpuinfo 显示CPU info的信息 
    cat /proc/interrupts 显示中断 
    cat /proc/meminfo 校验内存使用 
    cat /proc/swaps 显示哪些swap被使用 
    cat /proc/version 显示内核的版本 
    cat /proc/net/dev 显示网络适配器及统计 
    cat /proc/mounts 显示已加载的文件系统 
    lspci -tv 罗列 PCI 设备 
    lsusb -tv 显示 USB 设备 
    date 显示系统日期 
    cal 2007 显示2007年的日历表 
    date 041217002007.00 设置日期和时间 - 月日时分年.秒 
    clock -w 将时间修改保存到 BIOS 



    关机 (系统的关机、重启以及登出 ) 
    shutdown -h now 关闭系统
    init 0 关闭系统
    telinit 0 关闭系统
    shutdown -h hours:minutes & 按预定时间关闭系统 
    shutdown -c 取消按预定时间关闭系统 
    shutdown -r now 重启
    reboot 重启
    logout 注销 



    文件和目录 
    cd /home 进入 '/ home' 目录' 
    cd .. 返回上一级目录 
    cd ../.. 返回上两级目录 
    cd 进入个人的主目录 
    cd ~user1 进入个人的主目录 
    cd - 返回上次所在的目录 
    pwd 显示工作路径 
    ls 查看目录中的文件 
    ls -F 查看目录中的文件 
    ls -l 显示文件和目录的详细资料 
    ls -a 显示隐藏文件 
    ls *[0-9]* 显示包含数字的文件名和目录名 
    tree 显示文件和目录由根目录开始的树形结构
    lstree 显示文件和目录由根目录开始的树形结构
    mkdir dir1 创建一个叫做 'dir1' 的目录' 
    mkdir dir1 dir2 同时创建两个目录 
    mkdir -p /tmp/dir1/dir2 创建一个目录树 
    rm -f file1 删除一个叫做 'file1' 的文件' 
    rmdir dir1 删除一个叫做 'dir1' 的目录' 
    rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 
    rm -rf dir1 dir2 同时删除两个目录及它们的内容 
    mv dir1 new_dir 重命名/移动 一个目录 
    cp file1 file2 复制一个文件 
    cp dir/* . 复制一个目录下的所有文件到当前工作目录 
    cp -a /tmp/dir1 . 复制一个目录到当前工作目录 
    cp -a dir1 dir2 复制一个目录 

    cp -r dir1 dir2 复制一个目录及子目录
    ln -s file1 lnk1 创建一个指向文件或目录的软链接 
    ln file1 lnk1 创建一个指向文件或目录的物理链接 
    touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) 
    file file1 outputs the mime type of the file as text 
    iconv -l 列出已知的编码 
    iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. 
    find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 



    文件搜索 
    find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 
    find / -user user1 搜索属于用户 'user1' 的文件和目录 
    find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 
    find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
    find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
    find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 
    find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 
    locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 
    whereis halt 显示一个二进制文件、源码或man的位置 
    which halt 显示一个二进制文件或可执行文件的完整路径 



    挂载一个文件系统 
    mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 
    umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出 
    fuser -km /mnt/hda2 当设备繁忙时强制卸载 
    umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 
    mount /dev/fd0 /mnt/floppy 挂载一个软盘 
    mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom 
    mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 
    mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 
    mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 
    mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享 



    磁盘空间 
    df -h 显示已经挂载的分区列表 
    ls -lSr |more 以尺寸大小排列文件和目录 
    du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' 
    du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小 
    rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统) 
    dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统) 



    用户和群组 
    groupadd group_name 创建一个新用户组 
    groupdel group_name 删除一个用户组 
    groupmod -n new_group_name old_group_name 重命名一个用户组 
    useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户 
    useradd user1 创建一个新用户 
    userdel -r user1 删除一个用户 ( '-r' 排除主目录) 
    usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 
    passwd 修改口令 
    passwd user1 修改一个用户的口令 (只允许root执行) 
    chage -E 2005-12-31 user1 设置用户口令的失效期限 
    pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 
    grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 
    newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 



    文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消 
    ls -lh 显示权限 
    ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 
    chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 
    chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 
    chown user1 file1 改变一个文件的所有人属性 
    chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 
    chgrp group1 file1 改变文件的群组 
    chown user1:group1 file1 改变一个文件的所有人和群组属性 
    find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 
    chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 
    chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 
    chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 
    chmod g-s /home/public 禁用一个目录的 SGID 位 
    chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 
    chmod o-t /home/public 禁用一个目录的 STIKY 位 



    文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 
    chattr +a file1 只允许以追加方式读写文件 
    chattr +c file1 允许这个文件能被内核自动压缩/解压 
    chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 
    chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 
    chattr +s file1 允许一个文件被安全地删除 
    chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 
    chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 
    lsattr 显示特殊的属性 



    打包和压缩文件 
    bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 
    bzip2 file1 压缩一个叫做 'file1' 的文件 
    gunzip file1.gz 解压一个叫做 'file1.gz'的文件 
    gzip file1 压缩一个叫做 'file1'的文件 
    gzip -9 file1 最大程度压缩 
    rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包 
    rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1' 
    rar x file1.rar 解压rar包 
    unrar x file1.rar 解压rar包 
    tar -cvf archive.tar file1 创建一个非压缩的 tarball 
    tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 
    tar -tf archive.tar 显示一个包中的内容 
    tar -xvf archive.tar 释放一个包 
    tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 
    tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 
    tar -jxvf archive.tar.bz2 解压一个bzip2格式的压缩包 
    tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 
    tar -zxvf archive.tar.gz 解压一个gzip格式的压缩包 
    zip file1.zip file1 创建一个zip格式的压缩包 
    zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 
    unzip file1.zip 解压一个zip格式压缩包 



    RPM 包 - (Fedora, Redhat及类似系统) 
    rpm -ivh package.rpm 安装一个rpm包 
    rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 
    rpm -U package.rpm 更新一个rpm包但不改变其配置文件 
    rpm -F package.rpm 更新一个确定已经安装的rpm包 
    rpm -e package_name.rpm 删除一个rpm包 
    rpm -qa 显示系统中所有已经安装的rpm包 
    rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包 
    rpm -qi package_name 获取一个已安装包的特殊信息 
    rpm -qg "System Environment/Daemons" 显示一个组件的rpm包 
    rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 
    rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表 
    rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表 
    rpm -q package_name --whatprovides 显示一个rpm包所占的体积 
    rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l 
    rpm -q package_name --changelog 显示一个rpm包的修改历史 
    rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供 
    rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表 
    rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书 
    rpm --checksig package.rpm 确认一个rpm包的完整性 
    rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性 
    rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 
    rpm -Va 检查系统中所有已安装的rpm包- 小心使用 
    rpm -Vp package.rpm 确认一个rpm包还未安装 
    rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件 
    rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包 
    rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包 



    YUM 软件包升级器 - (Fedora, RedHat及类似系统) 
    yum install package_name 下载并安装一个rpm包 
    yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 
    yum update package_name.rpm 更新当前系统中所有安装的rpm包 
    yum update package_name 更新一个rpm包 
    yum remove package_name 删除一个rpm包 
    yum list 列出当前系统中安装的所有包 
    yum search package_name 在rpm仓库中搜寻软件包 
    yum clean packages 清理rpm缓存删除下载的包 
    yum clean headers 删除所有头文件 
    yum clean all 删除所有缓存的包和头文件 



    DEB 包 (Debian, Ubuntu 以及类似系统) 
    dpkg -i package.deb 安装/更新一个 deb 包 
    dpkg -r package_name 从系统删除一个 deb 包 
    dpkg -l 显示系统中所有已经安装的 deb 包 
    dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包 
    dpkg -s package_name 获得已经安装在系统中一个特殊包的信息 
    dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表 
    dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表 
    dpkg -S /bin/ping 确认所给的文件由哪个deb包提供 



    APT 软件工具 (Debian, Ubuntu 以及类似系统) 
    apt-get install package_name 安装/更新一个 deb 包 
    apt-cdrom install package_name 从光盘安装/更新一个 deb 包 
    apt-get update 升级列表中的软件包 
    apt-get upgrade 升级所有已安装的软件 
    apt-get remove package_name 从系统删除一个deb包 
    apt-get check 确认依赖的软件仓库正确 
    apt-get clean 从下载的软件包中清理缓存 
    apt-cache search searched-package 返回包含所要搜索字符串的软件包名称 



    查看文件内容 
    cat file1 从第一个字节开始正向查看文件的内容 
    tac file1 从最后一行开始反向查看一个文件的内容 
    more file1 查看一个长文件的内容 
    less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 
    head -2 file1 查看一个文件的前两行 
    tail -2 file1 查看一个文件的最后两行 
    tail -f /var/log/messages 实时查看被添加到一个文件中的内容 



    文本处理 
    cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT 
    cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中 
    cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中 
    grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug" 
    grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇 
    grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行 
    grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug" 
    sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2" 
    sed '/^$/d' example.txt 从example.txt文件中删除所有空白行 
    sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行 
    echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容 
    sed -e '1d' result.txt 从文件example.txt 中排除第一行 
    sed -n '/stringa1/p' 查看只包含词汇 "string1"的行 
    sed -e 's/ *$//' example.txt 删除每一行最后的空白字符 
    sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部 
    sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容 
    sed -n '5p;5q' example.txt 查看第5行 
    sed -e 's/00*/0/g' example.txt 用单个零替换多个零 
    cat -n file1 标示文件的行数 
    cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行 
    echo a b c | awk '{print $1}' 查看一行第一栏 
    echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏 
    paste file1 file2 合并两个文件或两栏的内容 
    paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分 
    sort file1 file2 排序两个文件的内容 
    sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) 
    sort file1 file2 | uniq -u 删除交集,留下其他的行 
    sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) 
    comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容 
    comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 
    comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 




    字符设置和文件格式转换 
    dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX 
    unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS 
    recode ..HTML < page.txt > page.html 将一个文本文件转换成html 
    recode -l | more 显示所有允许的转换格式 



    文件系统分析 
    badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块 
    fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性 
    fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 
    e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 
    e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 
    fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 
    fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性 
    fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 
    dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 



    初始化一个文件系统 
    mkfs /dev/hda1 在hda1分区创建一个文件系统 
    mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统 
    mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统 
    mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统 
    fdformat -n /dev/fd0 格式化一个软盘 
    mkswap /dev/hda3 创建一个swap文件系统 



    SWAP文件系统 
    mkswap /dev/hda3 创建一个swap文件系统 
    swapon /dev/hda3 启用一个新的swap文件系统 
    swapon /dev/hda2 /dev/hdb3 启用两个swap分区 



    备份 
    dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份 
    dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份 
    restore -if /tmp/home0.bak 还原一个交互式备份 
    rsync -rogpav --delete /home /tmp 同步两边的目录 
    rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync 
    rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录 
    rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录 
    dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作 
    dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件 
    tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作 
    ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容 
    ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录 
    tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接 
    find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录 
    find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包 
    dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作 
    dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容 



    光盘 
    cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容 
    mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件 
    mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件 
    mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件 
    cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件 
    gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件 
    mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件 
    cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中 
    cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3) 
    cdrecord --scanbus 扫描总线以识别scsi通道 
    dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD 



    网络 - (以太网和WIFI无线) 
    ifconfig eth0 显示一个以太网卡的配置 
    ifup eth0 启用一个 'eth0' 网络设备 
    ifdown eth0 禁用一个 'eth0' 网络设备 
    ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址 
    ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing) 
    dhclient eth0 以dhcp模式启用 'eth0' 
    route -n show routing table 
    route add -net 0/0 gw IP_Gateway configura default gateway 
    route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16' 
    route del 0/0 gw IP_gateway remove static route 
    echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing 
    hostname show hostname of system 
    host www.example.com lookup hostname to resolve name to ip address and viceversa
    nslookup www.example.com lookup hostname to resolve name to ip address and viceversa
    ip link show show link status of all interfaces 
    mii-tool eth0 show link status of 'eth0' 
    ethtool eth0 show statistics of network card 'eth0' 
    netstat -tup show all active network connections and their PID 
    netstat -tupl show all network services listening on the system and their PID 
    tcpdump tcp port 80 show all HTTP traffic 
    iwlist scan show wireless networks 
    iwconfig eth1 show configuration of a wireless network card 
    hostname show hostname 
    host www.example.com lookup hostname to resolve name to ip address and viceversa 
    nslookup www.example.com lookup hostname to resolve name to ip address and viceversa 
    whois www.example.com lookup on Whois database 

     

    JPS工具

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。

        我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。 jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。

         使用方法:在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打) 。

    jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path.

    $> jps
    23991 Jps
    23789 BossMain
    23651 Resin

     


    比较常用的参数:

    -q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数
    $>  jps -q
    28680
    23789
    23651

    -m 输出传递给main 方法的参数,在嵌入式jvm上可能是null

    $> jps -m
    28715 Jps -m
    23789 BossMain
    23651 Resin -socketwait 32768 -stdout /data/aoxj/resin/log/stdout.log -stderr /data/aoxj/resin/log/stderr.log

    -l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名

    $> jps -l
    28729 sun.tools.jps.Jps
    23789 com.asiainfo.aimc.bossbi.BossMain
    23651 com.caucho.server.resin.Resin

    -v 输出传递给JVM的参数

    $> jps -v
    23789 BossMain
    28802 Jps -Denv.class.path=/data/aoxj/bossbi/twsecurity/java/trustwork140.jar:/data/aoxj/bossbi/twsecurity/java/:/data/aoxj/bossbi/twsecurity/java/twcmcc.jar:/data/aoxj/jdk15/lib/rt.jar:/data/aoxj/jd

    k15/lib/tools.jar -Dapplication.home=/data/aoxj/jdk15 -Xms8m
    23651 Resin -Xss1m -Dresin.home=/data/aoxj/resin -Dserver.root=/data/aoxj/resin -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -

    Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl

    sudo jps看到的进程数量最全

    jps 192.168.0.77

    列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099

    (前提是远程服务器提供jstatd服务)

    注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux的ps命令。

    转自:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html

    详细情况请参考sun官方文档。
    http://java.sun.com/j2se/1.7.0/docs/tooldocs/share/jps.html

    展开全文
  • 常用命令

    2017-10-13 11:18:41
    单独下载一个project git clone http://myrepo.xxx.com/project/.git ,... 例如下载alps/frameworks/av 对应的命令为: git clone ssh://xxxx@myrepo.xxx.com:29418/mtk_N/alps/external/skia/.git alps/ext

    LEETCODE

    hasmap

    unordered_map<int, int> map
    int index, value;
    map.find(value) != map.end()
    map[index] = value;
    

    vector

    vector<int> result;
    int index, value;
    result.push_back(value);
    reverse(result.begin(),result.end());
    

    stack

    stack<int> stack;
    int index, value;
    stack.empty();
    stack.push(value);
    stack.top();
    stack.pop();
    

    拉取代码

    单独下载一个project
    git clone http://myrepo.xxx.com/project/.git ,这样在当前目录下得到一个project子目录
    例如下载alps/frameworks/av

    <project name="mtk_N/alps/external/skia" path="alps/external/skia" />
    

    对应的命令为:

    git clone  ssh://xxxx@myrepo.xxx.com:29418/mtk_N/alps/external/skia/.git alps/external/skia
    git branch -a,列出所有分支名称如下:
    remotes/origin/dev
    remotes/origin/release
    git checkout origin/dev -b dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
    

    下载整个代码库

    repo init -u ssh://yourname@myrepo.xxx.com:29418/mtk_N/alps/manifest -b <BRANCH> -m <MANIFEST>
    

    这里-m和-b的含义是:
    注意到manifest.git本身也是一个git project
    -b指定的是使用这个git project的哪个branch
    -m指定的是,下载该git project中的哪个文件(应该是首先切换了branch,然后再下载该文件)。

    开始抓取代码

    repo sync
    

    选项:
    -j : 多任务,一般8核心可以开到16任务,过多会起反作用
    -c: 只下载当前分支代码
    -d: 让工程回退到manifest指定的版本
    -f: 如果某个工程同步失败,继续同步

    批量创建本地分支
    repo start [–all | …]
    刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件设定分支的基础上创建特性分支。

    Example:
      repo start  stable  --all
    

    git branch命令

    查看分支

    –list < pattern> 匹配查找,展示名称符合pattern的分支
    -a 所有分支:本地分支,远程追踪分支
    -r 远程追踪分支
    –contains < commit> 包含某次提交的所有分支
    

    创建分支

    git branch < branchName>
    -t –track
    git branch -t b1 b2 以b2为upstream创建b1分支
    

    重命名分支

    -m –move < old> < new>
    

    跟踪分支

    -u
    –set-upstream-to
    

    删除分支

    -d 删除分支
    -D 强制删除
    -rd 删除远程跟踪分支
    

    本地删除远程分支

    Pushing an empty < src> allows you to delete the < dst> ref from the remote repository.
    git push 的src参数为空会删除远程分支
    git push –prune 没有本地对应分支的远程分支
    git push -d 删除远程分支
    

    Camera分析LOG开关

    打开拍照相关的log

    //查看相机信息
    adb shell setprop vendor.debug.camera.log 1
    //查看拍照信息
    adb shell setprop vendor.debug.camera.capture.log 1
    //查看HAL3A信息
    adb shell setprop vendor.debug.hal3av3.log 1
    //查看feature信息
    adb shell setprop vendor.debug.camera.featuresetting.log 1
    

    查找包含字符串的文件

    find . -name *.h -type f -print | xargs grep "libaudio_param_parser" --color
    grep -rn "libaudio_param_parser" *
    

    查询当前磁盘容量

    du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量 
    du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。
    

    编译命令

    sudo apt-get install libswitch-perl
    make -j4 2>&1|tee make.log
    

    关闭开机向导

    adb shell pm disable com.google.android.setupwizard
    

    替换系统文件

    最新的adb 工具包才支持adb disable-verity命令,如果是Linux开发环境,则可使用工程编译结果目录out/host/linux-x86/bi下的adb执行文件

    adb root 
    adb disable-verity 
    adb reboot
    adb root 
    adb remount 
    

    动态开启framework日志

    //必须是usedebug版本才可以
    adb shell setprop log.tag.AudioService.MOD D
    adb shell setprop log.tag.AudioService.VOL D
    adb shell setprop log.tag.AudioManager D
    adb shell stop
    adb shell start
    

    替换库文件调试脚本

    #!/bin/sh
    echo "mm"
    mmm vendor/mediatek/proprietary/hardware/audio/nxp/
    echo "root"
    adb root
    adb remount
    echo "push"
    adb push out/target/product/tk6757_66_n1/system/lib/libtfa9891_interface.so /system/lib/
    adb push out/target/product/tk6757_66_n1/system/lib64/libtfa9891_interface.so /system/lib64/
    echo "reboot sleep"
    adb reboot
    sleep 30
    echo "root"
    adb root
    adb remount
    echo "logcat"
    adb logcat | grep Tfa98xxx
    

    按时间命名文件

    #!/bin/sh
    echo "mm"
    mmm speex/
    adb push out/target/product/tk6757_66_n1/system/bin/speextest /system/bin/
    adb push /mnt/hgfs/share_linux/采访功能/8k/echo.wav /sdcard/
    adb push /mnt/hgfs/share_linux/采访功能/8k/ref.wav /sdcard/
    adb shell rm /sdcard/out.pcm
    echo "bin"
    adb shell speextest
    adb pull /sdcard/out.pcm /mnt/hgfs/share_linux/采访功能/8K_out_$(date -d "today" +"%Y%m%d_%H%M%S").pcm
    echo "end"
    

    修改编译的虚拟内存

    alps/prebuilts/sdk/tools/jack_server_setup.mk
    ifneq ($(ANDROID_JACK_VM_ARGS),)
    jack_vm_args := $(ANDROID_JACK_VM_ARGS) -Xmx4096m
    else
    jack_vm_args := -Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m
    endif
    available_jack_jars := $(wildcard $(LOCAL_PATH)/jacks/jack-*.jar)
    

    dump数据

    void AudioTrackDump::dump(const char *filepath, void *buffer, int count, const char *property)
    {
        int ret;
        char value[256];
        property_get(property, value, "0");
        int bflag = atoi(value);
        if (bflag) {
            ret = checkPath(filepath);
            if (ret < 0) {
                ALOGE("dump fail!!!");
            } else {
                FILE *fp = fopen(filepath, "ab+");
                if (fp != NULL) {
                    fwrite(buffer, 1, count, fp);
                    fclose(fp);
                } else {
                    ALOGE("dump %s fail", property);
                }
            }
        }
    }
    int AudioTrackDump::checkPath(const char *path)
    {
        char tmp[256];
        int i = 0;
        while (*path) {
            tmp[i] = *path;
            if (*path == '/' && i) {
                tmp[i] = '\0';
                if (access(tmp, F_OK) != 0) {
                    if (mkdir(tmp, 0770) == -1) {
                        ALOGE("mkdir error! %s",(char*)strerror(errno));
                        return -1;
                    }
                }
                tmp[i] = '/';
            }
            i++;
            path++;
        }
        return 0;
    }
    

    堆栈打印

    Linux Kernel
    Kernel里最简单,直接有几现成的函数可以使用:
    dump_stack() 这个函数打出当前堆栈和函数调用backtrace后接着运行WARN_ON(x) 这个函数跟dump_stack打出来。
    打印出来的结果都在kernel log命令就可以看到了

    Native C++
    Android在新版(至少5.0, 6.0)里加入了CallStack类,这个类可以打出当前的backtrace。用法很简单:

    1. 前面确保包含头文件 #include “utils/CallStack.h”;
    2. Android.mk的库依赖列表(LOCAL_SHARED_LIBRARIES)里包含libutils,一般都已经包含了;
    3. 然后在要打印堆栈处加入android::CallStack cs(“haha”);“haha”是在logcat输出的TAG,这里可以自己定义。
    如果上下文已经在android namespace里,”android::”前缀就不必加了。Native C++的输出log可以在logcat里看到。
    
    注意,在网上的一些文档里说要这么用:
    ```
    CallStack stack;
    stack.update();
    stack.dump();
    ```
    这样做已经不行了,在新版Android里编译不过。
    

    Java
    Java最详细,连文件名和行号都打出来了:

    Exception e = new Exception("haha"); 
    e.printStackTrace(); 
    

    追踪出错地址

    prebuilts/tools/gcc-sdk/addr2line -e out/target/product/z4dtg/obj/EXECUTABLES/xxxxx_intermediates/LINKED/xxxxxxxx  0x00007165
    

    Ubuntu下安装最新OpenJdk1.8

    1、sudo add-apt-repository ppa:openjdk-r/ppa
    2、sudo apt-get update
    3、sudo apt-get install openjdk-8-jdk
    4、执行:sudo update-alternatives –config java,选择java的版本
    5、执行:sudo update-alternatives –config javac,选择javac的版本
    

    Fastboot

    adb reboot bootloader
    fastboot devices
    fastboot oem unlock
    fastboot oem unlock-go
    fastboot flash boot boot.img
    fastboot flash system system.img
    fastboot reboot
    

    Ubuntu上ADB devices找不到设备

    1. 用lsusb命令查询usb设备id,其中Device 027是我的手机设备,usb id为2717。
    2. 进入~/.android/目录,创建adb_usb.ini文件;
    3. 编辑adb_usb.ini文件,将设备的usb id添加到文件里 
    4. adb kill-server杀死adb服务;
    5. 最后,用adb devices重新查找设备,就可以找到了;
    

    ubuntu配置adb环境变量

    1、sudo  gedit   ~/.bashrc 
    2、将下面的两句加到上面打开的文件里 
       export ANDROID_HOME=/home/sdk文件路径
       export PATH=$PATH:$ANDROID_HOME/platform-tools
    3、重启电脑,大功告成!!
    

    Jack故障处理

    //编译卡住
    ./prebuilts/sdk/tools/jack-admin kill-server
    ./prebuilts/sdk/tools/jack-admin stop-server
    ./prebuilts/sdk/tools/jack-admin start-server
    
    //Out of memory
    修改文件jack_server_setup.mk under prebuilts\sdk\tools
    ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
    ./prebuilts/sdk/tools/jack-admin stop-server
    ./prebuilts/sdk/tools/jack-admin start-server
    

    拉取多媒体库

    adb shell content query --uri content://media/external/file > external_file.txt
    adb shell content query --uri content://media/external/images/media > external_images.txt
    adb shell content query --uri content://media/external/audio/media > external_audio.txt
    adb shell content query --uri content://media/external/video/media > external_video.txt
    adb shell content query --uri content://media/external/video/thumbnails > external_thumbnails.txt
    

    git下git diff用法

    1、生成patch(在代码修改后没有commit之前的状态执行,进入想生成patch的目录即可)

     git diff > patch_3
    

    2、打patch,方法和linux的diff一样

    #patch -p0 < patch_3

     git apply patch_3  //也可用这个命令打patch
    

    根据进程名字杀死进程

    ps -ef | grep procedure_name | grep -v grep | awk '{print $2}' | xargs kill -9
    

    虚拟机挂载虚拟磁盘

    mkdir workspace
    mkdir workspace2
    
    sudo gedit /etc/fstab
    /dev/sdb1       /home/user/workspace2      ext4    defaults       0       0
    /dev/sdc1       /home/user/workspace      ext4    defaults       0       0
    

    修改用户名和邮箱

    sudo git config --global user.name "yourname"
    
    sudo git config --global user.email yourname@xxx.com.cn
    

    生成秘钥

    ssh-keygen
    

    计算函数执行时间

    方式一
    #include<time.h>
    nsecs_t start = systemTime(SYSTEM_TIME_MONOTONIC);
    nsecs_t end = systemTime(SYSTEM_TIME_MONOTONIC);
    MY_LOGD("consumingTime = %f", double((end-start)/1000000));
    
    方式二
    auto start = std::chrono::steady_clock::now();
    auto end = std::chrono::steady_clock::now();
    std::chrono::duration<double> diff = end - start;
    uint64_t finalsize = sstat.st_size;
    ALOGV("Got a file over MTP. Time: %fs, Size: %" PRIu64 ", Rate: %f bytes/s",
                diff.count(), finalsize, ((double) finalsize) / diff.count());
    

    如何打开pr_debug调试信息

    $cat /proc/sys/kernel/printk
    7      4       1       7
    $echo 8 > /proc/sys/kernel/printk
    $cat /proc/sys/kernel/printk
    8      4       1       7
    

    查看 读写SD卡权限

    判断APP运行时权限如下:

    adb remount;//挂载
    adb shell;//进入shell
    ps | grep fmradio;//查找FMRadio的PID,前提是手机打开FMRadio,插入耳机
    cd proc/4830;//进入PID对应的信息文件中
    cat status;//查看进程信息
    

    发现此时,FMRadio对于的组权限如下:

    com.android.fmradio Groups: 1013 3002 3003 9997 50010
    com.android.soundrecorder Groups: 1015 1023 3003 9997 50105
    

    根据系统权限的定义,有兴趣的同学可以去看一下这个文件
    system/core/include/private/android_filesystem_config.h
    分析这些Gid发现:
    1015 为sdcard_rw,1023 为media_rw权限

    源码文件:frameworks/base/data/etc/platform.xml
    这个文件中定义了底层权限组GID和高层权限名字之间的对应关系
    其实,在这个文件已经定义过了

    手机数据区文件:data/system/packages.xml
    这个文件由PackageManagerService.Java生成,里面记录了系统当中安装的APK的所有属性,权限等信息。L之前,当系统中的APK安装、删除、升级时,文件就会被更新。L之后,重启才会重新扫描更新该文件。

    C++替换字符串

    std::string srt2 = (const char*)path;
    std::string tmps2 = "/mnt/media_rw/";
    if(srt2.find("/storage/") != std::string::npos  &&
            srt2.find("/storage/emulated/") == std::string::npos){
        tmps2 = tmps2 + srt2.substr(9);
        path.set(tmps2.c_str());
     }
    
    1. 截取子串
     s.substr(pos, n)    截取s中从pos开始(包括0)的n个字符的子串,并返回
     s.substr(pos)        截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
    
    1. 替换子串
    s.replace(pos, n, s1)    用s1替换s中从pos开始(包括0)的n个字符的子串
    
    1. 查找子串
     s.find(s1)         查找s中第一次出现s1的位置,并返回(包括0)
     s.rfind(s1)        查找s中最后次出现s1的位置,并返回(包括0)
     s.find_first_of(s1)       查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)
     s.find_last_of(s1)       查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)
     s.fin_first_not_of(s1)         查找s中第一个不属于s1中的字符的位置,并返回(包括0)
     s.fin_last_not_of(s1)         查找s中最后一个不属于s1中的字符的位置,并返回(包括0)
    

    读取二进制文件

    #include <iostream>
    #include <fstream>
    
    filebuf *pbuf;
    ifstream filestr;
    int size = 0;
    char * buffer = NULL;
    filestr.open ("test.cng", ios::binary);
    if (filestr.fail()){
           return;
    }
    pbuf = filestr.rdbuf();
    size = pbuf->pubseekoff(0, ios::end, ios::in);
    pbuf->pubseekpos (0, ios::in);
    buffer = new char[size];
    pbuf->sgetn(buffer, size);
    filestr.close();
    delete []buffer;
    

    CTS命令

    无法执行CTS命令
    去out 目錄下將out/host/linux-x86/bin/aapt放到某個目錄下(如:/tools/bin/aapt),將該目錄(如:/tools/bin/aapt) 添加到 PATH 中去。

    export PATH=$PATH:~/workspace/tp706_p/alps/out/host/linux-x86/bin
    

    执行GTS测试

    run gts -s 0123456789ABCDEF -m GtsMediaTestCases -t com.google.android.media.gts.WidevineH264PlaybackTests#testClearWithUHD30 --abi arm64-v8a --skip-preconditions
    

    执行GSI测试

    run cts-on-gsi​​ -s 3901A18303900273 -m CtsMediaTestCases -t android.media.cts.RingtoneManagerTest#testStopPreviousRingtone --abi arm64-v8a --skip-preconditions
    

    测试命令

    full run 全部测试命令:run cts --plan CTS -s device serial
    测试自己添加的计划命令: run cts --subplan name
    测试整个 package 命令: run cts -m package_name
    测试单项命令:run cts -m package_name -t module_name+case_name
    继续测试命令:run cts -r session_ID
    

    查看命令

    查看测试结果命令 : l r
    查看测试时间多长命令: l i
    查看多少个设备连接命令: l d
    查看当前测试窗口正在执行的命令: l c
    查看有多少个 module 的命令:l m
    

    其他命令或者参数

    强制退出命令 kill
    禁止重启命令 --disable-reboot
    跳过预设环境命令 --skip-preconditions
    跳过某项 package 命令 --exclude-filter+package_name
    只测试某项 package 命令 --include-filter+ package_name
    测试某台样机的参数 -s 或--serial+serial_name
    几台样机同时测试的命令 --shards+number
    

    以上都是写简单常用的命令,用 run cts –help-all 可以显示其他更详细的命令

    Init.rc妙用及语法说明

    Service

    service < name> < pathname> [ < argument> ]*
    < option>
    < option>
    

    常用Options(用于修饰service)
    1、critical 表示这是一个关键的service,4分钟内退出4次,则系统重启进入recovery mode。
    2、disabled 这个服务不会随着它的类启动而自动启动,必须明确指定服务名称启动。
    3、setenv 设置环境变量。
    4、socket [ [ [ ] ] ] 创建一个socket接口/dev/socket/,使本地service和java可以通信。详见
    http://blog.csdn.net/eliot_shao/article/details/53159989
    5、user 执行service之前改变用户名。
    6、group [ ]* 执行service之前改变用户组。
    7、oneshot 当service退出后不会重启。
    8、class 为service指定一个类名,具有相同类名的service可以一起启动和停止。
    9、onrestart 启动一个Command,当service重新启动的时候。

    service servicemanager /system/bin/servicemanager
    class core
    user system
    group system
    critical
    onrestart restart healthd
    onrestart restart zygote
    onrestart restart media
    onrestart restart surfaceflinger
    onrestart restart drm
    

    Actions

    on < trigger>
    < command>
    < command>
    < command>
    

    常用Triggers说明:
    1、boot eg: on boot 这是第一个触发的,当init进程启动时候。

    on boot
      export PATH /sbin:/system/sbin:/system/bin
      export LD_LIBRARY_PATH /system/lib
    
      mkdir /dev
      mkdir /proc
      mkdir /sys
    

    2、= when the property is set to the specific value

    on property:vts.native_server.on=1
       stop audioserver
    on property:vts.native_server.on=0
       start audioserver
    service audioserver /system/bin/audioserver
       class core
       user audioserver
    

    3、device-added- device-removed-
    当一个设备节点被删除或者添加的时候,触发。

    on device-added-/dev/compass=1
    start akmd
    on device-removed-/dev/compass=0
    stop akmd
    service akmd /sbin/akmd
    disabled
    user akmd
    group akmd
    

    4、service-exited- 当制定的service退出的时候触发。
    Commands
    1、exec [ ]* Fork and execute a program ().
    2、export

    export PATH /sbin:/system/sbin:/system/bin
    

    3、import 解析init配置文件,扩展当前的init.rc配置
    4、chdir 改变当前的工作路径
    5、chmod 改变文件的访问权限
    6、chown 改变文件拥有者和组
    7、class_start 启动某个class

    on nonencrypted
    class_start main
    class_start late_start
    

    8、class_stop 停止某个class
    9、enable 使能一个service 如果他是disable的。
    10、insmod 安装模块
    11、mkdir [mode] [owner] [group] 创建文件夹
    12、mount [ ]* 挂载设备到某个目录
    13、setenforce 0|1 设置SELinux system-wide的状态
    14、setprop 设置system property
    15、start 启动service
    16、stop 停止service
    17、wait [ ] 等待某个文件的出现
    18、write 向文件写入字符串

    write /proc/cpu/alignment 4
    

    HIDL 接口

    软件包位于 hardware/interfaces 或 vendor/ 目录下(少数例外情况除外)。hardware/interfaces 顶层会直接映射到 android.hardware 软件包命名空间;版本是软件包(而不是接口)命名空间下的子目录。
    hidl-gen 编译器会将 .hal 文件编译成一组 .h 和 .cpp 文件。这些自动生成的文件可用来编译客户端/服务器实现链接到的共享库。用于编译此共享库的 Android.bp 文件由 hardware/interfaces/update-makefiles.sh 脚本自动生成。每次将新软件包添加到 hardware/interfaces 或在现有软件包中添加/移除 .hal 文件时,您都必须重新运行该脚本,以确保生成的共享库是最新的。

    HIDL 软件包中自动生成的文件会链接到与软件包同名的单个共享库(例如 android.hardware.samples@1.0)。该共享库还会导出单个标头 IFoo.h,用于包含在客户端和服务器中。绑定式模式使用 hidl-gen 编译器并以 IFoo.hal 接口文件作为输入,它具有以下自动生成的文件:
    在这里插入图片描述)

    Android SELinux avc dennied权限问题解决方法

    https://blog.csdn.net/tung214/article/details/72734086
    1、调试确认SELinux问题
    为了澄清是否因为SELinux导致的问题,可先执行:

    setenforce 0 (临时禁用掉SELinux)
    getenforce  (得到结果为Permissive)
    

    如果问题消失了,基本可以确认是SELinux造成的权限问题,需要通过正规的方式来解决权限问题。

    遇到权限问题,在logcat或者kernel的log中一定会打印avc denied提示缺少什么权限,可以通过命令过滤出所有的avc denied,再根据这些log各个击破:

    cat /proc/kmsg | grep avc 
    或
    dmesg | grep avc
    

    例如:

    audit(0.0:67): avc: denied { write } for path="/dev/block/vold/93:96" dev="tmpfs" ino=1263 scontext=u:r:kernel:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
    

    可以看到有avc denied,且最后有permissive=0,表示不允许。

    2、复合权限
    有时候avc denied的log不是一次性暴露所有权限问题,要等解决一个权限问题之后,才会暴露另外一个权限问题。比如提示缺少某个目录的read权限,加入read之后,才显示缺少write权限,要一次次一次试,一次一次加,时间成本极大。
    针对dir缺少的任何权限,建议赋予create_dir_perms,基本涵盖对dir的所有权限,比如:
    { open search write read rename create rmdir getattr }等等。
    针对file缺少的任何权限,建议赋予rwx_file_perms,基本涵盖对file的所有权限,比如:
    包含{ open read write open execute getattr create ioctl }等等。

    3、万能公式
    通过这四个案例,我们可以总结出一般规律,
    以第案例4为例:

    audit(1441759284.810:5): avc: denied { read } for pid=1494 comm="sdcard" name="0" dev="nandk" ino=245281 scontext=u:r:sdcardd:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissive=0
    

    某个scontext对某个tclass类型的tcontext缺乏某个权限,我们需要允许这个权限:
    我们的log重新排列一下,

    scontext = u:r:sdcardd
    tcontex t= u:object_r:system_data_file:s0
    tclass = dir
    avc: denied { read }
    

    得到万能套用公式如下:
    在scontext所指的.te文件(例如sdcardd.te)中加入类似如下allowe内容:

    allow  sdcardd  system_data_file:dir  read;  或者
    allow  sdcardd  system_data_file:dir  rw_dir_perms;
    

    新设备节点增加访问权限

    驱动创建了一个新的设备节点,即使权限是777,android层也是没有访问权限的。
    下面以一个/dev/wifi_bt节点为示范,让此节点被用户空间的system_server进程访问。

    1. 编辑devicesoftwinner/astar-common/sepolicy/device.te,仿照这个文件里的写法,定义一个dev_type类型的wifi_bt_device设备:
    type misc_block_device, dev_type;
    type private_block_device, dev_type;
    //新增
    type wf_bt_device, dev_type;  
    
    1. 编辑file_contexts.te,将/dev/wf_bt节点声明为第1步定义的wf_bt_device:
    /dev/block/by-name/misc         u:object_r:misc_block_device:s0
    /dev/block/by-name/alog         u:object_r:log_block_device:s0
    /dev/block/by-name/private      u:object_r:private_block_device:s0
    // 新增
    /dev/wf_bt              u:object_r:wf_bt_device:s0  
    
    1. 在system_server.te,根据dmesg | grep avc允许system_server对wf_bt_device这个节点可读可写:
    allow system_server qtaguid_proc:file rw_file_perms;  
    allow system_server qtaguid_device:chr_file rw_file_perms;  
    //新增
    allow system_server wf_bt_device:chr_file rw_file_perms;  
    

    其他进程如需访问/dev/wf_bt节点,依样画葫芦,增加对wf_bt_device的权限即可。

    新目录增加访问权限

    创建了一个新的目录,即使权限是777,android层也是没有访问权限的。
    下面以一个/data/audio_param目录为示范,让此节点被用户空间的system_server进程访问。

    1. 编辑devicesoftwinner/astar-common/sepolicy/file.te,仿照这个文件里的写法,定义一个dev_type类型的data_audioparma_file设备:
    type misc_block_device, dev_type;
    type private_block_device, dev_type;
    //新增
    type data_audioparma_file, file_type, data_file_type, core_data_file_type;
    
    1. 编辑file_contexts.te,将/data/audio_param目录声明为第1步定义的data_audioparma_file:
    /dev/block/by-name/misc         u:object_r:misc_block_device:s0
    /dev/block/by-name/alog         u:object_r:log_block_device:s0
    /dev/block/by-name/private      u:object_r:private_block_device:s0
    // 新增
    /data/audio_param(/.*)?     u:object_r:data_audioparma_file:s0
    
    1. 在system_server.te,根据dmesg | grep avc允许system_server对 /data/audio_param这个目录可读可写:
    allow system_server qtaguid_proc:file rw_file_perms;  
    allow system_server qtaguid_device:chr_file rw_file_perms;  
    //新增
    allow system_server data_audioparma_file:dir create_dir_perms;
    allow system_server data_audioparma_file:file create_file_perms;
    

    新建.te安全策略文件方法

    以上基本是对已经存在的进程增加权限,但对第三方进程改如何新增一个全新的te文件并赋予权限呢?
    以写mac地址的setmacaddr执行文件为例(这个执行档android原生不存在,自行添加的):
    在init.xxx.rc中如下服务:

    service engsetmacaddr  /system/bin/setmacaddr  /data/misc/wifi/wifimac.txt
       class main
       disabled
    oneshot
    
    1. 在device/softwinner/astar-common/sepolicy/file_contexts中,参考其他进程声明一个scontext:
    /system/bin/install-recovery.sh u:object_r:install_recovery_exec:s0
    /system/bin/dex2oat     u:object_r:dex2oat_exec:s0
    /system/bin/patchoat    u:object_r:dex2oat_exec:s0
    /system/bin/setmacaddr u:object_r:engsetmacaddr_exec:s0
    

    指定setmacaddr的路径,并指定一个名字,一定要以service名+_exec结尾

    2.参考其.te文件在device/softwinner/astar-common/sepolicy/file_contexts 创建engsetmacaddr.te文件,内容如下:

    type engsetmacaddr, domain;
    type engsetmacaddr_exec, exec_type, file_type;
    init_daemon_domain(engsetmacaddr)
    allow engsetmacaddr  vfat:dir { search write add_name create};
    allow engsetmacaddr  vfat:file { create read write open };
    allow engsetmacaddr  engsetmacaddr:capability dac_override;
    allow engsetmacaddr  shell_exec:file { execute read open execute_no_trans};
    allow engsetmacaddr  system_data_file:dir { write add_name remove_name };
    allow engsetmacaddr  system_data_file:file { create execute_no_trans write open setattr};
    allow engsetmacaddr  system_file:file { execute_no_trans};
    

    以上赋予的权限全部是根据avc denied的log缺什么一步一步补什么来的。

    如何配置策略

    https://blog.csdn.net/tww85/article/details/52451606
    编译出来的策略文件在哪?
    ODM策略编译出来的策略文件在out/…/vendor/etc/selinux目录下
    vendor_file_contexts vendor_hwservice_contexts vendor_property_contexts vendor_seapp_contexts vndservice_contexts
    原生策略编译出来的策略文件在out/…/system/etc/selinux目录下
    plat_file_contexts plat_hwservice_contexts plat_property_contexts plat_seapp_contexts plat_service_contexts

    需要先了解系统针对客体和主体提供了哪些设置属性和操作。
    external/sepolicy/security_classes 定义了客体的基本类型,比如下面的

    # for userspace object managers
    class security
    class process
    class system
    class capability
    #//file-related classes
    class filesystem
    class file
    class dir
    class fd
    class lnk_file
    class chr_file
    class blk_file
    class sock_file 
    

    external/sepolicy/access_vectors 文件列出来各种客体类型所拥有的属性,比如下面的file类型和dir 类型,类型间可以有集成关系。

    common file
    {
    ioctl
    read
    write
    create
    getattr
    setattr
    lock
    relabelfrom
    relabelto
    append
    unlink
    link
    rename
    execute
    swapon
    quotaon
    mounton
    }
    class dir
    inherits file
    {
    add_name
    remove_name
    reparent
    search
    rmdir
    open
    audit_access
    execmod
    }
    

    external/sepolicy/global_macros全局宏变量定义文件,也就是用一个宏变量同时表示几个属性。如下例子

    define(`x_file_perms', `{ getattr execute execute_no_trans }')
    define(`r_file_perms', `{ getattr open read ioctl lock }')
    define(`w_file_perms', `{ open append write }')
    define(`rx_file_perms', `{ r_file_perms x_file_perms }')
    define(`ra_file_perms', `{ r_file_perms append }')
    define(`rw_file_perms', `{ r_file_perms w_file_perms }')
    define(`rwx_file_perms', `{ rw_file_perms x_file_perms }')
    define(`link_file_perms', `{ getattr link unlink rename }')
    define(`create_file_perms', `{ create setattr rw_file_perms link_file_perms }')
    

    external/sepolicy/te_macros 宏规则变量定义文件,也就是用一个变量来表示连续执行几条规则。如下例子

    define(`domain_trans', `
    // Old domain may exec the file and transition to the new domain.
    allow $1 $2:file { getattr open read execute };
    allow $1 $3:process transition;
    //New domain is entered by executing the file.
    allow $3 $2:file { entrypoint open read execute getattr };
    //New domain can send SIGCHLD to its caller.
    allow $3 $1:process sigchld;
    //Enable AT_SECURE, i.e. libc secure mode.
    dontaudit $1 $3:process noatsecure;
    //XXX dontaudit candidate but requires further study.
    allow $1 $3:process { siginh rlimitinh };
    ')
    

    external/sepolicy/file_contexts 文件安全上下文定义文件。就是说对于一个文件或者目录,它的安全上下文应该在这里定义,如果没有定义,那么默认和父目录的安全上下文一样。
    比如说我们在data目录下建了一个log目录存放系统运行时的log,在file.te中新增data_log_file,log目录的安全上下文是

    u:object_r:data_log_file:s0
    

    那么就应该在file_contexts文件里做如下定义:

    /data/log(/.*)?u:object_r:data_log_file:s0
    

    external/sepolicy/property_contexts 属性安全上下文定义文件。比如说在propety.te中新加了一个persist.log. * 开头的属性,那么就需要给它添加对应的安全上下文,如果不添加或者添加的上下文不对,那么在的某个进程里写入时就写不进去。比如做了如下定义,那么是具有system_prop域安全上下文,只能在system进程里修改值,在shell里是不能访问的。

    persist.log.        u:object_r:system_prop:s0
    

    如果希望在shell里能修改值,就应该这么写

    persist.log.        u:object_r:shell_prop:s0 
    

    当然如果通过修改相关*.te 文件也能实现,但是不是很规范。
    external/sepolicy/property.te 文件允许我们定义自己的prop 类型域,还有seapp_contexts、service_contexts 文件等,都是类似的,都可以根据需要修改。

    展开全文
  • Linux系统命令

    2020-11-17 22:31:36
    第零章、Linux安装篇 分区:交换分区一般是物理内存的2倍 1、两种分区表形式 MBR分区表:最大支持2.1TB硬盘,最多四个分区。 GPT分区表(全局唯一标示分区表):GPT支持9.4ZB硬盘(1ZB=1024PB,1PB=1024EB,1EB=1024TB...

    第一章、系统命令

    一、命令的基本格式

    1.命令的提示符

    [root@localhost ~]#

    • []:这是提示符的分隔符号,没有特殊含义。

    • root:显示的是当前的登录用户,超哥现在使用的是root用户登录 。

    • @:分隔符号,没有特殊含义。

    • localhost:当前系统的简写主机名(完整主机名是localhost.localdomain)。

    • ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。#:命令提示符。超级用户是#,普通用户是$

    2.命令的基本格式

    [root@localhost ~]# 命令 [选项] [参数]

    ls是最常见的目录操作命令,主要作用是显示目录下的内容。

    • 命令名称:ls。
    • 所在路径:/bin/ls。
    • 执行权限:所有用户。
    • 功能描述:显示目录下的内容。

    在这里插入图片描述
    举个例子:

    在这里插入图片描述

    我们已经知道“-l”选项用于显示文件的详细信息,那么“-l”选项显示的这7列分别是什么含义?

    • 第一列:权限。

    • 第二列:引用计数。文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。

    • 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户

    • 第四列:所属组。默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。

    • 第五列:大小。默认单位是字节。

    • 第六列:文件修改时间。文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。

    • 第七列:文件名。

      选项:是用于调整命令的功能的。

      参数:是命令的操作对象,如果省略参数,是因为有默认参数

    二、目录操作命令

    1.ls命令

    2.cd命令

    cd是切换所在目录的命令,这个命令的基本信息如下。

    • 命令名称:cd。
    • 所在路径:Shell内置命令。
    • 执行权限:所有用户。
    • 功能描述:切换所在目录。
    2.1 cd命令的简化用法
    特殊符号 作用
    ~ 代表用户的家目录
    - 代表上次所在的目录
    . 代表当前目录
    代表上级目录
    2.2 绝对路径和相对路径

    绝对路径:以跟目录为参照物,从根目录开始,一级一级进入目录

    相对路径:以当前目录作为参照物,进行目录查找

    3.pwd命令

    pwd命令是查询所在目录的命令,基本信息如下:

    • 命令名称:pwd
    • 所在路径:/bin/pwd
    • 执行权限:所有用户。
    • 功能描述:查询所在的工作目录。

    4.mkdir命令

    mkdir是创建目录的命令,其基本信息如下。

    • 命令名称:mkdir。
    • 所在路径:/bin/mkdir。
    • 执行权限:所有用户。
    • 功能描述:创建空目录。

    命令格式

    在这里插入图片描述

    5.rmdir命令

    既然有建立目录的命令,就一定会有删除目录的命令rmdir,其基本信息如下。

    • 命令名称:rmdir。
    • 所在路径:/bin/rmdir。
    • 执行权限:所有用户。
    • 功能描述:删除空目录。

    命令格式

    [

    rmdir命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。所以不论删除的是文件还是目录,都会使用rm命令.

    三、文件操作命令

    1.touch命令

    创建空文件或修改文件时间,这个命令的基本信息如下。

    • 命令名称:touch。
    • 所在路径:/bin/touch。
    • 执行权限:所有用户。
    • 功能描述:修改文件的时间戳。

    2.stat命令

    stat是查看文件详细信息的命令,而且可以看到文件的这三个时间,其基本信息如下。

    • 命令名称:stat。
    • 所在路径:/usr/bin/stat。
    • 执行权限:所有用户。

    功能描述:显示文件或文件系统的详细信息。

    在这里插入图片描述

    3.cat命令

    cat命令用来查看文件内容、这个命令的基本信息如下,

    • 命令名称:cat.

    • 所在路径:/bin/cat。

    • 执行权限:所有用户,

    • 功能描述:合井文件并打印输出到标准输出

      命令格式

    在这里插入图片描述

    4.more命令

    more是分屏显示文件的命令, 其基本信息如下:

    • 命令名称:more。

    • 所在路径:/bin/more,

    • 执行权限:所有用户,

    • 功能描述:分屏显示文件内容。

      more命令比较简单, 一般不用什么选项, 命令会打开一个交互界面, 可以识别一些交互命令, 常用的交互命令如下

    • 空格键:向下翻页。

    • b:向上翻页。

    • 回车键:向下滚动一行。

    • /字符串:搜索指定的字符串。

    • q:退出。

    5.less命令

    less命令和more命令类似, 只是more是分屏显示命令, 而less是分行显示命令, 其基本信息如下。

    • 命令名称:less.

    • 所在路径:/usr/bin/less.

    • 执行权限:所有用户.

    • 功能描述:分行显示文件内容

    6.head命令

    head是用来显示文件开头的命令, 其基本信息如下。

    • 命令名称:head,

    • 所在路径:/usr/bin/head.

    • 执行权限:所有用户,

    • 功能描述:显示文件开头的内容.

      命令格式
      在这里插入图片描述

    7.tail命令

    既然有显示文件开头的命令, 就会有显示文件结尾的命令。tail命令的基本信息如下。

    • 命令名称:tail.

    • 所在路径:/usr/bin/tail。

    • 执行权限:所有用户.

    • 功能描述:显示文件结尾的内容。

      命令格式

    在这里插入图片描述

    8.In命令

    In命令的基本信息。

    • 命令名称:In.

    • 所在路径:/bin/In.

    • 执行权限:所有用户,

    • 功能描述:在文件之间建立链接。

    8.1In命令的基本格式:

    在这里插入图片描述

    如果创建硬链接:

    在这里插入图片描述

    如果创建软链接:

    在这里插入图片描述

    8.2硬链接与软连接的特征

    硬链接特征:

    1. 源文件和硬链接文件拥有相同的Inode和Block
    2. 修改任意一个文件,另一个都改变
    3. 删除任意一个文件,另一个都能使用
    4. 硬链接标记不清,很难确认硬链接文件位置,不建议使用
    5. 硬链接不能链接目录
    6. 硬链接不能跨分区

    软链接特征:

    1. 软链接和源文件拥有不同的Inode和Block
    2. 两个文件修改任意一个,另一个都改变
    3. 删除软链接,源文件不受影响;
    4. 册除源文件,软链接不能使用
    5. 软链接没有实际数据, 只保存源文件的Inode, 不论源文件多大, 软链接大小不变
    6. 软链接的权限是最大权限lrwxrwxrwx., 但是由于没有实际数据, 最终访问时需要参考源文件权限
    7. 软链接可以链接目录
    8. 软链接可以跨分区

    软链接特征明显,建议使用软连接

    四、目录和文件都能操作的命令

    1.rm命令

    rm是强大的删除命令,不仅可以剩除文件,也可以除目录,这个命令的基本信息如下,

    • 命令名称:rm。

    • 所在路径:/bin/rm,

    • 执行权限:所有用户,

    • 功能描述:删除文件或目录。

      命令格式

    在这里插入图片描述

    -r:递归删除, 可以删除目录(recursive)

    2.cp命令

    cp是用于复制的命令,其基本信息如下:

    • 命令名称:cp.

    • 所在路径:/bin/ep.

    • 执行权限:所有用户,

    • 功能描述:复制文件和目录。

      命令格式

    在这里插入图片描述

    3.mv命令

    mv是用来剪切的命令,其基本信息如下,

    • 命令名称:mv。

    • 所在路径:/bin/mv.

    • 执行权限:所有用户.

    • 功能描述:移动文件或改名。

      命令格式

    在这里插入图片描述

    五、基本权限管理

    1.权限的介绍

    权限位的含义

    长格式显示的第一列就是文件的权限,例如:

    在这里插入图片描述

    第一列的权限位如果不计算最后的“,”(这个点的含义我们在后面解释),则共有10位,这10 位权限位的含义如图4-4所示
    在这里插入图片描述

    • 第1位代表文件类型。Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。这里只有一些常见的文件类型。
    1. “-”:普通文件.
    2. “b”:块设备文件。这是一种特殊设备文件, 存储设备都是这种文件, 如分区文件/dev/sda1就是这种文件。
    3. “e”:字符设备文件,这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘
    4. “d”:目录文件.Linux中一切皆文件, 所以目录也是文件的一种.
    5. “l”:软链接文件.
    6. “p”:管道符文件。这是一种非常少见的特殊设备文件。
    7. “s”:套接字文件.这也是一种特殊设备文件, 一些服务支持Socket访问, 就会产生这样 的文件.
    • 第2–4位代表文件所有者的权限.
    1. r:代表read, 是读取权限
    2. w:代表write, 是写权限。
    3. x:代表execute, 是执行权限。

    如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限.

    • 第5一7位代表文件所属组的权限, 同样拥有“rwx”权限。
    • 第8-10位代表其他人的权限,同样拥有“rwx”权限,

    2.基本权限命令

    首先来看修改权限的命令 chmod , 其基本信息如下,

    • 命令名称:chmod,
    • 所在路径:/bin/chmod,
    • 执行权限:所有用户,
    • 功能描述:修改文件的权限模式。
    2.1.命令格式

    在这里插入图片描述

    2.2.权限模式

    chmod命令的权限模式的格式是“[ugoa] [[±=] [perms]]”, 也就是“[用户身份][[赋予方式] [权限]]”的格式,我们来解释一下

    • 用户身份:
    1. u:代表所有者(user) .
    2. g:代表所属组(group) .
    3. 0:代表其他人(other)
    4. a:代表全部身份(all) .
    • 赋予方式 :
    1. +:加入权限.
    2. -:减去权限.
    3. =:设置权限.
    • 权限:
    1. r:读取权限(read) 。
    2. w:写权限(write) 。
    3. x:执行权限(execute) .
    2.3.数字权限

    数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权限的含义。

    • 4:代表“r”权限.
    • 2:代表“w”权限.
    • 1:代表“x”权限。
    2.4.常用权限

    数字权限的赋予方式更加简单,常用权限并不多, 只有如下几个。

    • 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
    • 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组 和其他人拥有读和执行权限.
    • 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这 会造成一定的安全隐患。

    3.基本权限的作用

    3.1.权限含义的解释

    首先,读、写、执行权限对文件和目录的作用是不同的.

    • 权限对文件的作用。
    1. 读®:对文件有读®权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读® 权限, 就可以对文件执行cat、more、less、head、tail等文件查看命令
    2. 写(w):对文件有写(w)权限,代表可以修改文件中的数据,如果把权限对应到命令上, 那么一旦对文件有写(w) 权限, 就可以对文件执行vim、echo等修改文件数据的命令。注意:对文件有写权限,是不能影响文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
    3. 执行(x) ; 对文件有执行(x) 权限, 代表文件拥有了执行权限, 可以运行。在Linux中, 只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行, 不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行 (x)权限是最高权限.
    • 权限对目录的作用。
    1. 读( r ):对目录有读( r )权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录,如果把权限对应到命令上,那么一旦对目录拥有了读®权限,就可 以在目录下执行ls命令,查看目录下的内容了.
    2. 写(w):对目录有写®权限,代表可以修改目录下的数据,也就是可以在目录中新建、 删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w) 权限, 就可以在目录下执行touch、rm、cp、mv命令.对目录来说, 写(w) 权限是最高 权限。
    3. 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入 目录。
    3.2.目录的可用权限

    目录的可用权限其实只有以下几个。

    • 0:任何权限都不赋予。
    • 5:基本的目录浏览和进入权限。
    • 7:完全权限。

    4.所有者和所属组命令

    4.1.chown命令

    chown是修改文件和目录的所有者和所属组的命令, 其基本信息如下.

    • 命令名称:chown.
    • 所在路径:/bin/chown。
    • 执行权限:所有用户,
    • 功能描述:修改文件和目录的所有者和所属组。

    1)命令格式
    在这里插入图片描述

    普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。

    普通用户可以修改所有者是自己的文件的权限,

    4.2.chgrp命令

    chgrp是修改文件和目录的所属组的命令, 其基本信息如下.

    • 命令名称:chgrp i
    • 所在路径:/bin/chgrp。
    • 执行权限:所有用户,
    • 功能描述:修改文件和目录的所属组。

    5.umask默认权限

    5.1查看系统的umask权限

    在这里插入图片描述

    5.2umask权限的计算方法

    新建文件和目录的默认最大权限:

    • 对文件来讲,新建文件的默认最大权限是666,没有执行(x)权限。这是因为执行权限对文件 来讲比较危险,不能在新建文件的时候默认赋予必须通过用户手工赋予,
    • 对目录来讲,新建目录的默认最大权限是777.这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

    按照官方的标准算法, umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到 正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解

    所以在这里还是按照权限字母来学习umask权限的计算方法。按照默认的umask值是022来分别计算一下新建文件和目录的默认权限。

    • 文件的默认权限最大只能是666,而umask的值是022

    “-rw-rw-rw-”减去“-----w–w-”等于“-rw-r–r—”

    • 目录的默认权限最大可以是777, 而umask的值是022

      “drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”
      

    注意:umask默认权限的计算绝不是数字直接相减

    ​ 例如umask是033呢?

    • 文件的默认权限最大只能是666.而umask的值是033

    “-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r-- r—”

    六 、帮助命令

    1.man命令

    man是最常见的帮助命令, 也是Linux最主要的帮助命令, 其基本信息如下,

    • 命令名称:man.

    • 所在路径:/usr/bin/man.

    • 执行权限:所有用户,

    • 功能描述:显示联机帮助手册,

    1.1.命令格式

    在这里插入图片描述

    1.2.man命令的快捷键
    快捷键 作用
    上箭头 向上移动一行
    下箭头 向下移动一行
    PgUp 向上翻动一页
    PgDn 向下动一页
    g 移动到第一页
    G 移动到最后一页
    q 退出
    /字符串 从当前页向下搜索字符串
    ?字符串 从当前页向上搜索字符串
    n 当搜索字符串时,可以使用n找到下一个字符串
    N 当搜索字符串时,使用N键反向查询字符串。也就是说,如果使用“/字符串”方式搜索,则N键表示向上搜索字符串;如果使用“?字符串”方式搜索,则N键表示 向下搜索字符串
    1.3.man命令的帮助级别
    级别 作用
    1 普通用户可以执行的系统命令和可执行文件的帮助
    2 内核可以调用的函数和工具的帮助
    3 C语言函数的帮助
    4 设备和特殊文件的帮助
    5 配置文件的帮助
    6 游戏的帮助(个人版是有游戏的)
    7 杂项的帮助
    8 超级用户可以执行的系统命令的帮助
    9 内核的帮助

    man -f 命令或 whatis 命令

    #查看命令拥有哪个级别的帮助

    man -k 命令或 apropos命令

    #查看和命令相关的所有帮助

    2.info命令

    info命令的帮助信息是一套完整的资料, 每个单独命令的帮助信息只是这套完整资料中的某一个小章节。

    快捷键 作用
    上箭头 向上移动一行
    下箭头 向下移动一行
    PgUp 向上翻动一行
    PgDn 向下翻动一行
    Tab 在有“*”符 号的节点间进行切换
    回车 进入有“*”符号的子页面,查看详细帮助信息
    u 进入上一层信息(回车是进入下一层信息)
    n 进入下一小节信息
    p 进入上一小节信息
    查看帮助信息
    q 退出info信息

    3.help命令

    help只能获取Shell内置命令的帮助

    help命令的基本信息如下。

    • 命令名称:help.

    • 所在路径:Shell内置命令,

    • 执行权限:所有用户,

    • 功能描述:显示Shell内置命令的帮助, 可以使用type命令来区分内置命令与外部命令

      shell是Linux的命令解释器。

    4.–help选项

    绝大多数命令都可以使用“–help”选项来查看帮助, 这也是一种获取帮助的方法。例如:

    [root@localhost ~]#	ls --help
    

    这种方法非常简单, 输出的帮助信息基本上是man命令的信息简要版.

    七、搜索命令

    1. whereis 命令

    whereis 是搜索系统命令的命令,也就是说, where is命令不能搜索普通文件,而只能搜索系统命令。where is命令的基本信息如下。

    • 命令名称:whereis.
    • 所在路径:/usr/bin/whereis。
    • 执行权限:所有用户,
    • 功能描述:查找二进制命令、源文件和帮助文档的命令,

    2.which命令

    which也是搜索系统命令的命令, 和where is命令的区别在于:

    • whereis命令可以在查找到二进制命令的同时, 查找到帮助文档的位置:

    • which命令在查找到二进制命令的同时, 如果这个命令有别名, 则还可以找到别名命令,which命令的基本信息如下

    • 命令名称:which.

    • 所在路径:/usr/bin/which.

    • 执行权限:所有用户,

    • 功能描述:列出命令的所在路径。

    3.locate命令

    3.1基本用法

    locate命令才是可以按照文件名搜索普通文件的命令。

    • 优点 :按照数据库搜索, 搜索速度快, 消耗资源小。数据库位置/var/lib/mlocate/mlocate.db,可以使用updatedb命令强制更新数据库。
    • 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。

    locate命令的基本信息如下.

    • 命令名称:locate.
    • 所在路径:/ust/bin/locate.
    • 执行权限:所有用户,
    • 功能描述:按照文件名搜索文件。
    3.2配置文件

    在这里插入图片描述

    4.find命令

    find命令的基本信息如下.

    • 命令名称:find.
    • 所在路径:/bin/find.
    • 执行权限:所有用户,
    • 功能描述:在目录中搜索文件.
    4.1按照文件名搜索

    在这里插入图片描述

    4.2.按照文件大小搜索

    在这里插入图片描述

    这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。

    find命令的单位:

    在这里插入图片描述

    4.3按照修改时间搜索

    Linux中的文件有访问时间(atime) 、数据修改时间(mtime) 、状态修改时间(etime) 这三个 时间,我们也可以按照时间来搜索文件。

    在这里插入图片描述

    这里用mtime数据修改时间来举例, 重点说说“[±]”时间的含义。

    • -5:代表5天内修改的文件.

    • 5:代表前5~6天那一天修改的文件.

    • +5:代表6天前修改的文件.

      画一个时间轴来解释一下

    在这里插入图片描述

    4.4按照权限搜索

    命令格式

    在这里插入图片描述

    4.5按照所有者和所属组搜索

    在这里插入图片描述

    按照所有者和所属组搜索时, “-nouser”选项比较常用, 主要用于查找垃圾文件。

    只有一种情况例外, 那就是外来文件。比如光盘和U盘中的文件,如果是由Windows复制的, 在 Linux中查看就是没有所有者的文件。再比如手工源码包安装的文件, 也有可能没有所有者。

    4.6按照文件类型搜索

    在这里插入图片描述

    4.7逻辑运算符

    在这里插入图片描述

    1. -a:and逻辑与

    find命令也支持逻辑运算符选项, 其中-a代表逻辑与运算, 也就是-a的两个条件都成立, find搜 索的结果才成立。举个例子:
    在这里插入图片描述

    2)-o:or逻辑或

    -o选项代表逻辑或运算,也就是-o的两个条件只要其中一个成立, find命令就可以找到结果,例如:
    在这里插入图片描述

    3)-not:not逻辑非

    -not是逻辑非, 也就是取反的意思, 举个例子:
    在这里插入图片描述

    4.8其他选项
    1. -exec选项

    “-exec”和“-ok”, 这两个选项的基本作用非常相似。
    “-exec”选项的格式:

    在这里插入图片描述

    其次, 这个选项的作用其实是把find命令的结果交给由“-exec”调用的命令2来处理.“#”就代表find命令的查找结果

    2)-ok选项

    “-ok”选项和“-exec”选项的作用基本一致, 区别在于:“-exec”的命令2会直接处理, 而不询 问:“-ok”的命令2在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行

    5.grep命令:补充命令

    grep的作用是在文件中提取和匹配符合条件的字符串行。命令格式如下:

    [root@localhost ~]# grep [选项] "搜索内容" 文件名
    
    选项:
    
    -i :			忽略大小写 
    
    -n:			输出行号
    
    -v:			反向查找
    
    --color=auto: 搜索出的关键字用颜色显示
    

    find命令和grep命令的区别:

    1. find命令

    find命令用于在系统中搜索符合条件的文件名, 如果需要模糊查询, 则使用通配符进行匹配,通配符是完全匹配(find命令可以通过-regex选项, 把匹配规则转为正则表达式规则, 但是不建议如此)

    1. grep命令

    grep命令用于在文件中搜索符合条件的字符申, 如果需要模糊查询, 则使用正则表达式进行匹配, 正则表达式是包含匹配。

    1. 通配符与正则表达式的区别

    通配符:用于匹配文件名,完全匹配

    通配符 作用
    ? 匹配一个任意字符
    * 匹配0个或任意多个字符,也就是匹配任何内容
    [] 匹配中括号中任意一个字符,例如:[abc]代表一定匹配一个字符,a或b或c
    [-] 匹配中括号中任意一个字符,-代表一个范围,例如:[a-z]代表匹配一个小写字母
    [^] 逻辑非,表示不是中括号内的一个字符,例如:[^0-9]代表匹配一个不是数字的字符

    正则表达式:用于匹配字符串,包含匹配

    正则符 作用
    ? 匹配前一个字符重复0次,或1次(?是扩展正则,需要使用egrep命令)
    * 匹配前一个字符重复0次,或任意多次
    [] 匹配中括号中任意一个字符,例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c
    [-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
    [^] 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符
    ^ 匹配行首
    $ 匹配行尾

    6.管道符:补充命令

    命令格式: 命令1 | 命令2

    命令1的正确输出作为命令2的操作对象

    1)例子1:

    举个例子, 使用 “ll” 命令查看文件的长格式, 但是有些目录中文件众多, 比如/etc/目录,使用“I”命令显示的内容就会非常多,只能看到最后的内容,而不能看到前面输出的内容。这时使用more命令可以分屏显示文件内容在这里插入图片描述

    可是这样操作实在不方便,这时就可以利用管道符。命令如下:

    [

    2)例子2:

    我想在命令ll /etc/的结果中搜索yum的文件名, 应该使用find命令?还是grep命令?

    [root@localhost ~]#	ll -a /etc/ | grep yum
    

    3)例子3:

    netstat命令(CentOS 7中, 需要安装ne-snmp.x 86_64, net-tools.x 86_64两个包才有此命令, 7.5 系统中已经自动安装)格式如下:

    在这里插入图片描述

    统计正在连接的网络连接数量

    7.命令的别名:补充命令

    命令的别名,就是命令的小名,主要是用于照顾管理员使用习惯的。

    在这里插入图片描述

    用命令定义的别名, 是临时生效的, 要想永久生效, 需要写入环境变量配置文件~/.bashrc

    8.常用快捷键:补充命令

    快捷键 作用
    Tab键 命令或文件名补全
    ctrl+A 把光标移动到命令行开头。如果输入的命令过长,想要把光标移动到开头时使用
    ctrl+E 把光标移动到命令行结尾
    ctrl+C 强制终止当前的命令
    ctrl+L 清屏,相当于clear命令
    ctrl+U 删除或剪切光标之前的命令。
    ctrl+Y 粘贴ctrl+U剪切的内容

    八 、压缩和解压缩命令

    在Linux中可以识别的常见压缩格式有十几种, 比如".zip"".gz"".bz2"".tar"".tar.gz"".tar.bz2"等。

    1.“.zip”格式

    “.zip”是Windows中最常用的压缩格式, Linux也可以正确识别“.zip”格式, 这可以方便地和 Windows系统通用压缩文件。

    1.1. “.zip”格式的压缩命令

    压缩命令就是zip, 其基本信息如下. ·

    • 命令名称:zip.

    • 所在路径:/usr/bin/zip.

    • 执行权限:所有用户,

    • 功能描述:压缩文件或目录。

    • 命令格式如下:

    在这里插入图片描述

    1.2. “.zip”格式的解压缩命令

    “zip”格式的解压缩命令是unzip, 其基本信息如下。

    • 命令名称:unzip.

    • 所在路径:/usr/bin/unzip-

    • 执行权限:所有用户,

    • 功能描述:列表、测试和提取压缩文件中的文件.

    命令格式如下:

    在这里插入图片描述

    2.“.gz”格式 不会打包

    2.1. “.gz”格式的压缩命令

    “gz”格式是Linux中最常用的压缩格式, 使用gzip命令进行压缩, 其基本信息如下。 ·

    • 命令名称:gzip:

    • 所在路径:/bin/gzip。

    • 执行权限:所有用户,

    • 功能描述:压缩文件或目录。

    这个命令的格式如下:

    在这里插入图片描述在这里插入图片描述

    2.2“.gz”格式的解压缩命令

    如果要解压缩“gz”格式, 那么使用“gzip -d 压缩包”和“gunzip 压缩包”命令都可以。

    • 命令名称:gunzip.

    • 所在路径:/bin/gunzip.

    • 执行权限:所有用户.

    • 功能描述:解压缩文件或目录。

    在这里插入图片描述

    两个命令都可以解压缩“.g2”格式

    3.“.bz2”格式 不能压缩目录

    3.1. “.bz2”格式的压缩命令

    “.bz2”格式是Linux的另一种压缩格式, 从理论上来讲, “.bz2”格式的算法更先进、压缩比更 好:而“.gz”格式相对来讲压缩的时间更快.

    “.bz2”格式的压缩命令是bzip2, 命令的基本信息,

    • 命令名称:bzip 2.

    • 所在路径:/usr/bin/bzip 2.

    • 执行权限:所有用户.

    • 功能描述:.bz2格式的压缩命令,

    来看看bzip 2命令的格式

    在这里插入图片描述

    3.2. “.bz2”格式的解压缩命令

    “bz2”格式可以使用“bzip2 -d 压缩包”命令来进行解压缩, 也可以使用“bunzip2 压缩包"命令来进行解压缩。bunzip2命令的基本信息.

    • 命令名称:b unzip 2.

    • 所在路径:/usr/bin/bunzip2.

    • 执行权限:所有用户.

    • 功能描述:.bz2格式的解压缩命令。

    在这里插入图片描述

    4.“.tar”格式 打包不会压缩

    4.1. “.tar”格式的打包命令

    “.tar”格式的打包和解打包都使用tar命令, 区别只是选项不同。tar命令的基本信息:

    • 命令名称:tar.

    • 所在路径:/bin/tar。

    • 执行权限:所有用户.

    • 功能描述:打包与解打包命令,

    命令的基本格式如下:

    在这里插入图片描述

    4.2. “.tar”格式的解打包命令

    “.tar”格式的解打包也需要使用tar命令, 但是选项不太一样。命令格式如下:

    在这里插入图片描述

    5.“.tar.gz”和“.tar.bz2”格式

    使用tar命令直接打包压缩。命令格式如下:

    在这里插入图片描述

    再举几个例子:

    在这里插入图片描述

    九、关机和重启命令

    1.sync 数据同步

    sync命令的基本信息如下.

    • 命令名称:sync.

    • 所在路径:/bin/sync.

    • 执行权限:所有用户.

    • 功能描述:刷新文件系统缓冲区.

    2.shutdown命令

    shutdown命令的基本信息如下,

    • 命令名称:shutdown.

    • 所在路径:/sbin/shutdown.

    • 执行权限:超级用户,

    • 功能描述:关机和重启

    • 命令的基本格式如下:
      在这里插入图片描述

    3.reboot命令

    在现在的系统中, reboot命令也是安全的, 而且不需要加入过多的选项。

    4.halt和poweroff命令

    这两个都是关机命令,直接执行即可,这两个命令不会完整关闭和保存系统的服务,不建议使用。

    5.init命令

    init是修改Linux运行级别的命令, 也可以用于关机和重启。这个命令并不安全, 不建议使用,
    格式:

    [root@localhost ~]#	init 0
    #关机,也就是调用系统的0级别
    

    十、常用网络命令

    1.配置IP地址

    1.1配置IP地址

    IP地址是计算机在互联网中唯一的地址编码.每台计算机如果需要接入网络和其他计算机进行数 据通信,就必须配置唯一的公网IP地址。

    配置IP地址有两种方法:

    1. setup工具

    2. vi /etc/sysconfig/network-scripts/ifcfg-eth0

    手工修改配置文件

    1.2重启网络服务
    [root@localhost ~]#	service network restart
    #重启网络服务
    
    1.3虚拟机需要桥接到有线网卡,并重启网络服务
    1.4复制镜像有可能需要重置UUID(唯一识别符)

    在这里插入图片描述

    2.ifconfig命令

    • 所在路径:/sbin/ifconfig.

    • 执行权限:超级用户

    • 功能描述:配置网络接口.

      ifconfig命令最主要的作用就是查看IP地址的信息,直接输入ifconfig命令即可.
      在这里插入图片描述

    3.ping命令

    ping是常用的网络命令, 主要通过ICMP协议进行网络探测, 测试网络中主机的通信情况。ping 命令的基本信息如下.

    • 命令名称:ping.

    • 所在路径:/bin/ping.

    • 执行权限:所有用户.

    • 功能描述:向网络主机发送ICMP请求。

    命令的基本格式如下:
    在这里插入图片描述

    在ping命令中, 可以使用“-b”选项, 后面加入广播地址, 探测整个网段, 我们可以使用这个选项知道整个网络中有多少主机是可以和我们通信的,而不用一个一个IP地址地进行探测.例如:

    在这里插入图片描述

    #探测192.168.103.0/24网段中有多少可以通信的主机

    4.netstat命令

    netstat是网络状态查看命令, 既可以查看到本机开启的端口, 也可以查看有哪些客户端连接。 在CentOS7x中netstat命令默认没有安装, 如果需要使用, 需要安装net-snmp和inet-tools软件包。

    netstat命令的基本信息如下。

    • 命令名称:netstat。

    • 所在路径:/bin/netstat,

    • 执行权限:所有用户,

    • 功能描述:输出网络连接、路由表、接口统计、伪装连接和组播成员。

      命令格式如下:

    在这里插入图片描述

    例子1:查看本机开启的端口

    这是本机最常用的方式, 使用选项“-tuln”, 因为使用了“-l”选项, 所以只能看到监听状态的 连接,而不能看到己经建立连接状态的连接。例如:
    在这里插入图片描述

    这个命令的输出较多。

    • Proto:网络连接的协议, 一般就是TCP协议或者UDP协议。

    • Recv-Q:表示接收到的数据, 已经在本地的缓冲中, 但是还没有被进程取走。

    • Send-Q:表示从本机发送, 对方还没有收到的数据, 依然在本地的缓冲中, 一般是不具备ACK 标志的数据包。

    • Local Address:本机的IP地址和端口号。

    • Foreign Address:远程主机的IP地址和端口号。

    • State:状态。常见的状态主要有以下几种。

    1. LISTEN:监听状态, 只有TCP协议需要监听, 而UDP协议不需要监听。

    2. ESTABLISHED:已经建立连接的状态。如果使用“-1”选项, 则看不到已经建立连接的状态。

    3. SYN_SENT:SYN发起包,就是主动发起连接的数据包。

    4. SYN_RECV:接收到主动连接的数据包。

    5. FIN WAIT 1:正在中断的连接。

    6. FIN_WAIT 2:已经中断的连接, 但是正在等待对方主机进行确认。

    7. TIME_WAIT:连接已经中断, 但是套接字依然在网络中等待结束。

    8. CLOSED:套接字没有被使用。

    在这些状态中, 我们最常用的就是LISTEN和ESTABLISHED状态, 一种代表正在监听, 另一种代表已经建立连接。

    例子2:查看本机有哪些程序开启的端口

    如果使用“p”选项, 则可以查看到是哪个程序占用了端口, 并且可以知道这个程序的PID, 例 如:
    在这里插入图片描述

    例子3:查看所有连接

    使用选项“-an”可以查看所有连接, 包括监听状态的连接(LISTEN) 、已经建立连接状态的 连接(ESTABLISHED) 、Socket程序连接等。因为连接较多, 所以输出的内容有很多。例如:
    在这里插入图片描述

    从“Active UNIX domain sockets”开始, 之后的内容就是Socket程序产生的连接, 之前的内容都是网 络服务产生的连接。我们可以在“-an”选项的输出中看到各种网络连接状态, 而之前的“-tuln”选项 则只能看到监听状态.

    5.write命令

    write命令的基本信息如下,

    • 所在路径:/usr/bin/write.
    • 执行权限:所有用户.
    • 功能描述:向其他用户发送信息。

    在这里插入图片描述

    6.wall命令

    write命令用于给指定用户发送信息, 而wall合令用于给所有登录用户发送信息, 包括自己, 执行时, 在wall命令后加入需要发送的信息即可, 例如:
    在这里插入图片描述

    7.mail命令

    mail是Linux的邮件客户端命令, 可以利用这个命令给其他用户发送邮件。mail命令的基本信息如下,

    • 所在路径:/bin/mail.

    • 执行权限:所有用户.

    • 功能描述:发送和接收电子邮件。

      例子1:发送邮件

      如果我们想要给其他用户发送邮件,则可以执行如下命令:

    在这里插入图片描述

    例子2:发送文件内容

    如果我们想把某个文件的内容发送给指定用户,则可以执行如下命令:

    在这里插入图片描述

    在写脚本时,有时需要脚本自动发送一些信息给指定用户,把要发送的信息预先写到文件中, 是一个非常不错的选择,

    例子3:查看已经接收的邮件

    我们可以直接在命令行中执行mail命令, 进入mail的交互命令中, 可以在这里查看己经接收到的邮件。例如:

    在这里插入图片描述

    可以看到已经接收到的邮件列表,“N”代表未读邮件,如果是已经阅读过的邮件,则前面是不会有这个“N”的:之后的数字是邮件的编号,我们主要通过这个编号来进行邮件的操作,如果我们想要查看第一封邮件,则只需输入邮件的编号“1”就可以了。

    在交互命令中执行“?”,可以查看这个交互界面支持的命令。例如;

    在这里插入图片描述

    这些交互命令是可以简化输入的, 比如“headers”命令, 就可以直接输入“h”, 这是列出邮件 标题列表的命令。我们解释一下常用的交互命令。

    • headers:列出邮件标题列表, 直接输入“h”命令即可。

    • delete:删除指定邮件。比如想要删除第二封邮件, 可以输入“d 2”。

    • save; 保存邮件。可以把指定邮件保存成文件, 如“s 2/tmp/test mail”。

    • quit:退出, 并把已经操作过的邮件进行保存, 比如移除己删除邮件、保存已阅读邮件等

    • exit:退出, 但是不保存任何操作。

    十一、系统痕迹命令

    系统中有一些重要的痕迹日志文如/var/log/wtmp、/var/run/utmp、/var/log/btmp、/var/log/lastlog等日志文件, 如果用vim打开这些文件,会发现这些文件是二进制乱码, 这是由于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误登录等重要的系统信息。

    这些信息要是可以通过vim打开, 就能编辑, 那么这样痕迹信息就不准确, 所以这些重要的痕迹日志,只能通过对应的命令来进行查看。

    1.w命令

    w命令是显示系统中正在登陆的用户信息的命令, 这个命令查看的痕迹日志是/var/run/utmp.这个命令的基本信息如下:

    • 所在路径:/ust/bin/w

    • 执行权限:所有用户.

    • 功能描述:显示灯用户,和他正在做什么。

      例如:

    在这里插入图片描述

    第一行信息,内容如下:

    内容 说明
    12:26:46 系统当前时间
    up 1 day,13:32 系统的运行时间,本机已经运行了1天13小时23分钟
    2 user 当前登陆了两个用户
    load average: 0.00,0.00,0.00 系统在之前1分钟、5分钟、15分钟的平均负载。如果CPU是单核的,则这个数值超过1就是高负载;如果CPU是四核 的,则这个数值超过4就是高负载(这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器CPU的核数)

    第二行信息,内容如下:

    内容 说明
    USER 当前登陆的用户
    TTY 登陆的终端:tty1-6:本地字符终端(alt+F1-6切换)tty7:本地图形终端(ctrl+alt+F7切换,必须安装启动图形界面)pts/0-255:远程终端
    FROM 登陆的IP地址,如果是本地终端,则是空
    LOGIN@ 登陆时间
    IDLE 用户闲置时间
    JCPU 所有的进程占用的CPU时间
    PCPU 当前进程占用的CPU时间
    WHAT 用户正在进行的操作

    2.who命令

    who命令和w命令类似, 用于查看正在登陆的用广, 但是显示的内容更加简单, 也是查看/var/run/utmp日志。

    在这里插入图片描述

    3.last命令

    last命令是查看系统所有登陆过的用户信息的, 包括正在登陆的用户和之前登陆的用户, 这个命令查看的是/var/log/wtmp痕迹日志文件,
    在这里插入图片描述

    4.lastlog命令

    last log命令是查看系统中所有用户最后一次的登陆时间的命令, 他查看的日志是/var/log/last log文件。

    在这里插入图片描述

    5.lastb命令

    lastb命令是查看错误登陆的信息的, 查看的是/var/log/btmp痕迹日志:
    在这里插入图片描述

    十二、挂载命令

    1.mount命令基本格式

    linux所有存储设备都必须挂载使用, 包括硬盘

    • 命令名称; mount

    • 命令所在路径:/bin/mount

    • 执行权限:所有用户

    命令具体格式如下:
    在这里插入图片描述

    参数 说明
    atime/moatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新
    async/sync 异步/同步,默认为异步
    auto/noauto 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动
    defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
    exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
    remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
    rw/ro 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw
    suid/nosuid 具有/不具有SUID权限,设定文件系统是否有SUID和SGID权限,默认是具有
    user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
    usrquota 写入代表文件系统支持用户磁盘配额,默认不支持
    grpquota 写入代表文件系统支持组磁盘配额,默认不支持

    举例:

    在这里插入图片描述

    如果做试验修改了特殊选项,一定要记得住,而且确定需要修改,否则非常容易出现系统问题,而且还找不到哪里出现了问题。

    在这里插入图片描述

    2.光盘挂载

    光盘挂载的前提依然是指定光盘的设备文件名, 不同版本的Linux, 设备文件名并不相同:

    • CentOS 5.x以前的系统, 光盘设备文件名是/dev/hde

    • CentOS 6.x以后的系统, 光盘设备文件名是/dev/sr 0

      不论哪个系统都有软连接/dev/cdrom, 与可以作为光盘的设备文件名

    在这里插入图片描述

    用完之后卸载:

    在这里插入图片描述

    注意:卸载的时候需要退出光盘目录,才能正常卸载

    3.挂载U盘

    U盘会和硬盘共用设备文件名,所以U盘的设备文件名不是固定的,需要手工查询,查询命令:

    [root@localhost ~]#	fdisk -l
    #查询硬盘
    

    然后就是挂载了,挂载命令如下:

    [root@localhost ~]#	mount -t vfat /dev/sdb1 /mnt/usb/
    #挂载U盘.因为是Windows分区,所以是vfat文件系统格式
    

    如果U盘中有中文, 会发现中文是乱码.Linux要想正常显示中文, 需要两个条件:

    • 安装了中文编码和中文字体

    • 操作终端需要支持中文显示(纯字符终端,是不支持中文编码的)

      而我们当前系统是安装了中文编码和字体, 而x shell远程终端是Windows下的程序, 当然是支持 中文显示的。那之所以挂载U盘还出现乱码,是需要在挂载的时候,手工指定中文编码,例如:

    [root@localhost ~]#	mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
    #挂载U盘.指定中文编码格式为UTF-8
    

    如果需要卸载,可以执行以下命令:

    [root@localhost ~]#	umount /mnt/usb/
    

    4、挂载NTFS分区

    4.1 Linux的驱动加载顺序:
    • 驱动直接放入系统内核之中,这种驱动主要是系统启动加载必须的驱动,数量较少.

    • 驱动以模块的形式放入硬盘,大多数驱动都以这种方式保存,保存位置在/lib/modules/3.10.0-862.el7.x86_64/kernel/中.

    • 驱动可以被Linux识别, 但是系统认为这种驱动一般不常用, 默认不加载。如果需要加载这种驱动,需要重新编译内核,而NTFS文件系统的驱动就属于这种情况.

    • 硬件不能被Linux内核识别, 需要手工安装驱动。当然前提是厂商提供了该硬件针对Linux的驱动,否则就需要自己开发驱动了 。

    4.2使用NTFS-3G安装NTFS文件系统模块

    在这里插入图片描述

    安装就完成了, 已经可以挂载和使用Windows的NTFS分区了。不过需要注意挂载分区时的文件系统不是ntfs, 而是ntfs-3g。挂载命令如下:

    [root@localhost ~]#	mount -t ntfs-3g 分区设备文件名 挂载点
    

    例如:

    [root@localhost ~]#	mount -t ntfs-3g /dev/sdb1 /mnt/win
    
    展开全文
  • windows常用命令行(DOS)命令

    千次阅读 2019-04-21 12:05:57
    打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令和cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后保留cmd窗口 # 控制台命令窗口中...

     

    打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口...

    也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令

    注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后保留cmd窗口

    # 控制台命令窗口中一些技巧

    复制内容:右键弹出快捷菜单,选择“标记(K)”,然后选中所需复制的内容,然后右键即可

    粘贴内容:右键弹出快捷菜单,选择“粘贴(P)

    在文件夹空白处按住Shift,然后右键弹出快捷菜单,可以看到“在此处打开命令行窗口

    使用上下方向键,翻看使用过的命令

    tab补齐功能

    命令参数的路径:要使用反斜杠'\',不要使用正斜杠'/'   如:del d:\test2\file\my.txt

    命令参数的路径:若存在空格,应使用双引号将路径引起来  如:del "d:\program files\file\my.txt"

    文件及目录名中不能包含下列任何字符:\ / : * ? " < > |

    rem  // 在批处理文件中添加注解,其后的命令不会被执行,但会回显

    ::  // ::也可以起到rem的注释作用,且不会有回显

    任何以冒号:开头的字符行, 在批处理中都被视作标号(label), 而直接忽略其后的所有内容
    有效标号:冒号后紧跟一个以字母数字开头的字符串,goto语句可以识别
    无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto无法识别的标号,可以起到注释作用,::常被用作注释符号

    0. 获取帮助

    command /?  // 查看command命令帮助说明

    1. 中断命令执行

    Ctrl + Z

    2. 文件/目录

    cd   切换目录

    例:cd   // 显示当前目录

    例:cd ..   // 进入父目录

    例:cd /d d:   // 进入上次d盘所在的目录(或在直接输入:d:)

    例:cd /d d:\   // 进入d盘根目录

    例:cd d: // 显示上次d盘所在的目录

    例:cd /d d:\src // 进入d:\src目录

    例:cd prj\src\view  // 进入当前目录下的prj\src\view文件夹

    pushd  popd  使用栈来维护当前目录

    md d:\mp3 // 在C:\建立mp3文件夹
    md d:\mp4 // 在D:\建立mp4文件夹
    cd /d d:\mp4 // 更改当前目录为d:\mp4
    pushd c:\mp3 // 将当前目录d:\mp4入栈,并切换当前目录为c:\mp3
    popd  // 将刚才保存的d:\mp4弹栈,并设置为当前目录

    dir  显示目录中的内容

    例:dir   // 显示当前目录中的子文件夹与文件

    例:dir /b  // 只显示当前目录中的子文件夹与文件的文件名

    例:dir /p  // 分页显示当前目录中的子文件夹与文件

    例:dir /ad  // 显示当前目录中的子文件夹

    例:dir /a-d  // 显示当前目录中的文件

    例:dir c:\test   // 显示c:\test目录中的内容

    例:dir keys.txt  // 显示当前目录中keys.txt的信息

    例:dir /S   // 递归显示当前目录中的内容

    例:dir key*  // 显示当前目录下以key开头的文件和文件夹的信息

    例:dir /AH /OS  // 只显示当前目录中隐藏的文件和目录,并按照文件大小从小到大排序

    tree 显示目录结构

    例:tree d:\myfiles  // 显示d:\myfiles目录结构

    ren  文件或目录重命名

    例:ren rec.txt rec.ini  // 将当前目录下的rec.txt文件重命名为rec.ini

    例:ren c:\test test_01  // 将c盘下的test文件夹重命名为test_01

    例:ren Logs.txt Logs-%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%.txt  // 将当前目录下的Logs.txt文件重命名为Logs-20150114_2135.txt或Logs-20150114_ 812.txt(注意:小时只有个位数时会多一个空格,可以使用字符串替换:将空格替换成0)

    md  创建目录

    例:md movie music  // 在当前目录中创建名为movie和music的文件夹

    例:md d:\test\movie  // 创建d:\test\movie目录

    rd  删除目录

    例:rd movie // 删除当前目录下的movie空文件夹

    例:rd /s /q d:\test  // 使用安静模式删除d:\test(除目录本身外,还将删除指定目录下的所有子目录和文件)

    copy 拷贝文件

    例:copy key.txt c:\doc  // 将当前目录下的key.txt拷贝到c:\doc下(若doc中也存在一个key.txt文件,会询问是否覆盖)

    例:copy jobs c:\doc  // 将当前目录下jobs文件夹中文件(不递归子目录)拷贝到c:\doc下(若doc中也存在相应的文件,会询问是否覆盖)

    例:copy key.txt c:\doc\key_bak.txt  // 将当前目录下的key.txt拷贝到c:\doc下,并重命名为key_bak.txt(若doc中也存在一个key_bak.txt文件,会询问是否覆盖)

    例:copy /Y key.txt c:\doc  // 将当前目录下的key.txt拷贝到c:\doc下(不询问,直接覆盖写)

    例:copy key.txt +  // 复制文件到自己,实际上是修改了文件日期

    例:copy /Y key1.txt + key2.txt key.txt  // 将当前目录下的key1.txt与key2.txt的内容合并写入key.txt中(不询问,直接覆盖写)

    例:copy /B art_2.7z.* art_2.7z    // 将当前目录下的art_2.7z.开头的所有文件(按照名称升序排序)依次合并生成art_2.7z

    例:copy /B art_2.7z.001+art_2.7z.002 art_2.7z    // 将当前目录下的art_2.7z.001、art_2.7z.002文件合并生成art_2.7z

    xcopy  更强大的复制命令

    例:xcopy c:\bat\hai d:\hello\ /s /h /e /f /c    // 将c:\bat\hai中的所有内容拷贝到d:\hello中  注意:需要在hello后加上\  表示hello为一个目录,否则xcopy会询问hello是F,还是D

    例:xcopy c:\bat\hai d:\hello\ /d:12-29-2010  // 将c:\bat\hai中的2010年12月29日后更改的文件拷贝到d:\hello中

    move 移动文件

    例:move *.png test  // 将当前目录下的png图片移动到当前目录下test文件夹中 (若test中也存在同名的png图片,会询问是否覆盖)

    例:move /Y *.png test  // 将当前目录下的png图片移动到当前目录下test文件夹中 (不询问,直接覆盖写)

    例:move 1.png d:\test\2.png  // 将当前目录下的1.png移动到d盘test文件夹中,并重命名为2.png (若test中也存在同名的png图片,会询问是否覆盖)

    例:move test d:\new  // 若d盘中存在new文件夹,将当前目录下的test文件夹移动到d盘new文件夹中;若不存在,将当前目录下的test文件夹移动到d盘,并重命名为new

    del 删除文件   注意:目录及子目录都不会删除

    例:del test  // 删除当前目录下的test文件夹中的所有非只读文件(子目录下的文件不删除;删除前会进行确认;等价于del test\*

    例:del /f test  // 删除当前目录下的test文件夹中的所有文件(含只读文件;子目录下的文件不删除;删除前会进行确认;等价于del /f test\*

    例:del /f /s /q test d:\test2\*.doc  // 删除当前目录下的test文件夹中所有文件及d:\test2中所有doc文件(含只读文件;递归子目录下的文件;删除前不确认)

    ++++++++++++++++++++++

    /ar、/ah、/as、/aa 分别表示删除只读、隐藏、系统、存档文件
    /a-r、/a-h、/a-s、/a-a 分别表示删除除只读、隐藏、系统、存档以外的文件

    ++++++++++++++++++++++

    例:del /ar *.* // 删除当前目录下所有只读文件

    例:del /a-s *.* // 删除当前目录下除系统文件以外的所有文件

    replace 替换文件即使这个文件在使用,仍然可以替换成功

    例:replace d:\love.mp3 d:\mp3   // 使用d盘下的love.mp3强制替换d盘mp3目录中的love.mp3文件

    mklink  创建符号链接(win7引入)创建的符号链接文件上会有一个类似快捷方式的箭头

    win7下的mklink命令通过指定参数可以建立出不同形式的文件或目录链接,分为硬链接(hard link)符号链接(symbolic link)目录联接(junction)三种。

    (1) 符号链接(symbolic link)

     建立一个软链接相当于建立一个文件(或目录),这个文件(或目录)用于指向别的文件(或目录),和win的快捷方式有些类似。

      删除这个链接,对原来的文件(或目录)没有影像没有任何影响;而当你删除原文件(或目录)时,再打开链接则会提示“位置不可用”。

    (2) 目录联接(junction)

     作用基本和符号链接类似。区别在于,目录联接在建立时会自动引用原目录的绝对路径,而符号链接允许相对路径的引用。

    (3) 硬链接(hard link)

     建立一个硬链接相当于给文件建立了一个别名,例如对1.txt创建了名字为2.txt的硬链接;

      若使用记事本对1.txt进行修改,则2.txt也同时被修改,若删除1.txt,则2.txt依然存在,且内容与1.txt一样。

    建立链接请注意:
    a、建立文件或目录链接限于 NTFS 文件系统;符号链接(目录联接)的建立可以跨分区(如:在d盘可以建立c盘文件或目录的链接),硬链接只能建立同一分区内的文件指向
    b、硬链接只能用于文件,不能用于目录;目录联接只能用于目录;符号链接则均可以;
    c、硬链接不允许对空文件建立链接,符号(软)链接可以。

    +++++++++++++++++++++++++++++++++

    mklink [[/d] | [/h] | [/j]] Link Target

    /d   创建目录符号链接。黙认为文件符号链接。
    /h   创建硬链接,而不是符号链接。
    /j   创建目录联接。
    Link  指定新的符号链接名称。
    Target 指定新链接引用的路径(相对或绝对)。

    +++++++++++++++++++++++++++++++++

    例:mklink /j "C:\Users" "D:\Users"   // 创建D盘Users目录联接到C盘,并命名为Users

    attrib  查看或修改文件或目录的属性  A:存档  R:只读  S:系统  H:隐藏

    例:attrib 1.txt   // 查看当前目录下1.txt的属性

    例:attrib -R 1.txt  // 去掉1.txt的只读属性

    例:attrib +H movie  // 隐藏movie文件夹

    assoc 设置'文件扩展名'关联到的'文件类型'

    例:assoc // 显示所有'文件扩展名'关联

    例:assoc .txt // 显示.txt代表的'文件类型',结果显示.txt=txtfile

    例:assoc .doc // 显示.doc代表的'文件类型',结果显示.doc=Word.Document.8

    例:assoc .exe // 显示.exe代表的'文件类型',结果显示.exe=exefile

    例:assoc .txt=txtfile  // 恢复.txt的正确关联

    ftype 设置'文件类型'关联到的'执行程序和参数'

    例:ftype // 显示所有'文件类型'关联

    例:ftype exefile // 显示exefile类型关联的命令行,结果显示 exefile="%1" %*

    例:ftype txtfile=C:\Windows\notepad.exe %1 // 设置txtfile类型关联的命令行为:C:\Windows\notepad.exe %1

    当双击一个.txt文件时,windows并不是根据.txt直接判断用notepad.exe打开
    而是先判断.txt属于txtfile'文件类型';再调用txtfile关联的命令行:txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

    3. 文件查看

    type 显示文本文件内容

    例:type c:\11.txt   // 显示c盘中11.txt的文本内容

    例:type conf.ini  // 显示当前目录下conf.ini的文本内容

    例:type c:\11.txt | more  // 分页显示c盘中11.txt的文本内容

    more 逐屏的显示文本文件内容

    例:more conf.ini  //  逐屏的显示当前目录下conf.ini的文本内容   空格:下一屏 q:退出 

    4. 注册表命令

    reg 注册表相关操作

    参数说明:

    KeyName [\Machine]FullKey
               Machine为远程机器的机器名 - 忽略默认到当前机器。
               远程机器上只有 HKLM 和 HKU。
               FullKey ROOTKEY+SubKey
               ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
               SubKey 所选ROOTKEY下注册表项的完整名
    /v        所选项之下要添加的值名
    /ve      为注册表项添加空白值名<无名称>
    /t        RegKey 数据类型
               [ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
               REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
               REG_NONE | REG_EXPAND_SZ ]
               如果忽略,则采用 REG_SZ
    /s        指定一个在 REG_MULTI_SZ 数据字符串中
               用作分隔符的字符;如果忽略,则将""用作分隔符
    /d        要分配给添加的注册表ValueName的数据
    /f        不提示,强行改写现有注册表项

    例:reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MyApp /t REG_SZ /d "c:\tools\myapp.exe" /f  // 强制添加一条开机启动c:\tools\myapp.exe程序的注册表项

    例:reg add "HKLM\SOFTWARE\ScmClient" /v AgreementConfirmed /t REG_SZ /d 1 /f  // 解决32位xp打开ioa后,弹出的框关不掉问题

    例:reg add "HKCU\ControlPanel\Desktop" /v WaitToKIllAppTimeOut /t REG_SZ /d 10000 /f // 强制添加一条加速关闭应用程序的注册表项

    例:reg add "HKCR\*\shell\WinDbg\command" /t REG_SZ /d "\"D:\Program Files (x86)\windbg\windbg.exe\" -z \"%1\" " /f    // 强制添加windbg打开dump文件到右键菜单的注册表项(不指明/v,键值将写入默认值名中)

    例:reg add "HKCR\*\shell\WinHex\command" /t REG_SZ /d "\"D:\software-setup\system\winhex\winhex.exe\"  \"%1\" " /f    // 强制添加winhex到右键菜单的注册表项(不指明/v,键值将写入默认值名中)

    注册表中%1 %2 %3 %4的含义:
    --  %1表示文件列表,%2表示默认打印机,%3表示驱动器,%4表示端口

    例:reg add "hkcu\software\microsoft\windows\currentversion\internet settings" /v AutoConfigURL /t REG_SZ /d "http://txp-01.tencent.com/proxy.pac" /f  // 为IE设置代理:http://txp-01.tencent.com/proxy.pac

    例:reg add "hkcu\software\Sysinternals\Process Monitor" /v EulaAccepted /t REG_DWORD /d 1 /f  // 为Procmon.exe工具(Process Monitor为其属性面板上的描述名)添加License同意

    例:reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MyApp /f  // 强制删除值名的MyApp的注册表项

    例:reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe" /f  // 强制删除让任务栏里的任务管理器为灰色的注册表项

    例:reg copy "hkcu\software\microsoft\winmine" "hkcu\software\microsoft\winminebk" /s /f  // 强制复制winmine下所有的子项与值到winminebk中

    例:reg export "hkcu\software\microsoft\winmine" c:\regbak\winmine.reg  // 导出winmine下所有的子项与值到c:\regbak\winmine.reg文件中

    例:reg import c:\regbak\winmine.reg  // 导入c:\regbak\winmine.reg文件到注册表中

    例:reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE" /s   // 查询ie的安装路径

    例:reg query HKCR\.dsw /ve  // 查询.dsw默认值

    例:reg query HKEY_CURRENT_USER\Software\Tencent\QQGame\SYS /v GameDirectory  // 查询QQGame安装路径

    5. @#@

    &  顺序执行多条命令,而不管命令是否执行成功

    例:cd /d d:\src&work.exe /o c:\result.txt  // 先将当前工作目录切换到d:\src下,然后执行work.exe /o c:\result.txt命令

    &&  顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

    例:find "ok" c:\test.txt && echo 成功 // 如果找到了"ok"字样,就显示"成功",找不到就不显示

    ||   顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

    例:find "ok" c:\test.txt || echo 不成功   // 如果找不到"ok"字样,就显示"不成功",找到了就不显示

    |    管道命令

    例:dir *.* /s/a | find /c ".exe"   // 先执行dir命令,然后对输出结果(stdout)执行find命令(输出当前文件夹及所有子文件夹里的.exe文件的个数)

    例:dir *.* /s/a 2>&1 | find /c ".exe"   // 先执行dir命令,然后对输出结果(stdout)和错误信息(stderr)执行find命令(输出当前文件夹及所有子文件夹里的.exe文件的个数)

    >  将当前命令输出以覆盖的方式重定向

    例:tasklist > p1.txt   // 将tasklist的输出结果(stdout)以覆盖的方式重定向到p1.txt文件中(注:tasklist的输出结果就不会打印到屏幕上了)

    例:tasklist 1> p1.txt  // 等同于:tasklist > p1.txt

    例:dir bin 2> p1.txt  // 输出结果(stdout)打印在屏幕上,错误信息(stderr)以覆盖的方式重定向到p1.txt中(注:bin目录不存在时,会输出错误信息)

    例:dir bin > p1.txt 2>&1  // 将错误信息(stderr)重定向到输出结果(stdout),然后将输出结果(stdout)以覆盖的方式重定向到p1.txt中(注:bin目录不存在时,会输出错误信息)

    例:dir bin 2> p1.txt 1>&2  // 将输出结果(stdout)重定向到错误信息(stderr),然后将错误信息(stderr)以覆盖的方式重定向到p1.txt中(注:bin目录不存在时,会输出错误信息) 注:与上条命令结果一致

    例:tasklist >nul   // 屏幕上不打印tasklist的输出结果(stdout),错误信息(stderr)仍会打印

    例:dir bin 2>nul   // 屏幕上不打印命令的错误信息(stderr),输出结果(stdout)仍会打印(注:bin目录不存在时,会输出错误信息)

    例:dir bin >nul 2>&1   //  将命令的错误信息(stderr)重定向到输出结果(stdout),然后不打印输出结果(stdout)【屏幕上错误信息(stderr)和输出结果(stdout)都不打印】(注:bin目录不存在时,会输出错误信息)

    例:dir bin 2>nul 1>&2   //  将命令的输出结果(stdout)重定向到错误信息(stderr),然后不打印错误信息(stderr)【屏幕上错误信息(stderr)和输出结果(stdout)都不打印】(注:bin目录不存在时,会输出错误信息)

    >>  将当前命令输出以追加的方式重定向

    例:tasklist >> p2.txt   // 将tasklist的输出结果(stdout)以追加的方式重定向到p2.txt文件中(注:tasklist的输出结果就不会打印到屏幕上了)

    例:tasklist 1>> p2.txt  // 等同于:tasklist >> p2.txt

    例:dir bin 2>> p2.txt  // 输出结果(stdout)打印在屏幕上,错误信息(stderr)以追加的方式重定向到p2.txt中(注:bin目录不存在时,会输出错误信息)

    例:dir bin >> p2.txt 2>&1  // 将错误信息(stderr)重定向到输出结果(stdout),然后将输出结果(stdout)以追加的方式重定向到p2.txt中(注:bin目录不存在时,会输出错误信息)

    例:dir bin 2>> p2.txt 1>&2  // 将输出结果(stdout)重定向到错误信息(stderr),然后将错误信息(stderr)以追加的方式重定向到p2.txt中(注:bin目录不存在时,会输出错误信息) 注:与上条命令结果一致

    <    从文件中获得输入信息,而不是从屏幕上,一般用于date time label等需要等待输入的命令

    例:date <temp.txt  // temp.txt中的内容为2005-05-01

    编号

    Handle

    说明

    0

    stdin

    键盘输入

    1

    stdout

    在命令提示窗口上打印输出结果(默认)

    2

    stderr

    在命令提示窗口上打印错误信息(默认)

    3-9

    undefined

    应用程序自己定义和指定

     

    @   命令修饰符  在执行命令前,不打印出该命令的内容

    例:@cd /d d:\me   // 执行该命令时,不打印出命令的内容:cd /d d:/me

    ,    在某些特殊的情况下可以用来代替空格使用

    例:dir,c:\   // 相当于:dir c:\

    ;    当命令相同的时候,可以将不同的目标用;隔离开来但执行效果不变。如执行过程中发生错误则只返回错误报告但程序还是会继续执行

    例:dir c:\;d:\;e:\   // 相当于顺序执行:dir c:\    dir d:\     dir e:\

    echo.   // 输出一个"回车换行",空白行

    echo off   // 后续所有命令在执行前,不打印出命令的内容

    echo on   // 后续所有命令在执行前,打印出命令的内容

    echo 123   // 输出123到终端屏幕

    echo "Hello World!!!"   // 输出Hello World!!!到终端屏幕

    echo %errorlevel%   // 每个命令运行结束,可以用这个命令行格式查看返回码;默认值为0,一般命令执行出错会设errorlevel为1

    echo test > p1.txt  // 输出test的字符串到当前目录中的p1.txt文件中(以覆盖的方式)

    set  // 显示当前用户所有的环境变量

    set path // 查看path的环境变量值(准确的说是查看以path开头的环境变量)

    set path=    // 清空path变量

    set path=d:\execute  // 将path变量设置为d:\execute(注:修改的path只会影响当前回话,也不会存储到系统配置中去;当前cmd窗口关闭,新设置的path也就不存在了)

    set path=%path%;d:\execute   // 在path变量中添加d:\execute(注:修改的path只会影响当前回话,也不会存储到系统配置中去;当前cmd窗口关闭,新设置的path也就不存在了)

    path // 显示当前path变量的值

    path ; // 清除所有搜索路径设置并指示cmd.exe只在当前目录中搜索

    path d:\xxx;%PATH%  // 将d:\xxx路径添加到path中

    ---------------------------------------------------

    set p=aa1bb1aa2bb2 // 设置变量p,并赋值为aa1bb1aa2bb2

    echo %p% // 显示变量p代表的字符串,即aa1bb1aa2bb2

    echo %p:~6% // 显示变量p中第6个字符以后的所有字符,即aa2bb2

    echo %p:~6,3% // 显示第6个字符以后的3个字符,即aa2

    echo %p:~0,3% // 显示前3个字符,即aa1

    echo %p:~-2% // 显示最后面的2个字符,即b2

    echo %p:~0,-2% // 显示除了最后2个字符以外的其它字符,即aa1bb1aa2b

    echo %p:aa=c% // 用c替换变量p中所有的aa,即显示c1bb1c2bb2

    echo %p:aa=% // 将变量p中的所有aa字符串置换为空,即显示1bb12bb2

    echo %p:*bb=c% // 第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2

    set p=%p:*bb=c% // 设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2

    set /a p=39 // 设置p为数值型变量,值为39

    set /a p=39/10 // 支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3

    set /a p=p/10 // 用 /a 参数时,在 = 后面的变量可以不加%直接引用

    set /a p="1&0" // &运算要加引号。其它支持的运算符参见set/?

    ---------------------------------------------------

    cls  清除屏幕

    ver  显示当前windows系统的版本号

    winver  弹框显示当前windows系统信息

    vol  显示当前分区的卷标

    label  显示当前分区的卷标,同时提示输入新卷标

    label c:system  设置c盘的卷标为system

    time  显示或设置当前时间

    例:time /t  // 显示当前时间

    例:time   // 设置新的当前时间(格式:hh:mm:ss),直接回车则表示放弃设置

    date  显示或设置当前日期

    例:date /t  // 显示当前日期

    例:date   // 设置新的当前日期(格式:YYYY/MM/DD),直接回车则表示放弃设置

    title 正在做命令行测试  // 修改当前cmd窗口的标题栏文字为正在做命令行测试

    prompt orz:   // 将命令提示符修改为orz:

    print 1.txt  // 使用设置好的打印机来打印1.txt文本文件

    call ff.bat   // 调用执行ff.bat脚本(ff.bat脚本执行完原脚本才会往下执行)

    start  运行某程序或命令

    例:start /max notepad.exe  // 最大化的方式启动记事本

    例:start /min calc.exe   // 最小化的方式启动计算器

    例:start  tasklist  // 启动一个cmd实例窗口,并运行tasklist

    例:start explorer f:\  // 调用资源管理器打开f盘

    例:strat iexplore "www.qq.com"  // 启动ie并打开www.qq.com网址

    例:start ff.bat  // 启动开始执行ff.bat(启动ff.bat脚本后,原脚本继续执行,不会等ff.bat脚本执行完)

    exit  退出当前cmd窗口实例

    例:exit 0  // 退出当前cmd窗口实例,并将过程退出代码设置为0(0表示成功,非0表示失败)

    例:exit /B 1  // 退出当前bat脚本,并将ERRORLEVEL系统变量设置为1

    pause   暂停批处理程序,并显示出:请按任意键继续....

    color  设置当前cmd窗口背景色和前景色(前景色即为字体的颜色)

    例:color  // 恢复到缺省设置

    例:color 02 // 将背景色设为黑色,将字体设为绿色

    --------------------------------------
    0 = 黑色 8 = 灰色
    1 = 蓝色 9 = 淡蓝色
    2 = 绿色 A = 淡绿色
    3 = 浅绿色 B = 淡浅绿色
    4 = 红色 C = 淡红色
    5 = 紫色 D = 淡紫色
    6 = 黄色 E = 淡黄色
    7 = 白色 F = 亮白色
    --------------------------------------

    mode con cols=200 lines=60 & color 9f    设置DOS窗口颜色为9f,大小:200行 60列(若屏幕缓冲区大小的宽度w<200或高度h<60,最终DOS的窗口就会为w行,h列)

     

    systeminfo  查看当前计算机的综合信息

    systeminfo | findstr /i "初始安装日期 系统启动时间"   只查看当前计算机的初始安装日期和系统启动时间

    wmic 查看硬件的信息   -- C:\Windows\System32\wbem\WMIC.exe

    例:wmic logicaldisk   // 查看计算机上各个盘的相关信息

    例:wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value   // 获取C盘的剩余空间大小与总大小(单位:Byte)

    例:wmic os get Caption,InstallDate,OSArchitecture /value  // 获取当前os的Caption、安装日期以及系统架构信息

    wmic 查看进程信息

    例:wmic process where Caption="buyticket.exe" get commandline,ExecutablePath,ProcessId,ThreadCount /value // 查看名为"buyticket.exe"所有进程命令行,exe全路径,PID及线程数

    例:wmic process where Caption="buyticket.exe" get ExecutablePath,HandleCount /value   // 查看名为"buyticket.exe"所有进程的exe全路径及当前打开的句柄数

    例:wmic process where Caption="buyticket.exe" get ExecutablePath,VirtualSize,WorkingSetSize /value   // 查看名为"buyticket.exe"所有进程的exe全路径、当前虚拟地址空间占用及物理内存工作集

    logoff  注销当前用户

    shutdown  关闭、重启、注销、休眠计算机

    例:shutdown /s  // 关闭计算机

    例:shutdown /s /t 3600  // 一小时后,关闭本地计算机

    例:shutdown /a  // 终止系统关闭

    例:shutdown /r  // 关闭并重启本地计算机

    例:shutdown /m 192.168.1.166 /r  // 关闭并重启ip为192.168.1.166的计算机

    +++++++++++++++++++++

    远程关机权限的获取:
    1)修改远程pc的“本地安全策略”,为指定的用户开放权限
    在WindowsXP默认的安全策略中,只有Administrators组的用户才有权从远端关闭计算机,如果要给xxxx用户远程关机的权限。
    可利用WindowsXP的“组策略”或“管理工具”中的“本地安全策略”来实现。 
    1.命令行运行gpedit.msc打开“组策略编辑器“;
    2.导航到“计算机配置/Windows设置/安全设置/本地策略/用户权利指派”; 
    3.修改“从远端系统强制关机”,添加xxxx用户即可。

    2)获得远程IPC管理权限
    如果配置第一步后还出现“拒绝访问。”,则需要在运行shutdown命令前先运行如下命令
    net use \\[ip地址或计算机名]\ipc$ password /user:xxxx
    其中password为帐号xxxx的登录密码。

    +++++++++++++++++++++

    例:shutdown /g  // 关闭并重启计算机,重启后重新启动所有注册的应用程序

    例:shutdown /l  // 注销本地计算机

    例:shutdown /h /f // 休眠本地计算机(强制正在运行的应用程序关闭,不前台警告用户)

    例:shutdown /s  // 关闭计算机

    regsvr32  注册或反注册com组件

    例:regsvr32 /s clock.ocx  // 以无声的方式注册clock.ocx组件

    例:regsvr32 /u myCommon.dll  // 卸载myCommon.dll组件

    format  格式化磁盘

    例:format J: /FS:ntfs   // 以ntfs类型格式化J盘 【类型有:FAT、FAT32、exFAT、NTFS或UDF】

    例:format J: /FS:fat32 /Q  //  以fat32类型快速格式化J盘

    chkdsk /f D:   // 检查磁盘D并显示状态报告;加参数/f表示同时会修复磁盘上的错误

    subst   磁盘映射  -- 磁盘映射信息都保存在注册表以下键值中:HKEY_CURRENT_USER\Network

    例:subst  // 显示目前所有的映射

    例:subst z: \\com\software  // 将\\com\software共享映射为本地z盘

    例:subst y: e:\src  // 将e:\src映射为本地y盘

    例:subst z: /d  // 删除z盘映射

    cmdkey   凭据(保存的用户名和密码)

    例:cmdkey /list  // 列出可用的凭据

    例:cmdkey /list:10.12.190.82  // 列出指定目标的凭据

    例:cmdkey /list:Domain:target=10.12.190.82  // 列出指定目标的凭据

    例:cmdkey /add:Domain:target=10.12.190.82 /user:LiLei /pass:123456  // 添加凭据

    例:cmdkey /delete:Domain:target=10.12.190.82  // 删除指定目标的凭据

    cscript  执行vbs脚本

    例:cscript /Nologo mac.vbs  // 执行mac.vbs脚本,显示本机mac地址

    -------mac.vbs----------

    Dim mc,mo
    Set mc=GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
    For Each mo In mc
    If mo.IPEnabled=True Then
    MsgBox "本机网卡MAC地址是: " & mo.MacAddress
    Exit For
    End If
    Next

    --------------------------

    6. net命令

    net start  // 查看已经启动的服务

    net start "Task Scheduler"   // 开启任务计划服务

    net stop "Task Scheduler"   // 关闭任务计划服务

    net start dnscache  // 开启dns缓存服务

    net stop dnscache  // 关闭dns缓存服务

    net share   // 查看当前用户下的共享目录

    net share workFile /delete  // 取消名为workFile的共享状态

    net share xxx=c:\360Downloads   // 将c:\360Downloads设为共享,并取名为xxx

    net share ipc$ // 开启ipc$共享

    net share ipc$ /del // 删除ipc$共享

    net share c$ /del // 删除c盘共享

    net use \\192.168.1.166\ipc$ " " /user:" " // 建立192.168.1.166的ipc空链接

    net use \\192.168.1.166\ipc$ "123456" /user:"administrator"   // 直接登陆后建立192.168.1.166的ipc非空链接(用户名为administrator 密码为123456)

    net use h: \\192.168.1.166\c$ "123456" /user:"administrator"   // 直接登陆后映射192.168.1.166的c盘到本地为h盘(用户名为administrator 密码为123456)

    net use h: \\192.168.1.166\c$   // 登陆后映射192.168.1.166的c盘到本地为h盘

    net use \\192.168.1.166\ipc$ /del  // 删除ipc链接

    net use h: /del // 删除本地的h盘的映射

    net view   // 查看本地局域网内开启了哪些共享

    net view \\192.168.1.166  // 查看192.168.1.166的机器上在局域网内开启了哪些共享

    net time \\127.0.0.1   // 查看本地机器的日期及时间

    net time \\localhost   // 查看本地机器的日期及时间

    net time \\192.168.1.166   // 查看192.168.1.166机器的日期及时间

    net time \\192.168.1.166 /set  // 设置本地计算机时间与192.168.1.166主机的时间同步,加上参数/yes可取消确认信息

    net user  // 查看当前机器上的用户

    net user Administrator   // 查看当前机器上的Administrator用户的信息

    net user Guest /active:yes  // 启用Guest用户

    net user dev 123456 /add   // 新建一个名为dev,密码为123456的用户

    net localgroup administrators dev /add  // 把名为dev的用户添加到管理员用户组中,使其具有管理员权限

    net user dev /del  // 删除名为dev的用户

    7. 进程操作

    tasklist  // 显示当前运行的进程信息(可查看PID)

    taskkill  结束指定的进程

    例:taskkill /im notepad.exe  // 结束名为notepad.exe的进程

    例:taskkill /pid 1230 /pid 1241 /pid 1253 /t // 结束pid为1230、1241和1253的进程以及由它们启动起来的子进程

    例:taskkill /f /im cmd.exe /t   // 强制结束有名为cmd.exe的进程以及由它启动起来的子进程

    8. 网络操作

    ping  // 用于检测网络是否通畅,以及网络时延情况(工作在ICMP协议上)

    例:ping baidu.com   //  测试与baidu服务器的连接情况

    例:ping chen-pc0   // 测试机器名为chen-pc0的连接情况

    例:ping 220.181.111.86   // 测试与ip为220.181.111.86的连接情况

    例:ping -l 65500 -n 10 qq.com   // 向qq.com发送10次65500字节的ping

    例:ping -n 6 127.0.0.1 // 对当前主机执行6次ping操作(花费时间为5s)

    例:ping -t baidu.com   // 不断地测试baidu服务器的连接情况   Ctrl+Pause Break:查看ping的统计信息;Ctrl+C:终止当前任务

    a. 首先查本地arp cache信息,看是否有对方的mac地址和IP地址映射条目记录 
    b. 如果没有,则发起一个arp请求广播包,等待对方告知具体的mac地址 
    c. 收到arp响应包之后,获得某个IP对应的具体mac地址,有了物理地址之后才可以开始通信了,同时对ip-mac地址做一个本地cache 
    d. 发出icmp echo request包,收到icmp echo reply包

    ipconfig /all  // 查看本地ip地址等详细信息

    ipconfig /displaydns  // 显示本地dns缓存的内容

    ipconfig /flushdns  // 清除本地dns缓存的内容

    nslookup www.cnblogs.com  // 获取www.cnblogs.com的域名解析

    服务器: gm-captiva.tencent.com//DNS服务器的主机名
    Address: 10.6.18.41//DNS服务器IP

    非权威应答:
    名称: www.cnblogs.com//解析的域名URL
    Address: 42.121.252.58//解析回的IP

    nslookup -d www.cnblogs.com  // 打印出www.cnblogs.com的域名解析所有记录

    netstat -a   // 查看开启了哪些端口

    netstat -n  // 查看端口的网络连接情况

    netstat -v   // 查看正在进行的工作

    netstat -p tcp  // 查看tcp协议的使用情况

    tracert 182.140.167.44  // 查看本机到达182.140.167.44的路由路径

    route print  // 显示出IP路由

    telnet 182.140.167.44 8000   // 探测182.140.167.44是否使用TCP协议监听8000端口(注意:telnet命令不支持UDP端口检测)

    说明:如果端口关闭或者无法连接,则显示不能打开到主机的链接,链接失败;端口打开的情况下,链接成功,则进入telnet页面(全黑的),证明端口可用。

    用于探测指定IP的端口号,只是telnet的一个基本功能;

    远程登录到网络中的计算机,并以命令行的方式远程管理计算机才是telnet命令的强大之处。

    windows telnet服务器(默认端口:23)环境配置过程如下: 参考1

    a. 安装telnet服务器

    http://images2015.cnblogs.com/blog/78946/201609/78946-20160902142422215-1607922084.png

    b. 启动Telnet服务

    http://images2015.cnblogs.com/blog/78946/201609/78946-20160902144707308-2120239427.png

    c. 关闭windows防火墙    注:若不想关闭防火墙,则需要在Windows防火墙 -- 高级设置里面对Telnet服务器的访问规则进行配置

    http://images2015.cnblogs.com/blog/78946/201609/78946-20160902150418730-745820459.png  http://images2015.cnblogs.com/blog/78946/201609/78946-20160902150424652-1363165395.png

    ftp 46.19.34.198 21  // 连接46.19.34.198 ftp服务器(21为端口号),然后会要求输入用户名与密码;连接成功后,具体如何使用可以键入?来查看帮助说明

    arp   显示和修改地址解析协议(ARP)使用的“IP到mac”的地址转换表

    例:arp -a  // 显示arp缓存表

    at  计划任务(必须保证“Task Scheduler”服务启动   net start "task scheduler"

    例:at  // 查看所有的计划任务

    例:at /delete /yes  // 停止所有任务计划(不需要确认)

    例:at 1  // 开启id为1的计划任务

    例:at 1 /delete /yes  // 停止id为1的计划任务(不需要确认)

    例:at 12:42 shutdown –s –t30   // 到12:42 ,电脑会出现“ 系统关机 ”对话框,并默认 30 秒延时自动关机

    例:at cmd /c dir > c:\test.out   // 如果命令不是exe文件,必须在命令前加上cmd /c

    例:at 6:00AM /every:Saturday task.bat   // 在每周六早上6点,电脑定时启动task.bat批处理文件

    例:at \\chen 12:00 shutdown /r   // 到12:00时,关闭名为chen的计算机

    例:at \\192.168.1.166 12:00 shutdown /r   // 到12:00时,关闭ip为192.168.1.166的计算机

    9. 文本处理 

    edit config.ini  // 编辑config.ini文件(会进入edit字符编辑器;按alt,可以选择对应的菜单) win7 x64下没有该命令

    find  文件中搜索字符串

    例:find /N /I "pid" 1.txt  // 在1.txt文件中忽略大小写查找pid字符串,并带行号显示查找后的结果

    例:find /C "exe" 1.txt  // 只显示在1.txt文件中查找到exe字符串的次数

    例:find /V "exe" 1.txt  // 显示未包含1.txt文件中未包含exe字符串的行

    findstr  文件中搜索字符串

    例:findstr "hello world" 1.txt  // 在1.txt文件中搜索hello或world

    例:findstr /c:"hello world" 1.txt  // 在1.txt文件中搜索hello world

    例:findstr /c:"hello world" 1.txt nul  // 在1.txt文件中搜索hello world,并在每行结果前打印出1.txt:   注:findstr只有在2个及以上文件中搜索字符串时才会打印出每个文件的文件名,nul表示一个空文件

    例:findstr /s /i "Hello" *.*   // 不区分大小写,在当前目录和所有子目录中的所有文件中的hello

    例:findstr  "^[0-9][a-z]" 1.txt  // 在1.txt中搜索以1个数字+1个小写字母开头子串的行


     

    本文转载自博客园:

    博主:可可西

    原文链接:http://www.cnblogs.com/kekec/p/3662125.html

    展开全文
  • windows常用命令行命令

    万次阅读 多人点赞 2019-05-29 15:51:28
    windows常用命令 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口… 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后保留cmd窗口 ...
  • DOS常用命令

    万次阅读 多人点赞 2019-01-23 19:36:38
    启动方式2:“开始”→“运行”→输入“cmd”回车,此时将出现一个显示命令提示符的窗口,如下图。 1,help命令:help ——》查看所有命令帮助;help 某某某——》 查看具体某个 命令的帮助 2,dir命令 ...
  • Linux常用命令大全

    万次阅读 多人点赞 2018-06-01 16:16:10
    Linux常用命令大全1.Linux管理文件和目录的命令命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 ...
  • 计算机常用命令大全

    千次阅读 2018-07-25 16:21:22
    regedit.exe 注册表 gpedit.msc 组策略 services.msc 服务命令 c:\&gt;ntsd -c q -p PID 关进程 tasklist 查进程 net user 查找用户 net user '用户名' '密码' 更改用户密码 net ...
  • 运维日常及常用命令

    千次阅读 2018-10-19 13:49:20
    一 概念普及 SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。...
  • 命令行常用命令

    万次阅读 2019-06-01 15:48:28
    npm list -g --depth=0 - - 查看全局安装了哪些东西 ls - - 列表当前所在文件夹的所有文件
  • Vue命令行常用命令

    千次阅读 2018-12-07 20:23:26
    输入vue -V命令,可以看出当前的vue使用的是2.8.2版本。输入vue list 可以得到推荐的官方模板 创建 vue init webpack my-project 后面跟的是你需要创建的项目名称 创建项目完成之后你的my-project目录下面会出现所有...
  • 命令行终端中python常用命令 python 进入交互模式 exit() 退出交互模式 pip list 查看当前环境安装的包 pip search 包名 查看包的信息 pip install 包名 安装包,默认安装最新的 pip install 包...
  • ftp 命令行操作 常用命令

    千次阅读 2014-11-11 23:31:43
    > ftp [port] > pwd # 查看当前目录 > dir # 查看FTP服务器中的文件及目录 > mkdir > cd > bin # 采用二进制传输,会加快上传和下载速度 > lcd > !dir # 查看本地文件夹的文件和目录...> delete *.* # 删除
  • linux命令行界面及常用命令

    千次阅读 2013-09-11 13:03:17
    命令行界面常用操作: vim -o one.txt two.txt 水平多个窗口打开多个文件vim -O one.txt two.txt 垂直多个窗口打开多个文件:all 为列表中的文件各开一个窗口(可vertical):split 上下分割当前窗口,在上面打开新
  • 命令格式:  ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]  ffmpeg [[options][`-i' input_file]]... {[options] output_file}...  1、参数选项:  (1) -an: 去掉音频  (2) -acodec...
  • pgsql 命令行常用命令

    万次阅读 2019-03-19 14:14:27
    登录数据库:psql -U user_name -d database_name -h serverhost -p port -W password 退出pg连接:\q 查看所有数据库:\l 切换数据库:\c database_name 查看当前数据库所有表:\d 执行sql(必须加;...
  • 一、运行命令(Putty) 1. 运行我们的程序 Python3 Train.py 这种方法如果退出Putty,或者断开服务器,则程序断开。 2. 后台运行并保存运行脚本至nohup.out nohup python3 train.py &amp;amp;amp; 在文件中...
  • PostgreSQL命令行常用命令psql

    万次阅读 2018-04-19 17:02:30
    PostgreSQL命令行常用命令(psql) 一般我们使用 psql来和数据库交互,方括号中为可选项参数,不带任何参数表示连接本机 psql [option…] [dbname [username]] PostgreSQL命令行常用命令(psql) 登录数据库...
  • 常用命令行窗口命令

    千次阅读 2019-05-22 15:57:50
    命令行窗口 dir 列出所有目录 cd 进入目录、文件 目录中 . 表示当前目录 … 表示上一级目录(按照./ …/去理解) md 目录名 创建文件夹 rd 目录名 删除文件夹 打开文件 直接输入文件名 cls 清屏 环境变量(建议在...
  • 常用命令行操作命令: 01 常见文件/文件夹操作命令 操作文件夹 mkdir foldername #新建文件夹,foldername是文件夹名称 操作文件 vi filename #新建文件 :wq #是在编辑文件末行模式下 保存并推出到shell模式...
  • VS2010命令行编译--常用命令

    千次阅读 2013-08-07 13:42:44
    (在vs2005里面未发现该文件,怀疑因该是上级目录的vcvarsall.bat,但是不执行该文件同样可进行命令行编译。) CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) ...
  • Kafka命令行常用命令说明

    万次阅读 2014-03-26 17:05:52
    基于0.8.0版本。 ##查看topic分布情况kafka-list-topic.sh ...bin/kafka-list-topic.sh --zookeeper 192.168.197.170:2181,192.168.197.171:2181 (列出所有topic的分区情况) ...bin/kafka-list-topic.sh --...
  • postgreSQL 命令行常用操作命令

    万次阅读 2016-09-02 11:08:48
    命令行客户端操作pg数据库常用操作
  • ensp常用命令

    万次阅读 多人点赞 2018-11-22 00:02:48
    华为模拟器eNSP常用命令 最近一段了解网络协议,使用了华为模拟器eNSP搭建了几个路由实验,分享一下在搭建过程中,经常使用的命令. 路由器命令行常用命令:  1. system-view  进入系统视图,默认我们打开命令行...
  • windows dos 常用命令行(完整)

    万次阅读 多人点赞 2017-04-25 14:31:24
    dir :列出当前目录下的文件以及文件夹 md: 创建目录 ...有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL
  • Glassfish是速度很快的一个J2EE容器,其不仅有WEB的控制台界面,还有命令行工具,下面是一些常用命令。 启动、关闭 asadmin start-domain asadmin stop-domain asadmin restart-domain 部署 asadmin deploy...
  • windows系统常用命令行

    万次阅读 多人点赞 2018-02-13 17:31:39
    即可查询该命令的用法,对一个经常使用命令行的人而言这是最重要的start #该命令会再打开一个命令提示符窗口assoc #显示文件扩展关联(即什么样的后缀名用什么样的软件打开)可见.RAR=WinRAR表示后缀名为.RAR的文件要...
  • MySQL命令行常用基本命令(1)

    千次阅读 2018-04-11 23:41:10
    更多其他指令请关注‘MySQL命令行常用基本命令(2)’1.登陆MySQL:mysql -u 用户名 -p2.创建数据库: CREATE TABLE 数据库名3.选择当前使用的数据库: USE 数据库名4.建表: CREATE TABLE 表名(元素名1 元素1类型...
  • SVN常用命令行

    2019-04-08 13:09:10
    SVN常用命令行
  • Linux常用命令行

    2018-08-03 10:30:27
    ps // 查看进程, 可以和grep...grep // 文本搜索命令,可以使用正则表达式匹配 top // 查看cpu, 内存使用情况 nvidia-smi // 查看GPU使用情况 chmod // 更改文件权限 tree -d // 查看目录结构 ln // 创建链接,默认...

空空如也

1 2 3 4 5 ... 20
收藏数 2,169,583
精华内容 867,833
关键字:

常用命令