12 লিনাক্সে কার্যকর ফাইল অপারেশনের জন্য পাঠ্য ফিল্টার করার জন্য দরকারী কমান্ড


এই নিবন্ধে, আমরা লিনাক্সে ফিল্টার হিসাবে কাজ করে এমন অনেকগুলি কমান্ড লাইন সরঞ্জাম পর্যালোচনা করব। একটি ফিল্টার এমন একটি প্রোগ্রাম যা মানক ইনপুট পড়ে, এটির উপর একটি ক্রিয়া সম্পাদন করে এবং ফলাফলগুলি স্ট্যান্ডার্ড আউটপুটে লিখে দেয়।

এই কারণে, এটি কার্যকর রিপোর্ট তৈরি করার জন্য আউটপুট পুনর্গঠন, ফাইলগুলিতে পাঠ্য পরিবর্তন এবং আরও অনেক সিস্টেম প্রশাসনের কার্য হিসাবে শক্তিশালী উপায়ে তথ্য প্রক্রিয়া করতে ব্যবহৃত হতে পারে।

এই কথাটি বলেই নীচে লিনাক্সে দরকারী কিছু ফাইল বা পাঠ্য ফিল্টার রয়েছে।

1. আওক কমান্ড

আওক একটি উল্লেখযোগ্য প্যাটার্ন স্ক্যানিং এবং প্রক্রিয়াকরণ ভাষা, এটি লিনাক্সে দরকারী ফিল্টারগুলি তৈরি করতে ব্যবহার করা যেতে পারে। আপনি আমাদের পটভূমি সিরিজ পর্ব 1 থেকে পার্ট 13 এর মাধ্যমে এটি ব্যবহার শুরু করতে পারেন।

অধিকতর, আরও তথ্য এবং ব্যবহারের বিকল্পগুলির জন্য অ্যাডকে ম্যান পৃষ্ঠাটি পড়ুন:

$ man awk

2. শেড কমান্ড

পাঠ্য ফিল্টারিং এবং রূপান্তর করার জন্য সেড একটি শক্তিশালী স্ট্রিম সম্পাদক। আমরা ইতিমধ্যে সেডের উপর দুটি দরকারী নিবন্ধ লিখেছি, আপনি এটি এখানে যেতে পারেন:

  1. লিনাক্সে ফাইলগুলি তৈরি, সম্পাদনা এবং পরিচালনা করার জন্য জিএনইউ ‘সেড’ কমান্ড কীভাবে ব্যবহার করবেন
  2. 15 প্রতিদিনের লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেশন টাস্কের জন্য দরকারী 'সেড' কমান্ড টিপস এবং কৌশল
  3. >

সেড ম্যান পৃষ্ঠাটিতে কন্ট্রোল অপশন এবং নির্দেশাবলী যুক্ত করা হয়েছে:

$ man sed

৩. গ্রেপ, এগ্রেপ, এফগ্রিপ, আরগ্রিপ কমান্ড

প্রদত্ত প্যাটার্নের সাথে মিলে এই ফিল্টারগুলি আউটপুট লাইনগুলি। তারা কোনও ফাইল বা স্ট্যান্ডার্ড ইনপুট থেকে লাইন পড়েন এবং মানক আউটপুটে ডিফল্টরূপে সমস্ত মিলিত লাইনগুলি মুদ্রণ করেন।

দ্রষ্টব্য: মূল প্রোগ্রামটি নীচের মতো নির্দিষ্ট গ্রেপ বিকল্পগুলি ব্যবহার করছে (এবং সেগুলি এখনও পশ্চাদপটে সামঞ্জস্যের জন্য ব্যবহৃত হচ্ছে):

$ egrep = grep -E
$ fgrep = grep -F
$ rgrep = grep -r  

নীচে কয়েকটি বেসিক গ্রেপ কমান্ড দেওয়া হল:

