zoukankan      html  css  js  c++  java
  • Linux常用命令笔记

    不打开文件而替换字符串
    sed -i "s/oldstring/newstring/g" `grep oldstring -rl /pathto/file`
     
    不解压查看压缩包里的内容
    tar tvf compress_folder
     
    进入root权限
    Ubuntu:  sudo su -
    CentOS/Fedora:  su
     
    列出home目录下的子目录及子目录里的文件   
    ls /home/*
    ls -la /home/*
    正规文件-,链接文件l,目录文件d,字符设备文件c,块设备文件b
     
    在根目录下查找某个文件   
    find / -name xxx
     
    搜索当前目录(含子目录)中所有文件名以wqx开头的文件
    find . -name 'wqx*' -ls
     
    搜索当前目录中,所有过去10分钟更新过的普通文件
    find . -type f -mmin 10
     
    搜索用户主目录下,所有以wqx开头的文件
    locate ~/wqx
    locate相当于find -name,但速度更快,因为它不搜索具体目录,而是搜索数据库/var/lib/locatedb,这个数据库含有本地所有文件信息。Linux自动创建这个数据库,每天更新一次,所以locate查不到最新变动过的文件,为避免这种情况,可以在使用locate之前,先用updatedb命令手动更新数据库。
     
    搜索一个命令,比如cd
    where cd
    whereis只搜索程序名,而且只搜索二进制文件(参数-b),man说明文件(参数-m),源代码文件(参数-s)。如果省略参数,则返回所有信息。
    which cd
    在PATH变量指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。也就是说,用which就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
    type cd
    type其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
     
    统计某个文件夹下某类文件的个数
    find /home/qyddbear -name "*.txt" | wc -l
     
    统计某个文件夹下某类文件中的行数
    find /home/qyddbear -name "*.txt" | xargs cat | wc -l
     
    统计某个文件夹下某类文件中的行数,过滤掉空行
    find /home/qyddbear -name "*.txt" | xargs cat | grep -v ^$ | wc -l
     
    输出每行第2到5列内容
    cut -b 2-5 filename
     
    Ubuntu搜索某个软件包
    sudo apt-cache search filename
     
    查找包含某个字符串的文件
    grep “yourstring”查找的目录 -r
    find 查找目录 -type f -print | xargs grep -l 字符串
    grep -l:每个匹配的文件名只显示一次(不管有几个匹配存在)
    或grep -F yourstring -R yourdir | less
    或find yourdir | xargs grep yourstring | less
     
    递归修改目录下的所有文件权限
    chmod -R 777 /xxx/xxx
     
    把命令写入文件
    命令 > 文件
     
    命令在屏幕输出的同时也写入文件
    命令 | tee 文件
    或xxx.sh 2>&1 | tee 文件
     
    比较文件改动前后
    diff former_fiile later_file
    第1个数字表示第几行有变化,c表示内容变动,a表示增加,d表示删除,第3个数字表示变动后变成later_file的第几行。<号表示要从former_file中取出该行,后面表示该行的内容。>号表示增加了该行,后面表示该行的内容。
    diff -c former_fiile later_file
    diff -u former_fiile later_file
     
    列出所有被用户x所使用的进程
    ps -aux
    如果用户x不存在,ps就会解释为ps aux来代替ps -aux并且打印出警告信息,这样做是为了与旧版本和习惯兼容。
     
    查看系统进程
    ps -ef
     
    列出全部进程    
    ps -A
     
    打包并压缩
    zip:  zip -r archive_name.zip directory_to_compress或zip -r archive_name.zip files_to_compress
    tar.gz:  tar zcvf archive_name.tar.gz directory_to_compress
    tar.bz2:  tar jcvf archive_name.tar.bz2 directory_to_compress
     
    解压   
    zip:  unzip xxx.zip
    tar.gz:  tar zxvf xxx.tar.gz -C /extract_here  这样会解压到指定目录
    tar.bz2:  tar jxvf xxx.tar.bz2  这样会在解压到当前目录
     
    在LinuxA上登录LinuxB   
    ssh B_username@B_ip
    如果本地用户与远程用户名一致,登录时可以省略用户名    ssh B_ip
    ssh是加密的网络协议,默认22端口,ssh -p 端口号 B_username@B_ip可以连接指定端口
     
    想把A机(192.128.168.1)/home/file1文件拷到B机(192.128.168.2)的/home/qy下,在B机上输入命令
    scp  192.128.168.1:/home/file1 /home/qy
     
    查看哪个进程占用了xxx端口
    lsof -i:xxx
     
    查看远程主机是否运行进程httpd   
    ssh remote_username@remote_ip 'ps ax | grep [h]ttpd'
     
    让8080端口的数据都通过SSH传向远程主机   
    ssh -D 8080 remote_username@remote_ip
     
    添加环境变量  
    gedit ~/.bashrc
    在最后添加export PATH="/xxx/xxxx:$PATH"
    退出,source ~/.bashrc
     
    以ls -lh方式显示查找出来的libvirtd
    find / -name 'libvirtd' -exec ls -lh {} \;
     
    从网络上自动下载某个包
     
    查看系统服务的开启状态   
    chkconfig
    如果没有安装,则apt-get install chkconfig
     
    查看CPU信息   
    cat /proc/cpuinfo
     
    返回CPU总核心数  
    grep -c 'model name' /proc/cpuinfo
     
    查看系统负荷   
    uptime
     
    查看交换分区情况
    swapon -s   
    cat /proc/swaps
    free -m
    /proc存放系统核心与执行程序的一些信息
     
    查看系统是32位还是64位
    echo $HOSTTYPE
    getconf LONG_BIT
    file /sbin/init
    uname -a
    file /bin/cat
     
    查看当前使用的是什么Shell   
    echo $SHELL
     
    查看当前文件夹的总大小   
    du -sh
     
    查看当前文件夹内文件的大小   
    du -h
     
    查看磁盘使用情况   
    df -lh
     
    查看磁盘信息
    cat /proc/partitions
     
    查看磁盘型号等信息
    cat /proc/scsi/scsi
     
    创建新用户user1   
    useradd user1
     
    为创建的用户设置密码或修改   
    passwd user1
     
    让某用户登录系统   
    login
     
    删除用户   
    userdel user1
     
    切换用户   
    su username
     
    修改用户名(@前面的)
    修改/etc/passwd,再重新登录终端
     
    Ubuntu永久修改主机名   
    修改/etc/hostname
     
    将file1输出为file2,并为file2加上行号   
    cat -n file1 > file2
     
    comm比较两个文本文件的不同   
    comm file1 file2
     
    sort排序后将文本文件的内容输出到终端   
    sort file1
     
    查看eth0网卡的信息   
    ip -s link show eth0
     
    查看某端口   
    netstat -antulp | grep 80
    有些端口通过netstat查不出来,更可靠的方法是nmap -sT -O localhost
     
    挂载U盘
    1. 在虚机菜单VM里选择Connect或Disconnect。
    2. fdisk -l看U盘是什么盘符,一般是sdb几。(hd是IDE硬盘,sd是SCSI硬盘,第一块硬盘a,第二块b)
    mount -t vfat /dev/sdb4 /mnt
    卸载时,要退出/mnt, 再umount /mnt
     
    netstat显示与IP,TCP,UDP,ICMP协议相关的统计数据,一般用于检测本机各端口的网络连接情况。
     
    route查看并编辑计算机的IP路由表
     
    查看到www.baidu.com主机的路由情况
    traceroutewww.baidu.com
    traceroute显示数据包到主机间的路径,可以让用户追踪网络数据包的路由途径。
     
    查看www.baidu.com对应的主机IP地址
    host把一个主机名解析到一个网络地址或把一个网络地址解析到一个主机名
     
    Ubuntu查看防火墙状态   
    ufw status
     
    Ubuntu关闭防火墙   
    ufw disable
     
    Ubuntu启动防火墙    
    ufw enable
     
    Ubuntu查看防火墙版本    
    ufw version
     
    每天晚上11点执行一次某脚本   
    0 23 * * * /path/name.sh
     
    每周日晚上11点执行一次某脚本   
    0 23 * * 7 /path/name.sh
     
    查看source tarball里是否有RPM SPEC档案
    tar fzt xxx.tar.gz | grep .spec
    tar fjt xxx.tar.bz2 | grep .spec
     
    安装rpm包
    rpm -ivh xxx.rpm
    或rpm -ivh http://xxxxxx/xxx.rpm
    i是install,v是查看更细节的安装信息画面,h是以安装信息列显示安装进度
     
    列出所有已安装的以x开头的软件
    rpm -qa | grep ^x | wc -l
    q仅查询后面直接接的软件是否安装。qR列出与该软件的Required。ql列出该软件所有档案与目录所在的完整文件名。qf由后面接的文件名找出该档案属于哪一个已安装的软件。qc列出该软件的所有在/etc下的配置文件,qd列出该软件所有说明文件。qi勒出该软件的详细信息,包含开发商、版本、说明等。
     
    查询xxx软件是否被改动过
    rpm -V xxx
    Vf是列出某个档案是否被改动过。Va列出系统上可能被改动过的档案。Vp后面加文件名,列出该软件内可能被改动的档案。
     
    删除某个rpm安装的软件
    rpm -e xxx
     
    让进程转入后台
    Ctrl+z
     
    将进程转入前台
    fg
     
    一次创建多个目录
    mkdir -p /home/wqx/{test1, teset2, test3}
     
    查看是KDE还是GNOME
    env|grep DESKTOP
     
     
     
     
     
     

    常见问题
     
    如果服务器上装了openssh-server,且是root用户,但是WinSCP依然连接不上
    解决方法:用命令passwd root修改root密码后即可连接。
     
    apt-get install找不到软件包,没有可用的源
    解决方法:在/etc/apt/sources.list里添加可用的源,再apt-get update
     
    Source Insight打开文件中文乱码
    解决方法:先用记事本打开,另存为ANSI格式,再在Source Insight中打开
     
    UltraEdit编辑的sh脚本在linux下无法运行
    解决方法:在UltraEdit里文件->转换->DOS转UNIX。原因是CR/LF问题,在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以linux下运行时就会报错找不到命令。

    xxx is not in the sudoers file. This incident will be reported
    CentOS下用sudo时遇到的问题,解决方法如下:
    1. 进入超级用户模式。也就是输入"su -",按系统提示输入超级用户密码。
    2. 添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"。
    3. 编辑/etc/sudoers文件。也就是输入命令"vim /etc/sudoers",输入"i"进入编辑模式,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存(就是先摁一 下Esc键,然后输入":wq")退出。
    4. 撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"。

    configure出问题,可以用./configure --help | grep xxx查看帮助
  • 相关阅读:
    C++-蓝桥杯-小数第n位[除法模拟]
    C++-蓝桥杯-合成植物[并查集][模板题]
    Overleaf操作
    三维向量差积,以及应用
    C++-蓝桥杯-分考场[2017真题][搜索][无向图染色]
    C++-POJ1094-Sorting It All Out[拓扑排序][邻接矩阵]
    C++-LUOGU1059-明明的随机数[堆排序]
    C++-快速排序[STL][快速排序][并归排序][堆排序]
    C++-蓝桥杯-波动数组[2014真题][DP优化]
    C++-蓝桥杯-[T1~T3][结果填空题][2015真题][水题]
  • 原文地址:https://www.cnblogs.com/qyddbear/p/2975684.html
Copyright © 2011-2022 走看看