Linux学习之路 -- 常用命令和各种总结(不断补充完善)

来源:互联网 发布:香港科技大学gpa算法 编辑:程序博客网 时间:2024/06/06 01:11

※、常用命令:

ls | wc -l    #统计当前目录下文件数(不含子目录内文件)ld -d  dirname #仅列出目录,不显示目录下的文件pwd -P  #显示当前目录所在实际路径,非链接路径du -sch *   #显示当前目录下各个文件或目录(不含子目录)的大小,以及总大小df -h   #显示磁盘空间信息

※、查看最近登录用户信息和IP地址: last -f /var/log/wtmp
※、显示日期 : date 格式化日期 date ‘+%Y-%m-%d %H:%M:%S’
或 : date ‘+%F %T’
显示当月日历 : cal
显示指定月份日历: cal 5 2016
※、命令行下进入计算器: bc –仅支持quit命令退出
scale=2 –指定小数位2位,Linux计算器默认仅输出整数,用scale调整小数位
10%3 –取余数,仅在输出整数时有效
※、查看命令帮助: man [command] 如: man date
※、/etc/profile 和 ~/.bash_profile 和 ~/.bashrc 的区别:
/etc/profile用于整个系统所有用户,
~/.bash_profile, ~/.profile和~/.bashrc 用于各个用户,这里的”~”符号就是各当前用户的$HOME
~/.bash_profile 和 ~/.profile 只在登陆时读取一次。
~/.bashrc 每次都读取

 ~/.bash_profile 和 ~/.profile 的区别在于,bash 只读取~/.bash_profile;而对于 ~/.profile 来说,不光bash, 其他shell 也读 ~/.profile

执行顺序为: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

※、改变文件的权限
方式一、
1) 更改文件\目录权限: chmod 777 filename
其中第一位数字标识文件所有者的权限;第二位为文件所属组的权限,第三位为其他用户
数字表示的权限:r(读) - 4 w(写) - 2 x(执行) - 1
2) 更改文件所属组: chgrp grpname filename
3) 更改文件所有者: chown user filename
4) 更改文件所有者和群组:chown user:users filename
以上命令带参数 -R时,表示同时更改子目录的权限。
方式二、
a - 所有用户 u - 文件所属用户 g - 组内用户 o - 其他用户 以上可组合使用

chmod u=rwx,go=rx filename  --更改文件权限为所有者rwx,组内用户和其他用户rxchmod a+w filename  --为所有用户增加对filename文件的 w 权限chmod a- w filename  --为所有用户去除对filename的 w 权限chmod a=rw  filename  --将filename权限设置为所有用户可rw

※、CP命令: 复制文件到目标位置:

 $> cp file1 /tmp/file1   --普通复制,默认覆盖,同时更改文件属性(命令操作者用户属性) $> cp -i file1 /tmp/file1 --复制时,如果目标位置存在该文件,会询问是否覆盖 y-是 n-否 $> cp -a file1 /tmp/file1 --复制文件的所有属性,所属用户、所属组、创建时间等 $> cp -r ./dir1/  ../dir2/ --复制目录

※、显示文件内容到控制台:
1) cat filename –正向输出文件内容
cat命令参数详解:

cat -n filename  --输出行号,包括空行cat -b filename  --输出非空白行行号cat -A filename  --输出特殊字符,如行尾显示$cat -T filename  --将[Tab]以 ^I  显示出来cat -v filename  --列出一些看不出来的特殊字符

2) tac filename –反向输出
3) nl filename –输出文件内容,同时显示行号
nl命令详解:

nl -b a filename  --输出内容和行号nl -b t filename  --输出内容和行号,空白行不显示行号(默认值)nl -n ln filename  --行号靠左显示nl -n rn filename  --行号靠右显示nl -n rz filename  --行号靠右显示,且左补0nl -n rz -w 2 filename  --行号靠右显示,且左补0,但行号只占2位

4) more filename –一页一页显示文件内容(仅支持向后输出)
more命令详解:

more等待输入:空格  --下翻一页Enter  --下翻一行:f  --立即显示当前文件名和显示的行数q  --退出more不再显示文件内容5) less filename  --与more类似,但支持往前查看([PageUp/PageDown])6) head -n 2 filename  --只查看文件的前2行    head -n -2 filename  --不显示文件后2行7) tail -n 2 filename  --只查看文件的最后2行8) head -n 4 filename | tail -n 2   --取文件的第3到4行9) od filename  --显示二进制文件内容

※、查看文件修改时间

ls -lrt --time=atime  --查看文件最后被读取时间(cat/vi/more等命令)ls -lrt --time=ctime  --查看文件权限或属性的变更时间ls -lrt   --默认显示mtime,即内容被更改时间touch命令会更改文件的时间属性:touch filename --不存在时会创建空文件,存在时会修改文件所有时间为当前系统时间

※、文件的隐藏属性:
查看文件的隐藏属性:

lsattr filename

为文件增加保护(仅限于root执行):

chatrr +i filename  --为文件增加保护,不能被任何用户(包括root自己)更改、删除chattr +a filename  --文件只允许增加数据(仅echo 'a'>>filename方式),不允许修改、删除。

※、find查找文件