[email  ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:

[email  ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:

আপনি লিনাক্সে গ্রেপ, এগ্রেপ এবং এফগ্রেপের মধ্যে পার্থক্য সম্পর্কে আরও পড়তে পারেন।

৪. হেড কমান্ড

একটি ফাইলের প্রথম অংশগুলি প্রদর্শন করতে মাথা ব্যবহার করা হয়, এটি ডিফল্টরূপে প্রথম 10 লাইন আউটপুট করে। প্রদর্শিত লাইনের সংখ্যা নির্দিষ্ট করতে আপনি -n নম্বর পতাকাটি ব্যবহার করতে পারেন:

[email  ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

[email  ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

লিনাক্সে কার্যকর ব্যবহারের জন্য লেজ এবং বিড়াল কমান্ড সহ হেড কমান্ড কীভাবে ব্যবহার করবেন তা শিখুন।

5. লেজ কমান্ড

লেজ কোনও ফাইলের শেষ অংশগুলি (ডিফল্টরূপে 10 লাইন) আউটপুট করে। প্রদর্শিত লাইনের সংখ্যা নির্দিষ্ট করতে -n নাম স্যুইচ ব্যবহার করুন।

নীচের কমান্ডটি নির্দিষ্ট ফাইলের শেষ 5 লাইন আউটপুট দেবে:

[email  ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

অতিরিক্তভাবে, রিয়েল-টাইমে (বিশেষত লগ ফাইলগুলি) কোনও ফাইলের পরিবর্তনগুলি দেখার জন্য লেজের একটি বিশেষ বিকল্প -ফ রয়েছে।

নিম্নলিখিত কমান্ড আপনাকে নির্দিষ্ট ফাইলটিতে পরিবর্তনগুলি নিরীক্ষণ করতে সক্ষম করবে:

[email  ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

ব্যবহারের বিকল্প এবং নির্দেশাবলীর সম্পূর্ণ তালিকার জন্য টেল ম্যান পৃষ্ঠাটি পড়ুন:

$ man tail

6. সাজান কমান্ড

পাঠ্য ফাইলের লাইন বা স্ট্যান্ডার্ড ইনপুট থেকে বাছাই করতে সাজানো ব্যবহৃত হয়।

নীচে ডোমেন.লিস্ট নামের একটি ফাইলের সামগ্রী রয়েছে:

[email  ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com
windowsmint.com

ফাইল কন্টেন্টকে এর মতো সাজানোর জন্য আপনি একটি সরল বাছাই কমান্ড চালাতে পারেন:

[email  ~ $ sort domains.list
linuxsay.com
linuxsay.com
news.linux-console.net
news.linux-console.net
linux-console.net
linux-console.net
windowsmint.com
windowsmint.com

আপনি সাজ্ট কমান্ডটি বিভিন্ন উপায়ে ব্যবহার করতে পারেন, সাজ্ট কমান্ডের কয়েকটি দরকারী নিবন্ধটি নিম্নরূপ যান:

  1. লিনাক্সের 14 টি কার্যকর উদাহরণ ‘সাজান’ আদেশ - অংশ 1
  2. 7 আকর্ষণীয় লিনাক্স ‘সাজান’ কমান্ড উদাহরণ - পার্ট 2
  3. পরিবর্তনের তারিখ এবং সময়ের উপর ভিত্তি করে ফাইলগুলি কীভাবে সন্ধান করতে এবং বাছাই করা যায়
  4. সর্বশেষ পরিবর্তিত তারিখ এবং সময় অনুসারে ‘ls’ কমান্ডের আউটপুট কীভাবে সাজানো যায়

7. ইউনিট কমান্ড

ইউনিীক কমান্ডটি পুনরাবৃত্তি করা লাইনগুলি প্রতিবেদন করতে বা বাদ দিতে ব্যবহৃত হয়, এটি স্ট্যান্ডার্ড ইনপুট থেকে লাইনগুলি ফিল্টার করে এবং ফলাফলটি স্ট্যান্ডার্ড আউটপুট পর্যন্ত লিখে দেয়।

কোনও ইনপুট স্ট্রিমে বাছাইয়ের পরে, আপনি নীচের উদাহরণের মতো ইউনিকের সাথে পুনরাবৃত্তি করা লাইনগুলি সরাতে পারেন।

একটি লাইনের উপস্থিতির সংখ্যা নির্দেশ করতে -c বিকল্পটি ব্যবহার করুন এবং -i বিকল্পটি অন্তর্ভুক্ত করে তুলনা করার ক্ষেত্রে পার্থক্য উপেক্ষা করুন:

[email  ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com

[email  ~ $ sort domains.list | uniq -c 
2 linuxsay.com
2 news.linux-console.net
2 linux-console.net
1 windowsmint.com 

আরও ব্যবহারের তথ্য এবং পতাকাগুলির জন্য ইউনিক ম্যান পৃষ্ঠাটি পড়ুন:

$ man uniq

8. fmt কমান্ড

এফএমটি সাধারণ সর্বাধিক পাঠ্য বিন্যাসক, এটি নির্দিষ্ট ফাইলে অনুচ্ছেদে পুনরায় ফর্ম্যাট করে এবং ফলাফলগুলি স্ট্যান্ডার্ড আউটপুটে প্রিন্ট করে।

নিম্নলিখিত ফাইল ডোমেন- list.txt ফাইল থেকে নিষ্কাশিত সামগ্রী:

1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

উপরের বিষয়বস্তুকে স্ট্যান্ডার্ড তালিকায় পুনরায় ফর্ম্যাট করতে, -w স্যুইচটি সর্বাধিক লাইনের প্রস্থ নির্ধারণ করতে ব্যবহৃত হয়:

[email  ~ $ cat domain-list.txt 
1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

[email  ~ $ fmt -w 1 domain-list.txt
1.linux-console.net 
2.news.linux-console.net 
3.linuxsay.com 
4.windowsmint.com

9. pr কমান্ড

PR কমান্ড প্রিন্টের জন্য পাঠ্য ফাইল বা মান ইনপুট রূপান্তর করে। দেবিয়ান সিস্টেমে উদাহরণস্বরূপ, আপনি সমস্ত ইনস্টল করা প্যাকেজগুলি নিম্নলিখিত হিসাবে তালিকাভুক্ত করতে পারেন:

$ dpkg -l

মুদ্রণের জন্য প্রস্তুত পৃষ্ঠাগুলি এবং কলামগুলিতে তালিকাটি সংগঠিত করতে, নিম্নলিখিত কমান্ডটি জারি করুন।

[email  ~ $ dpkg -l | pr --columns 3 -l 20  

2017-01-06 13:19                                                  Page 1


Desired=Unknown/Install ii  adduser		ii  apg
| Status=Not/Inst/Conf- ii  adwaita-icon-theme	ii  app-install-data
|/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor
||/ Name		ii  alsa-base		ii  apt
+++-=================== ii  alsa-utils		ii  apt-clone
ii  accountsservice	ii  anacron		ii  apt-transport-https
ii  acl			ii  apache2		ii  apt-utils
ii  acpi-support	ii  apache2-bin		ii  apt-xapian-index
ii  acpid		ii  apache2-data	ii  aptdaemon
ii  add-apt-key		ii  apache2-utils	ii  aptdaemon-data


2017-01-06 13:19                                                  Page 2


ii  aptitude		ii  avahi-daemon	ii  bind9-host
ii  aptitude-common	ii  avahi-utils		ii  binfmt-support
ii  apturl		ii  aview		ii  binutils
ii  apturl-common	ii  banshee		ii  bison
ii  archdetect-deb	ii  baobab		ii  blt
ii  aspell		ii  base-files		ii  blueberry
ii  aspell-en		ii  base-passwd		ii  bluetooth
ii  at-spi2-core	ii  bash		ii  bluez
ii  attr		ii  bash-completion	ii  bluez-cups
ii  avahi-autoipd	ii  bc			ii  bluez-obexd

.....

এখানে ব্যবহৃত পতাকাগুলি হ'ল:

  1. - কলাম/ আউটপুটে তৈরি কলামগুলির সংখ্যা নির্ধারণ করে
  2. -l পৃষ্ঠা দৈর্ঘ্য নির্দিষ্ট করে (ডিফল্ট 66 লাইনের)

10. টিআর কমান্ড

এই সরঞ্জামটি স্ট্যান্ডার্ড ইনপুট থেকে অক্ষরগুলি অনুবাদ করে বা মুছে দেয় এবং ফলাফলকে স্ট্যান্ডার্ড আউটপুটে লিখে দেয়।

ট্র ব্যবহার করার জন্য সিনট্যাক্সটি নিম্নরূপ:

$ tr options set1 set2

নীচের উদাহরণগুলি দেখুন, প্রথম কমান্ডে set1 ([: উপরের:]) ইনপুট অক্ষরের ক্ষেত্রে (সমস্ত উচ্চতর ক্ষেত্রে) প্রতিনিধিত্ব করে।

তারপরে সেট 2 ([: নিম্ন:]) ফলাফলের অক্ষরগুলির ক্ষেত্রে কেসটি উপস্থাপন করে। এটি দ্বিতীয় উদাহরণে এবং পলায়ন অনুক্রমের একই জিনিস \n মানে একটি নতুন লাইনে মুদ্রণ আউটপুট:

[email  ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
linux-console.net

[email  ~ $ echo "news.linux-console.net" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM

11. আরও কমান্ড

আরও কমান্ড হ'ল একটি কার্যকর ফাইল পার্সাল ফিল্টার যা মূলত শংসাপত্র দেখার জন্য তৈরি করা হয়। এটি ফর্ম্যাটের মতো পৃষ্ঠায় ফাইলের সামগ্রী দেখায় যেখানে ব্যবহারকারীরা আরও তথ্য দেখতে [এন্টার] টিপতে পারেন।

আপনি এটির মতো বৃহত ফাইলগুলি দেখতে এটি ব্যবহার করতে পারেন:

[email  ~ $ dmesg | more
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
--More--

12. কম কমান্ড

কম উপরের আরও কমান্ডের বিপরীত তবে এটি অতিরিক্ত বৈশিষ্ট্য সরবরাহ করে এবং এটি বড় ফাইলগুলির সাথে কিছুটা দ্রুত।

এটি আরও হিসাবে একইভাবে ব্যবহার করুন:

[email  ~ $ dmesg | less
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
:

লিনাক্সে কার্যকর ফাইল নেভিগেশনের জন্য কেন ‘কম’ দ্রুত ‘আরও’ কম্যান্ড শিখুন।

এটি এখনকার জন্য, আসুন এখানে উল্লিখিত না এমন কোনও দরকারী কমান্ড লাইন সরঞ্জাম সম্পর্কে আমাদের জানা যাক, যা নীচের মন্তব্য বিভাগের মাধ্যমে লিনাক্সে একটি পাঠ্য ফিল্টার হিসাবে কাজ করে।