Linux命令之技巧性
Linux命令可以提高生产力
一、使用 !$ 重新使用上一个命令中的最后一项
更好的方法您可以使用使用alt + .
, 在最后一个命令的选项之间来回移动的次数
二、在Linux终端中复制粘贴
Ctrl + Shift + C表示复制,Ctrl + Shift + V表示粘贴
三、清空文件而不删除它
> 文件名
四、find命令进行查找
- 根据文件类型、名称和大小查找
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
- 根据时间查找
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
作者:yusq77
-------------------------------------------
Wish you all the best and good health in 2021.