zoukankan      html  css  js  c++  java
  • Linux命令之技巧性

    Linux命令可以提高生产力

    一、使用 !$ 重新使用上一个命令中的最后一项

    更好的方法您可以使用使用alt + . , 在最后一个命令的选项之间来回移动的次数

    二、在Linux终端中复制粘贴

    Ctrl + Shift + C表示复制,Ctrl + Shift + V表示粘贴

    三、清空文件而不删除它

    > 文件名
    

    四、find命令进行查找

    1. 根据文件类型、名称和大小查找
    find . -type d -not -name '*.txt' -size +3M -size 4M -exec ls -al {} ;
    
    find . -type d -not -name '*.txt' -size +3M -size 4M |xargs ls -al
    
    1. 根据时间查找
      ls -lut ./ 按访问时间顺序查看
      (如果想反序查看的话需要加一个选项 -r)

    atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;
    ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;
    mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变

    注意: linux 里是不会记录文件的创建时间的,可以通过stat 进行查看。

    ----(+n)---------|------------(n)--------------|---------(-n)----
       (n+1)*24H前   |    (n+1)*24H ~ n*24H之间  |  n*24H以内 
    
    [acm]time  计量单位是天,即24H
    [acm]min   计量单位是分钟
    
    find . -mtime  0 #查找一天内修改的文件
    find . -mtime -2 #查找2天内修改的文件,多了一个减号
    find . -mmin  -2 #查找距离现在2分钟内修改的文件
    

    五、修改用户密码复杂度

    vi /etc/login.defs,改PASS_MIN_LEN

    不让显示器休眠:
    setterm -blank 0 
    
    以不同的用户身份运行程序:
    su - username -c "/path/to/command" 
    有时候需要运行特殊身份的程序, 就可以让su来做 
    
    让一个程序在退出登陆后继续运行:
    nohup 程序名 & 
    
    编辑/etc/inittab后直接生效:
    init q 
    
    让linux连续执行几个命令,出错停止:
    command1 && command2
    
    bash字符模式下设置/删除环境变量:
    设置:export 变量名=变量值 
    删除:unset 变量名 
    
    快速观看开机的硬件检测(弱智) 
    dmesg | less
    
    查看系统信息
    cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx) 
    cat /proc/interrupts - 中断 
    cat /proc/ioports - 设备IO端口 
    cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size) 
    cat /proc/partitions - 所有设备的所有分区 
    cat /proc/pci - PCI设备的信息 
    cat /proc/swaps - 所有Swap分区的信息 
    cat /proc/version - Linux的版本号 相当于 uname -r 
    uname -a - 看系统内核等信息 
    
    
    利用现存两个文件,生成一个新的文件(bjchenxu) 
    1. 取出两个文件的并集(重复的行只保留一份) 
    2. 取出两个文件的交集(只留下同时存在于两个文件中的文件) 
    3. 删除交集,留下其他的行 
    1. cat file1 file2 | sort | uniq 
    2. cat file1 file2 | sort | uniq -d 
    3. cat file1 file2 | sort | uniq -u 
    
    mount用法(sakulagi,sxsfxx)
    fat32的分区 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom
    ntfs的分区 mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom
    iso文件 mount -o loop /abc.iso /mnt/cdrom
    软盘 mount /dev/fd0 /mnt/floppy
    USB闪存 mount /dev/sda1 /mnt/cdrom
    所有/etc/fstab内容 mount -a
    可以指定文件格式"-t 格式", 格式可以为vfat, ext2, ext3等.
    访问DVD mount -t iso9660 /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom
    注意:dvd的格式一般为iso9660或udf之一 
    
    echo 典型应用
    echo "abcdefg" | perl -lne '{$a = reverse($_); print $a;}' 把一个字符串翻转
    echo bottle|rev 把一个字符串翻转 
    
    将 file.txt 里的123改为 456
    sed 's/123/456/g' file.txt > file.txt.new   修改的保存到其它文件
    sed -i 's/123/456/g' file.txt  直接修改原文件  
    
    查看某文件的一部分
    如果你只想看文件的前 5 行,可以使用 head 命令,
    如:head -5 /etc/passwd
    如果你想查看文件的后 10 行,可以使用 tail 命令,
    如:tail -10 /etc/passwd
    查看文件中间一段,可以使用 sed 命令
    如:sed –n '5,10p' /etc/passwd 这样你就可以只查看文件的第 5 行到第 10 行 
    
    在多级目录中查找某个文件的方法
    1) find /dir -name filename.ext
    2) du -a | grep filename.ext
    3) locate filename.ext 
    
    让用户的密码必须有一定的长度,并且符合复杂度
    vi /etc/login.defs,修改 PASS_MIN_LEN 
    
    如何防止某个关键文件被修改
    在 Linux 下,有些配置文件是不允许任何人(包括 root)修改的。为了防止被误删除或修改
    可以设定该文件的“不可修改位(immutable)  ”。命令如下:
    # chattr +i /etc/fstab
    如果需要修改文件则采用下面的命令:
    # chattr -i /etc/fstab 
    
    设置ssh 上来能不自动断线
    修改自己 HOME 目录下的.bash_profile文件,加上
    export TMOUT=1000000 (以秒为单位)
    然后运行 source .bash_profile 
    
     [Mysql维护]
      1、mysql 的数据库存放在什么地方
    1)  如果使用 rpm包安装,应该在/var/lib/mysql 目录下,以数据库名为目录名
    2)  如果源码安装在/usr/local/mysql中,应该在/usr/local/mysql/var中,以数据库名为目录名
      2、 从 mysql 中导出和导入数据
    导出数据库
    mysqldump  数据库名 > 文件名
    导入数据库
    mysqladmin create  数据库名
    mysql  数据库名 <  文件名 
     
      3、忘了 mysql 的 root 口令怎么办
    # service mysql stop
    # mysqld_safe --skip-grant-tables &
    # mysqladmin -u user password 'newpassword''
    # mysqladmin flush-privileges  
    
     4、 mysqld 起来了,却无法登录,提示"/var/lib/mysql/mysql.sock"不存在
    这种情况大多数是因为你的 mysql 是使用 rpm 方式安装的,它会自动寻找
    /var/lib/mysql/mysql.sock 这个文件,
    通过 unix socket 登录 mysql。
    常见解决办法如下:
    1)创建/修改文件 /etc/my.cnf,至少增加/修改一行
    [mysql]
    [client]
    socket = /tmp/mysql.sock
    #在这里写上你的 mysql.sock 的正确位置,通常不是在 /tmp/ 下就是在 /var/lib/mysql/ 下
    2)指定 IP地址,使用 tcp 方式连接mysql,而不使用本地 sock 方式
    #mysql -h127.0.0.1 -uuser -ppassword
    3)为 mysql.sock  加个连接,比如说实际的 mysql.sock 在 /tmp/  下,则
    # ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock即可 
    
    5、 导出数据的几种常用方法
    1)使用 mysqldump
    #mysqldump -uuser -ppassword -B database --tables table1 --tables table2 >
    dump_data_20051206.sql
    详细的参数
    2)backup to语法
    mysql>BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory';
    详细请查看 mysql 手册
    3)mysqlhotcopy
    #mysqlhotcopy db_name [/path/to/new_directory]
    或
    #mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
    或
    #mysqlhotcopy db_name./regex/
    详细请查看 mysql 手册
    4)select into outfile
    详细请查看 mysql 手册
    5)客户端命令行
    #mysql -uuser -ppassword -e "sql statements" database > result.txt
    以上各种方法中,以 mysqldump 最常用 
    
     6、 如何在命令行上执行 sql 语句
    #mysql -uuser -ppassword -e "sql statements" database
     
      7、 导入备份出来文件的常见方法
    1)由 mysqldump 出来的文件
    #mysql -uuser -ppassword [database] < dump.sql
    2)文件类型同上,使用 source 语法
    mysql>source /path_to_file/dump.sql;
    3)按照一定格式存储的文本文件或 csv 等文件
    #mysqlimport [options] database file1 [file2....]
    详细请查看 mysql 手册
    4)文件类型同上,也可以使用 load data 语法导入
    详细请查看 mysql 手册 
    
    过滤掉#号打头的行,和所有的空行(对于查看配置文档很有用)
    
    awk '/^[^#]/&&/^[^$]/' filename > new.file
    
    把当前目录下所有文件及目录名中的大写字符改为小写符号:
    rename ‘y/A-Z/a-z/’ * 
    
    Kill命令小技巧
    
    kill -HUP PID 重新加载进程 
    
    kill -TERM PID 结束进程 
    
    kill -KILL PID 杀死进程 
    
    -HUP可用数字-1代替 
    
    -TERM可用数字-15代替 
    
    -KILL可用数字-9代替 
    
    
    
    查看系统日志信息,如:查看哪些用户什么时候登录过等。
    
    /var/log/messages
    
    /var/log/secure
    
    lastlog
    
    

    参考:
    终端下的高效命令
    linux 命令大全
    命令大全
    find 查找文件
    find 时间查找
    小技巧收集

    作者:yusq77

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

    Wish you all the best and good health in 2021.

  • 相关阅读:
    2007417 13:01:00 运行时数据结构
    2008515 1:38:00 为受灾的人们祈福,祭那些在地震中离开的人
    200732 19:00:00 一段设置8253芯片的程序
    从实模式到保护模式
    200739 18:01:00 linux界的元老
    2007311 19:11:00 cpu执行第一条指令时情形
    20061127 19:54:00 在你心中有这样的一个人吗? (转)
    linux0.11内存管理——try_to_share()
    2007413 20:46:00 linux0.11之copy_page_tables()函数见解
    POJ1258AgriNet
  • 原文地址:https://www.cnblogs.com/yusq77/p/13858888.html
Copyright © 2011-2022 走看看