find . -name filename  --根据文件名,在目标路径(包含子目录)中精确查找find . -name 'filename*'  --根据文件名模糊查找find . -size +500c  --查找目标路径中大于500b的文件find . -size +500k  --查找目标路径中大于500Kb的文件find . -type f  --查找目标路径中正常文件(除目录、链接等文件外)find . -type d  --查找目标路径中目录文件find . -mtime +4  --查找大于等于5天前有更改的文件find . -mtime -4  --查找距当前4天内有更改的文件find . -mtime 4  --查找距当前第4-5天内有更改的文件find . -user username  --查找username用户的文件

※、查看linux文件系统(FileSystem)类型:

 file -s /dev/sda1

※、sed文本内容替换命令

sed '/text/d' filename  --删除包含'text'内容的整行,并输出到屏幕(文件内容不改变)sed -i '/text/d' filename  --直接删除文件包含'text'内容的整行sed 's/text/replace/g' filename  --替换文件中'text'为'replace',并输出到屏幕sed -i 's/text/replace/g' filename  --直接替换文件中'text'为'replace'

※、bash字符串,单双引号区别:
单引号(”):单引号中任何字符都原样输出,不作任何转换,单引号中不能引用其他变量,
转义符无效,且单引号字符串中不能再出现单引号
双引号(”“): 双引号中可以使用变量或转义符
※、获取字符串长度:

name="Tom"echo ${#name}    #3echo $(echo ${name} | wc -L)   #3

※、数组

arr=("Tom" 'Jim' 15)   #数组定义echo ${arr[@]}   #读取数组所有元素echo ${arr[1]}    #根据下标读取数组元素,下标从0开始echo ${#arr[@]}   #获取数组长度echo ${#arr[1]}     #获取数组元素的长度

※、函数 , shell函数返回值只能返回整数值
[root@#localhost ~]# vim test.sh

#!/bin/bashfunction fun(){echo "This is parameter 1: $1"echo "This is parameter 2: $2"}fun $1 $2

[root@#localhost ~]# sh ./test.sh 10 20

※、Linux用户管理
添加用户:useradd
eg:

useradd -d /home/test -m -g root -s /bin/bash test-c  添加注释-d  指定用户主目录,如目录不存在,可指定-m创建该目录-g  指定用户所属用户组-G  指定用户所属附加组-s  指定用户shell-u  指定用户号,如果有-o选项,可以重复使用其他用户的用户号

※、脚本开机运行
需要开机运行的脚本加入/etc/rc.d/rc.local中,同时rc.local和脚本需要有可执行权限
※、history显示最近执行过的1000条命令
history -c 清空历史命令
显示命令执行时间:.bash_profile中加入:HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S ”
soruce .bash_profile
history n 显示最近执行的n条命令
!!运行上一次执行的命令
!n 运行history显示的第n条命令
※、磁盘管理:
列出硬盘和分区信息: fdisk -l
新加入的硬盘做分区: 1、fdisk /dev/sdb1 然后选择n(增加分区),在选择p(主分区),输入1,
回车后输入w保存。
2、格式化增加的分区:mkfs.ext4 /dev/sdb1
3、挂载硬盘:mount /dev/sdb1 /data01
卸载硬盘: umount /data01
设置硬盘开机自动挂载:如果使用UUID,则通过命令’blkid /dev/sdb1’获取磁盘UUID,
然后在/etc/fstab中加入:
UUID=e8a4d42c-d259-4cd3-85bc-e73091edb1ef /data01 xfs defaults 0 0
※、shell编程if判断(加!表示取反)
格式:
if [ 条件 ]; then
执行语句
else
执行语句
fi
条件表达式:

if [ -e file ] 如果文件file存在if [ -f file ]  如果文件file存在(改文件为一般文件,非设备文件或目录)if [ -d dir ]  如果目录dir存在if [ -s file ]  如果文件file存在且非空(大小不为0)if [ -r file ]  如果文件file存在且可读if [ -w file ]  如果文件file存在且可写if [ -x file ]  如果文件file存在且可执行

数字类型变量比较:

if [ $a -eq $b ]  如果a == bif [ $a -ne $b ]  如果a != bif [ $a -ge $b ]  如果a >= bif [ $a -gt $b ]  如果a > bif [ $a -le $b ]  如果a <= bif [ $a -lt $b ]  如果a < b

字符串表达式:

if [ $a = $b ]  如果两个字符串相同if [ $a != $b ] 如果两个字符串不相同if [ -n $str ]  如果字符串非空,返回0(true)if [ $str ]  如果字符串非空if [ -z $str ]  如果字符串空

逻辑与(-a)、或(-o)判断
( [[ ]]中>、<用于字符串比较,按照asci字符顺序比较大小,如2>10返回true):
expr1: (a > b and a < c)

if (( $a > $b )) && (( $a < $c ))

if [[ $a > $b ]] && [[ $a < $c ]]

if [ $a -gt $b -a $a -lt $c ]

expr2: ( a > b 或 a > c)

if (( $a > $b )) || (( $a > $c ))

if [[ $a > $b ]] || [[ $a > $c ]]

if [ $a -gt $b -o $a -gt $c ]

※、grep命令
grep -v “test” 匹配除”test”以外的内容
※、printf和echo区别

printf输出默认不换行,且可以使用变量替换:a="Linux"printf 'Hi %s' $a   输出 Hi Linuxecho 'Hi %s' $a   输出 Hi %sLinux
原创粉丝点击