一、文件相关

1. 文件查找

  • grep -rn "default" ./ : 查找当前目录下包含default的文件

  • find ./ -name "*.py" 查找当前路径下的.py文件

  • locate -b ‘\filename’ 查找满足条件的文件

  • whereis+文件名:locate the binary, source, and manual page files for a command。

    • 用于程序名的搜索,搜索结果只限于二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
    • eg: whereis lspci 查看lspci
      常用Linux命令整理_centos
  • which+可执行文件名:which的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

    • 使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

grep、find区别,grep是根据查找文件中的内容,find是查找文件的名字。

2. 文件压缩

zip -r attack.zip ./attack:将当前路径下attack文件夹中的文件进行压缩,压缩后的文件名为attack.zip, 如果不指定.zip后缀,将会自动添加

zip与之对应的解压命令为unzip

tar xvf file.tar.gz 对tar文件进行解压

详见 zip、unzip命令使用

3. Linux 文件按时间排序

  • ls -alt 按照修改时间排序,等价于 ls --sort=time -la
  • ls -alc 按照创建时间排序
  • ls -alu 按照访问时间排序
  • 以上命令均可使用 -r 实现逆序排序

4. chown - 改变文件的用户或组

语法:chown [-cfhvR] [–help] [–version] user[:group] file…

chown -R donald:donald disk:将disk目录下所有文件与子目录的拥有者和群组都设置为donald

5. Linux系统间文件传输

  • rsync
    • 命令:rsync -r /home/suy/datasets/lfw suy@172.22.58.38:/home/suy/datasets
    • 同步两台服务器间的文件夹
  • scp
    • 命令:scp -r 00_Project suy@172.22.58.38:/home/suy/datasets
    • 将本地的00_Project文件夹拷贝到目标服务器的/home/suy/datasets路径下
    • 该命令调换下顺序,即可实现将远程服务器上的文件拷贝到本地服务器,eg:scp -r suy@172.22.58.38:/home/suy/datasets 00_Project
  • rz、sz快速上传、下载文件,需要安装lrzsz,安装方法:yum install lrzsz

6. 文件比较命令

diff:compare files line by line,一行一行的比较两个文件或目录,并指出哪些文件的哪些行不同。
sdiff:side-by-side merge of file differences,比较两个文件并以并排的格式显示差别。

7. 文件移动 – 将一个文件夹下的所有文件移动到一个新的目录中

在整理文件时可能会遇到一种场景,将某个文件夹下的的文件放到一个新的文件中,该操作不能简单通过mv命令操作完成,可以通过如下命令进行操作:

场景:将当前路径下所有文件都移动到 新建立的backup文件夹中。

mkdir backup
find -maxdepth 1 \! -name backup \! -name . -exec mv {} backup/ \;

上面命令中,-maxdepth 参数指定查询深度为当前,不进入次级目录查找。
\! “非”的意思
-name find的参数,匹配文件名,可以使用正则表达式。

参考:linux小技巧:排除某个特殊文件,批量移动其他文件

8. mount/umount挂载、卸载磁盘

先使用df -h命令查看当前磁盘占用状况,如果占用量比较大,可以考虑挂载磁盘,挂载磁盘的操作为:

  • 使用sudo fdisk -l 命令分析当前服务器上的磁盘情况,查看是否还有剩余磁盘可供使用
  • 建立一个文件夹 folder_name
  • 使用mount $disk_name $folder_name 命令,将文件进行挂载:eg:sudo mount /dev/sdc2 /home/suy/data_disk/datasets_sdc

卸载磁盘可以直接使用umount命令即可。eg: sudo umount ~/data_disk/disk_sdb
注意:有时权限有问题,此时加上sudo 即可。

9. 软连接

  • 当前路径创建test 引向/var/www/test 文件夹

    ln –s  /var/www/test  test
    
  • 创建/var/test 引向/var/www/test 文件夹 ln –s /var/www/test /var/test

  • 在conda目录下,创建py文件,链接到其他目录:

    ln -s  /public/99_datasets/py3.6.8 /home/donald/.conda/envs/py3.6.8
    

10. 查看文件大小并按照大小排序

首先,查看当前路径下所有文件大小的命令为du -d 1 -h, 这里-d 1 表明目录显示级别,只显示1级目录。-h是显示单位,不然就是以kb为默认单位进行显示。
常用Linux命令整理_文件名_02
如果需要对结果进行排序,使用sort命令即可。
按数值进行显示,需要添加 -n参数,默认是递增顺序进行显示,如果想递减仅限显示,可以通过添加-r 参数实现。

注意:如果按照大小进行排序,不能在du参数中使用 -h 参数了

常用Linux命令整理_版本信息_03

11. 修改指定目录下所有文件的权限

chmod -R 755 path

二、其他

1. 查看系统distribution信息

lsb_release -a

该命令的作用为print distribution-specific information,ubuntu、centOS都可使用。

eg:
常用Linux命令整理_当前路径_04
常用Linux命令整理_linux_05

2. 查看内核版本

uname -r #查看内核版本
uname -a #查看内核相关的所有信息
cat /proc/version

3. CentOS 查看版本信息

可以使用上述的 lsb_release -a命令,也可以使用下面的命令:

cat /etc/centos-release
 

也可以使用cat /etc/redhat-release命令获取版本信息

执行结果为:CentOS Linux release 7.6.1810 (Core)
常用Linux命令整理_版本信息_06

4. 查看zsh版本信息

zsh版本,可以通过zsh --version$SHELL --version命令
常用Linux命令整理_版本信息_07

  • 红帽系统查看系统版本
    • 使用hostnamectlcat /etc/redhat-release命令。更推荐:hostnamectl命令,显示内容更完整,如下所示:
      常用Linux命令整理_当前路径_08

5. 查看系统启动时间

  • who 命令查看

      who -b  #查看最后一次系统启动的时间。
      who -r  #查看当前系统运行时间
      ``` 
     
  • w 查看

    w命令:w - Show who is logged on and what they are doing.
    
    w  displays  information about the users currently on the machine, and their processes. 
    The header shows, in this order, the current time, 
    how long the system  has  been  run‐ning, 
    how many users are currently logged on, 
    and the system load averages for the past 1, 5, and 15 minutes.

           

up后表示系统到目前运行了多久时间。反过来推算系统重启时间

6. 查看正在运行的进程信息

一般常用的是ps -auxps -ef,其中ps -ef可以看到父进程,可以获知进程间关系。

结合查询命令可以快速查看自己想要的信息:
eg:查看 12345进程的信息:ps -aux | grep 12345
eg:查看 12345进程的进程关系信息:ps -ef | grep 12345
eg:查看包含run关键字的进程:ps -aux | grep run

7. netstat

把TCP状态全都取出来,然后进行统计:netstat -nat | awk '{print$6}' | sort | uniq -c
统计结果示例:
常用Linux命令整理_当前路径_09

【待续】ssh

使用ssh 端口映射,最近用得比较多,一个比较好的主题,后面专门写文章讲解下。

【待续】Top命令

待续

三、refer

  1. 在ubuntu中搜索文件或文件夹的方法